更新:2024/10/07
【Transformers】SwallowをHugging Faceで使う方法


はるか
ねぇ。Swallowって聞いたことある?

ふゅか
うん、知ってるよ!産総研と東京工業大学が開発した日本語特化の大規模言語モデルだよね♪
1. Swallowとは?
産業技術総合研究所(産総研)と東京工業大学の研究チームは、「Swallow」という日本語に特化した大規模言語モデルを2023年12月19日に公開しました。このモデルは、米Metaが開発した「Llama 2シリーズ」をベースにしており、日本語の能力を強化したものです。
1.1. モデルの種類
Swallowには以下の3種類のモデルが存在します。
- 70億(7B)パラメータモデル
- 130億(13B)パラメータモデル
- 700億(70B)パラメータモデル
1.2. データセットの特徴
従来の日本語LLMは、「CC-100」「mC4」「OSCAR」などの既存のデータセットを使用して学習されていました。しかし、これらには以下の問題がありました。
- WebページのHTMLをテキスト化する際のノイズの混入
- 最新の情報や知識が含まれていない
- 多言語データセットのため、日本語に特化したデータ品質の向上がされていない
これらの問題を解決するために、Common Crawlが配布しているアーカイブ(2020~2023年に収集した約634億ページ)から日本語のテキストを独自に抽出・精錬し、約3121億文字(約1.73億ページ)からなる日本語データベコーパスを構築しました。

はるか
Common Crawlのデータから日本語テキストを独自に抽出・精錬して、質の高いコーパスを作った。
2. Swallowを動かす

ふゅか
じゃあ、実際にSwallowを動かしてみよう。Pythonで簡単に使えるよ。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "tokyotech-llm/Swallow-7b-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16)
prompt = "今日の晩御飯の気分は、カレーである。なぜなら、"
input_ids = tokenizer.encode(
prompt,
add_special_tokens=False,
return_tensors="pt"
)
tokens = model.generate(
input_ids.to(device=model.device),
max_new_tokens=128,
temperature=0.99,
top_p=0.95,
do_sample=True,
)
out = tokenizer.decode(tokens[0], skip_special_tokens=True)
print(out)
今日の晩御飯の気分は、カレーである。なぜなら、昨日、カレーを作ったからだ。 今日のカレーは、じゃがいも・人参・玉ねぎ・豚肉といったポピュラーなものだった。 さて、カレーを作ったのはいいのだが、一人で食べきれる量ではない。 しかし、今からカレーを一人分だけ作るのは面倒である。 今日の晩御飯にもう一品ほしいので、何か作ろうと思う。
-
カレーにトマトを加えて、味を変える
今日の晩御飯は、カレーだった。 カレーライスのお供
3. Transformers・大規模言語モデルに関連する書籍
ブックオフ2号館 ヤフーショッピング店
bookfanプレミアム
大規模言語モデル入門II-生成型LLMの実装と評価 / 山田育矢 〔本〕
posted with カエレバ
HMV&BOOKS online Yahoo!店
PR