【AI之路】使用huggingface_hub通过huggingface镜像站hf-mirror.com下载大模型(附代码,实现大模型自由)

发布时间:2024年01月10日


前言

要玩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”

文章来源:https://blog.csdn.net/popboy29/article/details/135512259
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。