Hub Python Library documentation
مرجع نظام التخزين المؤقت
مرجع نظام التخزين المؤقت
تم تحديث نظام التخزين المؤقت في الإصدار v0.8.0 ليصبح نظام تخزين مؤقت مركزيًا مشتركًا عبر المكتبات التي تعتمد على Hub. اقرأ دليل نظام التخزين المؤقت للحصول على عرض مفصل للتخزين المؤقت في HF.
المساعدات
try_to_load_from_cache
huggingface_hub.try_to_load_from_cache
< source >( repo_id: strfilename: strcache_dir: str | pathlib.Path | None = Nonerevision: str | None = Nonerepo_type: str | None = None ) → Optional[str] or _CACHED_NO_EXIST
المعاملات
- cache_dir (
strأوos.PathLike) — المجلد الذي توجد فيه الملفات المخزنة مؤقتًا. - repo_id (
str) — معرّف المستودع على huggingface.co. - filename (
str) — اسم الملف الذي يجب البحث عنه داخلrepo_id. - revision (
str، اختياري) — الإصدار المحدد من النموذج الذي سيتم استخدامه. سيُستخدم"main"افتراضيًا إذا لم يُقدَّم ولم يُقدَّمcommit_hashأيضًا. - repo_type (
str، اختياري) — نوع المستودع. القيمة الافتراضية هي"model".
يعيد
Optional[str] أو _CACHED_NO_EXIST
ستعيد None إذا لم يتم تخزين الملف مؤقتًا. وإلا:
- المسار الدقيق للملف المخزّن مؤقتًا إذا تم العثور عليه في ذاكرة التخزين المؤقت
- قيمة خاصة
_CACHED_NO_EXISTإذا لم يكن الملف موجودًا عند تجزئة الالتزام المحددة وتم تخزين هذا الأمر مؤقتًا.
يستكشف ذاكرة التخزين المؤقت لإرجاع أحدث ملف مخزّن مؤقتًا لإصدار معين إذا وُجد.
لن ترمي هذه الدالة أي استثناء إذا لم يكن الملف مخزّنًا مؤقتًا.
cached_assets_path
huggingface_hub.cached_assets_path
< source >( library_name: strnamespace: str = 'default'subfolder: str = 'default'assets_dir: str | pathlib.Path | None = None )
المعاملات
- library_name (
str) — اسم المكتبة التي ستدير مجلد التخزين المؤقت. مثال:"dataset". - namespace (
str، اختياري، القيمة الافتراضية “default”) — المجال الذي تنتمي إليه البيانات. مثال:"SQuAD". - subfolder (
str، اختياري، الافتراضي “default”) — المجلد الفرعي الذي سيتم تخزين البيانات فيه. مثال:extracted. - assets_dir (
str,Path, اختياري) — المسار إلى المجلد الذي تُخزَّن فيه الأصول مؤقتًا. يجب ألا يكون هذا المجلد هو نفسه المجلد الذي تُخزَّن فيه ملفات Hub مؤقتًا. القيمة الافتراضية هيHF_HOME / "assets"إذا لم يُقدَّم أي مسار. يمكن أيضًا ضبطه باستخدام متغير البيئةHF_ASSETS_CACHE.
إرجاع مسار مجلد لتخزين ملفات عشوائية مؤقتًا.
huggingface_hub يوفر مسار مجلد قياسي لتخزين الأصول. هذه هي الطريقة الموصى بها لدمج التخزين المؤقت في مكتبة لاحقة، إذ ستستفيد من الأدوات المدمجة لمسح التخزين المؤقت وحذفه بشكل صحيح.
يتم التمييز بين الملفات المخزنة مؤقتًا من Hub والموارد. تُخزَّن الملفات من Hub بطريقة واعية بـ git وتُدار بالكامل بواسطة huggingface_hub. راجع التوثيق ذي الصلة.
تُعتبر جميع الملفات الأخرى التي تخزنها مكتبة لاحقة مؤقتًا “موارد” (ملفات تم تنزيلها من مصادر خارجية، أو تم استخراجها من أرشيف .tar، أو تم معالجتها مسبقًا للتدريب، ...).
بمجرد توليد مسار المجلد، يُكفَل وجوده وأنه مجلد.
يعتمد المسار على ثلاثة مستويات من العمق: اسم المكتبة، ومساحة الأسماء، ومجلد فرعي. تمنح هذه المستويات الثلاثة مرونة مع السماح لـhuggingface_hub بالتوقع وجود مجلدات عند مسح/حذف أجزاء من ذاكرة التخزين المؤقت للأصول. داخل مكتبة معينة، يُتوقع أن تتشارك جميع مساحات الأسماء نفس مجموعة أسماء المجلدات الفرعية، لكن هذه ليست قاعدة إلزامية. تمتلك المكتبة التابعة (downstream) بعد ذلك تحكماً كاملاً في هيكل الملفات الذي تتبناه داخل ذاكرتها التخزينية. مساحة الأسماء والمجلد الفرعي اختياريان (سيُستخدم مجلد فرعي افتراضي باسم "default/")، لكن اسم المكتبة إلزامي لأننا نريد من كل مكتبة تابعة إدارة ذاكرتها التخزينية الخاصة بها.
الشجرة المتوقعة:
assets/
└── datasets/
│ ├── SQuAD/
│ │ ├── downloaded/
│ │ ├── extracted/
│ │ └── processed/
│ ├── Helsinki-NLP--tatoeba_mt/
│ ├── downloaded/
│ ├── extracted/
│ └── processed/
└── transformers/
├── default/
│ ├── something/
├── bert-base-cased/
│ ├── default/
│ └── training/
hub/
└── models--julien-c--EsperBERTo-small/
├── blobs/
│ ├── (...)
│ ├── (...)
├── refs/
│ └── (...)
└── [ 128] snapshots/
├── 2439f60ef33a0d46d85da5001d52aeda5b00ce9f/
│ ├── (...)
└── bbc77c8132af1cc5cf678da3f1ddf2de43606d48/
└── (...)مثال:
>>> from huggingface_hub import cached_assets_path
>>> cached_assets_path(library_name="datasets", namespace="SQuAD", subfolder="download")
PosixPath('/home/wauplin/.cache/huggingface/extra/datasets/SQuAD/download')
>>> cached_assets_path(library_name="datasets", namespace="SQuAD", subfolder="extracted")
PosixPath('/home/wauplin/.cache/huggingface/extra/datasets/SQuAD/extracted')
>>> cached_assets_path(library_name="datasets", namespace="Helsinki-NLP/tatoeba_mt")
PosixPath('/home/wauplin/.cache/huggingface/extra/datasets/Helsinki-NLP--tatoeba_mt/default')
>>> cached_assets_path(library_name="datasets", assets_dir="/tmp/tmp123456")
PosixPath('/tmp/tmp123456/datasets/default/default')scan_cache_dir
huggingface_hub.scan_cache_dir
< source >( cache_dir: str | pathlib.Path | None = None )
امسح نظام كاش HF بالكامل وأعد بنية ~HFCacheInfo.
استخدم scan_cache_dir لمسح نظام الكاش الخاص بك برمجياً. سيتم مسح الكاش مستودعاً تلو الآخر. إذا كان أحد المستودعات تالفاً، سيتم طرح ~CorruptedCacheException داخلياً لكنه سيُلتقط ويُعاد ضمن بنية ~HFCacheInfo. لن تحصل المستودعات الصالحة فقط على تقرير سليم.
>>> from huggingface_hub import scan_cache_dir
>>> hf_cache_info = scan_cache_dir()
HFCacheInfo(
size_on_disk=3398085269,
repos=frozenset({
CachedRepoInfo(
repo_id='t5-small',
repo_type='model',
repo_path=PosixPath(...),
size_on_disk=970726914,
nb_files=11,
revisions=frozenset({
CachedRevisionInfo(
commit_hash='d78aea13fa7ecd06c29e3e46195d6341255065d5',
size_on_disk=970726339,
snapshot_path=PosixPath(...),
files=frozenset({
CachedFileInfo(
file_name='config.json',
size_on_disk=1197
file_path=PosixPath(...),
blob_path=PosixPath(...),
),
CachedFileInfo(...),
...
}),
),
CachedRevisionInfo(...),
...
}),
),
CachedRepoInfo(...),
...
}),
warnings=[
CorruptedCacheException("Snapshots dir doesn't exist in cached repo: ..."),
CorruptedCacheException(...),
...
],
)يمكنك أيضًا طباعة تقرير مفصّل مباشرةً من سطر الأوامر hf باستخدام:
> hf cache ls ID SIZE LAST_ACCESSED LAST_MODIFIED REFS --------------------------- -------- ------------- ------------- ----------- dataset/nyu-mll/glue 157.4M 2 days ago 2 days ago main script model/LiquidAI/LFM2-VL-1.6B 3.2G 4 days ago 4 days ago main model/microsoft/UserLM-8b 32.1G 4 days ago 4 days ago main Done in 0.0s. Scanned 6 repo(s) for a total of 3.4G. Got 1 warning(s) while scanning. Use -vvv to print details.
يرفع:
CacheNotFoundإذا لم يكن مجلد الكاش موجودًا.
ValueErrorإذا كان مجلد التخزين المؤقت ملفًا بدلاً من مجلد.
يعيد: كائن ~HFCacheInfo.
هياكل البيانات
تُبنى جميع الهياكل وتُعاد بواسطة scan_cache_dir() وهي غير قابلة للتغيير.
HFCacheInfo
فئة huggingface_hub.HFCacheInfo
< source >( size_on_disk: intrepos: frozensetincomplete_files: frozensetwarnings: listcache_dir: pathlib.Path | None = None )
المعاملات
- size_on_disk (
int) — الحجم الفعلي لنظام التخزين المؤقت بالبايت. يُحتسب أي كائن مشترك بين المستودعات مرة واحدة، وتُضمَّن الكائنات المشتركة المخزنة فقط والتي لم تعد تشير إليها أي مستودعات. قد يكون أصغر من مجموع أحجام المستودعات الفردية. - repos (
frozenset[CachedRepoInfo]) — مجموعة من ~CachedRepoInfo تصف جميع المستودعات المخزنة مؤقتًا الصالحة التي تم العثور عليها في نظام التخزين المؤقت أثناء المسح. - incomplete_files (
frozenset[CachedIncompleteFileInfo]) — مجموعة من ~CachedIncompleteFileInfo تصف ملفات*.incompleteمتروكة خلفها عمليات تنزيل مُقاطعة. - warnings (
list[CorruptedCacheException]) — قائمة من ~CorruptedCacheException التي حدثت أثناء فحص ذاكرة التخزين المؤقت. تم التقاط هذه الاستثناءات حتى يتمكن الفحص من المتابعة. يتم تجاوز المستودعات التالفة من الفحص. - cache_dir (
PathأوNone) — مجلد التخزين المؤقت الذي تم فحصه.
بنية بيانات مجمّدة تحتوي على معلومات حول نظام الكاش بالكامل.
تُعاد هذه البنية البياناتية بواسطة scan_cache_dir() وهي غير قابلة للتغيير.
size_on_diskيأخذ في الاعتبار الكتل (blobs) فقط، وتُتخطَّأ المستودعات التالفة. وهو حجم فيزيائي: على عكسCachedRepoInfo.size_on_diskالذي يُسند الكتلة المشتركة إلى كل مستودع يشير إليها، تُحتسب الكتلة المشتركة هنا مرة واحدة فقط.
جهّز الاستراتيجية لحذف الملفات المخزّنة مؤقتًا بشكل فردي.
تُحذف إدخالات اللقطة فقط. لا يُحذف الكائن (blob) إلا إذا لم يكن أي ملف مخزّن مؤقت آخر يشير إليه، لذا تُحافظ على الكائنات المشتركة مع مراجع أخرى. كما تُحافظ على المراجع ومجلدات اللقطات، حتى لو انتهت اللقطة إلى أن تكون فارغة. لحذف مراجع أو مستودعات كاملة، استخدم delete_revisions().
مثال:
>>> from huggingface_hub import scan_cache_dir
>>> cache_info = scan_cache_dir()
>>> files = [
... file
... for repo in cache_info.repos
... if repo.repo_id == "org/model"
... for revision in repo.revisions
... for file in revision.files
... if file.file_name == "model-Q4_K_M.gguf"
... ]
>>> delete_strategy = cache_info.delete_files(*files)
>>> print(f"Will free {delete_strategy.expected_freed_size_str}.")
Will free 4.9G.
>>> delete_strategy.execute()جهّز الاستراتيجية لحذف مراجعة واحدة أو أكثر مخزّنة مؤقتًا محليًا.
يمكن أن تكون مراجع الإدخال أي تجزئة مراجعة. إذا لم يتم العثور على تجزئة مراجعة في ذاكرة التخزين المؤقت المحلية، يتم طرح تحذير دون رفع خطأ. يمكن أن تكون المراجعات من مستودعات مخزنة مؤقتًا مختلفة نظرًا لأن التجزئات فريدة عبر المستودعات،
أمثلة:
>>> from huggingface_hub import scan_cache_dir
>>> cache_info = scan_cache_dir()
>>> delete_strategy = cache_info.delete_revisions(
... "81fd1d6e7847c99f5862c9fb81387956d99ec7aa"
... )
>>> print(f"Will free {delete_strategy.expected_freed_size_str}.")
Will free 7.9K.
>>> delete_strategy.execute()>>> from huggingface_hub import scan_cache_dir
>>> scan_cache_dir().delete_revisions(
... "81fd1d6e7847c99f5862c9fb81387956d99ec7aa",
... "e2983b237dccf3ab4937c97fa717319a9ca1a96d",
... "6c0e6080953db56375760c0471a8c5f2929baf11",
... ).execute()يعيد
delete_revisionsكائن DeleteCacheStrategy يحتاج إلى التنفيذ. لا يُقصد بـ DeleteCacheStrategy أن يُعدَّل، لكنه يتيح إجراء تجربة جافة قبل تنفيذ الحذف فعليًا.
export_as_table
< source >( verbosity: int = 0 ) → str
أنشئ جدولاً من كائن HFCacheInfo.
مرّر verbosity=0 للحصول على جدول يحتوي على صف واحد لكل مستودع، مع الأعمدة “repo_id” و“repo_type” و“size_on_disk” و“nb_files” و“last_accessed” و“last_modified” و“refs” و“local_path”.
مرّر verbosity=1 للحصول على جدول يحتوي على صف لكل مستودع ومراجعة (وبالتالي قد تظهر عدة صفوف لمستودع واحد)، مع الأعمدة
“repo_id” و“repo_type” و“revision” و“size_on_disk” و“nb_files” و“last_modified” و“refs” و“local_path”.
مثال:
>>> from huggingface_hub.utils import scan_cache_dir
>>> hf_cache_info = scan_cache_dir()
HFCacheInfo(...)
>>> print(hf_cache_info.export_as_table())
REPO ID REPO TYPE SIZE ON DISK NB FILES LAST_ACCESSED LAST_MODIFIED REFS LOCAL PATH
--------------------------------------------------- --------- ------------ -------- ------------- ------------- ---- --------------------------------------------------------------------------------------------------
roberta-base model 2.7M 5 1 day ago 1 week ago main ~/.cache/huggingface/hub/models--roberta-base
suno/bark model 8.8K 1 1 week ago 1 week ago main ~/.cache/huggingface/hub/models--suno--bark
t5-base model 893.8M 4 4 days ago 7 months ago main ~/.cache/huggingface/hub/models--t5-base
t5-large model 3.0G 4 5 weeks ago 5 months ago main ~/.cache/huggingface/hub/models--t5-large
>>> print(hf_cache_info.export_as_table(verbosity=1))
REPO ID REPO TYPE REVISION SIZE ON DISK NB FILES LAST_MODIFIED REFS LOCAL PATH
--------------------------------------------------- --------- ---------------------------------------- ------------ -------- ------------- ---- -----------------------------------------------------------------------------------------------------------------------------------------------------
roberta-base model e2da8e2f811d1448a5b465c236feacd80ffbac7b 2.7M 5 1 week ago main ~/.cache/huggingface/hub/models--roberta-base/snapshots/e2da8e2f811d1448a5b465c236feacd80ffbac7b
suno/bark model 70a8a7d34168586dc5d028fa9666aceade177992 8.8K 1 1 week ago main ~/.cache/huggingface/hub/models--suno--bark/snapshots/70a8a7d34168586dc5d028fa9666aceade177992
t5-base model a9723ea7f1b39c1eae772870f3b547bf6ef7e6c1 893.8M 4 7 months ago main ~/.cache/huggingface/hub/models--t5-base/snapshots/a9723ea7f1b39c1eae772870f3b547bf6ef7e6c1
t5-large model 150ebc2c4b72291e770f58e6057481c8d2ed331a 3.0G 4 5 months ago main ~/.cache/huggingface/hub/models--t5-large/snapshots/150ebc2c4b72291e770f58e6057481c8d2ed331aCachedRepoInfo
فئة huggingface_hub.CachedRepoInfo
< source >( repo_id: strrepo_type: typing.Literal['model', 'dataset', 'space', 'kernel']repo_path: Pathsize_on_disk: intnb_files: intrevisions: frozensetlast_accessed: floatlast_modified: float )
المعاملات
- repo_id (
str) — معرّف المستودع على Hub. مثال:"google/fleurs". - repo_type (
Literal["dataset", "model", "space", "kernel"]) — نوع المستودع المخزّن مؤقتًا. - repo_path (
Path) — المسار المحلي للمستودع المخزّن مؤقتًا. - size_on_disk (
int) — مجموع أحجام ملفات blob في المستودع المخزّن مؤقتًا. - nb_files (
int) — إجمالي عدد ملفات blob في المستودع المخزّن مؤقتًا. - revisions (
frozenset[CachedRevisionInfo]) — مجموعة من ~CachedRevisionInfo تصف جميع المراجعات المخزنة مؤقتًا في المستودع. - last_accessed (
float) — طابع زمني لآخر وقت تم فيه الوصول إلى ملف blob في المستودع. - last_modified (
float) — طابع زمني لآخر وقت تم فيه تعديل/إنشاء ملف blob في المستودع.
بنية بيانات مجمّدة تحتوي على معلومات حول مستودع مخزّن مؤقتًا.
size_on_diskليس بالضرورة مجموع أحجام جميع المراجعات بسبب الملفات المكررة. علاوة على ذلك، يُؤخذ في الاعتبار حجم الكتل (blobs) فقط، وليس حجم المجلدات وروابط الرموز (symlinks) (الذي يُعدّ ضئيلاً).
يمكن أن تعتمد موثوقية
last_accessedوlast_modifiedعلى نظام التشغيل الذي تستخدمه. راجع توثيق بايثون لمزيد من التفاصيل.
(خاصية) مجموع أحجام ملفات blob كنص قابل للقراءة البشرية.
مثال: “42.2K”.
(خاصية) الترميز بين refs وهياكل بيانات المراجعات.
CachedRevisionInfo
فئة huggingface_hub.CachedRevisionInfo
< source >( commit_hash: strsnapshot_path: Pathsize_on_disk: intfiles: frozensetrefs: frozensetlast_modified: float )
المعاملات
- commit_hash (
str) — تجزئة المراجعة (فريدة). مثال:"9338f7b671827df886678df2bdd7cc7b4f36dffd". - snapshot_path (
Path) — المسار إلى مجلد المراجعة في مجلدsnapshots. يحتوي على هيكل شجرة مطابق تمامًا لهيكل المستودع على Hub. - files — (
frozenset[CachedFileInfo]): مجموعة من ~CachedFileInfo تصف جميع الملفات الموجودة في اللقطة. - refs (
frozenset[str]) — مجموعة منrefsتشير إلى هذا المراجعة. إذا لم يكن للمراجعة أيrefs، يُعتبر منفصلاً. مثال:{"main", "2.4.0"}أو{"refs/pr/1"}. - size_on_disk (
int) — مجموع أحجام ملفات blob المرتبطة عبر روابط رمزية بواسطة هذا المراجعة. - last_modified (
float) — طابع زمني لآخر وقت تم فيه إنشاء/تعديل المراجعة.
بنية بيانات مجمّدة تحتوي على معلومات حول نسخة.
يتوافق كل إصدار مع مجلد في مجلد snapshots ويُعبأ بهيكل شجرة مطابق لهيكل المستودع على Hub، لكنه يحتوي على روابط رمزية فقط. يمكن أن يُشار إلى إصدار واحد أو أكثر من refs أو يكون "منفصلًا" (بدون أي refs).
last_accessedلا يمكن تحديده بشكل صحيح على مراجعة واحدة لأن ملفات blob مشتركة عبر المراجعات.
size_on_diskليس بالضرورة مجموع أحجام جميع الملفات بسبب احتمال وجود ملفات مكررة. بالإضافة إلى ذلك، يُؤخذ في الاعتبار حجم الكائنات (blobs) فقط، وليس حجم المجلدات وروابط الرموز (symlinks) (الذي يُعدّ ضئيلاً).
(خاصية) مجموع أحجام ملفات blob كنص قابل للقراءة البشرية.
مثال: “42.2K”.
(خاصية) إجمالي عدد الملفات في المراجعة.
CachedFileInfo
فئة huggingface_hub.CachedFileInfo
< source >( file_name: strfile_path: Pathblob_path: Pathsize_on_disk: intblob_last_accessed: floatblob_last_modified: float )
المعاملات
- file_name (
str) — اسم الملف. مثال:config.json. - file_path (
Path) — مسار الملف داخل مجلدsnapshots. مسار الملف هو رابط رمزي يشير إلى كائن (blob) داخل مجلدblobs. - blob_path (
Path) — مسار عنصر blob المحلي في المستودع الذي يشير إليهfile_path. يمكن أن يكون عنصر blob نفسه رابطًا رمزيًا إلى مخزن blob المشترك على مستوى الكاش بالكامل. - size_on_disk (
int) — حجم ملف blob بالبايت. - blob_last_accessed (
float) — طابع زمني لآخر وقت تم فيه الوصول إلى ملف blob (من أي مراجعة). - blob_last_modified (
float) — طابع زمني لآخر وقت تم فيه تعديل/إنشاء ملف blob.
بنية بيانات مجمّدة تحتوي على معلومات حول ملف مخزّن مؤقتًا واحد.
يمكن أن تعتمد موثوقية
blob_last_accessedوblob_last_modifiedعلى نظام التشغيل الذي تستخدمه. راجع توثيق بايثون لمزيد من التفاصيل.
CachedIncompleteFileInfo
فئة huggingface_hub.CachedIncompleteFileInfo
< source >( file_path: Pathsize_on_disk: int )
بنية بيانات مجمّدة تحتوي على معلومات حول تنزيل غير مكتمل واحد.
تترك التنزيلات المقطوعة ملفات <cache>/<repo>/blobs/<etag>.incomplete خلفها.
وهذه الملفات ليست جزءًا من أي مراجعة مُثبّتة، لذا تُعرض بشكل منفصل بواسطة scan_cache_dir().
DeleteCacheStrategy
فئة huggingface_hub.DeleteCacheStrategy
< source >( expected_freed_size: intblobs: frozensetrefs: frozensetrepos: frozensetsnapshots: frozensetfiles: frozenset = frozenset()cache_dir: pathlib.Path | None = None )
المعاملات
- expected_freed_size (
float) — الحجم المتوقع للتحرير بعد تنفيذ الاستراتيجية. - blobs (
frozenset[Path]) — مجموعة مسارات ملفات blob التي سيتم حذفها. - refs (
frozenset[Path]) — مجموعة مسارات ملفات المرجع التي سيتم حذفها. - repos (
frozenset[Path]) — مجموعة من مسارات المستودعات الكاملة التي سيتم حذفها. - snapshots (
frozenset[Path]) — مجموعة من اللقطات التي سيتم حذفها (مجلد من الروابط الرمزية). - files (
frozenset[Path]، اختياري) — مجموعة من إدخالات اللقطة الفردية التي سيتم حذفها. يتم حذف بياناتها (blobs) فقط إذا كانت مدرجة فيblobs. - cache_dir (
PathأوNone) — مجلد التخزين المؤقت الذي تم حساب الاستراتيجية منه. يُستخدم لجمع الكتل المشتركة التي تشير إليها روابط رمزية محلية في المستودع وقد حُذفت.
بنية بيانات مجمّدة تحتوي على الاستراتيجية لحذف المراجعات أو الملفات المخزّنة مؤقتًا.
لا يُقصد بهذا الكائن أن يُنشأ برمجياً، بل يُعاد بواسطة delete_revisions() أو delete_files(). راجع التوثيق لمثال على الاستخدام.
(property) الحجم المتوقع الذي سيتم تحريره كنص قابل للقراءة من قبل الإنسان.
مثال: “42.2K”.
استثناءات
CorruptedCacheException
استثناء لأي بنية غير متوقعة في نظام التخزين المؤقت الخاص بـ Huggingface.