Chuyển đến nội dung chính

Hướng dẫn toàn diện về Zephyr-7B: Tính năng, Cách sử dụng và Tinh chỉnh

Tìm hiểu mọi thứ về Zephyr-7B, bao gồm quá trình huấn luyện, cách truy cập và cách tinh chỉnh trên cơ sở dữ liệu tùy chỉnh bằng GPU miễn phí của Kaggle.
Đã cập nhật 5 thg 10, 2026  · 12 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Mọi người đều dõi theo Bảng xếp hạng LLM nguồn mở và các mô hình mã nguồn mở mới đang hướng tới việc tiệm cận hiệu năng của GPT-4. Một mô hình đang tạo ra nhiều bàn tán gần đây là Zephyr-7B.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về một mô hình ngôn ngữ mới có tên Zephyr-7B. Chúng ta sẽ truy cập nó bằng pipeline của Transformers và tinh chỉnh mô hình trên bộ dữ liệu Agent-Instruct.

Nếu bạn mới bắt đầu với Trí tuệ nhân tạo, hãy xem lộ trình kỹ năng KIến thức nền tảng về AI. Khóa học sẽ giúp bạn sẵn sàng và mở đường trở thành kỹ sư AI trong tương lai.

Tìm hiểu Zephyr-7B

Zephyr-7B là một mô hình ngôn ngữ tiên tiến do WebPilot.AI phát triển. Đây là một phần của dòng mô hình Zephyr được huấn luyện để hoạt động như các trợ lý hữu ích. Zephyr-7B được thiết kế để vượt trội trong nhiều tác vụ dựa trên ngôn ngữ như tạo văn bản mạch lạc, dịch giữa các ngôn ngữ, tóm tắt thông tin quan trọng, phân tích cảm xúc và trả lời câu hỏi dựa trên ngữ cảnh.

Zephyr-7B-β

Zephyr-7B-β là mô hình thứ hai trong dòng sản phẩm. Đây là phiên bản tinh chỉnh của mô hình Mistral-7B, được huấn luyện trên sự kết hợp giữa các bộ dữ liệu công khai và tổng hợp bằng phương pháp Tối ưu hóa Theo sở thích Trực tiếp (DPO). Nhờ đó, Zephyr-7B-β thể hiện năng lực từ diễn giải các câu hỏi phức tạp đến tóm tắt những đoạn văn bản dài.

Tại thời điểm phát hành, Zephyr-7B-β là mô hình trò chuyện 7B xếp hạng cao nhất trên các benchmark MT-Bench và AlpacaEval. Nó tận dụng những tiến bộ mới nhất trong xử lý ngôn ngữ tự nhiên để đạt tới mức độ hiểu và sinh văn bản giống con người ở tầm cao mới.

Bạn có thể trải nghiệm hiệu năng được cải thiện của nó bằng cách dùng thử bản demo miễn phí trên Zephyr Chat.

image3.png

Hình ảnh từ Zephyr Chat

Truy cập Zephyr-7B

Tương tự như Hướng dẫn Mistral 7B, chúng ta sẽ tải và sử dụng Zephyr-7B-beta bằng transformers của Hugging Face. Cách làm khá đơn giản.

Lưu ý: nếu bạn gặp sự cố khi tải mô hình, hãy xem Notebook Suy luận trên Kaggle.

Trước tiên, cài đặt tất cả thư viện cần thiết. Hãy đảm bảo bạn đang dùng phiên bản mới nhất, nếu không sẽ không chạy được.

!pip install -q -U transformers
!pip install -q -U accelerate
!pip install -q -U bitsandbytes

Sau đó, tải thư viện Pytorch và module pipeline từ transformers.

import torch
from transformers import pipeline

Chúng ta sẽ dựng pipeline sinh văn bản bằng cách cung cấp tên mô hình, đối số torch_dtype và device_map.

Giá trị “auto” trong device_map nghĩa là có thể dùng nhiều GPU để tạo phản hồi nhanh hơn.

torch.bfloat16 (brain float) là kiểu số thực dấu phẩy động 16-bit có kích thước số mũ bằng với torch.float32 nhưng phần định trị nhỏ hơn. Điều này cho phép tính toán nhanh hơn và dùng ít bộ nhớ hơn, nhưng cũng làm giảm độ chính xác.

