# Menggunakan AllenNLP di Hugging Face

`allennlp` adalah pustaka NLP untuk mengembangkan model state-of-the-art pada berbagai tugas linguistik. Pustaka ini menyediakan abstraksi dan API tingkat tinggi untuk komponen dan model umum dalam NLP modern. Ia juga menyediakan kerangka kerja yang dapat diperluas sehingga memudahkan Anda menjalankan dan mengelola eksperimen NLP.

## Menjelajahi allennlp di Hub

Anda dapat menemukan model `allennlp` di Hub dengan memfilter di sebelah kiri [halaman model](https://huggingface.co/models?library=allennlp).

Semua model di Hub dilengkapi dengan fitur-fitur yang berguna
1. Tab metrik pelatihan dengan jejak TensorBoard yang di-hosting secara otomatis.
2. Tag metadata yang membantu untuk kemudahan penemuan.
3. Widget interaktif yang dapat Anda gunakan untuk bermain langsung dengan model di browser.
4. Widget Inference Providers yang memungkinkan Anda membuat permintaan inferensi.

## Menggunakan model yang sudah ada

Anda dapat menggunakan kelas `Predictor` untuk memuat model yang sudah ada di Hub. Untuk melakukannya, gunakan metode `from_path` dan gunakan prefiks `"hf://"` dengan id repositori. Berikut adalah contoh end-to-end.

```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)
```

Untuk mendapatkan potongan kode seperti ini, Anda dapat mengklik `Use in AllenNLP` di pojok kanan atas,

## Berbagi model Anda

Langkah pertama adalah menyimpan model secara lokal. Misalnya, Anda dapat menggunakan metode [`archive_model`](https://docs.allennlp.org/main/api/models/archival/#archive_model) untuk menyimpan model sebagai file `model.tar.gz`. Anda kemudian dapat mendorong model yang sudah dikompresi tersebut ke Hub. Saat Anda melatih model dengan `allennlp`, model secara otomatis diserialisasi sehingga Anda dapat menggunakannya sebagai pilihan yang lebih disukai.

### Menggunakan CLI AllenNLP

Untuk mendorong dengan CLI, Anda dapat menggunakan perintah `allennlp push_to_hf` seperti yang terlihat di bawah ini.

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

| Argumen                    	| Tipe         	| Deskripsi                                                                                                                   	|
|-----------------------------	|--------------	|-------------------------------------------------------------------------------------------------------------------------------	|
| `--repo_name`, `-n`         	| str / `Path` 	| Nama repositori di Hub.                                                                                            	|
| `--organization`, `-o`      	| str          	| Nama opsional organisasi tempat pipeline harus diunggah.                                                       	|
| `--serialization-dir`, `-s` 	| str / `Path` 	| Path ke direktori dengan model yang diserialisasi.                                                                                  	|
| `--archive-path`, `-a`      	| str / `Path` 	| Jika Anda menggunakan model ber-zip (misalnya model/model.tar.gz) alih-alih jalur serialisasi, Anda dapat menggunakan flag ini.              	|
| `--local-repo-path`, `-l`   	| str / `Path` 	| Lokal path ke repositori model (akan dibuat jika tidak ada). Defaultnya adalah `hub` di direktori kerja saat ini. 	|
| `--commit-message`, `-c`    	| str          	| Pesan commit yang akan digunakan untuk pembaruan. Bawaan adalah `"update repository"`.                                                          	|

### Dari skrip Python

Fungsi `push_to_hf` memiliki parameter yang sama dengan skrip bash.

```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
)
```

Hanya dalam satu menit, Anda dapat menempatkan model Anda di Hub, mencobanya langsung di browser, dan membagikannya ke komunitas lainnya. Semua metadata yang diperlukan akan diunggah untuk Anda!

## Sumber daya tambahan

* Situs web [website](https://allenai.org/allennlp) AllenNLP.
* Repositori AllenNLP [repository](https://github.com/allenai/allennlp).

