watashihakobashi's picture
Update README.md
0143b56 verified
|
raw
history blame
4.77 kB
metadata
license: llama2
language:
  - ja
  - en

モデル概要

Llama2-13bに日本語語彙を追加して継続事前学習を行った大喜利言語モデルです。
事前学習後に大喜利データでFine-tuningしています。

本モデルはAWS LLM 開発支援プログラムの支援を受けております。
継続事前学習ではAWS Trainium を搭載したインスタンス trn1.32xlarge×4の並列学習を行っております。

トークナイザー

Llama2の本来のトークナイザーに含まれる語彙32,000に日本語の語彙をBPEで学習して13,046追加し、総語彙サイズは45,046です。
語彙を追加する際、漢字一文字のトークンは、常用漢字と学習データ内で出現頻度が高いものに絞っています。
数字と文字がペアのトークンや記号と文字がペアのトークンが学習されないように、予めデータから数字や記号を取り除いています。

学習データ

以下のコーパスを使用して、事前学習を行いました。その際のトークン数は650億トークンでした。

使用方法

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "watashiha/Watashiha-Llama-2-13B-Ogiri-sft"
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16)

if torch.cuda.is_available():
    model = model.to("cuda")

odai = "マジシャンのショーでアシスタントが消えたまま戻ってこない時の一言。"
text = f"""
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。

### 指示:
入力の文は大喜利のお題です。お題に沿った面白いボケを生成してください。

### 入力:
{odai}

### 応答:
"""
text = text.lstrip()

with torch.no_grad():
    token_ids = tokenizer.encode(text, return_tensors="pt").to(model.device) 
    output_ids = model.generate(
                token_ids,
                do_sample=True,
                min_new_tokens=1,
                max_new_tokens=64,
                top_p=0.9,
                top_k=50,
                temperature=0.8,
                pad_token_id=tokenizer.pad_token_id,
                eos_token_id=tokenizer.eos_token_id,
    )
output = tokenizer.decode(output_ids.tolist()[0], skip_special_tokens=True)
print(output)
"""
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。

### 指示:
入力の文は大喜利のお題です。お題に沿った面白いボケを生成してください。

### 入力:
マジシャンのショーでアシスタントが消えたまま戻ってこない時の一言。

### 応答:
帰りの電車賃あげるから
"""

AWSのinf2.xlargeで動かす方法

AWSのinf2インスタンスはパラメータ数が10Bを超えるモデルをGPUインスタンスと比べ安価に運用できます(2024/1/24現在)。
こちらは近日、モデルとソースコードを公開予定です。

性能比較

以下は大喜利Fine-tuningしたモデルが出力させたボケを、ケータイ大喜利レジェンドに4段階で評価してもらった結果です。

圏外:お題を日本語として理解できていない
1本:お題を理解はできているがボケとして成立していない(面白みがない)
2本:ボケとして成立している(面白みがある)
3本:面白い(一定以上の面白さがある)

圏外 1本 2本 3本
Watashiha-Llama-2-13B-Ogiri-sft 75 133 209 81
watashiha-gpt-6b 77 204 175 44