東大 松尾研究室製の大規模言語モデル「Weblab-10B」が公開されたので試してみました
本日の朝、東大の松尾研究室で開発された大規模言語モデル(LLM)である「Weblab-10B」が公開されました。
100億パラメータサイズ・日英2ヶ国語対応の大規模言語モデル“Weblab-10B”をオープンソースで公開しました。 – 東京大学松尾研究室 – Matsuo Lab
日本の大学で開発されたものなので、日本語にも対応(正確には、日英に対応とのこと)。パラメータ数は100億。
2つのモデルがあり、ベースとなるモデル「Weblab-10B」と、Alpacaなどのデータセットによる事後学習(ファインチューニング)を行った「Weblab-10B-instruction-sft」の2つです。
なお、前者のベースモデルは与えた文章の続きを書き出し、後者の事後モデルでは質問に対して返信することができるモデルとなってます。
ちなみに、jsquadなどの日本語向けのベンチマークスコアによると、「Weblab-10B」が66.38、「Weblab-10B-instruction-sft」が78.78となってます。
以前、このブログ記事(りんなチャットAI「rinna japanese-gpt-neox-3.6b」と楽しく??会話してみたら……: EeePCの軌跡)でも試したりんなAI「rinna japanese-gpt-neox-3.6b」が55.17とのことなので、相当賢いAIモデルであることが分かるかと思います。
一つ、注意点ですが、この「Weblab-10B」、「Weblab-10B-instruction-sft」共に商用利用不可とのこと。
個人で試す分には問題ないので、早速試してみました。
なお、コードはそれぞれ、以下のサイトを参考にしてます。
「Weblab-10B」:matsuo-lab/weblab-10b · Hugging Face
「Weblab-10B-instruction-sft」:matsuo-lab/weblab-10b-instruction-sft · Hugging Face
実は、これらのサイトにかかれたサンプルコードではうまく動かなかったので、以下のサイトも参考にしました。
Google Colab で Weblab-10B を試す|npaka
今朝プレスリリースされたばかりなのに、もう試している人がいることに驚きです。
ではまずは、「Weblab-10B」を試します。
以下のコードを「weblab-10b.py」という名前で保存。
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("matsuo-lab/weblab-10b")
model = AutoModelForCausalLM.from_pretrained(
"matsuo-lab/weblab-10b",torch_dtype=torch.float16,device_map="auto"
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.7,
top_p=0.9,
)
output = tokenizer.decode(output_ids.tolist()[0])
print(output)
これを実行します。
> python weblab-10b.py
コードにあるように「吾輩は猫である。」の文章の続きを書かせてみたんですが、
藪医者の独り言
医療・介護現場での人手不足が深刻化している。厚生労働省の調査によると、2015年の医療・介護の離
と返ってきました。うーん、ちょっと変な文章ですねぇ。
ちなみに、コード内にある「device="auto"」のおかげで、うちの4GBしかないGPU(GTX1650Ti)でもいい感じにGPUを使ってくれました。
が、それでもたった100語の文書を吐き出すのに数分かかってますね。
ベースモデルの動作を確認したので、続いて「Weblab-10B-instruction-sft」を動かしてみます。
コードは以下。「weblab-10b-instruction-sft.py」という名前で保存。
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",torch_dtype=torch.float16,device_map="auto")
text = """以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
### 指示:
大規模言語モデルについて説明してください。
### 応答:
"""
token_ids = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt")
with torch.no_grad():
max_new_tokens=256,
do_sample=True,
temperature=0.7,
top_p=0.9,
)
output = tokenizer.decode(output_ids.tolist()[0])
print(output)
なお、真ん中辺りにある「###指示:」の下に、質問文を書く感じです。
これを実行。
> python weblab-10b-instruction-sft.py
実行時にはメインメモリーが29GB、GPUの4GBは目一杯使ってました。それで、実行時間は約7分。
(初回のモデルダウンロード時間を除く。なお、どちらも最初だけ21.5GBのダウンロードが行われます)
で、以下のようなアウトプットが出てきました。
以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
### 指示:
大規模言語モデルについて説明してください。
### 応答:
大規模言語モデルは、特定の分野の言語モデルのネットワークであり、これらのネットワークを使用してデータを分析し、言語を理解するために使用することができる。大規模言語モデルは、単語レベルでの言語の分析、または単語レベルでの単語間の関係の分析に使用できる。大規模言語モデルは、言語の複雑さを理解し、言語の多様な側面をよりよく理解するために使用できる。
うん、語数を100から256まで増やしたこともあるんでしょうが、かなりまともな文章ですね。
じゃあ、ちょっと質問を変えてみましょう。「指示:」の後ろを「データドリブン経営について説明してください。」と変えてみました。
で、その結果「応答:」は以下のように出てきます。
データドリブン経営は、データを使用して意思決定を行い、意思決定に基づいて行動することを目指す経営手法です。データドリブン経営では、企業はビジネスの成功に影響を与える可能性のあるデータを収集し、それを分析して、顧客、競合、環境のパターンを理解することができます。これらのパターンを理解することで、企業は将来の成功を予測し、意思決定を行うことができます。
こういう一般論的な文章は、得意みたいですね。さほどおかしなことは言ってません。
これを職場用に向けてファインチューニングしたいところなんですが、商用利用不可なんですよねぇ。
しかも、これをファインチューニングするためのハードウェアってどんなもんがいるんでしょう?想像もつきません。
と、いうことで、なかなかいい感じのモデルだということは分かりました。
« 大垣の実家に帰省したついでに「ソフトピアジャパン」に行ってきた | トップページ | 中部国際空港(セントレア)へ行ってきました »
「数値解析系」カテゴリの記事
- Tanuki-8Bの4ビット量子化ggufモデルでRAGをやってみました(2024.09.14)
- 純日本産なローカルLLM「Tanuki-8B」を試してみた(2024.09.02)
- 東京のセールスフォースに行ってきました(2024.07.24)
- ローカルLLM「Llama-3-ELYZA-JP-8B」にいろいろ聞いてみた(2024.07.01)
- ElyzaのLlama3ベースの言語モデル「Llama-3-ELYZA-JP-8B」のRAGが予想以上に賢かった件(2024.06.27)
« 大垣の実家に帰省したついでに「ソフトピアジャパン」に行ってきた | トップページ | 中部国際空港(セントレア)へ行ってきました »
コメント