# Sử dụng MLX tại Hugging Face

[MLX](https://github.com/ml-explore/mlx) là một framework huấn luyện và phục vụ mô hình cho Apple silicon do Apple Machine Learning Research phát triển.

Nó đi kèm với nhiều ví dụ:

- [Tạo văn bản với MLX-LM](https://github.com/ml-explore/mlx-lm/tree/main) và [tạo văn bản với MLX-LM cho các mô hình ở định dạng GGUF](https://github.com/ml-explore/mlx-examples/tree/main/llms/gguf_llm).
- Tạo văn bản quy mô lớn với [LLaMA](https://github.com/ml-explore/mlx-examples/tree/main/llms/llama).
- Fine-tuning bằng [LoRA](https://github.com/ml-explore/mlx-examples/tree/main/lora).
- Tạo hình ảnh bằng [Stable Diffusion](https://github.com/ml-explore/mlx-examples/tree/main/stable_diffusion).
- Nhận dạng giọng nói bằng [Whisper của OpenAI](https://github.com/ml-explore/mlx-examples/tree/main/whisper).

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

Bạn có thể tìm các mô hình MLX bằng cách lọc ở phía bên trái của [trang models](https://huggingface.co/models?library=mlx&sort=trending). Ngoài ra, còn có một [cộng đồng MLX](https://huggingface.co/mlx-community) mở gồm các nhà đóng góp đang chuyển đổi và phát hành trọng số cho định dạng MLX.

Nhờ tích hợp MLX Hugging Face Hub, bạn có thể tải các mô hình MLX chỉ với vài dòng mã.

## Cài đặt

MLX được phát hành dưới dạng một gói độc lập, và có một gói con tên là MLX-LM với tích hợp Hugging Face cho các Mô hình Ngôn ngữ Lớn. Để cài đặt MLX-LM, bạn có thể sử dụng lệnh cài đặt một dòng sau đây thông qua `pip`:

```bash
pip install mlx-lm
```

Bạn có thể tìm hiểu thêm thông tin về nó [tại đây](https://github.com/ml-explore/mlx-lm/tree/main).

Nếu bạn cài đặt `mlx-lm`, bạn không cần cài đặt `mlx`. Nếu bạn không muốn sử dụng `mlx-lm` mà chỉ dùng MLX, bạn có thể cài đặt MLX theo cách sau.

Với `pip`:

```bash
pip install mlx
```

Với `conda`:

```bash
conda install -c conda-forge mlx
```

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

MLX-LM có các tiện ích hữu ích để tạo văn bản. Dòng lệnh sau tải xuống và nạp mô hình trực tiếp rồi bắt đầu tạo văn bản.

```bash
python -m mlx_lm.generate --model mistralai/Mistral-7B-Instruct-v0.2 --prompt "hello"
```

Để xem danh sách đầy đủ các tùy chọn sinh, hãy chạy

```bash
python -m mlx_lm.generate --help
```

Bạn cũng có thể tải một mô hình và bắt đầu tạo văn bản bằng Python như bên dưới:

```python
from mlx_lm import load, generate

model, tokenizer = load("mistralai/Mistral-7B-Instruct-v0.2")

response = generate(model, tokenizer, prompt="hello", verbose=True)
```

MLX-LM hỗ trợ các kiến trúc LLM phổ biến bao gồm LLaMA, Phi-2, Mistral và Qwen. Các model khác không được hỗ trợ có thể dễ dàng được tải xuống như sau:

Việc đặt `HF_XET_HIGH_PERFORMANCE=1` sẽ tăng giới hạn độ song song và kích thước bộ đệm cho các máy có băng thông cao và ít nhất 64 GB RAM:

```bash
pip install -U huggingface_hub

export HF_XET_HIGH_PERFORMANCE=1
hf download --local-dir <LOCAL FOLDER PATH> <USER_ID>/<MODEL_NAME>
```

## Chuyển đổi và Chia sẻ Mô hình

Bạn có thể chuyển đổi, và tùy chọn lượng tử hóa, các LLM từ Hugging Face Hub như sau:

```bash
python -m mlx_lm.convert --hf-path mistralai/Mistral-7B-v0.1 -q 
```

Nếu bạn muốn đẩy trực tiếp mô hình sau khi chuyển đổi, bạn có thể thực hiện như bên dưới.

```bash
python -m mlx_lm.convert \
    --hf-path mistralai/Mistral-7B-v0.1 \
    -q \
    --upload-repo <USER_ID>/<MODEL_NAME>
```

## Tài nguyên bổ sung

* [MLX Repository](https://github.com/ml-explore/mlx)
* [Tài liệu MLX](https://ml-explore.github.io/mlx/)
* [MLX-LM](https://github.com/ml-explore/mlx-lm/tree/main)
* [Ví dụ MLX](https://github.com/ml-explore/mlx-examples/tree/main)
* [Mọi mô hình MLX trên Hub](https://huggingface.co/models?library=mlx&sort=trending)