model_name = "HuggingFaceH4/zephyr-7b-beta"

pipe = pipeline(
    "text-generation",
    model=model_name,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)

Chúng ta cần cung cấp prompt và các tham số cần thiết khác cho đối tượng pipeline rồi in phản hồi.

prompt = "Write a Python function that can clean the HTML tags from the file:"

outputs = pipe(
    prompt,
    max_new_tokens=300,
    do_sample=True,
    temperature=0.7,
    top_k=50,
    top_p=0.95,
)
print(outputs[0]["generated_text"])

Phản hồi rất ấn tượng. Mô hình cung cấp mã Python kèm chú thích.

image11.png

Chúng ta thậm chí có thể tùy biến phản hồi bằng cách cung cấp system prompt theo phong cách Zephyr-7B.

Chúng ta sẽ dùng hàm pipe.tokenizer.apply_chat_template để tạo prompt từ danh sách các dictionary. Các dictionary chứa thông tin về vai trò và hành vi của trợ lý trò chuyện, cùng với prompt của người dùng.

messages = [
    {
        "role": "system",
        "content": "You are a skilled software engineer who consistently produces high-quality Python code.",
    },
    {
        "role": "user",
        "content": "Write a Python code to display text in a star pattern.",
    },
]

prompt = pipe.tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)

Cuối cùng, chúng ta sẽ truyền prompt của đối tượng pipeline và các tham số bổ sung để tạo phản hồi.

outputs = pipe(
    prompt,
    max_new_tokens=300,
    do_sample=True,
    temperature=0.7,
    top_k=50,
    top_p=0.95,
)
print(outputs[0]["generated_text"])

Zephyr-7B đã đưa ra lời giải tối ưu, kèm giải thích và đầu ra của hàm. Thật ấn tượng. Mọi người nên dùng nó để sinh mã Python.

image6.png

Tinh chỉnh Zephyr-7B

Trong phần này, chúng ta sẽ học cách tinh chỉnh mô hình Zephyr-7B-beta trên một bộ dữ liệu tùy chỉnh bằng GPU miễn phí của Kaggle. Làm theo hướng dẫn, bạn sẽ có thể chuẩn bị mô hình để triển khai chỉ trong hai giờ.

Lưu ý: nếu bạn gặp sự cố trong quá trình huấn luyện mô hình, hãy xem Notebook Tinh chỉnh trên Kaggle.

Thiết lập

Trước tiên, cài đặt các thư viện Python cần thiết để tải bộ dữ liệu và mô hình, rồi tinh chỉnh.

%%capture
%pip install -U bitsandbytes
%pip install -U transformers
%pip install -U peft
%pip install -U accelerate
%pip install -U trl

Tiếp theo, chúng ta sẽ tải các module cần thiết giúp quá trình dễ dàng hơn và hỗ trợ huấn luyện mô hình với bộ nhớ hạn chế.

from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
    HfArgumentParser,
    TrainingArguments,
    pipeline,
    logging,
)
from peft import (
    LoraConfig,
    PeftModel,
    prepare_model_for_kbit_training,
    get_peft_model,
)
import os, torch, wandb
from datasets import load_dataset
from trl import SFTTrainer

Phần này dành riêng cho notebook Kaggle. Chúng ta đã thêm khóa API cho Hugging Face và Weights & Biases (wandb) vào secrets của Kaggle. Chúng ta sẽ sử dụng chúng một cách an toàn để tải mô hình lên Hugging Face Hub và theo dõi trực tiếp quá trình huấn luyện trên máy chủ Weights & Biases.

from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
secret_hf = user_secrets.get_secret("HUGGINGFACE_TOKEN")
secret_wandb = user_secrets.get_secret("wandb")

Đăng nhập vào Hugging Face bằng CLI và khóa API.

!huggingface-cli login --token $secret_hf

Tương tự, đăng nhập vào wandb và khởi tạo dự án.

# Monitoring the LLM
wandb.login(key = secret_wandb)
run = wandb.init(
    project='Fine tuning Zephyr 7B', 
    job_type="training", 
    anonymous="allow"
)

image2.png

