导入公开模型
想在 OpenBayes 上使用某个开源模型(如 Qwen、DeepSeek、Llama)时,推荐的顺序是:
- 先在「公共模型」中搜索。平台已经收录了大量常用模型,可以直接只读绑定到容器使用,不占用你的存储空间,也不需要等待下载。
- 确实没有收录,再按本文的方式从 ModelScope 或 Hugging Face 下载,并存入你自己的模型仓库。
本文介绍第二种情况。
先确认公共模型中是否已有
在控制台的「公共模型」中按模型名称搜索,例如 Qwen3、DeepSeek-R1。如果找到了,直接在创建容器时把它绑定到 /openbayes/input/input0 即可,不必往下读。
公共模型的介绍见 公共资源概览,绑定方式见 算力容器数据绑定。
选择下载来源
- ModelScope(推荐):托管在国内,容器直接访问速度快,不需要配置任何镜像。
- Hugging Face:模型更全,但国内网络需要配合镜像站使用,见下文。
如果两边都有同一个模型,优先用 ModelScope。
决定下载到哪里
这是开始下载前最重要的决定,两种选择:
| 方式一:直接下载到模型版本(推荐) | 方式二:下载到工作目录 | |
|---|---|---|
| 做法 | 新建模型仓库和空版本,以读写方式绑定到 /input0,直接下载进去 | 下载到 /output |
| 优点 | 不占用工作目录空间;下载一次后任何容器都能只读绑定复用 | 简单,不需要重启容器 |
| 缺点 | 需要重启容器来建立绑定 | 占用工作目录空间;换个容器就要重新下载 |
超过 10 GB 的模型请不要用方式二。工作目录的容量有限,大模型很快就会占满,而且每次容器启停都要同步这些数据,要等很久。
即使是小模型,只要之后还会在别的容器里用到,方式一也更划算,下载一次就能一直复用。
方式一:直接下载到模型版本
- 新建模型仓库,见 模型管理。
- 创建一个空版本,用来接收下载的数据。在模型页面点击「创建空版本」即可,也可以使用命令行
bayes data new-version <模型 ID>(模型和数据集在命令行里共用bayes data一组命令,把模型 ID 当数据集编号传即可,见 用 bayes 上传数据)。 - 以读写方式绑定到容器。创建或重启容器时,把这个空版本绑定到
/openbayes/input/input0,绑定模式选择「读写」。读写绑定的说明见 算力容器数据绑定#读写绑定。 - 在容器中执行下载,下载目标目录写
/input0(见下文「下载命令」)。 - 下载完成后关闭容器。此后任何容器都可以只读绑定这个模型版本。
读写绑定的数据直接写入数据仓库,不经过工作目录,所以大模型用这种方式下载不会受工作目录容量的限制。
用便宜的算力下载
下载模型的过程只用网络和磁盘,完全用不到 GPU。如果你用 RTX 4090 或 A100 的容器下载一个几十 GB 的模型,这段时间的 GPU 费用是白花的。
推荐的做法:
- 用最便宜的 CPU 算力创建容器,读写绑定空版本,执行下载;
- 下载完成后关闭这个容器;
- 再用 GPU 算力创建容器,把刚才的模型版本以只读方式绑定进来使用。
代价只是多一次容器切换,模型越大越值得。
下载命令
下面的 <目标目录> 按你选择的方式填写:方式一填 /input0/<模型目录>,方式二填 /output/<模型目录>。
从 ModelScope 下载
pip install --user modelscope
modelscope download --model <模型 ID> --local_dir <目标目录>
模型 ID 可以在 ModelScope 的模型页面复制,形如 Qwen/Qwen3-8B。
从 Hugging Face 下载
pip install --user -U huggingface_hub
# 使用镜像站,解决国内网络无法访问的问题
export HF_ENDPOINT=https://hf-mirror.com
hf download <模型 ID> --local-dir <目标目录>
hf 是 huggingface_hub 1.0(2025 年 10 月)之后的命令行工具,平台上当前主流的模型部署镜像(如较新的 vLLM 各版本)预装的是这个新版本。旧的 huggingface-cli 已经停止工作,执行它只会提示你改用 hf;部分较老的镜像仍预装 1.0 之前的版本,那里命令是 huggingface-cli download(参数用法相同)。不确定的话直接执行上面的 pip install --user -U 升级,之后统一用 hf 即可。
1.0 之后的版本默认用 hf-xet 传输,不需要再装 hf_transfer;HF_HUB_ENABLE_HF_TRANSFER 这个环境变量也已经不起作用了。
用 tmux 挂到后台
大模型下载动辄几十分钟到几小时,网页版 Jupyter 或 SSH 一旦断开,前台运行的下载就会中断。建议用 tmux 把下载挂到后台,并把日志写到文件:
mkdir -p /output/logs
# ModelScope
tmux new -d -s model-download 'modelscope download --model <模型 ID> --local_dir <目标目录> 2>&1 | tee /output/logs/download.log'
# Hugging Face
tmux new -d -s model-download 'export HF_ENDPOINT=https://hf-mirror.com; \
hf download <模型 ID> --local-dir <目标目录> 2>&1 | tee /output/logs/download.log'
tmux 启动的是一个新的 shell,前面 export 的环境变量不会带进去,所以 Hugging Face 的镜像设置要写在 tmux 的命令里。
之后随时可以查看进度:
tail -f /output/logs/download.log
也可以用 tmux attach -t model-download 回到下载会话。
下载失败时 tmux 会话同样会结束,光看「会话没了」判断不出成功还是失败。关闭容器前先看日志末尾有没有报错,再核对目标目录里的文件数量和总大小与 registry 上的模型页面一致:
du -sh <目标目录>
ls -la <目标目录>
模型版本一旦转为只读,缺文件就只能重新建一个版本重下。
常见问题
下载完成了,但模型版本里没有文件
只有用旧版 huggingface-cli(huggingface_hub 0.23 之前)才会遇到:它默认把文件存到 ~/.cache,在目标目录里只放软链接,真正的数据没有落到绑定的目录里。加上 --local-dir-use-symlinks False 可以避免:
huggingface-cli download <模型 ID> --local-dir <目标目录> --local-dir-use-symlinks False
升级到新版本(pip install --user -U huggingface_hub)就不用管这个问题了:下载到本地目录已经不再使用软链接,这个参数也随之废弃。
用 Python 下载时目录结构不对
如果命令行工具用起来不顺,可以用 Python SDK。两个库都提供 snapshot_download,下面这种「模型 ID + local_dir」的用法在两边是一样的(其余参数各有差异,用到时查各自文档):
from modelscope import snapshot_download # 或 from huggingface_hub import snapshot_download
snapshot_download('<模型 ID>', local_dir='<目标目录>')
<目标目录> 同样按上面的选择填写:方式一是 /input0/<模型目录>,方式二是 /output/<模型目录>。
注意要用 local_dir 而不是 cache_dir。cache_dir 会生成 models--org--name/snapshots/<hash>/ 这样的缓存目录结构,而不是你期望的扁平目录。
下载中断了怎么办
两个命令行工具都支持断点续传,重新执行同样的下载命令即可,已经下载完成的文件会被跳过。
下一步
模型入库后,如果要把它部署成可调用的推理服务,见 模型部署快速上手。