模型简介
模型特点
模型能力
使用案例
🚀 LLaMAntino-3-ANITA-8B-Inst-DPO-ITA
LLaMAntino-3-ANITA-8B-Inst-DPO-ITA 是基于 Meta-Llama-3-8B-Instruct 微调的多语言模型,支持英语和意大利语,旨在为意大利 NLP 研究提供更好的模型。
“Built with Meta Llama 3”.
🚀 快速开始
LLaMAntino-3-ANITA-8B-Inst-DPO-ITA 是 LLaMAntino 大语言模型家族的一员,它是 Meta-Llama-3-8b-instruct 的指令微调版本(基于 LLaMA 3 模型 微调)。该模型版本旨在成为一个 多语言模型 (英语 + 意大利语),以便在意大利语特定任务上进行进一步微调。
ANITA 项目 (Advanced Natural-based interaction for the Italian language)旨在为意大利 NLP 研究人员提供一个适用于意大利语用例的改进模型。
实时演示:https://chat.llamantino.it/ 仅支持意大利网络连接。
✨ 主要特性
- 多语言支持:支持英语和意大利语。
- 微调优化:基于 Meta-Llama-3-8B-Instruct 进行指令微调,使用 QLoRA 4bit 进行监督微调(SFT),并采用 DPO 方法在特定数据集上进行对齐。
- 多种使用方式:可以直接使用,也可以通过
transformers
库进行调用。
📦 安装指南
使用 transformers
库
首先,你需要通过以下命令使用 pip
安装 transformers
及其相关依赖:
pip install -U transformers trl peft accelerate bitsandbytes
💻 使用示例
基础用法
import torch
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
)
base_model = "swap-uniba/LLaMAntino-3-ANITA-8B-Inst-DPO-ITA"
model = AutoModelForCausalLM.from_pretrained(
base_model,
torch_dtype=torch.bfloat16,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(base_model)
sys = "Sei un an assistente AI per la lingua Italiana di nome LLaMAntino-3 ANITA " \
"(Advanced Natural-based interaction for the ITAlian language)." \
" Rispondi nella lingua usata per la domanda in modo chiaro, semplice ed esaustivo."
messages = [
{"role": "system", "content": sys},
{"role": "user", "content": "Chi è Carlo Magno?"}
]
# Method 1
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt", add_special_tokens=False)
for k,v in inputs.items():
inputs[k] = v.cuda()
outputs = model.generate(**inputs, max_new_tokens=512, do_sample=True, top_p=0.9, temperature=0.6)
results = tokenizer.batch_decode(outputs)[0]
print(results)
# Method 2
import transformers
pipe = transformers.pipeline(
model=model,
tokenizer=tokenizer,
return_full_text=False, # langchain expects the full text
task='text-generation',
max_new_tokens=512, # max number of tokens to generate in the output
temperature=0.6, # temperature for more or less creative answers
do_sample=True,
top_p=0.9,
)
sequences = pipe(messages)
for seq in sequences:
print(f"{seq['generated_text']}")
高级用法
使用 4bit 量化模型以减少资源需求:
import torch
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
)
base_model = "swap-uniba/LLaMAntino-3-ANITA-8B-Inst-DPO-ITA"
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,
quantization_config=bnb_config,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(base_model)
sys = "Sei un an assistente AI per la lingua Italiana di nome LLaMAntino-3 ANITA " \
"(Advanced Natural-based interaction for the ITAlian language)." \
" Rispondi nella lingua usata per la domanda in modo chiaro, semplice ed esaustivo."
messages = [
{"role": "system", "content": sys},
{"role": "user", "content": "Chi è Carlo Magno?"}
]
# Method 1
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt", add_special_tokens=False)
for k,v in inputs.items():
inputs[k] = v.cuda()
outputs = model.generate(**inputs, max_new_tokens=512, do_sample=True, top_p=0.9, temperature=0.6)
results = tokenizer.batch_decode(outputs)[0]
print(results)
# Method 2
import transformers
pipe = transformers.pipeline(
model=model,
tokenizer=tokenizer,
return_full_text=False, # langchain expects the full text
task='text-generation',
max_new_tokens=512, # max number of tokens to generate in the output
temperature=0.6, # temperature for more or less creative answers
do_sample=True,
top_p=0.9,
)
sequences = pipe(messages)
for seq in sequences:
print(f"{seq['generated_text']}")
📚 详细文档
模型详情
最后更新时间:2024 年 5 月 10 日
模型 | HF 链接 | GGUF 链接 | EXL2 链接 |
---|---|---|---|
swap-uniba/LLaMAntino-3-ANITA-8B-Inst-DPO-ITA | Link | Link | Link |
规格说明
属性 | 详情 |
---|---|
模型开发者 | Marco Polignano 博士 - 意大利巴里阿尔多·莫罗大学 SWAP 研究小组 |
模型变体 | 使用 QLoRA 4bit 进行监督微调(SFT),并在基于指令的数据集上进行训练。采用 DPO 方法在 mlabonne/orpo-dpo-mix-40k 数据集上进行对齐,以符合人类对有用性和安全性的偏好。 |
输入 | 仅接受文本输入。 |
语言 | 多语言(英语 + 意大利语) |
输出 | 仅生成文本和代码。 |
模型架构 | Llama 3 架构 |
上下文长度 | 8K(8192) |
使用的库 | Unsloth |
提示模板
<|start_header_id|>system<|end_header_id|>
{ SYS Prompt }<|eot_id|><|start_header_id|>user<|end_header_id|>
{ USER Prompt }<|eot_id|><|start_header_id|>assistant<|end_header_id|>
{ ASSIST Prompt }<|eot_id|>
评估
Open LLM 排行榜:
使用 lm-evaluation-benchmark-harness
对 Open Italian LLMs Leaderboard 进行评估:
lm_eval --model hf --model_args pretrained=HUGGINGFACE_MODEL_ID --tasks hellaswag_it,arc_it --device cuda:0 --batch_size auto:2
lm_eval --model hf --model_args pretrained=HUGGINGFACE_MODEL_ID --tasks m_mmlu_it --num_fewshot 5 --device cuda:0 --batch_size auto:2
指标 | 值 |
---|---|
平均值 | 0.6160 |
Arc_IT | 0.5714 |
Hellaswag_IT | 0.7093 |
MMLU_IT | 0.5672 |
Unsloth

