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

news2024/9/28 5:26:10

文章目录

  • 前言
  • 一、Hugging face是什么?
  • 二、准备工作
  • 三、下载整个仓库或单个大模型文件
    • 1. 下载整个仓库
    • 2. 下载单个大模型文件
  • 总结
  • 附录


前言

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

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


一、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
from huggingface_hub import snapshot_download
repo_id = "LinkSoul/Chinese-Llama-2-7b"
local_dir = 'd:/ai/models'
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,
		etag_timeout=100,
		allow_patterns=["*.model", "*.json", "*.bin",
		"*.py", "*.md", "*.txt"],
		ignore_patterns=["*.safetensors", "*.msgpack",
		"*.h5", "*.ot", ],
		)
	except Exception as e :
		print(e)
print('下载完成')

在这里插入图片描述

2. 下载单个大模型文件

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

from huggingface_hub import hf_hub_download
repo_id = "BlinkDL/rwkv-4-pile-7b"
local_dir = 'd:/ai/models' 
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)
print('下载完成')

在这里插入图片描述


总结

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

附录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/804969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++实现计时功能

#include<iostream> #include<string> #include<iomanip>//setw对应的头文件&#xff0c;用于控制输出流的格式、精度、对齐方式等 #include <thread>//实现延迟输出对应的提供了创建、管理和控制线程的功能 using namespace std;int main() {for (int…

使用镜像搭建nacos集群

安装并配置 docker 1 先安装docker //1.查看操作系统的发行版号 uname -r//2.安装依赖软件包 yum install -y yum-utils device-mapper-persistent-data lvm2//3.设置yum镜像源 //官方源&#xff08;慢&#xff09; yum-config-manager --add-repo http://download.docker.co…

sql server导入.back文件

使用SQL server官方的连接工具 SQL server Management studio 有两种方式 第一种&#xff1a; 前提是&#xff0c;提前知道数据库名称&#xff0c;建好数据库 以数据库 TEST为例子 右键数据库选型&#xff0c;选择新建数据库 输入数据库名字&#xff0c;点击确定 创建完成之…

在线讨论相亲app开发过程功能文档

用户注册与登录&#xff1a; 提供用户注册功能&#xff0c;要求用户填写基本信息&#xff08;如姓名、性别、年龄、身高、职业等&#xff09;。 支持使用手机号码或其他第三方账号&#xff08;如微信、QQ&#xff09;进行快速登录。 实现用户隐私保护机制&#xff0c;确保用…

Springboot之把外部依赖包纳入Spring容器管理的两种方式

前言 在Spring boot项目中&#xff0c;凡是标记有Component、Controller、Service、Configuration、Bean等注解的类&#xff0c;Spring boot都会在容器启动的时候&#xff0c;自动创建bean并纳入到Spring容器中进行管理&#xff0c;这样就可以使用Autowired等注解&#xff0c;…

基础篇:多线程所需知识:

前言&#xff1a; 这里的多线程主要指算法部署时所涉及的多线程内容&#xff0c;对于其他多线程知识需要自行补充常用组件有thread、mutex、promise、future、condition_variable启动线程&#xff0c;thread&#xff0c;以及join、joinable、detach、类函数启动为线程生产者消…

自动化测试 selenium(测试系列7)

目录 前言&#xff1a; 1.什么是自动化测试 2.Selenium是什么 3.Selenium原理 4.SeleniumJava环境搭建 5.Selenium常用的API使用 5.1定位元素findElement 5.1.1css选择器 5.1.2id选择器 5.1.3类选择器 5.1.4xpath选择器 5.2操作测试对象 5.2.1click点击对象 5.2.…

[PyTorch][chapter 45][RNN_2]

目录&#xff1a; RNN 问题 RNN 时序链问题 RNN 词组预测的例子 RNN简洁实现 一 RNN 问题 RNN 主要有两个问题&#xff0c;梯度弥散和梯度爆炸 1.1 损失函数 梯度 其中&#xff1a; 则 1.1 梯度爆炸&#xff08;Gradient Exploding&#xff09; 上面矩阵进行连乘后…

【C++】开源:Boost库常用组件配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Boost库常用组件配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c…

