🚀 BODE
BODEは、ポルトガル語用の大規模言語モデル(LLM)です。このモデルはLlama 2をベースに、Cabritaの著者によってポルトガル語に翻訳されたAlpacaデータセットを用いてファインチューニングされています。ポルトガル語の自然言語処理タスク、例えばテキスト生成、自動翻訳、テキスト要約などに最適化されています。
BODEの開発目的は、ポルトガル語用のLLMの不足を解消することです。LLaMaなどの従来のモデルはポルトガル語のプロンプトに応答できますが、文法エラーが多く、時には英語の応答を生成することがあります。また、無料で利用できるポルトガル語のモデルは少なく、私たちの知る限り、ポルトガル語のデータで特に訓練された130億パラメータ以上のモデルは存在しません。
論文を参照して、BODEに関する詳細情報をご確認ください。
このページで公開されているBODEモデルのバージョンは、Recognaの高度な研究ラボで利用可能な内部リソースを使用してトレーニングされています。間もなく、必要な承認を得た後、Santos Dumontでトレーニングされたモデルのオリジナルバージョンを公開予定です。
✨ 主な機能
- ポルトガル語の自然言語処理タスクに最適化
- テキスト生成、自動翻訳、テキスト要約などのタスクに対応
📦 インストール
以下のコマンドを使用して、必要なライブラリをインストールします。
!pip install transformers
!pip install einops accelerate bitsandbytes
!pip install sentence_transformers
!pip install git+https://github.com/huggingface/peft.git
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
from peft import PeftModel, PeftConfig
llm_model = 'recogna-nlp/bode-7b-alpaca-pt-br'
hf_auth = 'HF_ACCESS_KEY'
config = PeftConfig.from_pretrained(llm_model)
model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, trust_remote_code=True, return_dict=True, load_in_8bit=True, device_map='auto', token=hf_auth)
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path, token=hf_auth)
model = PeftModel.from_pretrained(model, llm_model)
model.eval()
def generate_prompt(instruction, input=None):
if input:
return f"""以下はタスクを説明する指示と、より多くのコンテキストを提供する入力です。要求を適切に完了する応答を書いてください。
### 指示:
{instruction}
### 入力:
{input}
### 応答:"""
else:
return f"""以下はタスクを説明する指示です。要求を適切に完了する応答を書いてください。
### 指示:
{instruction}
### 応答:"""
generation_config = GenerationConfig(
temperature=0.2,
top_p=0.75,
num_beams=2,
do_sample=True
)
def evaluate(instruction, input=None):
prompt = generate_prompt(instruction, input)
inputs = tokenizer(prompt, return_tensors="pt")
input_ids = inputs["input_ids"].cuda()
generation_output = model.generate(
input_ids=input_ids,
generation_config=generation_config,
return_dict_in_generate=True,
output_scores=True,
max_length=300
)
for s in generation_output.sequences:
output = tokenizer.decode(s)
print("応答:", output.split("### 応答:")[1].strip())
evaluate("詳細に答えてください: ヤギとは何ですか?")
📚 ドキュメント
モデルの詳細
属性 |
詳情 |
モデルタイプ |
Llama 2 |
訓練データ |
Alpaca |
言語 |
ポルトガル語 |
利用可能なバージョン
トレーニングとデータ
BODEモデルは、Llama 2をベースに、ポルトガル語のAlpacaデータセット(命令ベースのデータセット)を用いてファインチューニングされています。元々はLNCCのスーパーコンピュータSantos Dumontを使用し、Fundunesp 2019/00697 - 8プロジェクトを通じてトレーニングされましたが、ここで公開されているバージョンは、Recognaの内部環境で同じデータとパラメータを使用してトレーニングされた複製です。
評価結果
Open Portuguese LLM Leaderboard Evaluation Results
詳細な結果はこちらで確認できます。
指標 |
値 |
平均 |
53.21 |
ENEM Challenge (No Images) |
34.36 |
BLUEX (No Images) |
28.93 |
OAB Exams |
30.84 |
Assin2 RTE |
79.83 |
Assin2 STS |
43.47 |
FaQuAD NLI |
67.45 |
HateBR Binary |
85.06 |
PT Hate Speech Binary |
65.73 |
tweetSentBR |
43.25 |
引用
もしあなたが研究でBODEを使用する場合は、この論文を引用してください。引用形式は以下の通りです。
@misc{bode2024,
title={Introducing Bode: A Fine-Tuned Large Language Model for Portuguese Prompt-Based Task},
author={Gabriel Lino Garcia and Pedro Henrique Paiola and Luis Henrique Morelli and Giovani Candido and Arnaldo Cândido Júnior and Danilo Samuel Jodas and Luis C. S. Afonso and Ivan Rizzo Guilherme and Bruno Elias Penteado and João Paulo Papa},
year={2024},
eprint={2401.02909},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
貢献
このモデルの改善に向けた貢献を歓迎します。自由に問題を報告したり、プルリクエストを送信してください。
謝辞
スーパーコンピュータSDumontのCADリソースを提供してくれた国立科学計算研究所(LNCC/MCTI、ブラジル)に感謝します。