Llamafactory分布式训练

内容 在L20* 8 服务器, Ubuntu 22.04 系统上 使用llamafactory框架 进行 sft 训练。分别使用单机多卡,和多机多卡模式。 环境配置 下载代码仓库,配置一个新的conda环境,并安装依赖 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory conda activate llamafactory_env pip install -e . pip install -r requirements/metrics.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 准备sft数据,放在data文件夹,并记录在dataset_info.json中 cd ./data 打开 dataset_info.json 并加入数据集,例如 "my_example": { "file_name": "my_example.json" }, # SFT数据使用Alpaca 或ShareGPT 格式,此处用Alpaca示例 # Alpaca格式:(其中instruction会和input自动用\n拼接) [{ "instruction": "人类指令(必填)", "input": "人类输入(选填)", "output": "模型回答(必填)", "system": "系统提示词(选填)", "history": [ ["第一轮指令(选填)", "第一轮回答(选填)"], ["第二轮指令(选填)", "第二轮回答(选填)"] ] }] 单机多卡训练 # 参考./examples里存在的模版准备一个yaml文件并运行即可。 # 如果使用deepspeed 来执行多卡训练,通过 CUDA_VISIBLE_DEVICES 来指定用多少张gpu CUDA_VISIBLE_DEVICES=0,1 FORCE_TORCHRUN=1 llamafactory-cli train examples/train_lora/qwen3_30b_lora_sft.yaml #训练完以后的参数可以在 yaml 文件里的 output_dir 路径找到 训练完后可以用vllm调用lora框架,这里是一个docker compose 的模板 ...

2026-01-21 · 1 分钟 · 162 字 · Me

DeepSeek-671B 分布式部署

内容: a. DeepSeek-671B 大模型部署于两台配备 8卡 L20 GPU 的服务器。技术栈采用 Docker 容器化技术,VLLM高性能推理引擎和 Ray 分布式计算框架。 b. 官方文档: VLLM-Distributed c. 官方教程操作流程繁琐,需要在多个SSH会话窗口之间频繁切换。为简化部署过程,本文基于官方文档进行了流程整合与优化,将原本分散的步骤系统化整理,提供一套更为简洁明了的一站式部署指南。 前置条件: a. 两台服务器上安装:Docker,Nvidia驱动,Nvidia container toolkit。 b. 确认两台服务器网络硬件配置(可与硬件厂商确认)。可使用 ifconfig 和 ping 来确认网络连接。 c. 下载 DeepSeek-671B模型+ VLLM的docker镜像至两台服务器上。本示例使用DeepSeek-V3(int4 版本)。 确认服务器的网络配置并在下方docker compose 文件里调整环境变量: #IB网络确认: ​ ibv_devinfo 显示No IB devices found 指无IB网络设备, 显示Link layer: Ethernet则网卡是RoCE而非IB, 显示Link layer: InfiniBand则是IB网络 #如果因为服务器无IB设备或者IB设备不一致而需要禁用IB网络: NCCL_IB_DISABLE=1 --禁用IB NCCL_IBEXT_DISABLE=1 --禁用RoCE #如果有ib网络则可配置如下,自行调整网卡名称: - NCCL_SOCKET_IFNAME=bond0 - GLOO_SOCKET_IFNAME=bond0 - NCCL_IB_HCA=mlx5_0,mlx5_3 - NCCL_IB_TIMEOUT=22 - NCCL_IB_DISABLE=0 - NCCL_DEBUG=INFO #如果无ib网络则可配置如下,自行调整网卡名称: - GLOO_SOCKET_IFNAME=bond0 - NCCL_SOCKET_IFNAME=bond0 - NCCL_IB_DISABLE=1 - NCCL_IBEXT_DISABLE=1 - NCCL_DEBUG=INFO Ray框架需要确认头节点(head node)和子节点(worker node)。两台服务器上分别准备docker compose 文件: #定义变量: # 头节点: VLLM_HOST_IP --本机ip RAY_PORT --本机ray端口号,和模型服务使用端口号有所区分 VOLUME_DS_RAY --本机RAY日志存储位置(可选) VOLUME_DS_V3_MODEL_PATH --本机模型路径 # 子节点: ​ VLLM_HOST_IP --本机ip RAY_HEAD_IP --头节点的ip,与上面的VLLM_HOST_IP保持一致 RAY_PORT --头节点使用的IP,与上面的RAY_PORT保持一致 VOLUME_DS_RAY --本机RAY日志存储位置(可选) VOLUME_DS_V3_MODEL_PATH --本机模型路径 #头节点部分 node-head-ds-v3: image: vllm/vllm-openai:v0.11.0 container_name: node-head-ds-v3 entrypoint: ["/bin/bash", "-c", "ray start --block --head --node-ip-address=${VLLM_HOST_IP} --port=${RAY_PORT}"] network_mode: host privileged: true shm_size: 64g deploy: resources: reservations: devices: - driver: nvidia capabilities: [gpu] device_ids: ['0', '1', '2', '3', '4', '5', '6', '7'] volumes: - ${VOLUME_DS_V3_PATH}:/ds-v3 - ${VOLUME_DS_V3_PATH}/ray:/tmp/ray - ${VOLUME_DS_V3_MODEL_PATH}:/models environment: - NCCL_IB_HCA=mlx5_0,mlx5_3 - NCCL_SOCKET_IFNAME=bond0 - GLOO_SOCKET_IFNAME=bond0 - NCCL_DEBUG=INFO - VLLM_HOST_IP=${VLLM_HOST_IP} - NCCL_IB_TIMEOUT=22 - NCCL_IB_DISABLE=0 #子节点部分 node-worker-ds-v3: image: vllm/vllm-openai:v0.11.0 container_name: node-worker-ds-v3 entrypoint: ["/bin/bash", "-c", "ray start --block --address=${RAY_HEAD_IP}:${RAY_PORT}"] network_mode: host privileged: true shm_size: 64g deploy: resources: reservations: devices: - driver: nvidia capabilities: [gpu] device_ids: ['0', '1', '2', '3', '4', '5', '6', '7'] volumes: - ${VOLUME_DS_V3_PATH}:/ds-v3 - ${VOLUME_DS_RAY}/ray:/ds-v3/tmp/ray - ${VOLUME_DS_V3_MODEL_PATH}:/models environment: - GLOO_SOCKET_IFNAME=bond0 - NCCL_SOCKET_IFNAME=bond0 - VLLM_HOST_IP=${VLLM_HOST_IP} - NCCL_IB_HCA=mlx5_0,mlx5_3 - NCCL_IB_TIMEOUT=22 - NCCL_IB_DISABLE=0 两个节点分别启动容器,然后进入头节点容器,确认ray框架搭建成功,即可启动服务 --头节点 docker compose up -d node-head-ds-v3 --子节点 docker compose up -d node-worker-ds-v3 --进入头节点: sudo docker exec -it node-head-ds-v3 bash --查看ray节点连接情况: ray status --RAY框架需要头节点和子节点互通,本次实践中在子节点使用以下命令打开防火墙限制(可选): ​ sudo ufw allow from $VLLM_POST_IP --出现两个 Active Node即连接成功 ...

