【AI之路】使用huggingface_hub优雅解决huggingface大模型下载问题

文章介绍了如何克服Huggingface资源在国内下载速度慢的问题,提供了一种实现断点续传下载大模型的方法,包括使用`huggingface_hub`包的`snapshot_download`和`hf_hub_download`函数,允许用户设定下载文件类型并支持超时后继续下载,确保模型下载的顺利完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

Hugging face 资源很不错,可是国内下载速度很慢,动则GB的大模型,下载很容易超时,经常下载不成功。很是影响玩AI的信心。(有人说用迅雷啊,试试就知道有无奈。)

经过多次测试,终于搞定了下载,即使超时也可以继续下载。真正实现下载无忧!究竟如何实现?且看本文分解。

再有模型下不了的,请移步:
【AI之路】使用huggingface_hub通过huggingface镜像站hf-mirror.com下载大模型(附代码,实现大模型自由)


一、Hugging face是什么?

Hugging face 起初是一家总部位于纽约的聊天机器人初创服务商,本来打算创业做聊天机器人,在Github上开源了一个Transformers库,虽然聊天机器人业务没搞起来,但是他们的这个库在机器学习社区迅速大火起来。目前已经共享了超100,000个预训练模型,10,000个数据集。俨然陈国了AI开发者的GitHub,提供了模型、数据集(文本|图像|音频|视频)、类库(比如transformers|peft|accelerate)、教程等。

官网网址:https://huggingface.co/

二、准备工作

安装pip install huggingface_hub安装huggingface_hub包

C:\Users\Administrator>pip install huggingface_hub
Requirement already satisfied: huggingface_hub in d:\programdata\anaconda3\lib\site-packages (0.13.2)
Requirement already satisfied: pyyaml>=5.1 in d:\programdata\anaconda3\lib\site-packages (from huggingface_hub) (6.0)
Requirement already satisfied: typing-extensions>=3.7.4.3 in d:\programdata\anaconda3\lib\site-packages (from huggingface_hub) (4.4.0)
Requirement already satisfied: packaging>=20.9 in d:\programdata\anaconda3\lib\site-packages (from huggingface_hub) (22.0)
Requirement already satisfied: requests in d:\programdata\anaconda3\lib\site-packages (from huggingface_hub) (2.28.2)
Requirement already satisfied: tqdm>=4.42.1 in d:\programdata\anaconda3\lib\site-packages (from huggingface_hub) (4.64.1)
Requirement already satisfied: filelock in d:\programdata\anaconda3\lib\site-packages (from huggingface_hub) (3.12.0)
Requirement already satisfied: colorama in d:\programdata\anaconda3\lib\site-packages (from tqdm>=4.42.1->huggingface_hub) (0.4.6)
Requirement already satisfied: charset-normalizer<4,>=2 in d:\programdata\anaconda3\lib\site-packages (from requests->huggingface_hub) (2.0.4)
Requirement already satisfied: idna<4,>=2.5 in d:\programdata\anaconda3\lib\site-packages (from requests->huggingface_hub) (3.4)
Requirement already satisfied: certifi>=2017.4.17 in d:\programdata\anaconda3\lib\site-packages (from requests->huggingface_hub) (2022.12.7)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\programdata\anaconda3\lib\site-packages (from requests->huggingface_hub) (1.26.14)
C:\Users\Administrator>

三、下载整个仓库或单个大模型文件

找到自己需要下载的仓库,红色框即是repo_id ,选择蓝色框即可查看仓库内文件。
在这里插入图片描述

1. 下载整个仓库

使用snapshot_download下载整个仓库快照,如下几个参数注意下:

  • allow_patterns选择需要下载的文件类型,通过ignore_patterns设置需要忽略的文件类型。
  • resume_download=True,表示允许断点续传,整个很有必要。
  • etag_timeout=100,超时阈值,默认10秒,这里自己根据情况修改。
    更多参数详情可访问:https://huggingface.co/docs/huggingface_hub/v0.16.3/guides/download
