Hub documentation

Menggunakan Penyimpanan Xet

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Menggunakan Penyimpanan Xet

Python

Untuk mengakses versi huggingface_hub yang mendukung Xet, cukup instal versi terbaru:

pip install -U huggingface_hub

Sejak huggingface_hub 0.32.0, ini juga akan menginstal hf_xet. Paket hf_xet mengintegrasikan huggingface_hub dengan xet-core, klien Rust untuk backend Xet.

Jika Anda menggunakan pustaka transformers atau datasets, pustaka tersebut sudah menggunakan huggingface_hub. Selama versi huggingface_hub >= 0.32.0, tidak perlu dilakukan tindakan lebih lanjut.

Jika versi huggingface_hub >= 0.30.0 dan < 0.32.0 terpasang, hf_xet harus dipasang secara eksplisit:

pip install -U hf-xet

Dan selesai! Anda kini mendapatkan manfaat deduplikasi Xet untuk kedua unggahan dan unduhan. Anggota tim yang menggunakan versi huggingface_hub < 0.30.0 masih akan dapat mengunggah dan mengunduh repositori melalui kemampuan kompatibilitas mundur yang disediakan oleh jembatan LFS.

Untuk melihat dokumentasi penggunaan yang lebih detail, lihat dokumentasi huggingface_hub untuk:

Git

Pengguna Git dapat mengakses manfaat Xet dengan mengunduh dan menginstal ekstensi Git Xet. Setelah terinstal, cukup gunakan alur kerja standar untuk mengelola repositori Hub dengan Git - tidak diperlukan perubahan tambahan.

Prasyarat

Instal Git dan Git LFS.

Instal di macOS atau Linux (amd64 atau aarch64)

Instal menggunakan skrip instalasi dengan perintah berikut di terminal Anda (memerlukan curl dan unzip):

curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/huggingface/xet-core/refs/heads/main/git_xet/install.sh | sh

Atau, instal menggunakan Homebrew:

brew install git-xet
git xet install

Untuk memverifikasi instalasi, jalankan:

git xet --version

Windows (amd64)

Menggunakan winget:

winget install git-xet

Menggunakan program instalasi:

  • Unduh git-xet-windows-installer-x86_64.zip (tersedia di sini) dan ekstrak.
  • Jalankan file installer msi dan ikuti instruksi yang muncul.

Instalasi manual:

  • Unduh git-xet-windows-x86_64.zip (tersedia di sini) dan ekstrak.
  • Letakkan git-xet.exe yang telah diekstrak di bawah direktori PATH.
  • Jalankan git xet install di terminal.

Untuk memverifikasi instalasi, jalankan:

git xet --version

Menggunakan Git Xet

Setelah diinstal di platform Anda, penggunaan Git Xet sama mudahnya dengan mengikuti alur kerja Git standar Hub.

Pastikan semua prasyarat terpasang dan dikonfigurasi, ikuti instruksi pengaturan untuk bekerja dengan repositori di Hub, lalu commit perubahan Anda, dan push ke Hub:

# Create any files you like! Then...
git add .
git commit -m "Uploading new models"  # You can choose any descriptive message
git push

Di balik layar, protokol Xet dipanggil untuk mengunggah file besar langsung ke penyimpanan Xet, meningkatkan kecepatan unggahan melalui kekuatan deduplikasi tingkat chunk.

Membatalkan pemasangan di macOS atau Linux

Menggunakan Homebrew:

git xet uninstall
brew uninstall git-xet

Jika Anda menggunakan skrip instalasi (untuk MacOS atau Linux), jalankan perintah berikut di terminal Anda:

git xet uninstall
sudo rm $(which git-xet)

Membatalkan pemasangan di Windows

Jika Anda menggunakan winget:

winget uninstall git-xet

Jika Anda menggunakan installer:

  • Buka Settings -> Apps -> Installed apps
  • Cari “Git-Xet”.
  • Pilih opsi “Uninstall” yang tersedia di menu konteks.

