ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Xinference 拉 DeepSeek-R1 老断?让 Codex 走 TaoToken 续传 hfd

Xinference 拉 DeepSeek-R1 老断?让 Codex 走 TaoToken 续传 hfd 先把话说透Xinference 拉 DeepSeek-R1-Distill-Llama-70B 断十次不是你的姿势不对是 hfd 从 HF-Mirror 拖 70B 大文件时网络抖动会让 aria2 或 huggingface-cli 的会话中途掉线。原文里部署 XinferenceONE-APIFastGPT 的链路我照跑过最折磨人的就是下载模型这一步——明明df -h还有 900Gnvidia-smi两张 A10 也亮着但./hfd.sh deepseek-ai/DeepSeek-R1-Distill-Llama-70B跑三个小时后进度条卡住CtrlC 重来又是三个小时。后来我想通一件事与其自己对着日志猜不如把中断日志和下载目录直接贴给 Codex让模型帮我算--resume-download和--max-workers的最优值。要让 Codex 稳定输出我先把它的模型通道切到了 TaoToken去 TaoToken 拿了一把 KeyBase URL 填https://taotoken.net/api剩下的事就顺了。1. 断在 87% 的 hfd不是命令错是续传策略太粗糙1.1 原部署链路里真正耗时的不是 Docker而是模型文件原文的部署顺序很清楚先准备服务器检查显卡然后装 nvidia-container-toolkit再用 docker-compose 起 Xinference。这些步骤只要硬件看着办基本不会卡。真正的分水岭是“下载模型文件”这一节——Xinference 的 Portal 要通过本地模型提供服务而 DeepSeek-R1-Distill-Llama-70B 光权重就有几十个 GB。官方给了两种方式huggingface-cli和hfd.sh。两种方式都支持断点续传但“支持”不等于“默认最优”。网络不好时huggingface-cli 需要显式加--resume-downloadhfd.sh 虽然用 aria2 做多线程但并发数不合适会把镜像站连接池打爆然后整批文件重来。1.2 我把“反复断”当玄学其实是日志里藏着答案当时我盯着屏幕看到[FAILED]一堆第一反应是重跑。重跑三次之后发现每次都在不同的文件上断于是我去看.cache/huggingface里的残留文件发现部分.incomplete文件已经很大说明有断点机制只是没有正确触发。真正的问题有两个一是 hfd 脚本重跑时没有把--resume-download语义传递给底层下载器二是--max-workers开太大导致单个文件分块丢失。这些信息全写在 stderr 日志里但人肉看很费劲。我决定让 Codex 来分析。2. 把 hfd 日志贴给 Codex 之前先让 Codex 连上 TaoToken2.1 打开 TaoToken 控制台创建一把 API Key要让 Codex 稳定跑完分析得先给它一个不抽风的模型后端。我打开 TaoToken 注册后进控制台在 API Keys 页面创建了YOUR_API_KEY。这个 Key 只用在 Codex 的配置里不要和 Xinference 的模型目录混在一起。TaoToken 在这里就是 Codex 的模型通道它把请求转给合适的模型然后返回结果。2.2 编辑 ~/.codex/config.toml把 Base URL 指到 https://taotoken.net/apiCodex 的配置比 Claude Code 简单不需要环境变量满天飞只要在~/.codex/config.toml里加一个自定义 provider。注意 Base URL 要填https://taotoken.net/api末尾不要加/v1TaoToken 的兼容层已经处理了路径。模型 ID 先占位实际值去 模型广场 复制别自己猜后缀。model YOUR_MODEL_ID # 以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 模型广场列表为准 model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY然后导出环境变量export TAOTOKEN_API_KEYYOUR_API_KEY2.3 验证 Codex 能回答模型下载问题先跑一个最简单的命令确认 Key 和 Base URL 没写错codex exec --provider taotoken 用一句话说明 hfd 和 huggingface-cli 的区别如果返回正常说明 Codex 已经走通了 TaoToken。这一步不要跳过否则后面贴日志时它报 401你会分不清是 Key 的问题还是日志的问题。3. 让 Codex 分析 hfd 中断日志并生成续传命令3.1 贴什么日志最有用不用把整屏输出都丢给它。我通常截取三段第一段是报错行ERROR、[FAILED]、Connection reset这些第二段是已经下载完成的文件列表说明断点在哪第三段是最终退出码。另外要把下载目录的结构告诉它比如.incomplete文件的大小和数量。Codex 可以通过这些信息判断是连接被重置还是磁盘空间不足或者镜像源限流。3.2 Codex 给出的 hfd 续传命令长什么样我把日志贴给 Codex它给出的建议是不要重复执行裸的./hfd.sh而是保留HF_ENDPOINT的同时加上--resume-download语义并限制并发数。hfd.sh 本身封装了 aria2c重跑时只要目录不变它会自动跳过已完成的文件。但如果你之前用的是 huggingface-cli命令要这样写export HF_ENDPOINThttps://hf-mirror.com huggingface-cli download \ --resume-download \ --max-workers 3 \ --local-dir-use-symlinks False \ deepseek-ai/DeepSeek-R1-Distill-Llama-70B \ --local-dir DeepSeek-R1-Distill-Llama-70BCodex 特别强调--max-workers 3不要调到 8。因为镜像站的 TCP 连接有限并发太高会让分片请求排队反而更容易超时。它让我把下载过程放到tmux里避免 SSH 断连导致进程被杀tmux new -s hfd ./hfd.sh deepseek-ai/DeepSeek-R1-Distill-Llama-70B -x 3 --local-dir DeepSeek-R1-Distill-Llama-70B # 按 CtrlB 再按 D 脱离之后用 tmux attach -t hfd 回来3.3 如果是 huggingface-cli 半路断了怎么续huggingface-cli download的--resume-download是幂等的重跑同一命令会比对本地已有文件。Codex 提醒我--local-dir和--local-dir-use-symlinks False要同时给否则会生成 cached 软链下一次可能重新下载。这两个参数是配套的不能只写一半。重跑时日志里会出现Resuming download字样那就对了。4. 下载完千万别直接启动 Xinference先核对 sha2564.1 生成 checksum 列表原文里提到“需要确认文件完整性最好进行对比”。这一步是防止 hfd 断点续传时某个分块损坏。下载完后我让 Codex 生成了一组校验命令。它没有直接执行而是把命令发给我我在服务器上运行cd DeepSeek-R1-Distill-Llama-70B find . -type f -name *.safetensors -o -name *.json -o -name *.txt | xargs sha256sum checksums.sha256然后在 HF-Mirror 页面找到官方发布的 sha256 值用sha256sum -c checksums.sha256做对照。这个动作必须在docker-compose up -d xinference之前完成否则 Xinference 启动时读取到损坏的model.safetensors.index.json报错会让你误以为是显卡驱动或镜像问题。4.2 Xinference 启动时读到坏模型会怎样常见报错是FileNotFoundError或者KeyError: model.safetensors。你会看到 Xinference 日志里 model 注册失败Portal 上模型状态一直是loading。这时候再回头检查下载目录八成是某个分块文件只有几十 KB占位文件没被覆盖。Codex 给的排查思路是用du -h比较每个文件大小跟模型广场的文件列表对照差异大的文件单独删掉重下而不是整个目录清空。5. 部署链路里 xinference 拉模型老断的其它排障点5.1 HF_ENDPOINT 与镜像一致性问题我踩过一个坑第一次下载时忘了export HF_ENDPOINThttps://hf-mirror.com结果 huggingface-cli 直连官方源速度只有几十 KB断得更快。Codex 指出断点续传只在同一个镜像源下有效。如果你前半段用 HF-Mirror后半段切回官方源.incomplete文件不会自动接上会重新下载。所以HF_ENDPOINT要写进~/.bashrc或者每次在同一个 tmux 会话里 export保持稳定。5.2 aria2 多线程数与 --max-workers 取舍hfd.sh 默认调 aria2c-x参数控制每文件的连接数。很多教程让你-x 16但在 A10 的这个环境里并没有意义因为瓶颈在网络不在磁盘。Codex 的建议是-x 3到-x 5之间配合--max-workers 3已经足够。数字越大镜像站越容易限流甚至直接断开。如果你的日志里出现GGRemoteException或者Connection reset by peer优先降低并发而不是增加。5.3 ONE-API/FastGPT 环节不受影响模型下载完成后Xinference 会在9997端口提供 OpenAI 兼容接口。ONE-API 和 FastGPT 只是消费这个接口不参与文件传输。所以如果你的 hfd 断了修复过程只发生在模型下载阶段不需要动 ONE-API 的SQL_DSN也不需要改 FastGPT 的CHAT_API_KEY。Codex 帮我确认了这一点避免我在排障时把 docker-compose 里的环境变量瞎改一遍。6. 跑通之后回 TaoToken 控制台对一下这次调用hfd 断点续传和 sha256 校验都完成后Xinference 顺利启动模型出现在 Portal 上。这时候我回到本地让 Codex 把刚才生成的命令和数据流总结成一份备注下次再下载其他模型直接用。同时也想确认一下 TaoToken 上的调用记录看这次 Codex 分析日志到底消耗了多少 token。打开 TaoToken 模型对话 可以把同样的日志再问一遍对比回答是否一致长期写代码的话看看 Coding Plan 是否够用Key 的创建和用量在 控制台 API Keys 里都能找到。Codex 的 Base URL 配置和 hfd 续传这几步如果以后忘了直接翻 Claude Code 接入文档 也一样虽然名字是 Claude Code但里面 Base URL 的填法和环境变量思路是通用的。下次再遇到下载大模型断线别急着 CtrlC先让 Codex 看看日志里到底是谁在断。
返回列表