license: llama2
language:
VBD-LLaMA2-Chat - 专为越南语优化的对话调优版LLaMA2
(免责声明1:VBD-LLaMA系列是VinBigData为支持越南大语言模型研究推出的项目。该模型与VinBigData旗下的ViGPT/ViViChat或其他产品无关)
我们发布VBD-LLaMA2-7B-Chat,这是基于Meta LLaMA2-7B专为越南语🇻🇳优化的微调模型。作为构建越南大语言模型(LLM)社区支持计划的一部分,该模型的预训练权重通过持续自监督学习(SSL)获得——我们在包含1000亿越南语🇻🇳token和400亿英语🇬🇧token的语料库上扩展了LLaMA2的词表。该方法旨在充分利用现有语言模型的潜力,将其适配到资源相对匮乏的语言,从而降低构建此类语言LLM所需的硬件、时间和数据成本。后续使用包含200万越南语样本的内部SFT数据集进行了监督微调(SFT)。
本次发布包含基于40亿越南语和16亿英语token(总计56亿token)训练的预训练权重和SFT权重检查点。
模型权重:
- VBD-LLaMA2-7B-50b:预训练模型快照(40亿越南语+16亿英语token,约50亿token总量)
- VBD-LLaMA2-7B-50b-Chat:展示方法有效性的微调版本(基于50亿token预训练+200万样本SFT)
使用条款与许可:使用本模型权重即表示您同意遵守Meta LLaMA-2许可证的所有条款。
免责声明2:尽管我们已尽力减少误导性、错误及有害内容生成,但发布模型仍存在固有风险。强烈建议仅在严格监督环境下使用本模型,并建议进行额外测试、红队评估和对齐流程。模型使用须符合当地法律法规。模型作者不对因使用权重引发的任何索赔、损害或其他责任负责。
预训练方案
我们提出对30亿/70亿/130亿参数的大语言模型(LLaMA、Bloom、MPT、Falcon等)进行越南语和英语的持续预训练。通过将英语潜在空间的知识迁移至越南语潜在空间,在增强越南语对话能力的同时保留英语能力。
相较于从零训练越南语LLM,我们的方法能显著降低硬件成本、时间及数据需求。具体实施方案包括:
- 以英语/多语言大模型为基础(如LLaMA-2-7B)
- 重建BPE分词器:保留原词表并加入越南语音节
- 通过英越/越英翻译任务,在冻结原潜在空间的同时微调新增潜在空间
- 使用400亿英语+1000亿越南语token(约1-1.5T token量级)进行混合训练策略的SSL微调
- 该策略可提升零样本/小样本能力,减少对SFT的依赖
- 训练耗时:30B模型约8k GPU小时(8块A100 40GB需44天),70B模型约16k GPU小时
- 定期评估模型以监控改进空间
监督微调(SFT)
我们认为对话式AI将是未来人机交互的重要接口。因此VBD-LLaMA2-7B-50b-Chat使用200万对话数据进行微调,以促进LLM在对话系统的应用。
评估结果
使用@hieunguyen1053的lm-evaluation-harness分支结合VinaLLaMA作者提供的数据进行基准测试:
模型 |
参数量 |
arc_vi (acc) |
hellaswag_vi (acc) |
mmlu_vi (acc) |
truthfulqa_vi (acc) |
平均分 |
VBD-LLaMA2-7B-50b-Chat |
~7B |
0.3585 |
0.5207 |
0.3444 |
0.5179 |
0.4354 |
表1. 越南语数据集基准
机构 |
模型 |
参数量 |
ARC (ACC) |
HellaSwag (ACC) |
LAMBADA (困惑度) |
MMLU (ACC) |
VBD |
VBD-LLaMA2-7B-50b-Chat |
~7B |
0.4556 |
0.7384 |
4.645 |
0.4558 |
表2. 英语数据集基准
在VMLU团队开源的评估数据集上(致谢VMLU团队的贡献),本模型表现如下:
表3. VMLU数据集基准
预训练损失曲线:
模型运行
使用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'
)
SYS_PROMPT = "用户与AI助手之间的对话。助手提供专业、详细且礼貌的回答。"
def response_generate(input_prompt):
input_ids = tokenizer(input_prompt, return_tensors="pt")
outputs = model.generate(
inputs=input_ids["input_ids"].to("cuda"),
temperature=0.7, top_k=50, top_p=0.9,
max_new_tokens=1024
)
return tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
print(response_generate(f"{SYS_PROMPT} USER: Xin chào, bạn là ai? ASSISTANT:"))
单轮对话示例:
```python
print(response_generate(f"{SYS_PROMPT} USER: Cách nấu phở ngon ASSISTANT:"))
```
多轮对话示例:
```python
turns = []
while True:
user_input = input("USER: ")
turns.append(f"USER: {user_input}")
prompt = f"{SYS_PROMPT} {' '.join(turns)} ASSISTANT:"
bot_output = response_generate(prompt)
print(f"ASSISTANT: {bot_output}")
turns.append(f"ASSISTANT: {bot_output}")
```
可通过调整temperature/top_k/top_p参数优化生成效果
局限性与未来方向
当前模型存在以下局限:
- 数学推理/代码生成能力较弱
- 可能产生偏见/有害回复
- 越南历史/文化相关问答准确性待提升
改进建议:
- 数据蒸馏:构建本地知识小数据集持续训练
- 模型融合:结合其他LLaMA衍生模型进行知识蒸馏
- RLHF对齐:引入DPO等对齐技术
- RAG:结合外部知识库
致谢
感谢VinBigData虚拟助理技术中心(Dr. Kim Anh Nguyen 领导)提供的资源支持,以及VinBigData NLP部门同事的专业建议。
引用
若使用本项目,请引用以下作者:
- v.quangph3@vinbigdata.com (QuangPH)
- v.kietbs@vinbigdata.com (KietBS)
- v.minhtt32@vinbigdata.com (MinhTT)