Jika Anda menginstal secara manual:

  • Jalankan git xet uninstall di terminal.
  • Hapus file git-xet.exe dari lokasi tempat file tersebut awalnya ditempatkan.

Rekomendasi

Xet terintegrasi dengan mulus ke semua alur kerja Hub. Namun, ada beberapa langkah yang mungkin perlu Anda pertimbangkan untuk mendapatkan manfaat maksimal dari penyimpanan Xet.

Saat mengunggah atau mengunduh dengan Python:

  • Pastikan hf_xet terpasang: Meskipun Xet tetap kompatibel mundur dengan klien lama yang dioptimalkan untuk Git LFS, integrasi hf_xet dengan huggingface_hub memberikan performa berbasis chunk yang optimal dan iterasi yang lebih cepat pada file besar.
  • Konkurensi adaptif aktif secara bawaan: hf_xet secara otomatis menyesuaikan jumlah stream transfer paralel berdasarkan kondisi jaringan secara real-time — tanpa perlu konfigurasi. Pengaturan bawaan akan memaksimalkan sebagian besar jalur jaringan tanpa penyetelan apa pun.
  • Buffer unduhan berskala dengan memori sistem: Mulai dari hf_xet 1.7.0, ukuran buffer unduhan ditentukan dari memori yang tersedia untuk hf_xet, termasuk batas memori container. Container kecil menggunakan memori lebih sedikit untuk unduhan dan mesin besar menggunakan lebih banyak, tanpa perlu pengaturan. Lihat Buffer Unduhan.
  • Penyetelan lanjutan: Untuk kontrol yang lebih rinci, HF_XET_FIXED_DOWNLOAD_CONCURRENCY dan HF_XET_FIXED_UPLOAD_CONCURRENCY memungkinkan Anda menetapkan konkurensi ke nilai tetap, melewati pengendali adaptif. Lihat variabel lingkungan dari hf_xet untuk daftar lengkap opsi.

Saat mengunggah atau mengunduh di Git atau Python:

  • Memanfaatkan commit yang sering dan bertahap: Deduplikasi pada tingkat chunk dari Xet memungkinkan Anda melakukan pembaruan bertahap pada model atau dataset dengan aman. Hanya chunk yang berubah yang diunggah, sehingga commit yang sering dilakukan menjadi cepat dan efisien dalam penyimpanan.
  • Jadilah Spesifik di .gitattributes: Saat mendefinisikan pola untuk Xet atau LFS, gunakan ekstensi file yang presisi (misalnya, *.safetensors, *.bin) untuk menghindari pengalihan file yang lebih kecil ke penyimpanan file besar secara tidak perlu.
  • Prioritaskan akses komunitas: Xet secara signifikan meningkatkan efisiensi dan skala transfer file besar. Alih-alih menyusun repositori Anda untuk mengurangi ukuran totalnya (atau ukuran file individual), susunlah repositori tersebut untuk kolaborator dan pengguna komunitas agar mereka dapat dengan mudah menavigasi dan mengambil konten yang mereka butuhkan.

Mengunggah di balik proxy atau firewall

Mulai dari hf_xet 1.8.0, unggahan dapat mengirim data langsung ke Amazon S3, bukan hanya melalui layanan penyimpanan Xet. Hub memutuskan untuk setiap unggahan apakah akan menggunakan unggahan langsung, dan fitur ini diaktifkan secara bertahap. Unduhan tidak berubah.

Jika jaringan Anda membatasi lalu lintas keluar, izinkan hostname-hostname ini (HTTPS, port 443) di samping yang tercantum dalam Unduhan di balik proxy atau firewall:

HostnameTujuan
s3.us-east-1.amazonaws.comUnggahan langsung (AS)
s3.eu-west-3.amazonaws.comUnggahan langsung untuk repositori yang disimpan di Uni Eropa

