# Hub'dan dosya indir

`huggingface_hub` kütüphanesi, Hub'da depolanan depolardan dosya indirmek için işlevler sağlar. Bu işlevleri bağımsız olarak kullanabilir veya kendi kütüphanenize entegre ederek kullanıcılarınızın Hub ile etkileşimini daha pratik hale getirebilirsiniz. Bu kılavuzda şunları göstereceğiz:

* Tek bir dosyayı indirin ve önbelleğe alın.
* Bir depoyu tamamen indirin ve önbelleğe alın.
* Dosyaları yerel bir klasöre indirin.

## Tek bir dosya indirin

[hf_hub_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.hf_hub_download) işlevi, Hub'dan dosya indirmek için ana işlevdir. Uzaktaki dosyayı indirir, diskte önbelleğe alır (sürüm farkında bir şekilde) ve yerel dosya yolunu döndürür.

> [!TIP]
> Döndürülen dosya yolu, HF yerel önbelleğine bir işaretçidir. Bu nedenle, bozuk bir önbelleğe sahip olmamak için dosyayı değiştirmemek önemlidir. Dosyaların nasıl önbelleğe alındığı hakkında daha fazla bilgi edinmek isterseniz, lütfen [önbelleğe alma kılavuzumuza](./manage-cache) başvurun.

### En son sürümden

`repo_id`, `repo_type` ve `filename` parametrelerini kullanarak indirilecek dosyayı seçin. Varsayılan olarak dosya, bir `model` deposunun parçası olarak kabul edilir.

```python
>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json")
'/root/.cache/huggingface/hub/models--lysandre--arxiv-nlp/snapshots/894a9adde21d9a3e3843e6d5aeaaf01875c7fade/config.json'

# Download from a dataset
>>> hf_hub_download(repo_id="google/fleurs", filename="fleurs.py", repo_type="dataset")
'/root/.cache/huggingface/hub/datasets--google--fleurs/snapshots/199e4ae37915137c555b1765c01477c216287d34/fleurs.py'
```

### Belirli sürümden

Varsayılan olarak, `main` dalından en son sürüm indirilir. Ancak bazı durumlarda belirli bir sürümdeki dosyayı (ör. belirli bir dal, PR, etiket veya commit hash) indirmek isteyebilirsiniz. Bunu yapmak için `revision` parametresini kullanın:

```python
# Download from the `v1.0` tag
>>> hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="v1.0")

# Download from the `test-branch` branch
>>> hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="test-branch")

# Download from Pull Request #3
>>> hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="refs/pr/3")

# Download from a specific commit hash
>>> hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="877b84a8f93f2d619faa2a6e514a32beef88ab0a")
```

**Not:** Commit hash kullanırken, 7 karakterlik commit hash yerine tam uzunluktaki hash kullanılması gerekir.

### İndirme URL'si oluşturun

Bir depodan dosya indirmek için kullanılan URL'yi oluşturmak isterseniz, bir URL döndüren [hf_hub_url()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.hf_hub_url) işlevini kullanabilirsiniz. [hf_hub_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.hf_hub_download) tarafından dahili olarak kullanıldığını unutmayın.

## Bir depoyu tamamen indirin

[snapshot_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.snapshot_download), belirtilen bir revizyondaki tüm bir depoyu indirir. İçeride [hf_hub_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.hf_hub_download) işlevini kullandığı için indirilen tüm dosyalar yerel diskinizde önbelleğe de alınır. İndirme işlemi, süreci hızlandırmak için eşzamanlı olarak yapılır.

Tüm bir depoyu indirmek için yalnızca `repo_id` ve `repo_type` değerlerini iletin:

```python
>>> from huggingface_hub import snapshot_download
>>> snapshot_download(repo_id="lysandre/arxiv-nlp")
'/home/lysandre/.cache/huggingface/hub/models--lysandre--arxiv-nlp/snapshots/894a9adde21d9a3e3843e6d5aeaaf01875c7fade'

# Or from a dataset
>>> snapshot_download(repo_id="google/fleurs", repo_type="dataset")
'/home/lysandre/.cache/huggingface/hub/datasets--google--fleurs/snapshots/199e4ae37915137c555b1765c01477c216287d34'
```

