HF下载太慢?Alaya NeW的加速神器让你的模型"飞"起来!
还在用传统方式从Hugging Face龟速下载模型吗?当整个AI世界都需要加速奔跑时,Alaya NeW平台为你带来了革命性的解决方案!我们刚刚解锁了一项足以让整个AI圈沸腾的新能力——DingoSpeed自托管镜像服务!
痛点直击:HF下载慢如蜗牛
在自然语言处理(NLP)和计算机视觉领域的技术实践中,Hugging Face平台已成为全球开发者获取预训练模型和数据集的重要枢纽,然而众多开发者在Alaya NeW平台使用过程中反馈,从Hugging Face官方下载模型和数据集时速度极其缓慢,特别是对于几十G甚至几百G的大模型,下载过程可能持续数小时,严重影响了开发效率。
为此,九章云极的Dingo团队自主研发了DingoSpeed —— 一款面向企业级场景的自托管镜像服务,旨在通过本地化存储、智能分块调度和高效缓存提升下载速度,优化AI资源的全生命周期管理,让AI研发驶入快车道!
快速开始:开启您的极速之旅
1. 设置HF_ENDPOINT环境变量
在pod内部设置环境变量HF_ENDPOINT设置镜像站点,按照不同的智算中心选择。 在这个站点内我们缓存了很多开源模型,可以加速下载。
Linux
# 北京一区
export HF_ENDPOINT=http://hfmirror.mas.zetyun.cn:8082
# 北京二区
export HF_ENDPOINT=http://hfmirrora01.hd-02.zetyun.cn:8082
# 北京三区
export HF_ENDPOINT=http://hfmirror-1.hd-03.zetyun.cn:8082
Windows
# 北京一区
$env:HF_ENDPOINT = "http://hfmirror.mas.zetyun.cn:8082"
# 北京二区
$env:HF_ENDPOINT = "http://hfmirrora01.hd-02.zetyun.cn:8082"
# 北京三区
$env:HF_ENDPOINT = "http://hfmirror-1.hd-03.zetyun.cn:8082"
2. 查看缓存模型列表
# 查看北京一区模型列表
curl http://hfmirror.mas.zetyun.cn:8082/repos
# 查看北京二区模型列表
curl http://hfmirrora01.hd-02.zetyun.cn:8082/repos
# 查看北京三区模型列表
curl http://hfmirror-1.hd-03.zetyun.cn:8082/repos
[!TIP] 如果模型列表中没有您所需要的模型,可联系客服申请加入缓存。
3. 下载模型
pip install -U huggingface_hub
snapshot_download下载模型:
from huggingface_hub import snapshot_download
import os
os.environ["HF_ENDPOINT"] = "http://hfmirror-1.hd-03.zetyun.cn:8082"
snapshot_download(repo_id='Qwen/Qwen-7B', repo_type='model',
local_dir='./model_dir', resume_download=True,
max_workers=8)
huggingface cli下载模型:
# 下载Qwen2.5-1.5B-Instruct:
huggingface-cli download --resume-download Qwen/Qwen2.5-1.5B-Instruct --local-dir Qwen/Qwen2.5-1.5B-Instruct
huggingface-cli download --resume-download Qwen/Qwen2.5-14B-Instruct --local-dir Qwen/Qwen2.5-14B-Instruct
huggingface示例代码下载模型:
使用示例代码时需要修改Cache模型的路径,将其设置为持久化的pvc路径。例如:
export HF_HOME=/mnt/models
可使用如下代码下载值直接运行,并自动下载模型:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-1.5B-Instruct"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto",
proxies ={"http://": "hfmirror-1.hd-03.zetyun.cn:8082"}
)
tokenizer = AutoTokenizer.from_pretrained(model_name,
proxies ={"http://": "hfmirror-1.hd-03.zetyun.cn:8082"}
)
prompt = "write a quick sort algorithm."
messages = [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
官方教程
您也可以直接访问 Alaya New 官网,查看模型下载加速方式。
实测数据:速度提升令人惊喜
目前开发者在使用Alaya New平台时,多使用olah从Hugging Face官方下载模型和数据集,为检验下载体验能否有所提升,我们在以下测试环境中同时使用DingoSpeed与olah进行模型下载,并跟踪测试结果。
测试环境
| 资源类型 | 规格 |
|---|---|
| cpu | 16c |
| 内存 | 32GB |
| 存储 | DingoFS 读速1.5GB/s以上 |
| 网络 | 客户端与服务端在同一网段内,使用iperf3实测网络带宽9Gb/s左右 |
测试结果
| 客户端并发数量 | 模型大小 | 模型数量 | 耗时(s) |
|---|---|---|---|
| 1 | 小 | 单个 | olah:10.19 DingoSpeed:6.49 |
| 1 | 小 | 5个 | olah:49.45 DingoSpeed:32.05 |
| 1 | 大 | 单个 | olah:124.08 DingoSpeed:42.31 |
| 1 | 大 | 5个 | olah:635.72 DingoSpeed:182.67 |
| 5 | 小 | 单个 | olah:191.02 DingoSpeed:103.16 |
| 5 | 小 | 5个 | olah:894.46 DingoSpeed:500.29 |
| 5 | 大 | 单个 | olah:下载失败 DingoSpeed:499.27 |
| 5 | 大 | 5个 | olah:下载失败 DingoSpeed:2422.71 |
| 10 | 小 | 单个 | olah:835.05 DingoSpeed:382.36 |
| 10 | 小 | 5个 | olah:835.05 DingoSpeed:382.36 |
| 10 | 大 | 单个 | olah:下载失败 DingoSpeed:1905.8 |
| 10 | 大 | 5个 | olah:下载失败 DingoSpeed:下载成功但耗时较久 |
| 20 | 小 | 单个 | olah:8.89 DingoSpeed:270.7 |
| 20 | 小 | 5个 | olah:1883.24 DingoSpeed:1097.67 |
| 20 | 大 | 单个 | olah:下载失败 DingoSpeed:2206.18 |
| 20 | 大 | 5个 | olah:下载失败 DingoSpeed:下载成功但耗时较久 |
测试结论
同等资源条件及下载场景下:
- 下载速度:DingoSpeed小模型下载速度比olah速度快30%以上,大模型下载速度比olah快100%以上
- 稳定性:DingoSpeed下载大模型速度更稳定,基本可以跑满理论带宽,是olah的8倍,支持并发数是olah的15倍以上
- 内存占用:DingoSpeed内存占用比olah低70%
- 限流:DingoSpeed能够有效限流,olah则无法限流偶尔导致服务无响应
技术揭秘:HFMirror背后的技术变革
如此惊人的速度提升是如何实现的?这要归功于DingoSpeed的核心技术:
- 突破网络限制
- 本地镜像加速:将高频访问的模型与数据集缓存至本地服务器,规避跨国网络延迟与访问限制。
- 离线可用性:支持预下载与本地持久化存储,确保关键资源在断网环境下仍可调用。
- 提升资源获取效率
- 并行分块下载:基于动态分块算法(默认块大小8MB),结合协程池实现多线程并发下载,带宽利用率提升60%+。
- 智能缓存复用:通过元数据(API)与文件块(Files)分离存储,避免重复下载,降低带宽消耗。
- 精细化资源管控
- 流量削峰与限流:令牌桶机制(handlerCapacity)控制并发请求,防止服务过载。
- 内存智能回收:当内存使用超过阈值(默认90%)时,自动暂停预读取,保障系统稳定性。
架构解析:技术实现与创新设计
- 分层架构设计 DingoSpeed采用模块化架构,核心组件包括:
- 元数据层(API/Heads):负责与Hugging Face平台交互,同步模型描述、版本及文件列表。
- 数据存储层(Files):基于DingoFs云原生分布式高速文件存储系统,按原始目录结构存储数据文件,支持动态扩容与高可用。
- 缓存管理层:集成ristretto缓存库,通过HEADER结构(131,108字节固定头)实现快速块校验与版本兼容。
- 下载流程优化
- 元数据解析:获取模型基础信息,生成文件列表与依赖关系。
- 动态分块与掩码生成:按blockSize切分文件,通过位掩码(Bitmask)标记块状态(1 bit/块)。
- 并行下载与合并:协程池启动多组 chunk worker,按掩码状态从远程/本地获取数据块,支持断点续传与数据块去重,最终合并为完整文件
- 高可靠存储模型
- HEADER结构:包含文件版本、块大小、掩码元数据,确保缓存文件兼容性(如程序升级后仍可读取历史数据)。
- 数据一致性保障:文件内容与Hugging Face原仓库一致,但因HEADER附加信息导致SHA256值差异,需通过专用校验接口验证完整性。
- 服务内置全链路监控体系
- 系统资源:实时跟踪CPU、内存及磁盘使用情况。
- 进程状态:监控DingoSpeed服务的健康度与请求吞吐量。
- 业务指标:统计模型/数据集的下载量、响应速率、基于IP的下载及服务流量,为优化提供数据支撑。
- 诊断工具:集成ELK日志分析、pprof性能剖析,支持快速定位瓶颈。
重磅开源:助力AI开发者
为回馈社区,让更多开发者受益,我们决定将DingoSpeed完全开源。希望助力众多AI开发者更加专注于模型创新而非漫长等待。
立即体验
访问 DingoSpeed GitHub仓库,获取部署文档、配置指南及性能测试报告,体验飞一般的模型下载速度吧!
迭代方向:技术演进与生态蓝图
接下来,DingoSpeed将带来更多令人期待的能力升级:
- 性能深化:引入对象池技术,复用高频资源对象;支持跨智算中心数据同步。
- 功能扩展:开发可视化管控界面,集成模型检索、权限审批链、用量分析看板。
- 生态融合:无缝对接 PyTorch、TensorFlow 等框架,实现“镜像-训练-推理”管道化。
结语
DingoSpeed以其革命性的三大核心能力——本地化加速、智能分块、弹性扩展开启了模型管理新纪元,重新定义了Hugging Face资源的管理范式。无论是应对企业级高并发场景,还是优化研发团队的协作效率,均展现出显著的技术优势。随着AI模型规模的持续增长,DingoSpeed将持续迭代,为开发者提供更高效、更稳定的基础设施支持。
我们诚邀您即刻体验这场模型管理的效率革命,让DingoSpeed成为您AI研发基础设施中不可或缺的加速引擎。