跳到主要内容

导入公开模型

想在 OpenBayes 上使用某个开源模型(如 Qwen、DeepSeek、Llama)时,推荐的顺序是:

  1. 先在「公共模型」中搜索。平台已经收录了大量常用模型,可以直接只读绑定到容器使用,不占用你的存储空间,也不需要等待下载。
  2. 确实没有收录,再按本文的方式从 ModelScope 或 Hugging Face 下载,并存入你自己的模型仓库。

本文介绍第二种情况。

先确认公共模型中是否已有

在控制台的「公共模型」中按模型名称搜索,例如 Qwen3DeepSeek-R1。如果找到了,直接在创建容器时把它绑定到 /openbayes/input/input0 即可,不必往下读。

公共模型的介绍见 公共资源概览,绑定方式见 算力容器数据绑定

选择下载来源

  • ModelScope(推荐):托管在国内,容器直接访问速度快,不需要配置任何镜像。
  • Hugging Face:模型更全,但国内网络需要配合镜像站使用,见下文。

如果两边都有同一个模型,优先用 ModelScope。

决定下载到哪里

这是开始下载前最重要的决定,两种选择:

方式一:直接下载到模型版本(推荐)方式二:下载到工作目录
做法新建模型仓库和空版本,以读写方式绑定到 /input0,直接下载进去下载到 /output
优点不占用工作目录空间;下载一次后任何容器都能只读绑定复用简单,不需要重启容器
缺点需要重启容器来建立绑定占用工作目录空间;换个容器就要重新下载
注意

超过 10 GB 的模型请不要用方式二。工作目录的容量有限,大模型很快就会占满,而且每次容器启停都要同步这些数据,要等很久。

即使是小模型,只要之后还会在别的容器里用到,方式一也更划算,下载一次就能一直复用。

方式一:直接下载到模型版本

  1. 新建模型仓库,见 模型管理
  2. 创建一个空版本,用来接收下载的数据。在模型页面点击「创建空版本」即可,也可以使用命令行 bayes data new-version <模型 ID>(模型和数据集在命令行里共用 bayes data 一组命令,把模型 ID 当数据集编号传即可,见 用 bayes 上传数据)。
  3. 以读写方式绑定到容器。创建或重启容器时,把这个空版本绑定到 /openbayes/input/input0,绑定模式选择「读写」。读写绑定的说明见 算力容器数据绑定#读写绑定
  4. 在容器中执行下载,下载目标目录写 /input0(见下文「下载命令」)。
  5. 下载完成后关闭容器。此后任何容器都可以只读绑定这个模型版本。

读写绑定的数据直接写入数据仓库,不经过工作目录,所以大模型用这种方式下载不会受工作目录容量的限制。

用便宜的算力下载

下载模型的过程只用网络和磁盘,完全用不到 GPU。如果你用 RTX 4090 或 A100 的容器下载一个几十 GB 的模型,这段时间的 GPU 费用是白花的。

推荐的做法:

  1. 用最便宜的 CPU 算力创建容器,读写绑定空版本,执行下载;
  2. 下载完成后关闭这个容器;
  3. 再用 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_transferHF_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_dircache_dir 会生成 models--org--name/snapshots/<hash>/ 这样的缓存目录结构,而不是你期望的扁平目录。

下载中断了怎么办

两个命令行工具都支持断点续传,重新执行同样的下载命令即可,已经下载完成的文件会被跳过。

下一步

模型入库后,如果要把它部署成可调用的推理服务,见 模型部署快速上手