大模型版本管理配置:用 Git 和 DVC 管好模型文件
大模型版本管理配置的核心,是把代码、配置文件和模型权重分开管理:代码与配置文件交给 Git,大体积权重和数据集交给 DVC。
这样既能追溯每次训练用了什么参数,又不会因为几 GB 的模型文件把 Git 仓库撑爆。
本文按零基础可照做的顺序,演示在 Linux 服务器上完成这套配置。
先确认你的场景适合哪种管理方式
如果你只是偶尔保存一个模型文件,用目录加日期命名也能应付。
但只要你需要回答“上周部署的模型对应哪版训练参数”这类问题,就建议上版本管理。
典型适用场景包括:多人协作训练、需要复现实验结果、线上服务要回滚到旧模型、同一套代码要产出多个模型版本。
开始前需要准备:一台能运行 Git 的 Linux 服务器、已安装 Python 3.8 及以上环境、一个可用的 Git 远程仓库(如 GitLab 或 GitHub 私有仓库)、一块用于存放大模型文件的远程存储(可以是另一台服务器上的目录,也可以是对象存储)。
本文命令以 Ubuntu 22.04 为例,其他发行版替换包管理命令即可。
安装并初始化 Git 与 DVC
先安装 Git 和 DVC。
DVC 是一个开源的数据版本控制工具,它用很小的占位文件记录大文件的位置和哈希,真正的文件放到远程存储。
sudo apt update
sudo apt install -y git
pip install dvc dvc-s3
进入你的项目目录,初始化 Git 和 DVC:
cd /data/llm-project
git init
dvc init
git add .dvc .dvcignore
git commit -m "init git and dvc"
执行后目录中会出现 .dvc/ 文件夹,说明 DVC 初始化成功。
接着配置远程存储,假设你用一台内网服务器通过 SSH 存放模型文件:
dvc remote add -d storage ssh://user@192.168.1.10/data/dvc-store
dvc remote modify storage user your_ssh_user
git add .dvc/config
git commit -m "add dvc remote"
如果使用对象存储,把 ssh:// 地址换成对应协议地址,并安装相应插件。
配置完成后用 dvc remote list 检查,应能看到名为 storage 的默认远程。
把模型权重纳入版本管理
假设模型权重放在 models/ 目录,数据集放在 data/ 目录。
先用 DVC 跟踪它们:
dvc add models/llm-base
dvc add data/train-v1
命令会生成 models/llm-base.dvc 和 data/train-v1.dvc 两个小文件,同时把原目录加入 .gitignore。
随后把 .dvc 文件和 .gitignore 提交到 Git:
git add models/llm-base.dvc data/train-v1.dvc .gitignore
git commit -m "track model and dataset with dvc"
dvc push
dvc push 会把真实文件上传到刚才配置的远程存储。
以后拉取仓库的人执行 dvc pull 就能拿到对应版本的权重。
每次模型更新后重复 dvc add、git commit、dvc push 三步,就形成了可追溯的版本历史。
切换版本与回滚时注意什么
查看某个模型文件的版本历史用 git log models/llm-base.dvc。
要回到旧版本,先切回对应的 Git 提交,再拉取 DVC 文件:
git checkout -- models/llm-base.dvc
dvc checkout
dvc pull
执行后 models/llm-base 目录内容会恢复到该提交记录的版本。避坑重点:不要在未提交当前改动时直接切换分支,否则未跟踪的权重文件可能被覆盖;
执行 git checkout 前先用 git status 确认工作区状态。
另外,DVC 远程存储需要提前配置好写权限,dvc push 失败时优先检查 SSH 密钥或对象存储的访问密钥是否有效。
验证配置是否真正生效
完成以上步骤后,用三个检查项确认:第一,git status 应显示工作区干净,且模型目录没有出现在 Git 跟踪列表里;
第二,dvc status 应显示没有未推送的缓存;
第三,在另一台机器克隆仓库后执行 dvc pull,能完整下载模型文件。
三项都通过,说明大模型版本管理配置已经可用。
如果只是单人使用,可以先用本地目录作为 DVC 远程存储跑通流程,再迁移到正式存储。