huggingface

注:官网已经推荐用hf-cli替代原来的huggingface-cli,安装: curl -LsSf https://hf.co/cli/install.sh | bash 或者 powershell -ExecutionPolicy ByPass -c "irm https://hf.co/cli/install.ps1 | iex"

经过测试hf-cli 在上传下载更稳定更快。使用时将本文中的 huggingface-cli 替换为 hf即可,如huggingface-cli download 替换为 hf download详细文档

安装huggingface-cli

虽然可以通过代码下载模型和数据集(下文会提及),但我依然推荐你用此方法来管理和下载,更直观可控一些。
pip install huggingface-cli 将hugginface-cli安装到全局的python环境下,这样打开terminal就能直接使用命令。

可选:修改huggingface镜像地址和缓存地址

直接在开始菜单搜索 修改系统环境变量(或者edit system variables 在用户变量或者系统变量分区下添加如下新变量:
HF_HOME=F:\hf_home (huggingface根地址)
HF_DATASETS_CACHE = F:\hf_home\datasets (数据集的存放地址,之后也会再说明)
HF_ENDPOINT=https://hf-mirror.com (镜像地址,新的模型同步需要时间)
HF_HUB_DOWNLOAD_TIMEOUT=60 (超时重试间隔,秒数)


Linux下的方法:
export HF_ENDPOINT=https://hf-mirror.com
nano ~/.basrc 把上面的行粘贴到最后面即可
source ~/.bashrc 重启下bash生效

预下载

whisper-small为例,在网页点击按钮复制完整模型名,
在这里插入图片描述
terminal中输入命令下载:
huggingface-cli download --resume-download openai/whisper-small
下载数据集的命令:
huggingface-cli download --resume-download --repo-type dataset mozilla-foundation/common_voice_13_0

等待下载完成,就可以在ollaMA或者脚本里直接使用下载好的模型了。

边用边下载

  • 模型
from huggingface_hub import hf_hub_download
import joblib


model = joblib.load(
    hf_hub_download(repo_id='openai/whisper-small', repo_type="model", local_dir="./downloaded_models", filename='model.safetensors')
)
''' 
	加入local_dir可以指定下载位置:如 
	model = joblib.load(
    hf_hub_download(repo_id='openai/whisper-small', repo_type="model", local_dir="./downloaded_models", filename='model.safetensors'))

'''
  • 数据集
from huggingface_hub.hf_api import HfFolder
from huggingface_hub import snapshot_download

snapshot_download(repo_id="mozilla-foundation/common_voice_13_0", force_download=True, repo_type="dataset")
  • 只下载&加载部分数据集

有的数据集非常之大但我们只需要部分进行训练,例如commonvoice包含了几百种世界语言,但我想使用单语言(如中文或者英文)的语音文件(全部下载大约需要500g以上)

from datasets import load_dataset

cache_dir = "F:/hf_home/datasets"  # 这里指定了dataset的缓存目录,和上文提到的HF_DATASETS_CACHE 系统环境变量一致

common_voice['train'] = load_dataset('mozilla-foundation/common_voice_13_0', 'en', split='train+validation', trust_remote_code=True, cache_dir=cache_dir, data_files="audio/en/*", download_mode="reuse_cache_if_exists" )
common_voice['test'] = load_dataset('mozilla-foundation/common_voice_13_0', 'en', split='test', trust_remote_code=True, cache_dir=cache_dir, data_files="audio/en/*", download_mode="reuse_cache_if_exists")
  • 下载到指定的路径

在下载的时候携带指定的参数就可以了,其中--cache-dir用于指定缓存路径(使用hf推荐的链接、组织方式,但不够直白)。这里我选择了 --local-dir 相当于把raw文件直接存放到指定位置,打开文件夹就是原始文件。
在这里插入图片描述

另外,有的数据集下载前需要登录huggngface账号,先前往HF个人资料在token设置页创建一个只读的token,
在这里插入图片描述
获取到token值,如hf_abc12345efg 后在snapshot_download 执行前新建一行:

hf_token = HfFolder.save_token('hf_abc12345efg')

使用命令行下载时候先huggingface-cli login 输入token登录后再下载即可,token会存储在%hf_home% 下同名文件里。

下载之后的数据集和模型在哪儿?

模型还好32b的ds也不过几十G,数据集动辄几十甚至上百g接近1T 不是小数目,这里我做了大概的总结,反复删除下载的确是个恼人的工作。
这里我做了大概总结,没什么必要的东西就可以删掉节约空间了。

如果你没按我先前说的修改huggingface根地址,那么你的数据集和模型都会下载到:C:\Users\用户名\.cache\huggingface,这就是 %hf_home%。也可以在资源管理器使用 %hf_home% 直接访问hf根目录:

  • 模型
    这个位置是固定的,一直在%hf_home%/models 下除非你手动修改下载模型到的地址:
    F:\hf_home\hub\models--openai--whisper-small

  • 数据集
    这里有两个目录,一个用来存放真正的(未解压的数据集),均以mozzila/commonvoice/en/* 为例,即只下载和加载部分数据集

    • 通过cli下载的模型, 和模型一样放在%hf_home%/hub/ 下,如F:\hf_home\hub\datasets--distil-whisper--librispeech_long
    • 通过load_dataset 在python代码被动下载的数据集,在 %hf_home%/datasets下,如 F:\hf_home\datasets\hezarai___common-voice-13-fa 如果使用函数的时候不手动指定缓存,则即使通过cli下载过也会被重新下载一遍
    • 未解压的数据集:%hf_home%/datasets/downloads/extracted/... (这里不能确定具体的文件)
    • 解压的数据集(在加载过程中会越来越大,删掉的话下次load会重新生成):%hf_home%/datasets//mozilla-foundation___common_voice_13_0/en-93cf6a7a474e4b7d/

参考

https://huggingface.co/docs/huggingface_hub/main/en/guides/cli

https://huggingface.co/docs/huggingface_hub/en/guides/cli

https://huggingface.co/docs/datasets/v1.12.0/cache.html

https://huggingface.co/docs/datasets/en/loading#local-and-remote-files

https://zhuanlan.zhihu.com/p/684178533

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