Unsloth 是一个很棒的工具,它帮助我们以比预期更低的成本轻松开发产品。
引用说明
@misc{polignano2024advanced,
title={Advanced Natural-based interaction for the ITAlian language: LLaMAntino-3-ANITA},
author={Marco Polignano and Pierpaolo Basile and Giovanni Semeraro},
year={2024},
eprint={2405.07101},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
@misc{basile2023llamantino,
title={LLaMAntino: LLaMA 2 Models for Effective Text Generation in Italian Language},
author={Pierpaolo Basile and Elio Musacchio and Marco Polignano and Lucia Siciliani and Giuseppe Fiameni and Giovanni Semeraro},
year={2023},
eprint={2312.09993},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
@article{llama3modelcard,
title={Llama 3 Model Card},
author={AI@Meta},
year={2024},
url = {https://github.com/meta-llama/llama3/blob/main/MODEL_CARD.md}
}
致谢
我们感谢 PNRR 项目 FAIR - Future AI Research (PE00000013) 的支持,该项目是 NRRP MUR 计划下的一部分,由 NextGenerationEU 资助。模型是在 Leonardo 超级计算机上构建的,得到了 CINECA - 意大利超级计算资源分配的支持,属于 C 类项目 IscrC_Pro_MRS (HP10CQO70G)。
Open LLM 排行榜评估结果
详细结果可查看 此处
指标 | 值 |
---|---|
平均值 | 75.12 |
AI2 Reasoning Challenge (25-Shot) | 74.57 |
HellaSwag (10-Shot) | 92.75 |
MMLU (5-Shot) | 66.85 |
TruthfulQA (0-shot) | 75.93 |
Winogrande (5-shot) | 82.00 |
GSM8k (5-shot) | 58.61 |
📄 许可证
本模型使用 llama3 许可证。



