サイトのデザインが新しくなりました。

【日本語版LLM】東大松尾研のWeblab-10b、使い方・実践をまとめて解説

日本語版LLM Weblab-10b 解説

先日、東京大学の松尾研究室が大規模言語モデルWeblab-10bを開発しました。
AIの第一人者として知られる松尾教授が率いる研究室ということもあり、多くの人が期待しているのではないでしょうか?

ということで、概要、導入方法、実際に使ってみた感想をまとめてみました。
ぜひ、最後までご覧ください!

なお弊社では、生成AIツール開発についての無料相談を承っています。こちらからお気軽にご相談ください。

目次

東大松尾研発LLMWeblab-10bの概要

Weblab-10bは東京大学の松尾研究室が開発した大規模言語モデルです。
日本語と英語の2ヶ国語に対応しており、100億パラメータを有しています。

学習データは、日本語データが少ないという課題から次のように、英語と日本語のものを使用しています。

  • The Pile(英語)
  • Japanese-mC4(日本語)

さらに学習後、ファインチューニングを行ったことで、日本語の精度が上昇。
その結果、Weblab-10bは日本語の言語理解ベンチマーク(JGLUE)で最高水準を獲得しています!

https://onl.tw/WdGyyLc

先日紹介したStability AIの日本語モデルをはじめ、サイバーエージェント社のopen calmやMeta社のLlama 2も上回る結果となってますね。

ただ、この比較はオープンソースモデルに限られています。
ChatGPTのような商用モデルは含まれていませんが、それでもこのモデルのポテンシャルの高さが伺えます。

さて、次はこの高性能なモデルの導入方法について詳しく見ていきましょう!

なお、その他の日本語LLMについて詳しく知りたい方はこちらをご覧ください。
【日本語版LLM】東大松尾研のWeblab-10b、使い方・実践をまとめて解説

Weblab-10bの導入方法

Google Colab Pro+ のA100 という環境で動かしました。

あわせて読みたい

こちらのHugging Faceのページに書いてあるプログラムのままだと動かなかったので、少し改良してます。

あわせて読みたい
matsuo-lab/weblab-10b-instruction-sft · Hugging Face We’re on a journey to advance and democratize artificial intelligence through open source and open science.

参考にしたのはこちらのNoteです。
ありがとうございます!

note(ノート)
Google Colab で Weblab-10B を試す|npaka 「Google Colab」で「Weblab-10B」を試したので、まとめました。 【注意】Google Colab Pro/Pro+のA100で動作確認しています。 1. Weblab-10B 「Weblab-10B」は、「東京大...

これから先は、うまくいかなかった原因なども載せているのでお役に立てば幸いです。

それでは、まず、transformersモジュールをインストール。

pip install transformers

次は、以下を実行する。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("matsuo-lab/weblab-10b-instruction-sft")
model = AutoModelForCausalLM.from_pretrained("matsuo-lab/weblab-10b-instruction-sft")

# VRAMがクラッシュしたので、コメントアウト
# if torch.cuda.is_available():
#   model = model.to("cuda")

ちなみに、Hugging Faceで載っている以下の箇所はコメントアウトしてます。

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

この処理をアンコメントして実行すると私の場合はこのようになりました。

先程コメントアウトしたコードは、GPUで処理を行うようにするためのものです。
Google Colab Pro+ の環境に割り当てられているVRAMが不足してプログラムが動かなかったようです。

最後に、以下を実行します。

text = 
# プロンプト
"""以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。

### 指示:
大規模言語モデルについて説明してください。

### 応答:
"""


token_ids = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt")

with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        max_new_tokens=100,
        do_sample=True,
        temperature=0.5,
        top_p=0.9,
        # 以下3つがないためコメントアウト
        # pad_token_id=tokenizer.pad_token_id,
        # bos_token_id=tokenizer.bos_token_id,
        # eos_token_id=tokenizer.eos_token_id
    )

output = tokenizer.decode(output_ids.tolist()[0])
print(output)

ちなみに、上記プログラムでも以下のようにコメントアウトしています。

        # 以下3つがないためコメントアウト
        # pad_token_id=tokenizer.pad_token_id,
        # bos_token_id=tokenizer.bos_token_id,
        # eos_token_id=tokenizer.eos_token_id

公式のHugging Faceにも追記されていたのですが、それぞれの値が取得できておらずエラーになるためです。
実際に、以下を実行すると全部Noneになりました。