import time
from huggingface_hub import snapshot_download
repo_id = "LinkSoul/Chinese-Llama-2-7b"
local_dir = 'd:/ai/models1'
cache_dir = local_dir + "/cache"
while True:
    try:
        snapshot_download(cache_dir=cache_dir,
        local_dir=local_dir,
        repo_id=repo_id,
        local_dir_use_symlinks=False,
        resume_download=True,
        allow_patterns=["*.model", "*.json", "*.bin",
        "*.py", "*.md", "*.txt"],
        ignore_patterns=["*.safetensors", "*.msgpack",
        "*.h5", "*.ot",],
        )
    except Exception as e :
        print(e)
        # time.sleep(5)
    else:
        print('下载完成')
        break

在这里插入图片描述

2. 下载单个大模型文件

个别情况下,我们只需要下载大模型文件,不需要下载整个项目仓库,使用hf_hub_download进行下载即可。参数设置同上解释。

import time
from huggingface_hub import hf_hub_download
repo_id = "BlinkDL/rwkv-4-pile-7b" # 仓库ID
local_dir = 'd:/ai/models2'
cache_dir = local_dir + "/cache"
filename= "RWKV-4-Pile-7B-Chn-testNovel-done-ctx2048-20230404.pth"
while True:   
    try:
        hf_hub_download(cache_dir=cache_dir,
        local_dir=local_dir,
        repo_id=repo_id,
        filename=filename,
        local_dir_use_symlinks=False,
        resume_download=True,
        etag_timeout=100
        )
    except Exception as e :
        print(e)
        # time.sleep(5)
    else:
        print('下载完成')
        break

在这里插入图片描述


总结

几经测试,终于搞定了模型下载,以后再也不用为下载大文件发愁了。
踩坑无数,撰文只为各位博友少走弯路。
觉得有帮助,发动小手点个赞,谢谢!

附录

huggingface中文社区
https://huggingface.co/blog/zh

### 如何从 Hugging Face Hub 下载 DeepSeek 模型 为了成功下载来自Hugging Face Hub的DeepSeek模型,需遵循一系列指令以确保过程顺利。 安装`huggingface_hub`库是第一步操作,这可以通过执行命令`pip install -U huggingface_hub`实现[^1]。此步骤确保拥有最新版本的工具用于后续的操作。 对于实际下载指定的DeepSeek模型,可以利用`huggingface-cli`命令行工具来进行。具体来说,通过运行如下命令可将名为`deepseek-ai/deepseek-vl2-tiny`的模型下载至本地目录`deepseek_vl2_tiny/`: ```bash huggingface-cli download --resume-download deepseek-ai/deepseek-vl2-tiny --local-dir ./deepseek_vl2_tiny/ ``` 上述命令中的选项`--local-dir`则指定了保存所下载文件的目标位置。 考虑到网络状况可能影响下载速度甚至成功率,在中国地区推荐设置环境变量指向国内镜像站点,以此提高获取资源效率。可通过下面的方式设定环境变量: ```bash export HF_ENDPOINT=https://hf-mirror.com ``` 针对Windows操作系统用户,则应采用相应语法调整环境变量配置方法[^2]。 最后值得注意的是,除了官方提供的API接口外,还可以编写脚本来自动化整个流程,尽管这可能涉及到解决一些技术挑战,比如无法直接获得各单独文件的确切尺寸信息等问题[^4]。 ```python import os from huggingface_hub import snapshot_download os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' snapshot_download(repo_id='deepseek-ai/deepseek-vl2-tiny', local_dir='./deepseek_vl2_tiny/', resume_download=True) ``` 这段Python代码片段展示了另一种方式来调用Hugging Face SDK函数`snapshop_download()`完成相同目的的任务,并且同样支持断点续传功能以及自定义存储路径的选择。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT里的交易员

分享是一种快乐,打赏是一种肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值