首页 > 教程攻略 > ai资讯 >聊聊如何在内网下构建大模型微调环境

聊聊如何在内网下构建大模型微调环境

来源:互联网 时间:2026-08-21 14:35:10

在内网环境下搭建大模型微调环境,核心痛点在于依赖包的获取——没有公网镜像,没有便捷的pip一键安装。好在通过虚拟机中转加离线包搬运,这套流程完全可以跑通。下面详细记录从零到一的完整步骤,涉及VMWare镜像、Docker容器、Python虚拟环境、离线pip操作以及LLaMA-Factory的常见踩坑。

背景

AI服务器在内网,除了预先安装的python及docker等基本软件包外,别的一概没有。从零基于Llama-Factory搭建大模型微调环境。

聊聊如何在内网下构建大模型微调环境

在VMWare上搭一个同样服务器版本(例如centos)的虚拟机,用于联网下载依赖包;后续再拷贝过去。

docker

在运维同事打好docker镜像后,开发编写docker-compose单独起一个docker环境。这里建议以自己名字命名文件夹来启动docker,这样docker-compose挂载的volume会比较干净,所有文件都直接落在自己名字的目录下。

docker-compose内容如下(具体配置略),文件夹结构也以个人名字命名,方便管理。

虚拟环境venv

进入docker后,基于python3默认的venv模块,单独起一个python虚拟环境,隔离包的依赖,避免和系统或他人环境冲突。

创建虚拟环境:

python -m venv apienv

激活环境:

source ENV_DIR/bin/activate

pip包下载

在内网环境下,如果没有镜像库支持,是无法一键 pip install xxx 的,必须手动搬运。这里提供两种脱机方案:

  1. pip downloadpip install --no-index
  2. 直接 pip install xxx --target /path

当然,包的下载要在venv虚拟环境下进行,隔离别人的包依赖,防止覆盖或版本不对。

个人推荐以下命令组合(已脱敏处理,镜像源可根据内网情况替换):

# 指定源下载包
pip install pandas -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

# 将本地目录打包,解决llamafactory-cli命令报错的问题
pip install -e . --no-build-isolation --no-index --find-links=./

# 指定源下载requirements依赖,并指定下载目录
pip download -r requirements.txt -d /home/sitepackage/ --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 

# 指定源下载指定包,并指定下载目录
pip3 download -d /home/sitepackage/ gradio==4.21.0 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

# 离线安装 download 好的依赖包
pip install --no-index --find-links=/home/sitepackage/ -r requirements.txt

LLaMA-Factory报错

llamafactory-cli不存在

新版Llama-Factory改用了 llamafactory-cli 命令进行训练微调,但该命令默认是不存在的。需要在LlamaFactory源码目录下执行 pip install -e . 来生成,官方文档也注明了这一要求。不过离线环境下不能直接写,上述命令列表已给出离线安装的变通方式。但当时还是遇到了新问题——可以参考GitHub上的issue,是LlamaFactory自身的问题,重新拉取最新代码即可。只要按照上述步骤:先download包,再install,最后执行:

pip install -e . --no-build-isolation --no-index --find-links=/home/sitepackage/

即可生成 llamafactory-cli 命令。

docker共享内存不足

报错信息如下:

NCCL error in: ../torch/csrc/distributed/c10d/ProcessGroupNCCL.cpp:1970, unhandled system error (run with NCCL_DEBUG=INFO for details), NCCL version 2.20.5
System call (e.g. socket, malloc) or external library call failed or device error. 
error:
while creating shared memory segment /dev/shm/nccl-jURtqQ (size 5767520)

docker默认的共享内存只有64MB,当机器有多张显卡时,llamafactory-cli train 默认会启用分布式训练,这时共享内存很容易爆满。解决方式有两种:一是调大docker的shm_size,在docker-compose文件中增加配置:

shm_size: 16GB

二是指定单卡训练(如果单卡显存足够),命令如下:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli train xxx

参考:NCCL相关issue简书分享

transformers版本不对

报错信息:

ValueError: too many values to unpack (expected 2)

重新安装一下transformers,指定版本为4.41.2即可解决。

总结

LlamaFactory新版本更新后,整体使用还算方便,唯独 llamafactory-cli 命令确实容易让人懵一下,踩个坑就清楚了。对于微调本身,并不复杂——毕竟都是配置项驱动;真正的麻烦在于内网环境下依赖包的拉取和安装,不过走完一遍流程,收获还是不少的。