Cung cấp tên mô hình gốc, bộ dữ liệu và mô hình mới để tinh chỉnh, lưu và đẩy lên Hugging Face Hub.

base_model = "HuggingFaceH4/zephyr-7b-beta"
dataset_name = "THUDM/AgentInstruct"
new_model = "zephyr-7b-beta-Agent-Instruct"

Bộ dữ liệu AgentInstruct

Chúng ta sẽ tải bộ dữ liệu rồi chuyển đổi nó sang phong cách prompt của Zephyr-7B bằng hàm format_prompt . Hàm này trích xuất vai trò và nội dung từ bộ dữ liệu, và chuyển chúng thành các chuỗi dài bắt đầu bằng system prompt và kết thúc bằng một hướng dẫn mặc định.

#Importing the dataset
dataset = load_dataset("THUDM/AgentInstruct", split="train")
def format_prompt(sample):
    intro = "Below is a conversation between a user and you."
    end = "Instruction: Write a response appropriate to the conversation."

    try:
        formatted_conversations = "\n".join(
            f"<{resp['from']}>: {resp['value']}"
            for resp in sample["conversations"]
        )

        sample["text"] = f"{intro}\n\n{formatted_conversations}\n\n{end}"
    except (TypeError, KeyError):
        raise ValueError("Invalid format of the input sample.")
    return sample


dataset = dataset.map(
    format_prompt,
    remove_columns=["conversations"]
)
dataset["text"][100]

image1.png

Tải mô hình và tokenizer

Chúng ta sẽ tải xuống và nạp một mô hình độ chính xác 4-bit từ Hugging Face để huấn luyện nhanh hơn. Điều này cần thiết khi tinh chỉnh trên GPU có VRAM hạn chế. Sau đó, chúng ta sẽ tải tokenizer và cấu hình nó để khắc phục vấn đề với fp16.

bnb_config = BitsAndBytesConfig(  
    load_in_4bit= True,
    bnb_4bit_quant_type= "nf4",
    bnb_4bit_compute_dtype= torch.bfloat16,
    bnb_4bit_use_double_quant= False,
)
model = AutoModelForCausalLM.from_pretrained(
        base_model,
        load_in_4bit=True,
        quantization_config=bnb_config,
        torch_dtype=torch.bfloat16,
        device_map="auto",
        trust_remote_code=True,
)
model.config.use_cache = False
model.config.pretraining_tp = 1
model.gradient_checkpointing_enable()

# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
tokenizer.padding_side = 'right'
tokenizer.pad_token = tokenizer.eos_token
tokenizer.add_eos_token = True
tokenizer.add_bos_token, tokenizer.add_eos_token

Xây dựng mô hình

Bây giờ chúng ta sẽ thêm một lớp adapter vào mô hình, cho phép tinh chỉnh hiệu quả hơn. Thay vì tinh chỉnh toàn bộ mô hình, chúng ta chỉ cập nhật các tham số trong lớp adapter để huấn luyện nhanh hơn.

model = prepare_model_for_kbit_training(model)
peft_config = LoraConfig(
    lora_alpha=16,
    lora_dropout=0.1,
    r=64,
    bias="none",
    task_type="CAUSAL_LM",
    target_modules=['up_proj', 'base_layer', 'down_proj']
)
model = get_peft_model(model, peft_config)

Huấn luyện mô hình

Việc đặt đúng siêu tham số trong đối số huấn luyện là rất quan trọng. Bạn có thể tìm hiểu từng tham số bằng cách đọc hướng dẫn Tinh chỉnh LLaMA 2.

Sau đó, chúng ta sẽ dùng thư viện TRL của HuggingFace để xây dựng SFT Trainer với các thành phần cần thiết như mô hình, bộ dữ liệu, cấu hình Lora, tokenizer và tham số huấn luyện.

Cuối cùng, chúng ta sẽ bắt đầu huấn luyện.

#Hyperparamter
training_arguments = TrainingArguments(
    output_dir="./results",
    num_train_epochs=1,
    per_device_train_batch_size=4,
    gradient_accumulation_steps=1,
    optim="paged_adamw_32bit",
    save_steps=25,
    logging_steps=25,
    learning_rate=2e-4,
    weight_decay=0.001,
    fp16=False,
    bf16=False,
    max_grad_norm=0.3,
    max_steps=-1,
    warmup_ratio=0.03,
    group_by_length=True,
    lr_scheduler_type="constant",
    report_to="wandb"
)


