
1. 项目背景与核心痛点最近在折腾本地大模型部署或者AI应用开发的朋友估计没少跟Hugging Face打交道。这地方确实是个宝库从BERT、GPT到Stable Diffusion几乎所有前沿的开源模型、数据集和代码都能找到。但问题也来了直接从huggingface.co下载那个速度尤其是在国内网络环境下简直是一场修行。一个几GB的模型下载进度条能卡成心电图动不动就连接超时一晚上都下不完严重拖慢开发调试的节奏。这个痛点催生了一个刚需怎么在国内快速、稳定地下载Hugging Face上的资源答案就是使用国内镜像站。其中hf-mirror.com是目前社区里口碑比较好、也比较稳定的一个选择。它本质上是一个反向代理把Hugging Face官方仓库的内容同步到国内的服务器上我们通过访问这个镜像站走国内的网络线路下载速度就能得到质的飞跃。今天这篇内容我就结合自己最近在部署千问、DeepSeek等模型时的实操把通过hf-mirror.com这个国内镜像下载Hugging Face模型的几种主流方法以及背后的原理和踩过的坑给大家系统地梳理一遍。无论你是用transformers库、huggingface-cli命令行还是玩git lfs、Docker甚至是Ollama、ComfyUI这类工具都能在这里找到对应的配置方案。2. 理解镜像站的工作原理与配置核心在动手改配置之前我们先花几分钟搞清楚hf-mirror.com是怎么工作的这能帮你理解后续所有操作的本质出了问题也知道从哪儿排查。2.1 镜像站不是什么首先得明确hf-mirror.com不是一个你可以上去搜索、浏览的完整网站前端至少主要功能不是。它主要提供的是对Hugging Face模型仓库https://huggingface.co/的文件代理服务。当你使用transformers库或者huggingface-cli时这些工具会向Hugging Face的API发起请求获取模型文件列表和下载链接。镜像站的作用就是拦截这些指向huggingface.co的请求并将其重定向到自己的服务器地址从而完成加速。2.2 核心配置环境变量HF_ENDPOINT这是所有方法里最根本、影响范围最广的一招。Hugging Face的生态工具如transformers,datasets,huggingface_hub等在运行时会读取一个名为HF_ENDPOINT的环境变量。这个变量指明了Hugging Face Hub的API端点地址。默认情况如果没有设置这个变量工具就会使用默认的https://huggingface.co。使用镜像只要我们把这个变量的值设置为https://hf-mirror.com那么所有这些工具在请求模型、数据集元数据以及拼接文件下载地址时都会自动将域名部分替换成镜像站的地址。例如一个原本指向https://huggingface.co/google/gemma-2b/resolve/main/model.safetensors的下载链接在设置了HF_ENDPOINThttps://hf-mirror.com后实际请求的地址会变成https://hf-mirror.com/google/gemma-2b/resolve/main/model.safetensors。2.3 为什么有时只改环境变量还不够因为Hugging Face的仓库通常使用Git进行版本管理而大模型文件如.bin,.safetensors则是通过Git LFS大文件存储来管理的。所以完整的下载过程可能涉及两层克隆Git仓库获取代码、配置文件、小文件。拉取LFS文件获取实际的模型权重文件。HF_ENDPOINT环境变量主要影响的是huggingface_hub这个Python库的行为它负责处理通过API的文件下载。但对于直接使用git clone或git lfs pull的命令它们依赖的是Git远程仓库的URL这个URL默认就是https://huggingface.co/xxx。因此我们需要额外的配置来让Git命令也走镜像。理解了这两层后面的操作就清晰了我们的目标就是通过环境变量、Git配置、甚至工具内置的设置项让整个数据流无论是API请求还是Git操作都经过hf-mirror.com这个中转站。3. 全局生效一次性配置方法如果你希望一劳永逸让所有相关工具都默认使用镜像推荐以下两种全局配置方法。3.1 设置系统或用户级环境变量推荐这是最彻底的方法设置后在这个系统用户下运行的所有程序都能读取到这个配置。在Linux/macOS的终端中 你可以将配置命令添加到你的shell配置文件里如~/.bashrc,~/.zshrc。# 打开配置文件 nano ~/.bashrc # 或者 nano ~/.zshrc在文件末尾添加export HF_ENDPOINThttps://hf-mirror.com保存退出后执行source ~/.bashrc或source ~/.zshrc使配置立即生效。之后新打开的终端都会自动应用这个设置。在Windows中右键点击“此电脑”或“我的电脑”选择“属性”。点击“高级系统设置”。在“高级”选项卡下点击“环境变量”。在“用户变量”或“系统变量”区域点击“新建”。变量名填写HF_ENDPOINT变量值填写https://hf-mirror.com。点击“确定”保存。需要重启命令行终端如CMD、PowerShell、VSCode终端才能使新环境变量生效。注意在Windows PowerShell中你也可以为当前会话临时设置命令是$env:HF_ENDPOINT https://hf-mirror.com。但这只对当前这个PowerShell窗口有效关闭就没了。从热词里看到$env:hf_endpoint https://hf-mirror.com 查看这个搜索很可能就是用户在尝试这个方法。3.2 配置Git全局替换解决Git Clone问题如前所述环境变量对git clone命令无效。为了让克隆仓库也走镜像需要配置Git的url.base.insteadOf选项。这个配置的作用是当Git遇到某个URL时自动将其替换为另一个URL。执行以下命令进行全局配置git config --global url.https://hf-mirror.com.insteadOf https://huggingface.co这条命令的意思是在任何Git操作中只要遇到https://huggingface.co开头的地址都自动替换成https://hf-mirror.com。你可以通过git config --global --list命令查看是否配置成功应该能看到一行url.https://hf-mirror.com.insteadofhttps://huggingface.co。组合使用最完美的方案就是同时进行上述两项配置。设置HF_ENDPOINT环境变量让Python工具链走镜像再配置Git全局替换让git clone走镜像。这样无论你通过哪种方式下载模型基本都能享受到加速。4. 按需使用临时或项目级配置方法如果你不想修改全局配置或者只在某些特定项目中使用镜像可以采用以下方法。4.1 在Python代码中临时指定在使用transformers库的from_pretrained函数时可以直接通过参数指定镜像站。from transformers import AutoModel, AutoTokenizer model_name google/gemma-2b # 方法一使用 revision 参数不推荐略显hacky # model AutoModel.from_pretrained(model_name, revisionmain, mirrorhf-mirror) # 更推荐方法二直接拼接镜像地址到模型ID适用于 huggingface_hub0.10.0 model AutoModel.from_pretrained(hf-mirror.com/ model_name) tokenizer AutoTokenizer.from_pretrained(hf-mirror.com/ model_name)或者在代码开头通过os.environ设置环境变量这只影响当前Python进程import os os.environ[HF_ENDPOINT] https://hf-mirror.com # 之后再正常调用 from_pretrained from transformers import AutoModel model AutoModel.from_pretrained(google/gemma-2b)4.2 在命令行中临时指定在运行任何会触发Hugging Face下载的命令前在终端中临时设置环境变量。Linux/macOS:HF_ENDPOINThttps://hf-mirror.com python your_script.pyWindows (PowerShell):$env:HF_ENDPOINThttps://hf-mirror.com; python your_script.pyWindows (CMD):set HF_ENDPOINThttps://hf-mirror.com python your_script.py4.3 使用 huggingface-cli 命令Hugging Face官方提供了命令行工具huggingface-cli。安装后pip install huggingface-hub你可以用它来下载模型并且直接指定镜像。# 下载整个仓库到当前目录 huggingface-cli download --repo-id google/gemma-2b --local-dir ./gemma-2b --endpoint https://hf-mirror.com # 或者只下载特定文件 huggingface-cli download google/gemma-2b config.json model.safetensors --endpoint https://hf-mirror.com这个命令的好处是它直接调用huggingface_hub库的下载接口并且--endpoint参数优先级很高即使没有设置全局环境变量也能生效。5. 特定工具与场景下的镜像配置很多流行的AI工具都集成了Hugging Face模型下载功能它们各有各的配置方式。5.1 使用 Git LFS 直接下载对于已经知道模型文件确切URL的情况或者想用下载工具如wget, aria2多线程下载可以直接拼接镜像站地址。在Hugging Face模型页面的“Files and versions”标签下找到你想下载的文件比如model-00001-of-00002.safetensors。右键点击“Download”按钮复制链接地址。原始链接类似https://huggingface.co/google/gemma-2b/resolve/main/model-00001-of-00002.safetensors将链接中的huggingface.co替换为hf-mirror.comhttps://hf-mirror.com/google/gemma-2b/resolve/main/model-00001-of-00002.safetensors将此链接粘贴到下载工具中。5.2 在 Docker 构建或运行中使用在Dockerfile中构建镜像时经常需要下载模型。为了加速构建可以在Dockerfile中设置环境变量。# 在下载模型之前的RUN指令中设置 RUN HF_ENDPOINThttps://hf-mirror.com pip install transformers \ python -c from transformers import AutoModel; AutoModel.from_pretrained(google/gemma-2b) # 或者如果你使用的基础镜像已经安装了工具可以这样 ENV HF_ENDPOINThttps://hf-mirror.com RUN python your_download_script.py如果是从已经包含模型的容器运行那下载阶段已经过了这个配置主要影响的是构建阶段。5.3 Ollama 的模型拉取Ollama在拉取某些集成自Hugging Face的模型时尤其是自定义Modelfile的情况可能会在后台调用相关库。虽然Ollama主要从自己的仓库拉取但为了确保万无一失可以在运行Ollama命令的终端环境中提前设置好HF_ENDPOINT环境变量。export HF_ENDPOINThttps://hf-mirror.com ollama run deepseek-coder或者如果你是通过systemd等服务运行Ollama可以在服务配置文件如/etc/systemd/system/ollama.service的[Service]部分添加EnvironmentHF_ENDPOINThttps://hf-mirror.com。5.4 ComfyUI 的模型下载ComfyUI的模型管理通常通过自定义节点如“ComfyUI-Manager”进行。这些节点在下载Hugging Face上的模型例如某些LoRA、VAE、CLIP模型时可能会依赖其内部的网络请求逻辑。最有效的方法找到ComfyUI的启动脚本或方式。如果你是通过命令行启动的例如python main.py那么在启动前在同一个终端设置HF_ENDPOINT环境变量。如果使用一键启动脚本你需要编辑这个启动脚本在调用Python命令前加上环境变量设置。例如将脚本中的python main.py改为HF_ENDPOINThttps://hf-mirror.com python main.py。对于已经运行的ComfyUI如果下载任务已经卡住可能需要在修改环境变量后重启ComfyUI应用。6. 常见问题排查与优化技巧即使配置了镜像有时还是会遇到问题。这里分享几个我踩过的坑和解决办法。6.1 下载速度依然很慢首先确认你的配置是否真的生效了。在Python中快速测试import os print(os.environ.get(HF_ENDPOINT, Not Set)) # 应该输出 https://hf-mirror.com如果输出正确但速度慢可能是以下原因镜像站带宽或同步延迟hf-mirror.com是公益项目可能在高峰时段带宽紧张或者某个模型文件尚未完全同步。可以尝试换个时间下载或者检查该模型文件在镜像站上的最新更新时间。你的网络到镜像服务器的线路问题可以尝试用ping hf-mirror.com或curl -I https://hf-mirror.com测试连通性和延迟。DNS解析问题尝试更换公共DNS如114.114.114.114或8.8.8.8。6.2 遇到“Connection Error”或“Timeout”这通常是网络连接不稳定或被阻断。使用代理如果你有稳定的、速度较快的国际网络代理可以尝试为命令行或Python程序设置代理。对于pip或git可以单独配置代理。# 临时为git设置代理假设代理端口是7890 git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy http://127.0.0.1:7890 # 下载完成后取消代理 git config --global --unset http.proxy git config --global --unset https.proxy降级协议有时尝试将https换成http可能有效但镜像站不一定支持http。重试机制在代码中使用transformers库时它本身具备重试机制。对于命令行可以写个简单的循环脚本直到下载成功。6.3 Git Clone 成功但 LFS 拉取失败这是最常见的问题之一。现象是git clone很快因为代码小但git lfs pull卡住或报错。原因Git LFS 的拉取是独立于Git的它需要从LFS服务器下载。虽然我们配置了Git的URL替换但LFS的端点可能还需要单独配置。解决方案检查仓库根目录下的.lfsconfig文件或者直接配置Git的LFS端点。# 为当前仓库配置LFS使用镜像端点 git config lfs.url https://hf-mirror.com/[用户名]/[仓库名].git # 例如 # git config lfs.url https://hf-mirror.com/google/gemma-2b.git更一劳永逸的方法是修改Git的全局配置让LFS对所有Hugging Face仓库生效git config --global url.https://hf-mirror.com.insteadOf https://huggingface.co # 这条命令同时影响了git和git lfs6.4 证书验证错误SSL错误偶尔可能遇到SSL证书问题错误信息包含“SSL: CERTIFICATE_VERIFY_FAILED”。临时解决不推荐长期可以设置环境变量让Python忽略SSL验证有安全风险仅用于测试。export CURL_CA_BUNDLE # 或者 export PYTHONHTTPSVERIFY0根本解决更新你的系统或Python的根证书。通常出现在较旧的系统或自定义Python环境中。6.5 镜像站地址失效或变更镜像站地址并非永久不变。如果某天发现hf-mirror.com无法访问可以尝试在技术社区如知乎、GitHub、相关论坛搜索最新的Hugging Face国内镜像地址。也可以关注huggingface.co官方文档看是否有推荐的镜像列表。将找到的新地址替换掉配置中的hf-mirror.com即可。7. 进阶结合多线程下载工具进一步加速对于动辄几十GB的大模型即使走了国内镜像单线程下载也可能需要较长时间。此时可以结合多线程下载工具将速度拉满。7.1 使用 aria2aria2是一个强大的命令行下载工具支持多线程、断点续传。安装aria2Ubuntu/Debian:sudo apt install aria2macOS:brew install aria2Windows: 从官网下载安装或使用scoop install aria2。获取模型文件列表你可以通过huggingface-cli的--json输出或者直接分析仓库页面得到所有需要下载的LFS文件URL列表记得替换为镜像地址。编写下载脚本创建一个文本文件download_list.txt每行一个文件URL。https://hf-mirror.com/google/gemma-2b/resolve/main/model-00001-of-00002.safetensors https://hf-mirror.com/google/gemma-2b/resolve/main/model-00002-of-00002.safetensors https://hf-mirror.com/google/gemma-2b/resolve/main/config.json ...使用aria2下载aria2c -i download_list.txt -x 16 -s 16 -j 10 --continuetrue --max-tries0-x 16: 每个文件使用16个连接。-s 16: 将文件分成16块进行下载。-j 10: 同时下载10个文件。--continue: 支持断点续传。--max-tries0: 无限重试。7.2 使用 hfd (huggingface-downloader)这是一个专门为下载Hugging Face模型设计的Python工具内置了多线程和镜像支持。pip install hfd使用非常简单直接指定模型ID和镜像端点hfd google/gemma-2b --repo-type model --local-dir ./gemma-2b --endpoint https://hf-mirror.com我个人在下载超大规模模型时通常会采用“组合拳”先配置好全局的HF_ENDPOINT和 Git 替换确保所有工具默认走镜像。对于特别大的模型再用huggingface-cli download或hfd进行下载它们内部已经做了不错的优化。如果遇到个别文件卡住再祭出aria2手动下载那个文件补全仓库。这套流程下来在国内下载模型的体验已经可以做到非常流畅基本能跑满带宽。