region:us
---
{}
---
Quantization made by Richard Erkhov.

[Github](https://github.com/RichardErkhov)

[Discord](https://discord.gg/pvy7H8DZMG)

[Request more models](https://github.com/RichardErkhov/quant_request)


vi-gemma2-2b-ChatQA-RAG-v1 - EXL2
- Model creator: https://huggingface.co/ricepaper/
- Original model: https://huggingface.co/ricepaper/vi-gemma2-2b-ChatQA-RAG-v1/


## Available sizes

| Branch | Bits | Description |
| ----- | ---- | ------------ |
| [8_0](https://huggingface.co/ricepaper_-_vi-gemma2-2b-ChatQA-RAG-v1-exl2/tree/8_0) | 8.0 | Maximum quality that ExLlamaV2 can produce, near unquantized performance. |
| [6_5](https://huggingface.co/ricepaper_-_vi-gemma2-2b-ChatQA-RAG-v1-exl2/tree/6_5) | 6.5 | Very similar to 8.0, good tradeoff of size vs performance, **recommended**. |
| [5_0](https://huggingface.co/ricepaper_-_vi-gemma2-2b-ChatQA-RAG-v1-exl2/tree/5_0) | 5.0 | Slightly lower quality vs 6.5, but usable |
| [4_25](https://huggingface.co/ricepaper_-_vi-gemma2-2b-ChatQA-RAG-v1-exl2/tree/4_25) | 4.25 | GPTQ equivalent bits per weight, slightly higher quality. |
| [3_5](https://huggingface.co/ricepaper_-_vi-gemma2-2b-ChatQA-RAG-v1-exl2/tree/3_5) | 3.5 | Lower quality, only use if you have to. |


## Download instructions
With git:
```shell
git clone --single-branch --branch 6_5 https://huggingface.co/ricepaper_-_vi-gemma2-2b-ChatQA-RAG-v1-exl2 vi-gemma2-2b-ChatQA-RAG-v1-6_5
```
With huggingface hub:
```shell
pip3 install huggingface-hub
```
To download a specific branch, use the `--revision` parameter. For example, to download the 6.5 bpw branch:
Linux:
```shell
huggingface-cli download ricepaper_-_vi-gemma2-2b-ChatQA-RAG-v1-exl2 --revision 6_5 --local-dir vi-gemma2-2b-ChatQA-RAG-v1-6_5 --local-dir-use-symlinks False
```
Windows (which apparently doesn't like _ in folders sometimes?):

```shell
huggingface-cli download ricepaper_-_vi-gemma2-2b-ChatQA-RAG-v1-exl2 --revision 6_5 --local-dir vi-gemma2-2b-ChatQA-RAG-v1-6.5 --local-dir-use-symlinks False
```
    



  Original model description:
  ---
base_model: google/gemma-2-2b-it
language:
- en
- vi
license: apache-2.0
tags:
- text-generation-inference
- retrieval-augmented-generation
- transformers
- unsloth
- gemma
- trl
- sft
---

## Model Card: vi-gemma2-2b-ChatQA-RAG-v1
### (English below)

### Tiếng Việt (Vietnamese)

**Mô tả mô hình:**

vi-gemma2-2b-ChatQA-RAG là một mô hình ngôn ngữ lớn được tinh chỉnh từ mô hình cơ sở [google/gemma-2-2b-it](https://huggingface.co/google/gemma-2-2b-it) sử dụng kỹ thuật LoRA. Mô hình được huấn luyện trên tập dữ liệu tiếng Việt với mục tiêu cải thiện khả năng xử lý ngôn ngữ tiếng Việt và nâng cao hiệu suất cho các tác vụ truy xuất thông tin mở (Retrieval Augmented Generation - RAG). 

Mô hình được tinh chỉnh tập trung vào bài toán RAG theo phương pháp của NVIDIA Chat-QA [link](https://huggingface.co/nvidia/Llama3-ChatQA-1.5-8B)


**Cách sử dụng:**

Dưới đây chúng tôi chia sẻ một số đoạn mã về cách bắt đầu nhanh chóng để sử dụng mô hình. Trước tiên, hãy đảm bảo đã cài đặt `pip install -U transformers`, sau đó sao chép đoạn mã từ phần có liên quan đến usecase của bạn.

Chúng tôi khuyến nghị sử dụng `torch.bfloat16` làm mặc định.

```python
# pip install transformers torch accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

# Khởi tạo tokenizer và model từ checkpoint đã lưu
tokenizer = AutoTokenizer.from_pretrained("hiieu/vi-gemma2-2b-ChatQA-RAG-v1")
model = AutoModelForCausalLM.from_pretrained(
    "hiieu/vi-gemma2-2b-ChatQA-RAG-v1",
    device_map="auto",
    torch_dtype=torch.bfloat16
)

# Sử dụng GPU nếu có
if torch.cuda.is_available():
    model.to("cuda")

messages = [
    {"role": "user", "content": "Hãy cho tôi biết một số tính chất của STRs được dùng để làm gì?"}
]
document = """Context: Short Tandem Repeats (STRs) là các trình tự DNA lặp lại ngắn (2- 6 nucleotides) xuất hiện phổ biến trong hệ gen của con người. Các trình tự này có tính đa hình rất cao trong tự nhiên, điều này khiến các STRs trở thành những markers di truyền rất quan trọng trong nghiên cứu bản đồ gen người và chuẩn đoán bệnh lý di truyền cũng như xác định danh tính trong lĩnh vực pháp y.
Các STRs trở nên phổ biến tại các phòng xét nghiệm pháp y bởi vì việc nhân bản và phân tích STRs chỉ cần lượng DNA rất thấp ngay cả khi ở dạng bị phân hủy việc đinh danh vẫn có thể được thực hiện thành công. Hơn nữa việc phát hiện và đánh giá sự nhiễm DNA mẫu trong các mẫu vật có thể được giải quyết nhanh với kết quả phân tích STRs. Ở Hoa Kỳ hiện nay, từ bộ 13 markers nay đã tăng lên 20 markers chính đang được sử dụng để tạo ra một cơ sở dữ liệu DNA trên toàn đất nước được gọi là The FBI Combined DNA Index System (Expaned CODIS).
CODIS và các cơ sử dữ liệu DNA tương tự đang được sử dụng thực sự thành công trong việc liên kết các hồ sơ DNA từ các tội phạm và các bằng chứng hiện trường vụ án. Kết quả định danh STRs cũng được sử dụng để hỗ trợ hàng trăm nghìn trường hợp xét nghiệm huyết thống cha con mỗi năm'
"""

def get_formatted_input(messages, context):
    system = "System: Đây là một cuộc trò chuyện giữa người dùng và trợ lý trí tuệ nhân tạo. Trợ lý cung cấp câu trả lời hữu ích, chi tiết và lịch sự cho các câu hỏi của người dùng dựa trên ngữ cảnh được cung cấp. Trợ lý cũng nên chỉ ra khi câu trả lời không thể tìm thấy trong ngữ cảnh."
    conversation = '\n\n'.join(["User: " + item["content"] if item["role"] == "user" else "Assistant: " + item["content"] for item in messages]) 
    formatted_input = system + "\n\n" + context + "\n\n" + conversation + "\n\n### Assistant:"
    
    return formatted_input

# Chuẩn bị dữ liệu đầu vào
formatted_input = get_formatted_input(messages, document)

# Mã hóa input text thành input ids
input_ids = tokenizer(formatted_input, return_tensors="pt").to(model.device)


# Tạo văn bản bằng model
outputs = model.generate(
    **input_ids,
    max_new_tokens=512,
    do_sample=True,   # Kích hoạt chế độ tạo văn bản dựa trên lấy mẫu. Trong chế độ này, model sẽ chọn ngẫu nhiên token tiếp theo dựa trên xác suất được tính từ phân phối xác suất của các token.
    temperature=0.1,  # Giảm temperature để kiểm soát tính ngẫu nhiên
)
# Giải mã và in kết quả
print(tokenizer.decode(outputs[0]).rsplit("### Assistant:")[-1])
>>> STRs là các trình tự DNA lặp lại ngắn (2-6 nucleotides) xuất hiện phổ biến trong hệ gen của con người. Chúng có tính đa hình cao và được sử dụng trong nghiên cứu bản đồ gen người và chuẩn đoán bệnh lý di truyền.<eos>
```


# Uploaded  model

This gemma model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.

[<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth)


  