文章目录
- 前言
- 一、Hugging face是什么?
- 二、huggingface镜像站hf-mirror.com
- 三、大模型一键下载
- 1. 准备工作
- 2. 下载代码
- 总结
- 后记
前言
要玩AI大模型,Hugging face 不可错过,但资源虽不错,可奈何国内下载速度很慢,动则GB的大模型,下载很容易超时,经常下载不成功。很是影响玩AI的信心。(有人说用迅雷啊,试试就知道了。)
经过多次测试,终于搞定了下载,即使超时也可以继续下载。就算程序中断,再打开仍可断点续传。真正实现下载无忧,大模型自由!
一、Hugging face是什么?
Hugging face 起初是一家总部位于纽约的聊天机器人初创服务商,本来打算创业做聊天机器人,在Github上开源了一个Transformers库,虽然聊天机器人业务没搞起来,但是他们的这个库在机器学习社区迅速大火起来。目前已经共享了超100,000个预训练模型,10,000个数据集。俨然陈国了AI开发者的GitHub,提供了模型、数据集(文本|图像|音频|视频)、类库(比如transformers|peft|accelerate)、教程等。
官网网址:https://huggingface.co/
二、huggingface镜像站hf-mirror.com
hf-mirror.com是 huggingface.co镜像,国内下不下来的模型,通过这个就可以轻松下载。
这里可检索模型,如:rwkv-4-novel
在对应的模型文件上点右键复制链接地址,如下,后面程序会用到:
https://hf-mirror.com/BlinkDL/rwkv-4-novel/blob/main/RWKV-4-Novel-7B-v1-ChnEng-20230426-ctx8192.pth
三、大模型一键下载
1. 准备工作
安装huggingface_hub包
pip install huggingface_hub
2. 下载代码
下面代码中,无论是使用huggingface.co地址,还是通过镜像地址均可以完成转换,使用镜像进行下载。
import os
# 注意os.environ得在import huggingface库相关语句之前执行。
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
from huggingface_hub import hf_hub_download
def download_model(source_url):
# 使用huggingface原地址
# source_url ="https://huggingface.co/BlinkDL/rwkv-4-novel/blob/main/RWKV-4-Novel-7B-v1-ChnEng-20230426-ctx8192.pth"
# 使用huggingface-镜像地址
# source_url = "https://hf-mirror.com/BlinkDL/rwkv-4-novel/blob/main/RWKV-4-Novel-7B-v1-ChnEng-20230426-ctx8192.pth"
if 'blob' in source_url:
sp = '/blob/main/'
else:
sp = '/resolve/main/'
if 'huggingface.co' in source_url:
url = 'https://huggingface.co/'
else:
url = 'https://hf-mirror.com'
location = source_url.split(sp)
repo_id = location[0].strip(url) # 仓库ID,例如:"BlinkDL/rwkv-4-world"
local_dir = r'D:\RWKV\models'
cache_dir = local_dir + "/cache"
filename = location[1]# 大模型文件,例如:"RWKV-4-World-CHNtuned-7B-v1-20230709-ctx4096.pth"
print(f'开始下载\n仓库:{repo_id}\n大模型:{filename}\n如超时不用管,会自定继续下载,直至完成。中途中断,再次运行将继续下载。')
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)
else:
print(f'下载完成,大模型保存在:{local_dir}\{filename}')
break
if __name__ == '__main__':
source_url = "https://huggingface.co/BlinkDL/rwkv-4-novel/blob/main/RWKV-4-Novel-7B-v1-ChnEng-20230426-ctx8192.pth"
source_url = "https://hf-mirror.com/BlinkDL/rwkv-4-novel/blob/main/RWKV-4-Novel-7B-v1-ChnEng-20230426-ctx8192.pth"
download_model(source_url)
中断后再运行,仍可续传。
可以看到,速度那是杠杠滴!
总结
通过镜像和程序化下载,可以彻底解决大模型下载,再配合大模型框架就可以自由玩耍了。
【AI之路】使用Jan.ai在本地部署大模型开启AI对话(含通过huggingface下载大模型,实现大模型自由)
后记
如果要下载整个仓库,可使用snapshot_download下载整个仓库快照。需要的小伙伴可以移步:
【AI之路】使用huggingface_hub优雅解决huggingface大模型下载问题
添加以下代码:注意os.environ得在import huggingface库相关语句之前执行。
os.environ[“HF_ENDPOINT”] = “https://hf-mirror.com”