【Hugging Face】管理 huggingface_hub 缓存系统
摘要
这篇文档介绍了Hugging Face Hub的缓存系统。该系统旨在提供一个中央缓存,以便不同版本的文件可以被下载和缓存。缓存系统将文件组织成模型、数据集和空间等不同的目录,每个目录包含特定类型的文件。系统确保如果文件已经下载并更新,除非明确要求,否则不会再次下载。
这篇文档还提到了一些关于缓存系统的具体信息,例如缓存目录的结构、文件夹中包含的文件类型以及如何检查和删除缓存。此外,文档还介绍了如何使用Hugging Face CLI工具来扫描和删除部分缓存。
从这篇文档中,你可以得到以下要点:
- Hugging Face Hub的缓存系统旨在提供一个中央缓存,以便不同版本的文件可以被下载和缓存。
- 缓存系统将文件组织成模型、数据集和空间等不同的目录,每个目录包含特定类型的文件。
- 缓存系统使用符号链接来共享相同的文件,以节省磁盘空间。
- 可以使用Hugging Face CLI工具来扫描和删除部分缓存,以释放磁盘空间。
- 可以自定义缓存目录,并可以通过环境变量或参数来指定。
- 缓存系统还支持检查和删除缓存中的文件。
- 除了Hugging Face Hub的缓存系统之外,下游库还可以使用cached_assets_path()方法来缓存与HF相关的其他文件。
- Hugging Face Hub的缓存系统使用符号链接来提高效率,但并非所有计算机都支持符号链接。
- 可以使用huggingface-cli工具的scan-cache命令来扫描缓存并获取报告。
- 可以使用huggingface-cli工具的delete-cache命令来删除部分缓存。
🚚🚒🚑🚎🚐🚌🛻🚙🛺🚕🚓🚗🚚🚒🚑🚎🚐🚌🛻🚙
了解缓存
Hugging Face Hub 缓存系统旨在成为依赖于 Hub 的库之间共享的中央缓存。在 v0.8.0 中进行了更新,以防止在不同版本之间重新下载相同的文件。
缓存系统设计如下:
<CACHE_DIR>
├─ <MODELS>
├─ <DATASETS>
├─ <SPACES>
< CACHE_DIR > 通常是您用户的主目录。但是,您可以通过所有方法的 cache_dir 参数或指定 HF_HOME 或 HUGGINGFACE_HUB_CACHE 环境变量来自定义它。
模型、数据集和空间共享一个公共根目录。这些存储库中的每个存储库都包含存储库类型、命名空间(如果存在)和存储库名称:
<CACHE_DIR>
├─ models--julien-c--EsperBERTo-small
├─ models--lysandrejik--arxiv-nlp
├─ models--bert-base-cased
├─ datasets--glue
├─ datasets--huggingface--DataMeasurementsFiles
├─ spaces--dalle-mini--dalle-mini
所有文件现在都将从 Hub 下载到这些文件夹中。缓存确保如果文件已经存在且未更新,则不会下载两次;但是,如果已更新并且您要求获取最新文件,则会下载最新文件(同时保留以前的文件以防您再次需要它)。
为了实现这一点,所有文件夹都包含相同的框架:
<CACHE_DIR>
├─ datasets--glue
│ ├─ refs
│ ├─ blobs
│ ├─ snapshots
...
每个文件夹都设计为包含以下内容:
Refs
refs 文件夹包含指示给定引用的最新修订的文件。例如,如果我们之前从存储库的主分支中获取了一个文件,则 refs 文件夹将包含一个名为 main 的文件,它本身将包含当前 head 的提交标识符。
如果 main 的最新提交标识符为 aaaaaa,则它将包含 aaaaaa。
如果相同的分支使用新的提交进行更新,该提交的标识符为 bbbbbb,则重新从该引用下载文件将更新 refs/main 文件以包含 bbbbbb。
Blobs
blobs 文件夹包含我们已经下载的实际文件。每个文件的名称都是它们的哈希值。
Snapshots
snapshots 文件夹包含到上述 blobs 的符号链接。它本身由多个文件夹组成:每个已知修订一个文件夹!
在上面的解释中,我们最初从 aaaaaa 修订中获取了一个文件,然后再从 bbbbbb 修订中获取了一个文件。在这种情况下,我们现在在快照文件夹中有两个文件夹:aaaaaa 和 bbbbbb。
在这些文件夹中,有活动符号链接,其名称为我们已下载的文件的名称。例如,如果我们在修订 aaaaaa 中下载了 README.md 文件,则将具有以下路径:
<CACHE_DIR>/<REPO_NAME>/snapshots/aaaaaa/README.md
那个 README.md 文件实际上是一个符号链接,链接到具有文件哈希值的 blob。
通过以这种方式创建框架,我们打开了文件共享机制:如果在修订 bbbbbb 中获取了相同的文件,则它将具有相同的哈希值,文件将不需要重新下载。
.no_exist(高级)
除了 blobs、refs 和 snapshots 文件夹外,您还可能在缓存中找到 .no_exist 文件夹。此文件夹跟踪您尝试下载但在 Hub 上不存在的文件。它的结构与快照文件夹相同,每个已知修订一个子文件夹:
<CACHE_DIR>/<REPO_NAME>/.no_exist/aaaaaa/config_that_does_not_exist.json
与快照文件夹不同,文件是简单的空文件(没有符号链接)。在此示例中,“config_that_does_not_exist.json” 文件在修订“aaaaaa” 上不存在于 Hub 上。由于它仅存储空文件,因此在磁盘使用方面,此文件夹可以忽略不计。
那么现在您可能会想知道,为什么这些信息甚至相关呢?在某些情况下,框架尝试加载模型的可选文件。保存可选文件的不存在使加载模型更快,因为它每个可选文件节省了 1 个 HTTP 调用。例如,在 transformers 中,每个 tokenizer 都可以支持其他文件。您第一次在计算机上加载 tokenizer 时,它将缓存哪些可选文件存在(哪些不存在),以使下一次初始化的加载时间更快。
要测试是否本地缓存了文件(而不进行任何 HTTP 请求),可以使用 try_to_load_from_cache() 助手。它将返回文件路径(如果存在并已缓存)、_CACHED_NO_EXIST 对象(如果已缓存不存在)或 None(如果我们不知道)。
相关文章:
【Hugging Face】管理 huggingface_hub 缓存系统
摘要 这篇文档介绍了Hugging Face Hub的缓存系统。该系统旨在提供一个中央缓存,以便不同版本的文件可以被下载和缓存。缓存系统将文件组织成模型、数据集和空间等不同的目录,每个目录包含特定类型的文件。系统确保如果文件已经下载并更新,除非明确要求,否则不会再次下载。…...
Python学习基础笔记六十六——对象的方法
我们已经学习到的对象类型: 整数类型的对象 字符串类型的对象 列表类型的对象 元组类型的对象 对象通常都有属于自己的方法(method) 调用对象的方法和调用函数差不多,只要在前面加上所属对象的一个点。 var1 [1, 2, 3,4, 5,…...
建立一个新的高阶数学教授模式,知其然,知其用,知其之所以然,知其所以然
1. 传统常用的模式 概念,性质,定理,定理证明,定理应用; 这个学习模式挺好的,但是定理证明过程往往很冗长,而且不易记忆,也就是说,即使推导了定理,初学者也记…...
AtCoder ABC324G 启发式合并
题意 传送门 AtCoder ABC324G Generate Arrays 题解 逆则操作顺序考虑,可以看作至多 n n n 个联通分量不断合并的过程,此时使用启发式合并,即规模较小的连通分量向规模较大的连通分量合并,以单个元素合并为基本运算࿰…...
SpringBootCMS漏洞复现分析
SpringBootCMS,极速开发,动态添加字段,自定义标签,动态创建数据库表并crud数据,数据库备份、还原,动态添加站点(多站点功能),一键生成模板代码,让您轻松打造自己的独立网站ÿ…...
iOS- flutter flavor 多环境Configurations配置
一、点击PROJECT的Runner,选择Info选项,在Configurations下方的号添加不同环境的配置,如下图: 二、选择TAGETS的Runner项目,选择Build Settings选项,在输入框输入package,为不同环境配置相应的…...
【PyTorchTensorBoard实战】GPU与CPU的计算速度对比(附代码)
0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。 本文基于PyTorch通过tensor点积所需要的时…...
npm 常用指令总结
1. 初始化包 一个存放了代码的文件夹,如果里面有 package.json 文件,则可以把这个文件夹称之为包。 npm init -y 注意: 由于包名不能有中文,不能有大写,不能和未来要下载的包重名. 所以我们快速初始化包时,我们的文件夹也不能违反前面说的规则.(因为默认会将文件夹的名称,作…...
布朗大学发现GPT-4存在新问题,可通过非常见语言绕过限制
🦉 AI新闻 🚀 布朗大学发现GPT-4存在新漏洞,可通过非常见语言绕过限制 摘要:布朗大学计算机科学研究人员发现了OpenAI的GPT-4存在新漏洞,利用不太常见的语言如祖鲁语和盖尔语可以绕过各种限制。研究人员测试了GPT-4对…...
ESP32网络编程-TCP客户端数据传输
TCP客户端数据传输 文章目录 TCP客户端数据传输1、IP/TCP简单介绍2、软件准备3、硬件准备4、TCP客户端实现本文将详细介绍在Arduino开发环境中,实现一个ESP32 TCP客户端,从而达到与TCP服务器数据交换的目标。 1、IP/TCP简单介绍 Internet 协议(IP)是 Internet 的地址系统,…...
微信小程序入门级
目录 一.什么是小程序? 二.小程序可以干什么? 三.入门使用 3.1. 注册 3.2. 安装 3.3.创建项目 3.4.项目结构 3.5.应用 好啦今天就到这里了,希望能帮到你哦!!! 一.什么是小程序? 微信小程…...
博客文档续更(二)
十五、博客前台模块-个人信息 1. 接口分析 进入个人中心的时候需要能够查看当前用户信息。请求不需要参数 请求方式 请求地址 请求头 GET /user/userInfo 需要token请求头 响应格式 {"code":200,"data":{"avatar":"头像的网络地址…...
Centos切换yum源
Centos切换yum源 常用命令 #查看内核/操作系统/CPU信息 uname -a #查看yum源 yum list repolist all切换步骤 1.备份yum源文件 cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak2.下载新的CentOS-Base.repo文件到/etc/yum.repos.d/目录下 …...
milvus和相似度检索
流程 milvus的使用流程是 创建collection -> 创建partition -> 创建索引(如果需要检索) -> 插入数据 -> 检索 这里以Python为例, 使用的milvus版本为2.3.x 首先按照库, python3 -m pip install pymilvus Connect from pymilvus import connections c…...
龙迅LT7911UXC 是一款高性能TYPE-C/DP/EDP转换四端口MIPI/LVDS的芯片,还支持图像处理
龙迅LT7911UXC 1.描述: LT7911UXC是一款用于VR/显示应用的高性能Type-C/DP1.4a到MIPI或LVDS芯片。HDCP RX作为 HDCP中继器的上游端,可以与其他芯片的HDCP TX协同工作,实现中继器的功能。对于DP1.4a 输入,LT7911UXC可以配置为1…...
TOR(Top of Rack)
TOR TOR(Top of Rack)指的是在每个服务器机柜上部署1~2台交换机,服务器直接接入到本机柜的交换机上,实现服务器与交换机在机柜内的互联。虽然从字面上看,Top of Rack指的是“机柜顶部”,但实际T…...
使用asp.net core web api创建web后台,并连接和使用Sql Server数据库
前言:因为要写一个安卓端app,实现从服务器中获取电影数据,所以需要搭建服务端代码,之前学过C#,所以想用C#实现服务器段代码用于测试,本文使用C#语言,使用asp.net core web api组件搭建服务器端&…...
LaTeX 公式与表格绘制技巧
LaTeX 公式与绘图技巧公式基本可以分为 单一公式单一编号单一公式按行编号单一公式多个子编号单一公式部分子编号分段公式现在给出各自的代码单一公式单一编号 公式1:equationaligned\begin{equation}\begin{aligned}a&bc\\b&a2\\c&b-3\end{aligned}\en…...
Spring Cloud--Nacos+@RefreshScope实现配置的动态更新
原文网址:Spring Cloud--NacosRefreshScope实现配置的动态更新_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringCloud整合Nacos使用RefreshScope实现动态更新配置。 官网 Nacos Spring Cloud 快速开始 动态更新的介绍 动态更新的含义:修改应…...
Elasticsearch安装
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