print(tokenizer.pad_token_id)
print(tokenizer.bos_token_id)
print(tokenizer.eos_token_id)
実行結果

以上で導入方法は終了です。
それでは、出力結果を確認していきましょう!

Weblab-10bを実際にやってみた

Weblab-10bモデルを実際に動かすために、以下のプログラム(再掲)を実行します。

text = 
# プロンプト
"""以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。

### 指示:
大規模言語モデルについて説明してください。

### 応答:
"""

token_ids = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt")

with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        max_new_tokens=650,
        do_sample=True,
        temperature=0.5,
        top_p=0.9,
        # 以下3つがないためコメントアウト
        # pad_token_id=tokenizer.pad_token_id,
        # bos_token_id=tokenizer.bos_token_id,
        # eos_token_id=tokenizer.eos_token_id
    )

output = tokenizer.decode(output_ids.tolist()[0])
print(output)

そうすると、以下のような出力結果になります。

以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。

### 指示:
大規模言語モデルについて説明してください。

### 応答:
大規模言語モデルは、複数の言語を対象とするコンピュータモデルであり、複雑な言語モデルを構築するために使用される。
大規模言語モデルは、言語の特徴の分析、言語の翻訳、および言語の生成に使用できる。
大規模言語モデルは、テキストの分析、テキストの生成、およびテキストの分類などのタスクに使用できる。
大規模言語モデルは、大規模なテキストデータセットを分析するために使用でき、大量のデータを処理して、言語の特徴を理解することができる。

おー!
少しこなれていないですが、出力は正しいです!

次は、先日ご紹介したStability AI社のJapanese StableLM Alphaで比較!
出力結果はこちらです!

大規模言語モデルは、自然言語処理の分野で広く使用されている人工知能モデルの一種です。
このモデルは、大量のテキストデータを使用して、文脈のある応答を生成することができます。
大規模言語モデルは、言語の理解、文章の作成、応答の作成など、さまざまなタスクに使用できます。

ベンチマークではWeblab-10を下回っていましたが、読みやすい文章ですね。
このタスクに関しては、たまたま良い結果が出ただけかもしれないですが!

ちなみに、ChatGPTに同じプロンプトを入力してみた結果は以下です。

大規模言語モデルは、数十億から数兆のパラメータを持つ深層学習モデルの一種で、
テキストデータの大量のサンプルを使用して訓練されます。
これらのモデルは、テキスト生成、文章の補完、質問応答、翻訳などのタスクにおいて高い性能を発揮することができます。

大規模言語モデルの主な特徴は以下の通りです:
1. **膨大なデータセットでの訓練**: 
これらのモデルは、ウェブページ、書籍、記事などの大量のテキストデータを使用して訓練されます。
2. **転移学習の利用**: 
一度大量のデータで事前訓練されたモデルは、特定のタスクに特化してさらに訓練することができます。
これにより、少量のデータでも高い性能を達成することが可能です。
3. **多様な応用**: 
言語モデルは、テキスト生成、文章の補完、質問応答、翻訳だけでなく、
感情分析や文章の要約など、多岐にわたるタスクに適用することができます。

OpenAIのGPTシリーズやGoogleのBERTは、大規模言語モデルの代表的な例として知られています。
これらのモデルは、自然言語処理の分野において革命的な進歩をもたらし、多くの応用例が生まれています。

さすがChatGPT。
人との会話向けにチューニングされているだけあってこなれてます!

以上で、実際にやってみたパートは終了です。
今後はもっと評価指標を定め、複数項目を比較した結果も載せていきたいと思います。
JGLUEについて調べ、追記したいと思ってますのでご期待くださいっ!

サービス紹介資料

生成系AIの業務活用なら!

・生成系AIを活用したPoC開発

・生成系AIのコンサルティング

・システム間API連携

最後に

いかがだったでしょうか?

弊社では

・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
ハルシネーション対策AIツールの開発
自社専用のAIチャットボットの開発

などの開発実績がございます。

まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、弊社紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • Leon Kobayashi

    必ずフォローすべきAIエバンジェリスト(自称) => 元東証一部上場ITコンサル (拙者、早口オタク過ぎて性に合わず退社)<-イマココ 【好きなもの】リコリコ・しゃぶ葉 宜しくおねがいします。

  • URLをコピーしました!
  • URLをコピーしました!
目次