Hostname-hostname ini tidak berada di bawah hf.co atau huggingface.co, sehingga mengizinkan sufiks-sufiks tersebut tidak mencakup mereka.

Jika hf_xet tidak dapat mencapai S3, ia akan mengulang pengunggahan langsung dan kemudian mengirim data tersebut melalui layanan penyimpanan Xet. Pengunggahan tetap selesai, tetapi bisa jauh lebih lambat, karena setiap blok harus menunggu proses pengulangan terlebih dahulu. Log hf_xet menampilkan Upload grant URL unreachable, falling back to legacy xorb upload path (may be slower) ketika hal ini terjadi. Jika Anda tidak dapat mengizinkan hostname S3, atur HF_XET_CLIENT_LEGACY_DIRECT_XORB_UPLOAD=1 untuk menonaktifkan pengunggahan langsung.

Variabel Lingkungan

Kedua hf_xet dan Git Xet didukung oleh xet-core, yang dapat dikonfigurasi melalui variabel lingkungan. Tabel di bawah ini merinci variabel individual untuk kontrol yang lebih detail. Sebagian besar pengguna tidak perlu mengubah salah satu dari ini — nilai bawaan telah disetel untuk secara otomatis memaksimalkan jalur jaringan.

HF_XET_HIGH_PERFORMANCE=1 adalah bendera kenyamanan yang menyesuaikan beberapa pengaturan sekaligus (batas konkurensi, ukuran buffer, dan batas file paralel). Bendera ini ditujukan untuk mesin dengan pita lebar tinggi dan disk cepat. Mulai dari hf_xet 1.7.0, ukuran buffer yang disetel berdasarkan memori yang tersedia untuk hf_xet (lihat Buffer Unduhan), sehingga tidak lagi membutuhkan 64 GB RAM, dan variabel apa pun yang Anda setel sendiri memiliki prioritas lebih tinggi daripada bendera ini. Pada versi sebelumnya, gunakan hanya pada mesin dengan minimal 64 GB RAM.

Umum

Flag tingkat tinggi yang paling sering digunakan oleh pengguna.

Variabel LingkunganDefaultDeskripsi
HF_XET_HIGH_PERFORMANCE (alias HF_XET_HP)offFlag kenyamanan yang memaksimalkan penggunaan jaringan dan CPU dengan meningkatkan konkurensi, ukuran buffer, dan batas file paralel sekaligus. Lihat catatan di atas.
HF_XET_CACHE$HF_HOME/xetDirektori tempat Xet menyimpan data secara lokal (chunk yang diunduh dan shard deduplikasi). Mengambil prioritas di atas HF_HOME.

Konektivitas Adaptif

Secara default, xet-core menggunakan konkurensi adaptif — menyesuaikan paralelisme secara dinamis berdasarkan kondisi jaringan secara real-time. Pengaturan ini bersifat lanjutan dan kemungkinan besar tidak diperlukan dalam kebanyakan kasus. Variabel di bawah ini mengontrol perilaku pengontrol adaptif:

