機械学習・ディープラーニング

SwallowをHugging Faceで使う方法

記事内に広告が含まれています。

はるか
ねぇ。Swallowって聞いたことある?
ふゅか
うん、知ってるよ!産総研と東京工業大学が開発した日本語特化の大規模言語モデルだよね♪

Swallowとは?

産業技術総合研究所(産総研)と東京工業大学の研究チームは、「Swallow」という日本語に特化した大規模言語モデルを2023年12月19日に公開しました。このモデルは、米Metaが開発した「Llama 2シリーズ」をベースにしており、日本語の能力を強化したものです。

モデルの種類

Swallowには以下の3種類のモデルが存在します。

  • 70億(7B)パラメータモデル
  • 130億(13B)パラメータモデル
  • 700億(70B)パラメータモデル

データセットの特徴

従来の日本語LLMは、「CC-100」「mC4」「OSCAR」などの既存のデータセットを使用して学習されていました。しかし、これらには以下の問題がありました。

  • WebページのHTMLをテキスト化する際のノイズの混入
  • 最新の情報や知識が含まれていない
  • 多言語データセットのため、日本語に特化したデータ品質の向上がされていない

これらの問題を解決するために、Common Crawlが配布しているアーカイブ(2020~2023年に収集した約634億ページ)から日本語のテキストを独自に抽出・精錬し、約3121億文字(約1.73億ページ)からなる日本語データベコーパスを構築しました。

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

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)

 

今日の晩御飯の気分は、カレーである。なぜなら、昨日、カレーを作ったからだ。 今日のカレーは、じゃがいも・人参・玉ねぎ・豚肉といったポピュラーなものだった。 さて、カレーを作ったのはいいのだが、一人で食べきれる量ではない。 しかし、今からカレーを一人分だけ作るのは面倒である。 今日の晩御飯にもう一品ほしいので、何か作ろうと思う。
-
カレーにトマトを加えて、味を変える
今日の晩御飯は、カレーだった。 カレーライスのお供

Transformersに関連する書籍

最後に、Transformersに関連する書籍についてまとめました!

機械学習エンジニアのためのTransformers ―最先端の自然言語処理ライブラリによるモデル開発
大規模言語モデル入門

-機械学習・ディープラーニング
-, , ,