[snapshot_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.snapshot_download) varsayılan olarak en son revizyonu indirir. Belirli bir depo revizyonunu istiyorsanız `revision` parametresini kullanın:

```python
>>> from huggingface_hub import snapshot_download
>>> snapshot_download(repo_id="lysandre/arxiv-nlp", revision="refs/pr/1")
```

### İndirilecek dosyaları filtrele

[snapshot_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.snapshot_download) bir depoyu indirmenin kolay bir yolunu sunar. Ancak her zaman bir depodaki tüm içeriği indirmek istemezsiniz. Örneğin, yalnızca `.safetensors` ağırlıklarını kullanacağınızı biliyorsanız, tüm `.bin` dosyalarının indirilmesini engellemek isteyebilirsiniz. Bunu `allow_patterns` ve `ignore_patterns` parametrelerini kullanarak yapabilirsiniz.

Bu parametreler tek bir desen veya desen listesi kabul eder. Desenler, [burada](https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm) belgelenen Standart Jolly Karakterlerdir (globbing desenleri). Desen eşleştirme [`fnmatch`](https://docs.python.org/3/library/fnmatch.html) üzerine kuruludur.

Örneğin, yalnızca JSON yapılandırma dosyalarını indirmek için `allow_patterns` kullanabilirsiniz:

```python
>>> from huggingface_hub import snapshot_download
>>> snapshot_download(repo_id="lysandre/arxiv-nlp", allow_patterns="*.json")
```

Öte yandan, `ignore_patterns` belirli dosyaların indirilmesini engelleyebilir. Aşağıdaki örnek, `.msgpack` ve `.h5` dosya uzantılarını yok sayar:

```python
>>> from huggingface_hub import snapshot_download
>>> snapshot_download(repo_id="lysandre/arxiv-nlp", ignore_patterns=["*.msgpack", "*.h5"])
```

Son olarak, indirmenizi hassas bir şekilde filtrelemek için her ikisini birleştirebilirsiniz. Aşağıdaki örnek, `vocab.json` hariç tüm json ve markdown dosyalarını indirmektedir.

```python
>>> from huggingface_hub import snapshot_download
>>> snapshot_download(repo_id="gpt2", allow_patterns=["*.md", "*.json"], ignore_patterns="vocab.json")
```

## Dosyaları yerel bir klasöre indirin

Varsayılan olarak, Hub'dan dosya indirmek için [önbellek sistemini](./manage-cache) kullanmanızı öneririz. [hf_hub_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.hf_hub_download) ve [snapshot_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.snapshot_download) içindeki `cache_dir` parametresini kullanarak veya [`HF_HOME`](../package_reference/environment_variables#hf_home) ortam değişkenini ayarlayarak özel bir önbellek konumu belirleyebilirsiniz.

Ancak dosyaları belirli bir klasöre indirmeniz gerekiyorsa, indirme fonksiyonuna `local_dir` parametresini iletebilirsiniz. Bu, iş akışını `git` komutunun sunduğu işleve yaklaştırmak için kullanışlıdır. İndirilen dosyalar, belirtilen klasör içinde orijinal dosya yapılarını korur. Örneğin, `filename="data/train.csv"` ve `local_dir="path/to/folder"` ise, sonuç dosya yolu `"path/to/folder/data/train.csv"` olur.

Yerel dizininizin kökünde, indirilen dosyalarla ilgili meta verileri içeren bir `.cache/huggingface/` klasörü oluşturulur. Bu, dosyalar zaten güncelse yeniden indirilmelerini engeller. Meta verilerde bir değişiklik varsa, yeni dosya sürümü indirilir. Bu sayede `local_dir`, yalnızca en son değişiklikleri çekmek için optimize edilmiş olur.

İndirme tamamlandıktan sonra, bu klasöre artık ihtiyacınız yoksa `.cache/huggingface/` klasörünü güvenle silebilirsiniz. Ancak bu klasersiz betiğinizi yeniden çalıştırmanız, metadata kaybı nedeniyle daha uzun kurtarma sürelerine yol açabilir. Yerel verilerinizin sağlam ve etkilenmeden kalacağından emin olabilirsiniz.

> [!TIP]
> Hub'a değişiklikleri gönderirken `.cache/huggingface/` klasörünü dert etmeyin! Bu klasör hem `git` hem de [upload_folder()](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.HfApi.upload_folder) tarafından otomatik olarak yoksayılır.

## CLI'den indir

Dosyaları Hub'dan doğrudan indirmek için terminalden `hf download` komutunu kullanabilirsiniz. Bu komut, içsel olarak yukarıda açıklanan aynı [hf_hub_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.hf_hub_download) ve [snapshot_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.snapshot_download) yardımcılarını kullanır ve döndürülen yolu terminale yazdırır.

```bash
>>> hf download gpt2 config.json
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10/config.json
```

Birden fazla dosyayı aynı anda indirebilir, bu işlem bir ilerleme çubuğu görüntüler ve dosyaların bulunduğu anlık görüntü yolunu döndürür:

```bash
>>> hf download gpt2 config.json model.safetensors
Fetching 2 files: 100%|████████████████████████████████████████████| 2/2 [00:00<00:00, 23831.27it/s]
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10
```

Tek bir `hf://` URI'si kullanarak depoya (ve isteğe bağlı olarak bir revizyon ve dosyaya) da işaret edebilirsiniz. URI, `hf://[<TYPE>/]<ID>[@<REVISION>][/<PATH>]` dilbilgisini izler (tam sözdizimi için [HF URI referansına](../package_reference/hf_uris) bakın) ve birlikte ayarlanamayan `--repo-type` ile `--revision` seçeneklerinin yerini alır:

```bash
# Download a single file from a dataset at a given revision
>>> hf download hf://datasets/google/fleurs@refs/pr/1/fleurs.py

# Download a subfolder (note the trailing slash)
>>> hf download hf://datasets/google/fleurs/data/

# Download an entire repo
>>> hf download hf://datasets/google/fleurs
```

CLI indirme komutu hakkında daha fazla ayrıntı için lütfen [CLI kılavuzuna](./cli#hf-download) başvurun.

## Kuru çalıştırma modu

Bazı durumlarda, dosyaları gerçekten indirmeden önce hangi dosyaların indirileceğini kontrol etmek isteyebilirsiniz. Bunu `--dry-run` parametresini kullanarak kontrol edebilirsiniz. Bu parametre, depodaki indirilecek tüm dosyaları listeler ve bunların daha önce indirilip indirilmediğini kontrol eder. Bu, kaç dosyanın indirilmesi gerektiği ve boyutları hakkında bir fikir verir.

İşte tek bir dosyada kontrol yapan bir örnek:

```sh
>>> hf download openai-community/gpt2 onnx/decoder_model_merged.onnx --dry-run
[dry-run] Will download 1 files (out of 1) totalling 655.2M
File                           Bytes to download
------------------------------ -----------------
onnx/decoder_model_merged.onnx 655.2M
```

Ve dosya zaten önbelleğe alındıysa:

```sh
>>> hf download openai-community/gpt2 onnx/decoder_model_merged.onnx --dry-run
[dry-run] Will download 0 files (out of 1) totalling 0.0.
File                           Bytes to download
------------------------------ -----------------
onnx/decoder_model_merged.onnx -
```

Tüm bir depo üzerinde kuru çalıştırma (dry-run) da gerçekleştirebilirsiniz:

```sh
>>> hf download openai-community/gpt2 --dry-run
[dry-run] Fetching 26 files: 100%|█████████████| 26/26 [00:04<00:00,  6.26it/s]
[dry-run] Will download 11 files (out of 26) totalling 5.6G.
File                              Bytes to download
--------------------------------- -----------------
.gitattributes                    -
64-8bits.tflite                   125.2M
64-fp16.tflite                    248.3M
64.tflite                         495.8M
README.md                         -
config.json                       -
flax_model.msgpack                497.8M
generation_config.json            -
merges.txt                        -
model.safetensors                 548.1M
onnx/config.json                  -
onnx/decoder_model.onnx           653.7M
onnx/decoder_model_merged.onnx    655.2M
onnx/decoder_with_past_model.onnx 653.7M
onnx/generation_config.json       -
onnx/merges.txt                   -
onnx/special_tokens_map.json      -
onnx/tokenizer.json               -
onnx/tokenizer_config.json        -
onnx/vocab.json                   -
pytorch_model.bin                 548.1M
rust_model.ot                     702.5M
tf_model.h5                       497.9M
tokenizer.json                    -
tokenizer_config.json             -
vocab.json                        -
```

Ve dosya filtreleme ile:

```sh
>>> hf download openai-community/gpt2 --include "*.json"  --dry-run
[dry-run] Fetching 11 files: 100%|█████████████| 11/11 [00:00<00:00, 80518.92it/s]
[dry-run] Will download 0 files (out of 11) totalling 0.0.
File                         Bytes to download
---------------------------- -----------------
config.json                  -
generation_config.json       -
onnx/config.json             -
onnx/generation_config.json  -
onnx/special_tokens_map.json -
onnx/tokenizer.json          -
onnx/tokenizer_config.json   -
onnx/vocab.json              -
tokenizer.json               -
tokenizer_config.json        -
vocab.json                   -
```

Son olarak, [hf_hub_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.hf_hub_download) ve [snapshot_download()](/docs/huggingface_hub/v2.4.0/tr/package_reference/file_download#huggingface_hub.snapshot_download) fonksiyonlarına `dry_run=True` parametresini geçirerek programatik olarak bir kuru çalıştırma (dry-run) da yapabilirsiniz. Bu işlem, her dosya için commit hash'i, dosya adı ve dosya boyutu, dosyanın önbellekte olup olmadığı ve dosyanın indirilip indirilmeyeceği bilgilerini içeren bir [DryRunFileInfo](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.DryRunFileInfo) (veya [DryRunFileInfo](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.DryRunFileInfo) listesini) döndürür. Pratikte, dosya önbellekte değilse veya `force_download=True` parametresi geçirildiyse dosya indirilir.

## Daha hızlı indirmeler

`hf_xet` sayesinde daha hızlı indirmelerden yararlanın. `hf_xet`, [`xet-core`](https://github.com/huggingface/xet-core) kütüphanesinin Python bağlamıdır ve daha hızlı indirme ve yükleme için parça tabanlı kopya azaltma (deduplication) imkânı sağlar. `hf_xet`, `huggingface_hub` ile kusursuz bir şekilde bütünleşir ancak LFS yerine Rust `xet-core` kütüphanesini ve Xet depolamayı kullanır.

`hf_xet`, dosyaları değişmez parçalara ayıran Xet depolama sistemini kullanır; bu parçaların koleksiyonlarını (bloklar veya xorblar olarak adlandırılır) uzaktan saklar ve istendiğinde dosyayı yeniden oluşturmak için bunları getirir. İndirme sırasında, kullanıcının dosyalara erişim yetkisinin doğrulanmasının ardından `hf_xet`, bu dosya için LFS SHA256 özetini sorgulayarak Xet içerik-adreslenebilir servisine (CAS) başvurur ve bu dosyaları birleştirmek için yeniden oluşturma metadata’sını (xorblar içindeki aralıklar) alır; xorbları doğrudan indirmek için ön imzalı URL’ler de buna dahildir. Ardından `hf_xet`, gerekli xorb aralıklarını verimli bir şekilde indirir ve dosyaları diske yazar.

Bunu etkinleştirmek için `huggingface_hub`'ün en son sürümünü kurmanız yeterlidir:

```bash
pip install -U "huggingface_hub"
```

`huggingface_hub` 0.32.0 sürümünden itibaren bu, `hf_xet` paketini de yükleyecektir.

Diğer tüm `huggingface_hub` API'leri herhangi bir değişiklik yapılmadan çalışmaya devam edecektir. Xet depolamanın ve `hf_xet`'in avantajları hakkında daha fazla bilgi edinmek için bu [bölüme](https://huggingface.co/docs/hub/xet/index) bakın.

Not: `hf_transfer` daha önce LFS depolama arka ucu ile kullanılıyordu ve artık kullanımdan kaldırıldı; bunun yerine `hf_xet` kullanın.

