Vbd Llama2 7B 50b Chat
モデル概要
モデル特徴
モデル能力
使用事例
🚀 VBD-LLaMA2-Chat - ベトナム語用に会話調整されたLLaMA2
VBD-LLaMA2-Chatは、MetaのLLaMA2をベースに、ベトナム語に特化してファインチューニングされたモデルです。このモデルは、ベトナムにおける大規模言語モデル(LLM)の研究をサポートするために開発されました。
🚀 クイックスタート
VBD-LLaMA2-7B-Chatは、MetaのLLaMA2-7Bをベースに、ベトナム語に特化してファインチューニングされたモデルです。このモデルの事前学習重みは、1000億のベトナム語トークンと400億の英語トークンからなるコーパス上で、LLaMA2の語彙を拡張して連続的な自己教師あり学習(SSL)によって学習されました。その後、200万のベトナム語サンプルからなる内部SFTデータセットを使用して、教師ありファインチューニング(SFT)が行われました。
✨ 主な機能
- ベトナム語に特化した会話能力を備えています。
- 英語とベトナム語の両方のコーパスを使用して学習されているため、多言語能力を持ちます。
- 事前学習とファインチューニングのプロセスを最適化することで、ハードウェア、時間、データのコストを削減しています。
📦 インストール
このリリースでは、モデルのチェックポイントの事前学習重みとSFT重みのみを含んでいます。以下のコードを使用して、Huggingfaceのtransformersライブラリを用いてモデルを実行できます。
💻 使用例
基本的な使用法
import torch
from transformers import AutoConfig, AutoModelForCausalLM, AutoTokenizer
model_path = "LR-AI-Labs/vbd-llama2-7B-50b-chat"
tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=False)
model = AutoModelForCausalLM.from_pretrained(
model_path, torch_dtype=torch.bfloat16,
device_map='auto',
# load_in_8bit=True
)
model.eval()
SYS_PROMPT = "A chat between a curious user and an artificial intelligence assistant. "\
"The assistant gives helpful, detailed, and polite answers to the user's questions."
def response_generate(input_prompt):
input_ids = tokenizer(input_prompt, return_tensors="pt")
outputs = model.generate(
inputs=input_ids["input_ids"].to("cuda"),
attention_mask=input_ids["attention_mask"].to("cuda"),
do_sample=True,
temperature=0.7,
top_k=50,
top_p=0.9,
max_new_tokens=1024,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.pad_token_id
)
response = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
response = response.split("ASSISTANT:")[-1].strip()
return response
print(response_generate(f"{SYS_PROMPT} USER: Xin chào, bạn là ai? ASSISTANT:"))
# Xin chào, ViVi là một trợ lý trí tuệ nhân tạo có thể trả lời câu hỏi của bạn và trò chuyện với bạn.
シングルターンチャットの使用例
print(response_generate(f"{SYS_PROMPT} USER: Cách để nấu món phở ngon ASSISTANT:"))
print(response_generate(f"{SYS_PROMPT} USER: Viết cho tôi một email xin sếp tăng lương ASSISTANT:"))
print(response_generate(f'''{SYS_PROMPT} USER: Trả lời câu hỏi dựa vào thông tin lấy từ các đoạn văn sau. Nếu không có thông tin trả lời "Thật tiếc, câu hỏi của bạn Vivi không biết." Nếu có câu trả lời, yêu cầu trả ra cả nguồn chứa câu trả lời dạng "[đoạn k]."
Câu hỏi: {question}
Đoạn 0: {chunk_0}
Đoạn 1: {chunk_1}
Đoạn 2: {chunk_2}
Đoạn 3: {chunk_3}
Đoạn 4: {chunk_4} ASSISTANT:'''))
マルチターンチャットの使用例
turns = []
while True:
user_input = input("USER: ")
turns.append("USER: " + user_input)
bot_output = "ASSISTANT: " + response_generate("%s %s ASSISTANT:" %(SYS_PROMPT, " ".join(turns)))
print(bot_output)
turns.append(bot_output)
# USER: Xin chào
# ASSISTANT: Xin chào. Làm thế nào ViVi có thể giúp bạn?
# USER: Anh bị đau đầu quá
# ASSISTANT: Bạn có thể nói với ViVi nhiều hơn về cơn đau đầu của bạn?
# USER: anh bị đau nửa đầu về đêm, sáng dậy không tỉnh táo
# ASSISTANT: Điều quan trọng là bạn nhận thức được rằng cơn đau đầu của bạn không phải là điều hiếm gặp và nó có thể có nhiều nguyên nhân. Một số nguyên nhân phổ biến của cơn đau đầu là căng thẳng, thiếu ngủ, căng thẳng, chế độ ăn uống kém và mất nước.
# Nếu cơn đau đầu của bạn không giảm đi sau khi nghỉ ngơi và nghỉ ngơi, điều quan trọng là bạn nói chuyện với bác sĩ của bạn. Bác sĩ của bạn có thể giúp bạn xác định nguyên nhân của cơn đau đầu của bạn và đề xuất các phương pháp điều trị thích hợp.
# USER: có cách nào giảm đau tại nhà không?
# ASSISTANT: Có, có một số cách bạn có thể thử giảm đau đầu tại nhà:
# - Uống nhiều nước để giảm đau đầu do mất nước.
# - Nghỉ ngơi và ngủ nhiều hơn.
# - Áp dụng băng lạnh hoặc nóng vào khu vực đau.
# - Áp dụng thuốc giảm đau không kê đơn như ibuprofen hoặc paracetamol.
# - Thực hiện các kỹ thuật thư giãn như thiền, thở sâu hoặc yoga.
# - Massage khu vực bị ảnh hưởng.
# Điều quan trọng cần nhớ là trong khi các biện pháp khắc phục tại nhà có thể giúp giảm đau đầu, chúng không thay thế cho lời khuyên y tế chuyên nghiệp. Nếu cơn đau đầu của bạn vẫn tồn tại hoặc trở nên tồi tệ hơn, điều quan trọng là bạn nói chuyện với bác sĩ của bạn.
📚 ドキュメント
モデルの重み
- VBD-LLaMA2-7B-50b: 400億のベトナム語トークンと160億の英語トークン(合計約500億トークン)の事前学習モデルのスナップショット。
- VBD-LLaMA2-7B-50b-Chat: 提案された方法論の有効性を示すスナップショット。このベースモデルは、400億のベトナム語トークンと160億の英語トークンで事前学習され、200万のサンプルでSFTされています。
事前学習の提案
我々は、30億/70億/130億パラメータの大規模言語モデル(LLaMA、Bloom、MPT、Falconなど)をベトナム語と英語で継続的に事前学習することを提案しています。この提案では、英語の潜在空間からベトナム語の潜在空間に知識を移すことで、ベトナム語での会話能力を向上させる実験を行います。
自己教師ありファインチューニング(SFT)
VBD-LLaMA2-7B-50b-Chatは、200万の会話データでファインチューニングされており、近い将来、会話システムにおけるLLMの応用が増えることを期待しています。
評価
我々は、複数の公開データセットを使用してモデルを評価し、@hieunguyen1053 fork of lm - evaluation - harnessを使用して結果を取得しました。結果は以下の通りです。
モデル | モデルサイズ | arc_vi (acc) | hellaswag_vi (acc) | mmlu_vi (acc) | truthfulqa_vi (acc) | 平均 |
---|---|---|---|---|---|---|
URA-LLaMA-13B | 0,3752 | 0,4830 | 0,3973 | 0,4574 | 0,4282 | |
BLOOMZ-7B | 0,3205 | 0,4930 | 0,3975 | 0,4523 | 0,4158 | |
PhoGPT-7B5-Instruct | 0,2470 | 0,2578 | 0,2413 | 0,4759 | 0,3055 | |
SeaLLM-7B-chat | 0,3607 | 0,5112 | 0,3339 | 0,4948 | 0,4252 | |
Vietcuna-7b-v3 | 0,3419 | 0,4939 | 0,3354 | 0,4807 | 0,4130 | |
VinaLLaMA-2.7B-chat | 0,3273 | 0,4814 | 0,3051 | 0,4972 | 0,4028 | |
VinaLLaMA-7B-chat | 0,4239 | 0,5407 | 0,3932 | 0,5251 | 0,4707 | |
VBD-LLaMA2-7B-50b | 0,3222 | 0,5195 | 0,2964 | 0,4614 | 0,3999 | |
VBD-LLaMA2-7B-50b-Chat | 0,3585 | 0,5207 | 0,3444 | 0,5179 | 0,4354 |
表1. ベトナム語データセットでのベンチマーク
組織 | モデル | モデルサイズ | ARC (ACC) | HellaSwag (ACC) | LAMBADA (perplexity) | MMLU (ACC) |
---|---|---|---|---|---|---|
VLSP | hoa-7b | ~7B | 0,2722 | 0,4867 | 18,53 | |
BK Lab | LLaMA-2-BK | ~7B | 0,4164 | 0,7216 | 5,010 | |
ViLM | vietcuna-7b-v3 | ~7B | 0,3976 | 0,6309 | 7,125 | |
BigScience | Bloomz-T0 | ~7B | 0,436 | 0,6401 | 6,542 | 0,3785 |
TII | Falcon-7B-Instruct | ~7B | 0,4258 | 0,6976 | 7,463 | 0,2584 |
MosaicML | MPT-7B-Chat | ~7B | 0,4258 | 0,7438 | 5,797 | 0,3762 |
Meta | LLaMA-2-Chat | ~7B | 0,442 | 0,7547 | 3,968 | 0,4832 |
AISingapore | Sealion7b | ~7B | 0,3422 | 0,6705 | 6,715 | 0,268 |
VBD | VBD-LLaMA2-7B-50b-Chat | ~7B | 0,4556 | 0,7384 | 4,645 | 0,4558 |
表2. 英語データセットでのベンチマーク
これらの結果から、我々のモデルはベトナム語のタスクで他の多くのモデルと同等またはそれ以上の性能を発揮しており、このアプローチが非常に有望であることを示しています。
🔧 技術詳細
事前学習の方法
- ベースとなる英語/多言語の大規模言語モデルを選択します。
- BPEベースのトークナイザーを再構築し、元のトークンを保持しながらベトナム語の音節を組み込みます。
- 潜在空間での知識移動を行い、元の潜在空間を凍結しながら追加された潜在空間をファインチューニングします。このステップは、英語 - ベトナム語およびベトナム語 - 英語の翻訳タスクを使用して行われます。
- 新しい潜在空間(元の潜在空間 + 追加された潜在空間)を使用して、400億の英語トークンと1000億のベトナム語トークンの自己教師あり学習(SSL)をファインチューニングします。
- 3Bモデルの学習時間は約8000GPU時間(GPU DGX 8 A100s 40GBで約44日)、7Bモデルの学習時間は約16000GPU時間(GPU DGX 8 A100s 40GBで約84日)です。
- 定期的にモデルを評価し、改善点や学習の早期終了の可能性を観察します。
📄 ライセンス
公開された重みを使用することにより、あなたはMetaのLLaMA - 2ライセンスに指定された条件に同意し、遵守することになります。
注意事項
- このモデルは、誤解を招く、不正確な、有害なコンテンツの生成を最小限に抑えるために相当な努力を払っていますが、依然として固有のリスクがあります。このモデルは、厳密に監視された環境でのみ使用することを強くお勧めします。
- モデルの出力から得られる重要な情報は、事実に誤りがある可能性があるため、必ず検証してください。
- モデルはベトナム語のタスク、特に会話に関連するタスクでは適度な能力を示していますが、ベトナムの歴史、文化、社会に関連する質問には依然として苦労しています。
- モデルをさらに改善するために、データ蒸留やモデルのマージ/結合/アンサンブルなどのアプローチを推奨しています。