# Setting sft parameters
trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    peft_config=peft_config,
    max_seq_length= 512,
    dataset_text_field="text",
    tokenizer=tokenizer,
    args=training_arguments,
    packing= False,
)


trainer.train()

Sau gần 1 giờ 40 phút, quá trình huấn luyện hoàn tất và chúng ta quan sát thấy độ mất mát huấn luyện giảm dần.

image10.png

Dưới đây là đánh giá mô hình chi tiết hơn từ Weights & Biases.

image8.png

Giờ chúng ta sẽ lưu mô hình, kết thúc phiên wandb và đẩy mô hình lên Hugging Face Hub. Thao tác này sẽ tạo một kho mô hình với tệp adapter đã lưu.

# Save the fine-tuned model
trainer.model.save_pretrained(new_model)
wandb.finish()

trainer.model.push_to_hub(new_model, use_temp_dir=False)

image9.png

Đây là kho mô hình đã tinh chỉnh mà bạn có thể truy cập bằng: hf.co/kingabzpro/zephyr-7b-beta-Agent-Instruct

image7.png

Đến lúc kiểm thử mô hình đã tinh chỉnh của chúng ta trên nhiều prompt khác nhau.

Chúng ta đã hỏi mô hình về cách dùng Python trực tuyến với DataCamp.

logging.set_verbosity(logging.CRITICAL)

prompt = "How to use Python online with DataCamp?"
pipe = pipeline(task="text-generation", model=model, tokenizer=tokenizer, max_length=200)
result = pipe(prompt)
print(result[0]['generated_text'])

Chúng ta có thể thấy phản hồi tương tự như AgentGPT, một tác tử AI tự động thực hiện nhiều tác vụ bằng các tiện ích mở rộng khác nhau và đạt kết quả tương tự các hệ thống AI tiên tiến. Những hệ thống này có thể thực hiện các tác vụ giống con người, như tìm kiếm web, cập nhật mã và kiểm thử.

image5.png

Thay vì yêu cầu danh sách hướng dẫn, hãy hỏi mô hình một câu đơn giản về lộ trình nghề nghiệp của DataCamp.

prompt = "What is Datacamp Career track?"
result = pipe(prompt)
print(result[0]['generated_text'])

Chúng ta nhận được câu trả lời, nhưng nó dẫn đến nhiều câu hỏi và câu trả lời tiếp theo (không phải tất cả đều chính xác), điều này khá thú vị.

image4.png

Bước tiếp theo trong hành trình của bạn là dùng mô hình này để xây dựng ứng dụng AI. Để làm được, bạn cần các công cụ giúp công việc nhẹ nhàng hơn. Dưới đây là danh sách 7 công cụ Generative AI thiết yếu có thể giúp bạn xây dựng các ứng dụng AI nổi bật.

Kết luận

Mô hình ngôn ngữ lớn Zephyr-7B-beta đã cho thấy khả năng hiểu và đưa ra phản hồi chính xác đáng kinh ngạc. Trong hướng dẫn này, chúng ta đã tìm hiểu về Zephyr-7B và cách truy cập nó bằng pipeline của Transformers. Chúng ta cũng đã học cách tinh chỉnh nó trên bộ dữ liệu Agent tùy chỉnh, giúp tăng cường khả năng suy luận và tạo phản hồi theo phong cách hướng dẫn tương tự AgentGPT.

Hướng dẫn này là nguồn tài liệu toàn diện cho những người đam mê machine learning ở mọi cấp độ muốn thử nghiệm và tinh chỉnh các mô hình ngôn ngữ lớn trên GPU có bộ nhớ hạn chế.

Hãy đăng ký khóa Làm chủ các khái niệm về Mô hình ngôn ngữ lớn (LLMs) để tìm hiểu về các khối xây dựng, phương pháp huấn luyện và kỹ thuật tương tự Zephyr-7B.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.

Chủ đề
Trí tuệ Nhân tạo
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm