# Hugging Face'te AllenNLP Kullanımı

`allennlp`, farklı dil görevlerinde son teknoloji modeller geliştirmek için kullanılan bir NLP kütüphanesidir. Modern NLP'deki yaygın bileşenler ve modeller için yüksek düzey soyutlamalar ve API'ler sunar. Ayrıca NLP deneylerini çalıştırmayı ve yönetmeyi kolaylaştıran genişletilebilir bir çerçeve sağlar.

## Hub'da allennlp'yi keşfetme

[modeller sayfasının](https://huggingface.co/models?library=allennlp) sol tarafında filtreleyerek Hub'da `allennlp` modellerini bulabilirsiniz.

Hub'daki tüm modeller, kullanışlı özelliklerle birlikte gelir
1. Otomatik olarak barındırılan TensorBoard izleri içeren bir eğitim metrikleri sekmesi.
2. Keşfedilebilirliği artırmaya yardımcı olan meta etiketler.
3. Modeli doğrudan tarayıcıda denemeniz için kullanabileceğiniz etkileşimli bir widget.
4. Çıkarım istekleri yapmanıza olanak tanıyan bir Inference Providers widget'ı.

## Mevcut modelleri kullanma

Mevcut Hub modellerini yüklemek için `Predictor` sınıfını kullanabilirsiniz. Bunu yapmak için `from_path` yöntemini ve depo kimliğiyle birlikte `"hf://"` önekini kullanın. İşte uçtan uca bir örnek.

```py
import allennlp_models
from allennlp.predictors.predictor import Predictor

predictor = Predictor.from_path("hf://allenai/bidaf-elmo")
predictor_input = {
    "passage": "My name is Wolfgang and I live in Berlin", 
    "question": "Where do I live?"
}
predictions = predictor.predict_json(predictor_input)
```

Böyle bir kod parçası almak için sağ üstteki `Use in AllenNLP` düğmesine tıklayabilirsiniz,

## Modellerinizi paylaşma

İlk adım, modeli yerel olarak kaydetmektir. Örneğin, modeli `model.tar.gz` dosyası olarak kaydetmek için [`archive_model`](https://docs.allennlp.org/main/api/models/archival/#archive_model) yöntemini kullanabilirsiniz. Ardından sıkıştırılmış modeli Hub'a yükleyebilirsiniz. Bir modeli `allennlp` ile eğittiğinizde, model otomatik olarak serileştirilir (serialize edilir) bu nedenle bunu tercih edilen bir seçenek olarak kullanabilirsiniz.

### AllenNLP CLI'yi kullanma

CLI ile göndermek için aşağıda görüldüğü gibi `allennlp push_to_hf` komutunu kullanabilirsiniz.

```bash
allennlp push_to_hf --repo_name test_allennlp --archive_path model 
```

| Argüman                    	| Tür         	| Açıklama                                                                                                                   	|
|-----------------------------	|--------------	|-------------------------------------------------------------------------------------------------------------------------------	|
| `--repo_name`, `-n`         	| str / `Path` 	| Hub'daki depoyun adı.                                                                                            	|
| `--organization`, `-o`      	| str          	| Hattın yüklenmesi gereken kuruluşun isteğe bağlı adı.                                                       	|
| `--serialization-dir`, `-s` 	| str / `Path` 	| Serileştirilmiş modelin bulunduğu dizinin yolu.                                                                                  	|
| `--archive-path`, `-a`      	| str / `Path` 	| Bir seri haleştirme yolu yerine sıkıştırılmış bir model (ör. model/model.tar.gz) kullanıyorsanız, bu bayrağı kullanabilirsiniz.              	|
| `--local-repo-path`, `-l`   	| str / `Path` 	| Model deposunun yerel yolu (varsa oluşturulur). Varsayılan olarak geçerli çalışma dizininde `hub` olarak ayarlanır. 	|
| `--commit-message`, `-c`    	| str          	| Güncelleme için kullanılacak commit mesajı. Varsayılan olarak `"update repository"`.                                                          	|

### Bir Python betiğinden

`push_to_hf` fonksiyonu, bash betiğiyle aynı parametrelere sahiptir.

```py
from allennlp.common.push_to_hf import push_to_hf

serialization_dir = "path/to/serialization/directory"
push_to_hf(
    repo_name="my_repo_name",
    serialization_dir=serialization_dir,
    local_repo_path=self.local_repo_path
)
```

Sadece bir dakikada modelinizi Hub'a yükleyebilir, tarayıcıda doğrudan deneyebilir ve topluluğun geri kalanıyla paylaşabilirsiniz. Gerekli tüm meta veriler sizin için yüklenecektir!

## Ek kaynaklar

* AllenNLP [web sitesi](https://allenai.org/allennlp).
* AllenNLP [deposu](https://github.com/allenai/allennlp).

