# Sử dụng AllenNLP trên Hugging Face

`allennlp` là thư viện NLP để phát triển các mô hình tiên tiến cho nhiều tác vụ ngôn ngữ khác nhau. Nó cung cấp các trừu tượng và API cấp cao cho các thành phần và mô hình phổ biến trong NLP hiện đại. Nó cũng cung cấp một khung có thể mở rộng, giúp dễ dàng chạy và quản lý các thí nghiệm NLP.

## Khám phá allennlp trên Hub

Bạn có thể tìm các mô hình `allennlp` trên Hub bằng cách lọc ở phía bên trái của [trang mô hình](https://huggingface.co/models?library=allennlp).

Tất cả các mô hình trên Hub đều đi kèm với các tính năng hữu ích
1. Một tab chỉ số huấn luyện với các trace TensorBoard được tự động lưu trữ.
2. Các thẻ metadata giúp tăng khả năng tìm kiếm.
3. Một widget tương tác mà bạn có thể sử dụng để thử nghiệm trực tiếp với mô hình ngay trong trình duyệt.
4. Một widget của Inference Providers cho phép thực hiện các yêu cầu suy luận.

## Sử dụng các mô hình có sẵn

Bạn có thể sử dụng lớp `Predictor` để tải các mô hình có sẵn trên Hub. Để làm điều này, hãy sử dụng phương thức `from_path` và dùng tiền tố `"hf://"` với id của kho lưu trữ. Dưới đây là một ví dụ từ đầu đến cuối.

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

Để có được một đoạn mã như thế này, bạn có thể nhấp vào `Use in AllenNLP` ở góc trên bên phải,

## Chia sẻ các mô hình của bạn

Bước đầu tiên là lưu mô hình cục bộ. Ví dụ, bạn có thể sử dụng phương thức [`archive_model`](https://docs.allennlp.org/main/api/models/archival/#archive_model) để lưu mô hình dưới dạng tệp `model.tar.gz`. Sau đó, bạn có thể đẩy mô hình đã nén lên Hub. Khi bạn huấn luyện một mô hình bằng `allennlp`, mô hình sẽ được tự động serialize nên bạn có thể sử dụng đó như một tùy chọn ưu tiên.

### Sử dụng CLI của AllenNLP

Để đẩy bằng CLI, bạn có thể sử dụng lệnh `allennlp push_to_hf` như được hiển thị bên dưới.

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

| Tham số                    	| Loại         	| Mô tả                                                                                                                   	|
|-----------------------------	|--------------	|-------------------------------------------------------------------------------------------------------------------------------	|
| `--repo_name`, `-n`         	| str / `Path` 	| Tên của kho trên Hub.                                                                                            	|
| `--organization`, `-o`      	| str          	| Tên tùy chọn của tổ chức mà pipeline sẽ được tải lên.                                                       	|
| `--serialization-dir`, `-s` 	| str / `Path` 	| Đường dẫn đến thư mục chứa mô hình đã được serialize.                                                                                  	|
| `--archive-path`, `-a`      	| str / `Path` 	| Nếu bạn đang sử dụng một mô hình đã nén (ví dụ: model/model.tar.gz) thay vì một đường dẫn serialization, bạn có thể sử dụng cờ này.              	|
| `--local-repo-path`, `-l`   	| str / `Path` 	| Đường dẫn cục bộ đến kho lưu trữ mô hình (sẽ được tạo nếu chưa tồn tại). Mặc định là `hub` trong thư mục làm việc hiện tại. 	|
| `--commit-message`, `-c`    	| str          	| Thông báo commit để sử dụng cho việc cập nhật. Mặc định là `"update repository"`.                                                          	|

### Từ một script Python

Hàm `push_to_hf` có cùng các tham số với script 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
)
```

Chỉ trong một phút, bạn có thể đưa mô hình của mình lên Hub, thử nghiệm trực tiếp trong trình duyệt và chia sẻ với cộng đồng. Toàn bộ metadata cần thiết sẽ được tải lên cho bạn!

## Tài nguyên bổ sung

* Trang [website](https://allenai.org/allennlp) của AllenNLP.
* Kho [mã](https://github.com/allenai/allennlp) của AllenNLP.