Variabel LingkunganDefaultDeskripsi
HF_XET_CLIENT_AC_INITIAL_UPLOAD_CONCURRENCY2Jumlah awal stream unggah konkuren. Mode HP: 16.
HF_XET_CLIENT_AC_INITIAL_DOWNLOAD_CONCURRENCY4Jumlah awal stream unduhan konkuren. Mode HP: 16.
HF_XET_CLIENT_AC_MIN_UPLOAD_CONCURRENCY1Batas bawah untuk konkurensi unggah. Mode HP: 4.
HF_XET_CLIENT_AC_MIN_DOWNLOAD_CONCURRENCY1Batas bawah untuk konkurensi unduhan. Mode HP: 4.
HF_XET_CLIENT_AC_MAX_UPLOAD_CONCURRENCY64Batas atas untuk konkurensi unggah. Mode HP: 124.
HF_XET_CLIENT_AC_MAX_DOWNLOAD_CONCURRENCY64Batas atas untuk konkurensi unduhan. Mode HP: 124.
HF_XET_CLIENT_AC_TARGET_RTT60sWaktu round-trip target. Konkurensi meningkat selama waktu round-trip yang diprediksi untuk transfer penuh berada di bawah nilai ini.
HF_XET_CLIENT_AC_MAX_HEALTHY_RTT90sWaktu round-trip maksimum yang dapat diterima. Transfer yang memakan waktu lebih lama dari ini dihitung sebagai kegagalan oleh pengendali adaptif.
HF_XET_CLIENT_AC_HEALTHY_SUCCESS_RATIO_THRESHOLD0.8Rasio keberhasilan di mana pengendali meningkatkan konkurensi.
HF_XET_CLIENT_AC_UNHEALTHY_SUCCESS_RATIO_THRESHOLD0.5Rasio keberhasilan di bawahnya pengendali menurunkan konkurensi.
HF_XET_CLIENT_AC_LOGGING_INTERVAL_MS10000Interval (dalam ms) di mana status konkurensi dicatat.

Untuk mengunci konkurensi ke nilai tetap (melewati pengendali adaptif), gunakan alias kenyamanan HF_XET_FIXED_UPLOAD_CONCURRENCY dan HF_XET_FIXED_DOWNLOAD_CONCURRENCY. Ini mengatur konkurensi awal, minimum, dan maksimum ke nilai yang sama.

Jaringan dan Ulang

Variabel LingkunganDefaultDeskripsi
HF_XET_CLIENT_RETRY_MAX_ATTEMPTS5Jumlah maksimum upaya pengulangan untuk permintaan yang gagal.
HF_XET_CLIENT_RETRY_BASE_DELAY3000msJeda dasar antara percobaan ulang (dengan backoff eksponensial).
HF_XET_CLIENT_RETRY_MAX_DURATION360sWaktu tunggu maksimum sebelum setiap retry tunggal. Proses retry berhenti setelah HF_XET_CLIENT_RETRY_MAX_ATTEMPTS, sehingga total waktu retry dapat melebihi nilai ini.
HF_XET_CLIENT_CONNECT_TIMEOUT60sWaktu habis koneksi TCP.
HF_XET_CLIENT_READ_TIMEOUT300sWaktu habis baca untuk respons HTTP.
HF_XET_CLIENT_IDLE_CONNECTION_TIMEOUT60sTimeout sebelum koneksi idle ditutup.
HF_XET_CLIENT_MAX_IDLE_CONNECTIONS16Jumlah maksimum koneksi idle dalam pool.
HF_XET_CLIENT_RECONSTRUCTION_API_VERSION(tidak disetel)Paksa versi API unduhan (rekonstruksi) menjadi 1 atau 2, tanpa fallback. Jika tidak disetel, hf_xet mencoba versi 2 dan kembali ke versi 1 jika server tidak mendukungnya.
HF_XET_CLIENT_SHARD_API_VERSION(tidak disetel)Paksa versi API unggah (shard) menjadi 1 atau 2, tanpa fallback. Jika tidak disetel, hf_xet mencoba versi 2 dan kembali ke versi 1 jika server tidak mendukungnya.

Transfer Data

Variabel LingkunganDefaultDeskripsi
HF_XET_DATA_MAX_CONCURRENT_FILE_INGESTION8Jumlah maksimum file yang diproses secara bersamaan selama unggahan. Mode HP: 100.
HF_XET_DATA_MAX_CONCURRENT_FILE_DOWNLOADS8Jumlah maksimum file yang diunduh secara bersamaan.
HF_XET_DATA_INGESTION_BLOCK_SIZE8mbUkuran blok yang dibaca selama proses pengambilan data file.
HF_XET_DATA_PROGRESS_UPDATE_INTERVAL200msSeberapa sering bilah progres diperbarui.
HF_XET_DATA_PROGRESS_UPDATE_SPEED_SAMPLING_WINDOW10sJendela waktu yang digunakan untuk mengagregasi pengukuran kecepatan transfer dalam pelaporan kemajuan.
HF_XET_CLIENT_LEGACY_DIRECT_XORB_UPLOADfalseSetel ke 1 untuk mengirim semua data unggahan melalui layanan penyimpanan Xet alih-alih langsung ke S3 (hf_xet 1.8.0+). Lihat Mengunggah di balik proxy atau firewall.