2026-01-06 · 2 分钟 · 350 字 · Me

L20 8卡服务器实战:全模态AI系统一体化部署指南 (LLM + VLM + RAG(Embedding & Reranker) + ASR + Dify + Mineru

内容 在单台8卡L20服务器上进行全模态AI系统一体化部署:LLM、VLM、Embedding/Reranker、ASR、Dify与Mineru实战指南。 LLM的显存估算公式 鉴于大语言模型(LLM)的性能与参数规模(B)之间的相关性显著高于量化程度(Quantization),因此在模型选型上优先考虑参数规模更大的模型,最终选用 Qwen3-235B 和 GLM-4.5V-106B的int4版本,以最大化整体性能表现。 Qwen3-235B模型的显存占用估算: GLM-4.5V-106B的显存占用估算: 模型的下载可通过HuggingFace或Modelscope. LLM 前置条件:安装 Docker 下载 Vllm 镜像(版本大于v0.11.0)+ 下载 Qwen235B int4量化版本 使用docker compose 方式启动 version: '3' services: qwen3-235b-instruct: image: vllm/vllm-openai:v0.11.0 container_name: qwen3-235b-instruct deploy: resources: reservations: devices: - driver: nvidia capabilities: [gpu] device_ids: ['0','1','2','3'] volumes: - /your/path/to/qwen3-235b-instruct-awq:/root/models ports: - "10000:8000" shm_size: '2g' command: > --model /root/models --host 0.0.0.0 --port 8000 --trust-remote-code --served-model-name LLM --gpu-memory-utilization 0.75 --enable-auto-tool-choice --tool-call-parser hermes --max-model-len 65536 --tensor-parallel-size 4 --api-key your-api-key VLM 前置条件:安装 Docker 下载 Vllm 镜像(版本大于v0.11.0)+ 下载 GLM-4.5V-106B int4量化版本 ...

2026-01-05 · 3 分钟 · 434 字 · Me