从git clone超时到模型跑起来:H800 内网部署的12小时
背景:刚拿到一台 NVIDIA H800 (80GB),算力很足,但网络是内网环境。
目标:把 LLaMA-Factory + Qwen2-VL 跑起来。
结果:足足折腾了 12 小时,踩了一堆坑。
说实话,我以为这事儿很简单。pip install、git clone、运行,搞定。结果现实给了我当头一棒。
心态崩了:内网不是不能上外网,是完全不能上
刚开始我还抱有幻想,也许只是慢一点?于是直接执行 git clone https://github.com/hiyouga/LLaMA-Factory.git,等了半小时,超时。再试,还是超时。docker pull 更惨,直接卡在 0%。
这时候我才意识到,这不是慢的问题,这是根本没有外网。企业内网只剩算力,没有外网。
**核心策略就这么简单:放弃 GitHub,拥抱国内镜像。**不要浪费时间 Ping github.com,把依赖链全部切到国内高速镜像,效率最高。
我的硬件环境:
- GPU: NVIDIA H800 (80GB)
- OS: Ubuntu 20.04
- Drivers: CUDA 12.x
第一坑:pip 源没换,PyTorch 装了一下午
好吧,第一次装 PyTorch 的时候我没换源,心里想着”可能没那么慢”。结果 pip install torch 跑了整整 4 小时,最后还因为网络波动断了。重试,又 3 小时。那天晚上我差点放弃。
后来才意识到必须切清华源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这下速度起飞。PyTorch 2.3 只要 15 分钟。
代码从哪来?Gitee 救了我
GitHub 不行,得找替代方案。LLaMA-Factory 作为国产开源项目,在 Gitee 上有官方同步仓库。这简直是救命稻草。
cd /workspacegit clone https://gitee.com/hiyouga/LLaMA-Factory.gitcd LLaMA-Factory实测 Gitee 下载速度 8MB/s,7GB 的仓库 15 分钟拉完。
安装依赖:
pip install -e ".[torch,metrics]" -i https://pypi.tuna.tsinghua.edu.cn/simple我选了本地安装而不是 Docker。说实话,Docker 在这种环境下太痛苦了,本地安装容易调试。
最大的坑:模型下载卡了 3 小时
代码跑起来了,我觉得胜利在望,然后卡在模型下载。
默认情况下,LLaMA-Factory 会去 HuggingFace 下载 Qwen2-VL。但 HuggingFace 在国内几乎 100% 失败。我傻乎乎地等,以为只是慢。3 小时后我发现不对劲——下载进度一直是 0%。
**解决方案:强制走阿里魔搭社区 (ModelScope)。**这把”万能钥匙”建议直接写入 ~/.bashrc:
export USE_MODELSCOPE_HUB=1设置完重启终端,重新运行。这次模型下载终于有了进度条。
WebUI 启动:又一个坑
终于可以启动 WebUI 了:
llamafactory-cli webui终端显示 Running on http://0.0.0.0:7860,我兴冲冲地打开浏览器输入 IP:7860。连接超时。
问了运维才知道,7860 端口没开。防火墙规则 corporate network 你懂的。
有两个方案:
方案 A:让管理员开 7860 端口。我申请了,审批流程要 3 天。
方案 B:SSH 隧道,本地访问。
我果断选了 B:
ssh -L 7860:localhost:7860 root@服务器IP然后在本地浏览器访问 localhost:7860,通了。
H800 配置:别让 80GB 显存浪费
WebUI 跑起来只是第一步。如果不进行正确配置,H800 跑出来的速度可能和 3090 差不多。
以下是我摸索出来的”H800 黄金配置”:
模型下载源:手动下拉选择 modelscope。虽然设置了环境变量,但在 UI 里显式指定更稳妥。配合 H800 的万兆内网,下载 7B 模型只要 2 分钟。
模型路径:填写模型 ID,例如 Qwen/Qwen2-VL-7B-Instruct。系统会自动检测并缓存到本地。
量化等级:选 none。80GB 显存不需要 int4 或 int8 牺牲精度,科研场景更需要准确率。
推理引擎:这一步最关键。选择 vllm。huggingface 引擎太保守,vllm 用 PagedAttention 把吞吐量拉到 3-10 倍。
加速方式:选 flash_attention_2。H800 属于 Hopper 架构,天生支持 FlashAttention-2,处理长上下文时更稳。
额外参数:保持 {"vllm_enforce_eager": true}。别问为什么,我踩过坑——vLLM 在某些 CUDA 版本下构建 Graph 会失败导致 OOM。
验证:终于看到”Model loaded”
点击加载模型按钮。
切回 SSH 终端观察日志。你应该看到:
Downloading from ModelScope...(这次真的在下载)Loading model weights...vLLM engine initialized...
当 WebUI 右上角显示 “Model loaded” 时,我差点哭了。从昨天下午到今天上午,折腾了整整 12 小时。
多模态测试
切换到 Chat 选项卡,上传一张复杂的交通场景图片,输入:
“分析当前场景中的交通风险,并给出驾驶建议。”
H800 在 1-2 秒内输出了流畅的分析。这套 Qwen2-VL + vLLM + H800 的组合终于完全打通。
写在最后
说实话,回头看这 12 小时,我踩的坑都很蠢:没换 pip 源硬等 4 小时;忘记设置 USE_MODELSCOPE_HUB 卡 3 小时;不知道要开防火墙端口折腾 2 小时。
但如果有人把这些坑都标出来,后面的人能省多少时间?
说白了就三句话:Gitee 拉代码,别碰 GitHub;ModelScope 下模型,别碰 HuggingFace;vLLM 引擎 + FlashAttention,H800 性能才能吃满。
这套流程不仅适用于 LLaMA-Factory,也适用于多数国产大模型的私有化部署。
希望这篇记录能帮你少走些弯路。有问题欢迎交流。