整体思路
之前使用 AutoDL 较多,最近开始使用 BitaHub 彼塔云(一个提供 A100 和 RTX 4090 的算力平台),该平台 RTX 4090 卡资源较多,且价格稍微便宜些。
对我来说,使用这类算力平台主要是部署和测试各种开源模型,例如 Qwen3.8-27B-Uncensored-GGUF、Qwen-Image-2.1 、Comfy-Org/MiniMax-H3 等。
此类场景都有一个必要的流程:模型下载,模型权重文件体积基本在几十 GB 左右,比如:
- Qwen-Image-2.1 :约 33 GB;
- Comfy-Org/MiniMax-H3 相关量化模型:整个工作流可能需要约 70 GB;
- Qwen3.8-27B Uncensored GGUF Q5 以及 mmproj、draft model 等文件 :约 20 多 GB。
如果每次都是:启动 GPU 实例,下载模型,等待几十 GB 文件下载完成,然后再开始推理,那么前面消耗的时间仅仅是下载,而用不到 GPU 的算力,但是这个下载过程却要消耗 GPU 费用,有点不划算。
AutoDL 有一个好的地方是:当不需要使用 GPU 场景时,可以关机后使用无卡模式,无卡模式使用 0.5 核;2GB 内存;无 GPU 卡的配置,价格统一为¥0.1/小时,对实例之前和之后的数据均无影响,具体参见:AutoDL 省钱绝招。
BitaHub 彼塔云 没有提供该功能,不过提供了独立的文件存储功能,可利用该功能将模型下载到本地,然后上传到 BitaHub 的文件存储中,再从文件存储中挂载模型,这样就可以避免下载模型时消耗 GPU 费用。
核心原则很简单:
能在 GPU 实例启动之前完成的事情,就不要占用 GPU 时间。
算力与存储
BitaHub 彼塔云 提供 RTX 4090 24GB、NVIDIA A100 80GB 以及 CPU 等不同类型的计算资源,并提供单卡和多卡规格。
我目前主要使用的是 RTX 4090 24GB,以我使用时平台显示的信息为例:
| 资源 | 规格 / 价格 |
|---|---|
| RTX 4090 | 24GB VRAM |
| 4090 单卡 | ¥1.68 / 小时 |
| 实例内存 | 56GB |
| GPU 规格 | 1 / 2 / 4 / 8 卡 |
| A100 | 80GB VRAM |
| A100 单卡 | ¥6.38 / 小时 |
这些是目前平台实时显示的资源和价格,实际使用时应以创建实例页面显示的信息为准。
开发机提供的免费系统盘容量为 30GB,最大只能设置 100GB,多出的 70GB 系统盘 0.07元/日/GB 合计 ¥ 4.90 /日,且无论是否关机。
因此存放模型最好使用平台提供的文件存储,每个用户有 200GB 免费存储额度,超出部分按照 ¥0.01 /GB/日 收费,对于个人用户来说,200GB 已经可以同时存放多套模型。
Qwen-Image-2.1 ≈ 33 GB
MiniMax-H3 相关量化模型及组件 ≈ 70 GB
Qwen3.8-27B Uncensored GGUF Q5 ≈ 22 GB
------------------------------------------------
合计 ≈ 125 GB剩余空间还可以继续放 VAE、Text Encoder、LoRA 或其他文件。把大模型权重放在独立文件系统中,再按需挂载到 GPU 实例是合适的使用方式。
模型准备流程
实际使用下来,固定为下面的流程:
1. 确认需要部署的模型
↓
2. 优先检查 ModelScope (国内访问速度很快)
↓
3. ModelScope 没有,再检查 Hugging Face (一些 Uncensored 模型,ModelScope 通常不会提供)
↓
4. 下载到本地指定目录
↓
5. 在 BitaHub 创建文件系统(初次)
↓
6. 在 BitaHub 创建模型,需要先创建一个文件系统
↓
7. 使用 bita CLI 上传到指定的模型
↓
8. 创建 GPU 开发环境
↓
9. 挂载文件系统/模型
↓
10. 开始推理这样真正开始 GPU 计费之前,几十 GB 甚至上百 GB 的模型文件已经全部准备好了。
需要注意:账号超6个月未登录且余额为0,或账号欠费超过15天,平台将对账号数据进行清理。工具
本地主要需要三个命令行工具:
-
hf:下载 Hugging Face Hub 上的模型; -
modelscope:下载 ModelScope 魔搭社区中的模型; -
bita:将本地模型上传到 BitaHub 的命令行快传工具。
Hugging Face CLI
huggingface_hub Python 包附带了内置命令行工具:hf,该工具允许直接在终端和 Hugging Face Hub 进行交互,比如:登录、创建仓库、上传下载等。
安装
- macOS 和 Linux
curl -LsSf https://hf.co/cli/install.sh | bash- Windows
powershell -ExecutionPolicy ByPass -c "irm https://hf.co/cli/install.ps1 | iex"安装包会同时安装全局hf-cli skill,供任何读取 ~/.agents/skills 目录的 agent 使用。使用 --exclude-skill 参数可以避免安装:
# macOS 和 Linux
curl -LsSf https://hf.co/cli/install.sh | bash -s -- --exclude-skill
# Windows
powershell -ExecutionPolicy ByPass -c "& ([scriptblock]::Create((irm https://hf.co/cli/install.ps1))) -ExcludeSkill"使用
下载命令基本结构:
hf download <repo-id> [files...] --local-dir <directory>- 下载整个仓库到指定目录:
hf download Qwen/Qwen-Image-2.1 --local-dir ~/MyFiles/models/Qwen-Image-2.1- 下载单个文件到指定目录:
hf download JonathanColetti/Qwen3.8-27B-Uncensored-GGUF Qwen3.8-27B-Uncensored-Q5_K_M.gguf --local-dir ~/MyFiles/models/Qwen3.8-27B-Uncensored-GGUF- 一次下载多个指定文件,GGUF 仓库常见,提供 IQ2、Q4、Q5、Q6、Q8 等大量量化版本,实际只需要其中一个匹配 GPU 显存的主模型和辅助文件,无需整个仓库:
hf download JonathanColetti/Qwen3.8-27B-Uncensored-GGUF \
Qwen3.8-27B-Uncensored-Q5_K_M.gguf \
Qwen3.8-27B-Uncensored-draft-Q4_0.gguf \
Qwen3.8-27B-Uncensored-draft-Q8_0.gguf \
mmproj-Qwen3.8-27B-Uncensored-F16.gguf \
--local-dir ~/MyFiles/models/Qwen3.8-27B-Uncensored-GGUF--include按照 Glob Pattern 选择需要的文件:
hf download <repo-id> --include "*.json" "*.safetensors" --local-dir ./models/model-name/- 使用
--exclude,如果大部分文件都需要,只想排除某些内容,例如一个仓库同时提供.safetensors和.bin权重,而只需要 safetensors,就可以直接排除.bin:
hf download <repo-id> --exclude "*.bin" --local-dir ./models/model-name/若要准备上传到 BitaHub 彼塔云 必须使用 --local-dir,若直接执行:
hf download <repo-id>Hugging Face 默认使用自己的 Hub Cache 结构,文件通常位于:
~/.cache/huggingface/hub/通过软连接指向实际的文件,这种结构是 Hugging Face 默认的缓存结构,但如果目标是上传到远端服务器,则不太适合文件组织。
tree -l models--mobiuslabsgmbh--faster-whisper-large-v3-turbo
models--mobiuslabsgmbh--faster-whisper-large-v3-turbo
├── blobs
│ ├── 0351d1d6870005e865747b781b5d7c23ea0459cd
│ ├── 0adcd01e7c237205d593b707e66dd5d7bc785d2d
│ ├── 17456db595adc78a973f97d69d8cb50bc87c0b1c
│ ├── 931c77a740890c46365c7ae0c9d350ba3cca908f
│ └── e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da
├── refs
│ └── main
└── snapshots
└── 0a363e9161cbc7ed1431c9597a8ceaf0c4f78fcf
├── config.json -> ../../blobs/0351d1d6870005e865747b781b5d7c23ea0459cd
├── model.bin -> ../../blobs/e76620f83d5f5b69efd3d87e3dc180c1bd21df9fbebacfd4335e5e1efcc018da
├── preprocessor_config.json -> ../../blobs/931c77a740890c46365c7ae0c9d350ba3cca908f
├── tokenizer.json -> ../../blobs/17456db595adc78a973f97d69d8cb50bc87c0b1c
└── vocabulary.json -> ../../blobs/0adcd01e7c237205d593b707e66dd5d7bc785d2d
5 directories, 11 files最好是直接指定:
# ~/models/<model-name>/ 为本地路径
--local-dir ~/models/<model-name>/这样得到的目录结构基本就是模型仓库本身的结构,更方便检查、打包、上传以及后续直接加载。
需要注意的是,当前 Hugging Face 即使使用 --local-dir,也会在目标目录创建一个 .cache/huggingface/ 元数据目录,用于判断文件是否需要重新下载。
模型下载完成并确认不再需要同步更新后,这个元数据目录可以删除。
ModelScope CLI
需要使用 ModelScope SDK 来下载模型,官方文档
安装
pip install -U modelscope
# 确认安装成功
modelscope --version使用
ModelScope 的逻辑与 Hugging Face 非常接近,命令行下载基本格式:
modelscope download --model <model-id> --local_dir <directory>两者参数命名略有不同:
Hugging Face --local-dir
ModelScope --local_dir一个是 -,一个是 _。
- 默认下载位置:
~/.cache/modelscope/hub,若要调整,需要设置环境变量:MODELSCOPE_CACHE,macOS 在~/.zshrc中添加:
export MODELSCOPE_CACHE=/path/to/your/cache-
<model_id>模型 ID,从模型首页获取,由组织名称和模型名称组成,如:Qwen/Qwen-Image-2.1; -
下载私有模型需要登陆;
-
下载整个仓库到指定目录:
modelscope download --model Qwen/Qwen-Image-2.1 --local_dir /path/to/your/models/- 下载单个文件到指定目录:
modelscope download --model Qwen/Qwen-Image-2.1 README.md --local_dir /path/to/your/models/- 下载多个指定文件,文件名可以直接依次写在后面:
modelscope download \
--model <model-id> \
README.md \
model_index.json \
--local_dir /path/to/your/models/- 使用
--include,按照 Glob Pattern 选择需要的文件:
modelscope download \
--model <model-id> \
--include "*.safetensors" \
--local_dir /path/to/your/models/也可以指定多个 Pattern:
modelscope download \
--model <model-id> \
--include "*.json" "*.safetensors" \
--local_dir ./models/model-name/- 使用
--exclude,如果大部分文件都需要,只想排除某些内容,例如一个仓库同时提供.safetensors和.bin权重,而只需要 safetensors,就可以直接排除.bin:
modelscope download \
--model <model-id> \
--exclude "*.bin" \
--local_dir /path/to/your/models/- 参数:
| 参数 | 简写 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
repo_id | - | str | - | 位置参数,仓库 ID(可选,也可通过 --model 指定) |
files | - | str | - | 位置参数,指定要下载的文件(支持多个) |
--model | - | str | None | 模型 ID(与 --dataset 互斥) |
--dataset | - | str | None | 数据集 ID(与 --model 互斥) |
--repo-type | - | choice | model | 仓库类型(model/dataset),与位置参数 repo_id 配合使用 |
--revision | - | str | None | 版本/分支/tag |
--cache_dir | - | str | None | 缓存目录 |
--local_dir | - | str | None | 本地目录(优先于 cache_dir) |
--include | - | list | None | 包含的文件 glob 模式 |
--exclude | - | list | None | 排除的文件 glob 模式 |
--token | - | str | None | 访问令牌(私有模型需要) |
--endpoint | - | str | None | ModelScope 服务端点 |
--max-workers | - | int | 默认 | 最大并发下载线程数 |
BitaHub CLI
BitaHub 提供 Windows、Linux、macOS Intel 和 macOS Apple Silicon 对应版本的 bita 客户端,我使用的是 macOS Apple Silicon,安装完成后确认:
bita --helpBitaHub 官方建议 macOS 在安装前确保 /usr/local/bin/ 存在,之后安装对应架构的 .pkg 即可。
mkdir -p /usr/local/bin/模型准备完成后,就可以上传到 BitaHub,首先需要在 BitaHub 的 文件存储 中创建文件系统。
对于几十 GB 的模型,不建议直接使用浏览器上传。BitaHub 官方也建议,当单个文件超过 10GB、文件数量很多,或者需要从本地终端上传时,使用 bita 命令行快传工具。
- 登录:
bita login -e https://www.bitahub.comCLI 使用浏览器授权方式,终端会显示授权地址和一次性授权码,在浏览器中完成授权即可,不需要直接在终端输入账号密码。
- 获取上传命令:
进入 BitaHub 的 存储管理 页面,选择对应的文件系统,点击 上传 按钮,页面会自动生成类似:
bita upload \
-e https://www.bitahub.com \
-b <bucket-id> \
-o / \
-l <本地文件或文件夹路径>其中:
-e BitaHub 平台地址
-b 当前文件系统对应的 bucket id
-o 上传到文件系统中的目标目录
-l 本地文件或文件夹路径实际使用时,bucket-id 不用手动输入,直接复制 BitaHub 当前上传页面生成的命令最稳妥。
挂载并运行模型
先把所有准备工作完成:
本地模型下载完成
↓
文件系统创建完成
↓
模型上传完成
↓
BitaHub 模型创建完成全部准备完成之后,再创建 GPU 开发环境。
BitaHub 官方提供的模型部署流程也是先把模型上传到文件系统,再从这些文件创建模型,最后在创建开发环境时挂载对应模型。
创建开发环境时,在 存储挂载 中选择之前创建好的文件系统或者模型。模型挂载后,可以直接从容器中的挂载目录读取模型文件,比如:
/oceanz/models/Qwen/Qwen-Image-2.1实际路径取决于创建模型时使用的名称和挂载配置,之后代码直接使用本地路径加载即可,例如:
pipe = QwenImage21Pipeline.from_pretrained(
"/oceanz/models/Qwen/Qwen-Image-2.1",
torch_dtype=torch.bfloat16,
local_files_only=True
)对于 llama.cpp 的 GGUF:
llama cli -m /oceanz/models/Qwen/Qwen3.8-27B-Uncensored/Qwen3.8-27B-Uncensored-Q5_K_M.gguf如果是视觉模型,再挂载对应的 multimodal projector:
llama cli -m /oceanz/models/Qwen/Qwen3.8-27B-Uncensored/Qwen3.8-27B-Uncensored-Q5_K_M.gguf --mmproj /oceanz/models/Qwen/Qwen3.8-27B-Uncensored/mmproj-Qwen3.8-27B-Uncensored-F16.gguf这样 GPU 实例启动之后,基本可以直接开始环境配置和推理,不再需要等待几十 GB 模型下载。
相关链接
-
如果准备注册 BitaHub,可通过我的邀请链接:BitaHub 邀请注册
-
或者直接访问:BitaHub