Hugging face 背景: 起初是一家聊天机器人公司,后面开源了一个transformers库,聊天机器人业务没有起色,机器学习库迅速活了起来,目前模型585659,数据集 Datasets128,253,成了机器学习界的github。
之所以获得巨大的成功,一方面让甲方企业的小白,尤其是入门者快速使用上大佬训练的超级牛逼的模型,另外一方面,开放的文化和态度,以及利他的精神特别吸引人,Huaggingface上面很多业界大牛提交新的模型,越来越多的数据和模型更加丰富。一方面有人提供模型,另外一方面有人消费模型,这样让双方的效率大大提高了,确实是个不错的Idea。
画重点,在国内huggingface 也是非常广泛的,一些开源的架构本质上就是利用transform 上面的模型进行微调,很多NLP工程师招聘条目也明确要求熟悉Huggingface transform 库的使用,重点由于huggingface 提供了模型又提供了数据集,因此入门非常简单,你甚至不用知道,GPT,BERT就能使用它的模型,下面是怎么调用模型的步骤。
1.hugging face 能做什么
官方网站:
Models:训练模型,hugging face 有数以万计的模型可以使用
Datasets:数据集,hugging face 有数以万计的数据可以直接拿来使用
Spaces:最初是展示AI模型构建的应用,hugging face 很容让的部署你已经构建的应用
2.hugging face 如何使用
pip install huggingface-hub==0.17.3
pip install transformers==4.34
#如果 conda 频道提供了您所需的特定版本(比如 4.0),且该版本在 4.0 之后,您可以尝试指定版本安装,尽管您提供的信息未给出明确的示例。通常,指定版本的 conda 命令格式如下:conda install -c huggingface transformers=4.0
import os
# 注意os.environ得在import huggingface库相关语句之前执行。
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
from huggingface_hub import hf_hub_download
3.下载单个文件hf_hub_download
hf_hub_download是huggingface官方支持(Downloading files/hf_hub_download)的下载模型或数据集的方法。该方法涉及的参数如下
\
实际上用到的参数并不多,一般情况下只需设置repo_id,filename,subfolder,local_dir,token参数即可
- repo_id:仓库名称
- filename:需要下载的文件名
- subfolder:需要下载的文件在仓库中的哪一个文件夹(可选)
- repo_type:仓库类型(可选),如果不填写就默认下载的是model,否则需要设置对应值(如下载数据集就设为datase)
- evision:指定Git的修订版本(可选)
- library_name:对象对应的库的名称(可选)
- library_version:库的版本号(可选)
- cache_dir:缓存文件存储的文件夹路径(可选)
- local_dir:下载的文件存放的目录(可选)
- local_dir_use_symlinks:与 local_dir 参数一起使用的选项。如果设置为 “auto”,则会使用缓存目录,并根据文件大小将文件复制或创建符号链接到本地目录。如果设置为 True,则无论文件大小如何,都将创建符号链接。如果设置为 False,则文件将从缓存中复制(如果已存在),或者从Hub下载而不缓存。
- user_agent:指定用户代理信息,可以是一个字典或一个字符串(可选)
-
force_download:如果该文件已经在本地缓存中存在,是否强制性下载文件(可选)
proxies: 设置代理服务器(可选) -
etag_timeout:当获取ETag时,等待服务器发送数据的最长时间(以秒为单位)。如果服务器在这段时间内没有响应,将放弃请求(可选)
-
resume_download:如果设置为 True,可以继续之前中断的下载操作,即继续下载先前未完成的文件(可选)
-
token:用于下载的身份验证令牌,如果设置为 True,则从HuggingFace配置文件夹中读取令牌。如果是一个字符串,它将被用作身份验证令牌。(可选)
-
local_files_only:如果设置为 True,则避免下载文件,如果本地缓存中存在文件,则返回本地缓存文件的路径(可选)
-
legacy_cache_layout:如果设置为 True,则使用旧的文件缓存布局,即只需调用 hf_hub_url() 然后进行缓存下载。这已经不推荐使用,因为新的缓存布局更强大。(可选)
个别情况下,我们只需要下载大模型文件,不需要下载整个项目仓库,使用hf_hub_download进行下载即可。参数设置同上解释。
使用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 hf_hub_download
hf_hub_download(repo_id="internlm/internlm2-chat-7b", filename="config.json",local_dir="D:/ai")
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,local_dir):
# 使用huggingface原地址
# source_url ="https://huggingface.co/internlm/internlm2-chat-7b/blob/main/config.json"
# 使用huggingface-镜像地址
# source_url = "https://hf-mirror.com/internlm/internlm2-chat-7b/blob/main/config.json"
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"
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/internlm/internlm2-chat-7b/blob/main/config.json"
source_url = "https://hf-mirror.com/internlm/internlm2-chat-7b/blob/main/config.json"
# source_url = "https://hf-mirror.com/internlm/internlm2-chat-7b/blob/main/config.json"
#目录地址windows系统
download_model(source_url,local_dir = r'D:\ai')
4.下载整个库 snapshot_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
文件将被下载到本地缓存文件夹。https://huggingface.co/docs/huggingface_hub/guides/manage-cache
5、登录
Hugging Face Hub 使用令牌对应用进行身份验证(请参阅文档). 要登录您的机器,请运行以下命令行:
huggingface-cli login
# or using an environment variable
huggingface-cli login --token $HUGGINGFACE_TOKEN
6、创建一个存储库 create_repo
要创建一个新存储库,请运行以下代码:
from huggingface_hub import create_repo
create_repo(repo_id="super-cool-model")
7.上传单个文件 upload_file
from huggingface_hub import upload_file
upload_file(
path_or_fileobj="/home/lysandre/dummy-test/README.md",
path_in_repo="README.md",
repo_id="lysandre/test-model",
)
8.上传整个文件 upload_folder
from huggingface_hub import upload_folder
upload_folder(
folder_path="/path/to/local/space",
repo_id="username/my-cool-space",
repo_type="space",
)
【Hugging Face】如何从hub中下载文件_snapshot_download-CSDN博客【AI之路】使用huggingface_hub通过huggingface镜像站hf-mirror.com下载大模型(附代码,实现大模型自由)_huggingface镜像网站-CSDN博客
附录
huggingface中文社区
https://huggingface.co/blog/zh
Pipeline使用介绍