Unduh Buffer

Ini mengontrol penggunaan memori selama unduhan.

Mulai dari hf_xet 1.7.0, nilai default untuk tiga variabel DOWNLOAD_BUFFER didasarkan pada jumlah memori yang dapat digunakan oleh hf_xet. Ini adalah RAM mesin, atau batas memori container jika nilainya lebih rendah. Setiap nilai default adalah fraksi dari memori tersebut, dijaga di antara nilai minimum dan maksimum yang ditunjukkan dalam tabel. Mode HP menggunakan dua kali fraksi, dengan nilai minimum dan maksimum yang sama. Sebagai contoh, container dengan batas 4 GB akan mendapatkan buffer sekitar 256 MB dengan batas 1 GB, dan mesin dengan 32 GB akan mendapatkan buffer sekitar 2 GB dan batas 8 GB yang sama seperti versi sebelumnya.

Versi sebelumnya, atau versi mana pun yang tidak dapat menentukan berapa banyak memori yang tersedia, menggunakan nilai default tetap 2gb, 512mb, dan 8gb (16gb, 2gb, dan 64gb dalam mode HP). Nilai yang digunakan ditulis ke file log hf_xet saat file tersebut dimulai (lihat Logging).

Variabel LingkunganDefaultMode HPDeskripsi
HF_XET_RECONSTRUCTION_MIN_RECONSTRUCTION_FETCH_SIZE256mb1gbUkuran pengambilan minimum untuk permintaan rekonstruksi.
HF_XET_RECONSTRUCTION_MAX_RECONSTRUCTION_FETCH_SIZE8gb16gbUkuran pengambilan maksimum untuk permintaan rekonstruksi.
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE1/16 dari memori, 64mb hingga 16gb1/8 dari memoriAnggaran buffer bersama dasar.
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_PERFILE_SIZE1/64 dari memori, 16mb hingga 2gb1/32 dari memoriAnggaran buffer tambahan per file aktif.
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_LIMIT1/4 dari memori, 264mb hingga 64gb1/2 dari memoriBatas keras untuk memori buffer unduhan total. Jika HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE diatur lebih tinggi dari ini, batasnya dinaikkan agar sesuai.
HF_XET_DISABLE_MEMORY_DERIVED_DOWNLOAD_BUFFERSunset—Setel ke 1 untuk menggunakan nilai default tetap alih-alih menentukan ukuran buffer dari memori yang tersedia.
HF_XET_RECONSTRUCTION_TARGET_BLOCK_COMPLETION_TIME15m—Waktu target untuk menyelesaikan blok prefetch. Digunakan untuk menentukan berapa banyak data yang harus diunduh di muka selama proses unduhan.
HF_XET_RECONSTRUCTION_MIN_PREFETCH_BUFFER1gb—Jumlah minimum data yang harus dipertahankan dalam antrean prapengambilan selama unduhan, terlepas dari estimasi waktu penyelesaian.

Cache Shard

shard cache menyimpan indeks deduplikasi (yaitu “shards” yang menggambarkan chunk yang sudah diunggah) di disk, di bawah direktori cache Xet. Cache yang lebih besar memungkinkan klien melakukan deduplikasi terhadap lebih banyak data yang pernah dilihat sebelumnya, sehingga lebih sedikit byte yang diunggah ulang.