Vue触发兄弟级组件中的某个方法

要求&#xff1a;页面上有两个兄弟级组件&#xff0c;假如我点击组件 1 中的按钮&#xff0c;需要触发组件 2 中的某个方法&#xff1b; 在这里&#xff0c;以购物车页面为例&#xff1a;我选择商品列表中的某个商品选中状态&#xff0c;在结算组件中根据列表中是否有未选中状态…

《向量数据库指南》——Milvus Cloud2.2.12 易用性,可视化,自动化大幅提升

Milvus Cloud又迎版本升级,三大新特性全力加持,易用性再上新台阶! 近期,Milvus Cloud上线了 2.2.12 版本,此次更新不仅一次性增加了支持 Restful API、召回原始向量、json_contains 函数这三大特性,还优化了 standalone 模式下的 CPU 使用、查询链路等性能,用一句话总…

三言两语说透process.stdout.write和console.log的区别

Node.js中的process.stdout.write和console.log都是用于向标准输出流(stdout)打印输出的方法&#xff0c;但二者在使用场景和实现方式上有些区别。本文将详细介绍process.stdout.write和console.log的区别。 process.stdout.write介绍 process.stdout.write是Node.js中的一个…

undefined reference to `__android_log_print‘

报错描述 在 Android NDK 相关的工程构建中&#xff0c;出现报错&#xff1a; undefined reference to __android_log_print’ 翻译成 QM 能理解的话&#xff1a; 在链接阶段&#xff0c; 遇到一个需要被链接的符号 __android_log_print, 但是没有在给出的依赖库里面找到 __an…

关于会议OA需求分析与开发功能设计

前言&#xff1a;现如今&#xff0c;企业在会议管理方面对OA系统的需求越来越高。因为会议是企业内部沟通和协作的重要环节&#xff0c;一个高效的会议管理系统可以帮助企业提升会议效率、降低成本&#xff0c;并且提高内部信息共享的效果。 目录 一&#xff0c;以下是OA系统在…

C语言实现通讯录--动态版

一、题目要求 实现一个通讯录&#xff0c;联系人的数量可多可少 二、解题思路 1.在静态版本的基础上改用动态的方法&#xff1a; &#xff08;1&#xff09;默认能够存放三个人的信息 &#xff08;2&#xff09;不够的话&#xff0c;每次增加两个人的信息 2.其他功能不变 三…

学习自动化测试该怎么学?6个步骤轻松拿捏

自动化测试作为脱离手工测试的基本核心内容&#xff0c;其重要性不言而喻了&#xff0c;而且我们来看近期大厂的一些招聘信息显示&#xff0c;基本上自动化测试是必备前提&#xff0c;没有这个基本就不用谈后面的问题了&#xff0c;下面我们通过联想集团的一个软件测试工程师的…

【C#】async和await 续

前言 在文章《async和await》中&#xff0c;我们观察到了一下客观的规律&#xff0c;但是没有讲到本质&#xff0c;而且还遗留了一个问题: 这篇文章中&#xff0c;我们继续看看这个问题如何解决! 我们再看看之前写的代码&#xff1a; static public void TestWait2() {var t…

VR党建主题数字互动虚拟展馆软件开启党建铸魂育人新篇章

当今时代新媒体技术的发展对大学生的学习、生活等产生着深远的影响。高校作为党建育人的重要场所&#xff0c;充分借助VR技术的强大优势&#xff0c;合理运用到育人工作中&#xff0c;能够不断丰富教育内容。VR智慧党建展厅展馆结合VR技术营造的虚拟现实空间&#xff0c;将党的…

layui手机端上传文件时返回404 Not Found的解决方案(client_body_temp权限设置)

关于 1.client_body_temp的作用 client_body_temp是一个指令指定保存客户端请求体临时文件的目录路径&#xff0c;以及是否进行缓存的配置指令。 在Web服务器中&#xff0c;当客户端向服务器发送请求时&#xff0c;请求体中包含了请求的主体部分&#xff0c;比如表单数据、上…

基于flask徐州市天气信息可视化分析系统【纯干货分享,附源码04600】

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对天气信息等问题&#xff0c;对天气信息进行…