🚀 InkubaLM-0.4B: 低リソースのアフリカ言語向けの小型言語モデル
InkubaLM-0.4Bは、低リソースのアフリカ言語に対応した小型言語モデルです。5つのアフリカ言語と英語、フランス語のデータを用いて学習されており、様々なテキスト生成タスクに役立ちます。

📚 モデルの詳細
InkubaLMは、5つのアフリカ言語について19億トークンのデータを使用し、英語とフランス語のデータも含めて合計24億トークンのデータでゼロから学習されました。MobileLLMで使用されているモデルアーキテクチャと同様に、このInkubaLMはパラメータサイズが4億、語彙サイズが61788で学習されています。学習、ベンチマーク、パフォーマンスに関する詳細情報については、ブログ記事を参照してください。
モデルの説明
- 開発元: Lelapa AI - 基礎研究チーム
- モデルの種類: LLaMA-7Bのアーキテクチャ設計を用いて構築された、5つのアフリカ言語向けの小型言語モデル(SLM)
- 言語 (NLP): イシズール語、ヨルバ語、スワヒリ語、イシコサ語、ハウサ語、英語、フランス語
- ライセンス: CC BY-NC 4.0
モデルのソース
🚀 クイックスタート
以下のコードを使用して、モデルを始めることができます。
pip install transformers
CPUでの実行
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("lelapa/InkubaLM-0.4B",trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("lelapa/InkubaLM-0.4B",trust_remote_code=True)
text = "Today I planned to"
inputs = tokenizer(text, return_tensors="pt")
input_ids = inputs.input_ids
attention_mask = inputs.attention_mask
outputs = model.generate(input_ids, attention_mask=attention_mask, max_length=60,pad_token_id=tokenizer.eos_token_id)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
フル精度での使用
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("lelapa/InkubaLM-0.4B", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("lelapa/InkubaLM-0.4B", trust_remote_code=True)
model.to('cuda')
text = "Today i planned to "
input_ids = tokenizer(text, return_tensors="pt").to('cuda').input_ids
outputs = model.generate(input_ids, max_length=1000, repetition_penalty=1.2, pad_token_id=tokenizer.eos_token_id)
print(tokenizer.batch_decode(outputs[:, input_ids.shape[1]:-1])[0].strip())
torch.bfloat16を使用する
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
checkpoint = "lelapa/InkubaLM-0.4B"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint, device_map="auto",torch_dtype=torch.bfloat16, trust_remote_code=True)
inputs = tokenizer.encode("Today i planned to ", return_tensors="pt").to("cuda")
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
bitsandbytesを使用した量子化バージョンの使用
pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
checkpoint = "lelapa/InkubaLM-0.4B"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint, quantization_config=quantization_config, trust_remote_code=True)
inputs = tokenizer.encode("Today i planned to ", return_tensors="pt").to("cuda")
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
🔧 学習の詳細
学習データ
学習には、Inkuba-monoデータセットを使用しました。
学習ハイパーパラメータ
ハイパーパラメータ |
値 |
総パラメータ数 |
0.422B |
隠れ層のサイズ |
2048 |
中間層のサイズ (MLPs) |
5632 |
アテンションヘッドの数 |
32 |
隠れ層の数 |
8 |
RMSNorm ɛ |
1e^-5 |
最大シーケンス長 |
2048 |
語彙サイズ |
61788 |
🚫 制限事項
InkubaLMモデルは多言語データセットで学習されていますが、いくつかの制限があります。このモデルは、スワヒリ語、ヨルバ語、ハウサ語、イシズール語、イシコサ語、英語、フランス語の5つのアフリカ言語のコンテンツを理解し、生成することができます。様々なトピックのテキストを生成することができますが、生成されたコンテンツは必ずしも完全に正確で、論理的に一貫している、または学習データに含まれるバイアスがないとは限りません。また、モデルはテキストを生成する際に、異なる言語を使用することがあります。ただし、このモデルはアフリカ言語の研究を支援するための基礎的なツールとして意図されています。
🌐 倫理的な考慮事項とリスク
InkubaLMは、5つのアフリカ言語向けに開発された小型言語モデルです。このモデルは、感情分析、機械翻訳、AfriMMLU、AfriXNLIタスクでのみ評価されており、すべての可能な評価シナリオを網羅していません。他の言語モデルと同様に、InkubaLMの潜在的な出力を事前に予測することは不可能であり、場合によっては、モデルは不正確、バイアスがある、または不快な応答を生成することがあります。したがって、モデルをどのようなアプリケーションで使用する前に、ユーザーは意図した使用目的に合わせた安全テストとチューニングを行う必要があります。
📖 引用
@article{tonja2024inkubalm,
title={InkubaLM: A small language model for low-resource African languages},
author={Tonja, Atnafu Lambebo and Dossou, Bonaventure FP and Ojo, Jessica and Rajab, Jenalea and Thior, Fadel and Wairagala, Eric Peter and Anuoluwapo, Aremu and Moiloa, Pelonomi and Abbott, Jade and Marivate, Vukosi and others},
journal={arXiv preprint arXiv:2408.17024},
year={2024}
}
📝 モデルカードの作成者
Lelapa AI - 基礎研究チーム
📞 モデルカードの問い合わせ先
Lelapa AI