Variabel LingkunganDefaultDeskripsi
HF_XET_SHARD_CACHE_SIZE_LIMIT16gbBatas atas lunak untuk cache shard di disk. Cache dipangkas hingga ukuran ini pada awal eksekusi, tetapi dapat tumbuh melampauinya dalam satu sesi jangka panjang. Sebagai panduan kasar, cache berukuran X menduplikasi terhadap sekitar 1000 × X data (16 GB → ~16 TB). Naikkan untuk deduplikasi yang lebih baik pada repositori sangat besar; turunkan jika cache yang tumbuh berisiko memenuhi disk Anda. Menerima ukuran yang dapat dibaca manusia (mis. 32gb) atau jumlah byte mentah.
HF_XET_SHARD_CHUNK_INDEX_TABLE_MAX_SIZE67108864Jumlah maksimum entri chunk dalam indeks deduplikasi in-memory. Atur bilangan bulat, bukan ukuran seperti 128mb. Mulai dari hf_xet 1.7.1, ketika indeks penuh, shard tertua dihapus darinya untuk memberi ruang bagi shard baru; versi sebelumnya berhenti menambahkan chunk begitu indeks penuh.
HF_XET_SHARD_CACHE_SUBDIRshard-cacheSubdirektori untuk cache shard di dalam direktori cache Xet.

Cache Chunk

hf_xet tidak lagi menggunakan cache chunk lokal untuk unduhan. File yang diunduh tetap disimpan di cache berbasis file huggingface_hub.

Variabel LingkunganDefaultDeskripsi
HF_XET_CHUNK_CACHE_SIZE_BYTES—Tidak lagi digunakan oleh hf_xet. Mengaturnya tidak mengaktifkan cache unduhan chunk.

Pencatatan

Variabel LingkunganDefaultDeskripsi
HF_XET_LOG_DEST(none)Tujuan log. Menerima jalur file atau jalur direktori (berakhiran dengan /). Ketika diatur ke direktori, file log dibuat dengan nama yang diberi cap waktu. Ketika diatur ke string kosong, log dikirim ke konsol. Ketika tidak diatur, log dikirim ke subdirektori logs/ di direktori cache Hugging Face Xet.
HF_XET_LOG_FORMAT(none)Format log. Atur ke json untuk log berformat JSON; selain itu, teks polos. Secara default, pencatatan ke file menggunakan JSON dan pencatatan ke konsol menggunakan teks.
HF_XET_LOG_PREFIXxetPrefiks untuk nama file log saat mencatat ke direktori.
HF_XET_LOG_DIR_DISABLE_CLEANUPfalseNonaktifkan pembersihan otomatis file log lama di direktori log.
HF_XET_LOG_DIR_MAX_SIZE250mbUkuran total maksimum file log di direktori log. File lama akan dihapus untuk tetap berada di bawah batas ini.
HF_XET_LOG_DIR_MIN_DELETION_AGE1dUsia minimum sebelum file log dapat dihapus selama pembersihan.
HF_XET_LOG_DIR_MAX_RETENTION_AGE14dUsia maksimum untuk file log. File yang lebih lama dari ini selalu dihapus selama pembersihan.

Telemetri

hf_xet mengirim laporan singkat setelah setiap unggahan dan unduhan. Lihat Telemetri untuk melihat isinya. Untuk mematikannya, atur HF_HUB_DISABLE_TELEMETRY=1.

Batasan Saat Ini

Meskipun Xet membawa deduplikasi bergranularitas halus dan peningkatan kinerja ke penyimpanan berbasis Git, beberapa fitur dan kompatibilitas platform masih dalam pengembangan. Oleh karena itu, perhatikan batasan berikut saat bekerja dengan repositori yang mendukung Xet:

  • Hanya sistem 64-bit: Baik hf_xet maupun Git Xet saat ini memerlukan arsitektur 64-bit; sistem 32-bit tidak didukung.
Update on GitHub