2025年12月13日

从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 小时。那天晚上我差点放弃。

后来才意识到必须切清华源:

Terminal window
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

这下速度起飞。PyTorch 2.3 只要 15 分钟。

代码从哪来?Gitee 救了我

GitHub 不行,得找替代方案。LLaMA-Factory 作为国产开源项目,在 Gitee 上有官方同步仓库。这简直是救命稻草。

Terminal window
cd /workspace
git clone https://gitee.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory

实测 Gitee 下载速度 8MB/s,7GB 的仓库 15 分钟拉完。

安装依赖:

Terminal window
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

Terminal window
export USE_MODELSCOPE_HUB=1

设置完重启终端,重新运行。这次模型下载终于有了进度条。

WebUI 启动:又一个坑

终于可以启动 WebUI 了:

Terminal window
llamafactory-cli webui

终端显示 Running on http://0.0.0.0:7860,我兴冲冲地打开浏览器输入 IP:7860。连接超时。

问了运维才知道,7860 端口没开。防火墙规则 corporate network 你懂的。

有两个方案:

方案 A:让管理员开 7860 端口。我申请了,审批流程要 3 天。

方案 B:SSH 隧道,本地访问。

我果断选了 B:

Terminal window
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 牺牲精度,科研场景更需要准确率。

推理引擎:这一步最关键。选择 vllmhuggingface 引擎太保守,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,也适用于多数国产大模型的私有化部署。

希望这篇记录能帮你少走些弯路。有问题欢迎交流。