Hub documentation
Menggunakan Penyimpanan Xet
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 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 | shAtau, instal menggunakan Homebrew:
brew install git-xet
git xet installUntuk memverifikasi instalasi, jalankan:
git xet --versionWindows (amd64)
Menggunakan winget:
winget install git-xetMenggunakan program instalasi:
- Unduh
git-xet-windows-installer-x86_64.zip(tersedia di sini) dan ekstrak. - Jalankan file installer
msidan ikuti instruksi yang muncul.
Instalasi manual:
- Unduh
git-xet-windows-x86_64.zip(tersedia di sini) dan ekstrak. - Letakkan
git-xet.exeyang telah diekstrak di bawah direktoriPATH. - Jalankan
git xet installdi terminal.
Untuk memverifikasi instalasi, jalankan:
git xet --versionMenggunakan 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 pushDi 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-xetJika 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 uninstalldi terminal. - Hapus file
git-xet.exedari 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_xetterpasang: Meskipun Xet tetap kompatibel mundur dengan klien lama yang dioptimalkan untuk Git LFS, integrasihf_xetdenganhuggingface_hubmemberikan performa berbasis chunk yang optimal dan iterasi yang lebih cepat pada file besar. - Konkurensi adaptif aktif secara bawaan:
hf_xetsecara 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_xet1.7.0, ukuran buffer unduhan ditentukan dari memori yang tersedia untukhf_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_CONCURRENCYdanHF_XET_FIXED_UPLOAD_CONCURRENCYmemungkinkan Anda menetapkan konkurensi ke nilai tetap, melewati pengendali adaptif. Lihat variabel lingkungan darihf_xetuntuk 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:
| Hostname | Tujuan |
|---|---|
s3.us-east-1.amazonaws.com | Unggahan langsung (AS) |
s3.eu-west-3.amazonaws.com | Unggahan 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=1adalah 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 darihf_xet1.7.0, ukuran buffer yang disetel berdasarkan memori yang tersedia untukhf_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 Lingkungan | Default | Deskripsi |
|---|---|---|
HF_XET_HIGH_PERFORMANCE (alias HF_XET_HP) | off | Flag 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/xet | Direktori 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 Lingkungan | Default | Deskripsi |
|---|---|---|
HF_XET_CLIENT_AC_INITIAL_UPLOAD_CONCURRENCY | 2 | Jumlah awal stream unggah konkuren. Mode HP: 16. |
HF_XET_CLIENT_AC_INITIAL_DOWNLOAD_CONCURRENCY | 4 | Jumlah awal stream unduhan konkuren. Mode HP: 16. |
HF_XET_CLIENT_AC_MIN_UPLOAD_CONCURRENCY | 1 | Batas bawah untuk konkurensi unggah. Mode HP: 4. |
HF_XET_CLIENT_AC_MIN_DOWNLOAD_CONCURRENCY | 1 | Batas bawah untuk konkurensi unduhan. Mode HP: 4. |
HF_XET_CLIENT_AC_MAX_UPLOAD_CONCURRENCY | 64 | Batas atas untuk konkurensi unggah. Mode HP: 124. |
HF_XET_CLIENT_AC_MAX_DOWNLOAD_CONCURRENCY | 64 | Batas atas untuk konkurensi unduhan. Mode HP: 124. |
HF_XET_CLIENT_AC_TARGET_RTT | 60s | Waktu 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_RTT | 90s | Waktu 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_THRESHOLD | 0.8 | Rasio keberhasilan di mana pengendali meningkatkan konkurensi. |
HF_XET_CLIENT_AC_UNHEALTHY_SUCCESS_RATIO_THRESHOLD | 0.5 | Rasio keberhasilan di bawahnya pengendali menurunkan konkurensi. |
HF_XET_CLIENT_AC_LOGGING_INTERVAL_MS | 10000 | Interval (dalam ms) di mana status konkurensi dicatat. |
Untuk mengunci konkurensi ke nilai tetap (melewati pengendali adaptif), gunakan alias kenyamanan
HF_XET_FIXED_UPLOAD_CONCURRENCYdanHF_XET_FIXED_DOWNLOAD_CONCURRENCY. Ini mengatur konkurensi awal, minimum, dan maksimum ke nilai yang sama.
Jaringan dan Ulang
| Variabel Lingkungan | Default | Deskripsi |
|---|---|---|
HF_XET_CLIENT_RETRY_MAX_ATTEMPTS | 5 | Jumlah maksimum upaya pengulangan untuk permintaan yang gagal. |
HF_XET_CLIENT_RETRY_BASE_DELAY | 3000ms | Jeda dasar antara percobaan ulang (dengan backoff eksponensial). |
HF_XET_CLIENT_RETRY_MAX_DURATION | 360s | Waktu 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_TIMEOUT | 60s | Waktu habis koneksi TCP. |
HF_XET_CLIENT_READ_TIMEOUT | 300s | Waktu habis baca untuk respons HTTP. |
HF_XET_CLIENT_IDLE_CONNECTION_TIMEOUT | 60s | Timeout sebelum koneksi idle ditutup. |
HF_XET_CLIENT_MAX_IDLE_CONNECTIONS | 16 | Jumlah 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 Lingkungan | Default | Deskripsi |
|---|---|---|
HF_XET_DATA_MAX_CONCURRENT_FILE_INGESTION | 8 | Jumlah maksimum file yang diproses secara bersamaan selama unggahan. Mode HP: 100. |
HF_XET_DATA_MAX_CONCURRENT_FILE_DOWNLOADS | 8 | Jumlah maksimum file yang diunduh secara bersamaan. |
HF_XET_DATA_INGESTION_BLOCK_SIZE | 8mb | Ukuran blok yang dibaca selama proses pengambilan data file. |
HF_XET_DATA_PROGRESS_UPDATE_INTERVAL | 200ms | Seberapa sering bilah progres diperbarui. |
HF_XET_DATA_PROGRESS_UPDATE_SPEED_SAMPLING_WINDOW | 10s | Jendela waktu yang digunakan untuk mengagregasi pengukuran kecepatan transfer dalam pelaporan kemajuan. |
HF_XET_CLIENT_LEGACY_DIRECT_XORB_UPLOAD | false | Setel 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 Lingkungan | Default | Mode HP | Deskripsi |
|---|---|---|---|
HF_XET_RECONSTRUCTION_MIN_RECONSTRUCTION_FETCH_SIZE | 256mb | 1gb | Ukuran pengambilan minimum untuk permintaan rekonstruksi. |
HF_XET_RECONSTRUCTION_MAX_RECONSTRUCTION_FETCH_SIZE | 8gb | 16gb | Ukuran pengambilan maksimum untuk permintaan rekonstruksi. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE | 1/16 dari memori, 64mb hingga 16gb | 1/8 dari memori | Anggaran buffer bersama dasar. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_PERFILE_SIZE | 1/64 dari memori, 16mb hingga 2gb | 1/32 dari memori | Anggaran buffer tambahan per file aktif. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_LIMIT | 1/4 dari memori, 264mb hingga 64gb | 1/2 dari memori | Batas 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_BUFFERS | unset | — | Setel ke 1 untuk menggunakan nilai default tetap alih-alih menentukan ukuran buffer dari memori yang tersedia. |
HF_XET_RECONSTRUCTION_TARGET_BLOCK_COMPLETION_TIME | 15m | — | 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_BUFFER | 1gb | — | 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 Lingkungan | Default | Deskripsi |
|---|---|---|
HF_XET_SHARD_CACHE_SIZE_LIMIT | 16gb | Batas 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_SIZE | 67108864 | Jumlah 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_SUBDIR | shard-cache | Subdirektori 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 Lingkungan | Default | Deskripsi |
|---|---|---|
HF_XET_CHUNK_CACHE_SIZE_BYTES | — | Tidak lagi digunakan oleh hf_xet. Mengaturnya tidak mengaktifkan cache unduhan chunk. |
Pencatatan
| Variabel Lingkungan | Default | Deskripsi |
|---|---|---|
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_PREFIX | xet | Prefiks untuk nama file log saat mencatat ke direktori. |
HF_XET_LOG_DIR_DISABLE_CLEANUP | false | Nonaktifkan pembersihan otomatis file log lama di direktori log. |
HF_XET_LOG_DIR_MAX_SIZE | 250mb | Ukuran total maksimum file log di direktori log. File lama akan dihapus untuk tetap berada di bawah batas ini. |
HF_XET_LOG_DIR_MIN_DELETION_AGE | 1d | Usia minimum sebelum file log dapat dihapus selama pembersihan. |
HF_XET_LOG_DIR_MAX_RETENTION_AGE | 14d | Usia 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_xetmaupun Git Xet saat ini memerlukan arsitektur 64-bit; sistem 32-bit tidak didukung.