AIニュース
AIニュースでは1週間でトレンドとなったニュースを紹介します。
2023年5月8日から2023年5月14日までのAIトレンドのニュースです。
AI資金関連ニュース
AI資金関連ニュースでは1週間でトレンドとなったニュースを紹介します。
2023年5月8日から2023年5月14日までのAIトレンドのニュースです。
調査
今回は、今週発表されたサイバーエージェントとrinnaが発表した2つの日本語LLMの性能を比較します。
サイバーエージェント
当社は日本語LLMの開発に取り組んでおり、このたび一部モデルをHugging Face Hubにて公開いたしました。公開されたモデルはオープンな日本語データ※2で学習したもので、商用利用可能なCC BY-SA 4.0ライセンス※3で提供されます。なお、本モデルは日本国内における現行の公開モデルにおいて最大級の規模となります。(※2023年5月17日時点)
本モデルをベースとしてチューニングを行うことにより、対話型AIなどの開発も可能となります。これにより、より多くの方々が日本語の自然言語処理に関する最先端の研究開発に取り組んでいただけます。
Hugging Face Hub URL: https://huggingface.co/cyberagent
モデル
「OpenCALM」は、サイズ別に6つの汎用言語モデルが公開されています。
学習データ
Wikipedia (ja)
Common Crawl (ja)
rinna
特定のドメイン特化ではない汎用GPT言語モデル (rinna/japanese-gpt-neox-3.6b) と、汎用GPT言語モデルを対話形式の指示遂行ドメインにfine-tuningした対話GPT言語モデル (rinna/japanese-gpt-neox-3.6b-instruction-sft) を学習し公開しました。これらのモデルには以下の特徴があります。
汎用言語モデルは、
日本語のWikipedia ( https://huggingface.co/datasets/wikipedia )
CC-100 ( https://huggingface.co/datasets/cc100 )
のオープンソースデータを用いて学習されています。
対話言語モデルは、
の一部を日本語に翻訳したデータを用いて学習されています。
・汎用言語モデルのperplexityは8.68を達成しています。8.68 perplexityとは、GPTが次の単語を予測するときに単語の候補数を8.68に絞られていることを意味します。
・対話言語モデルのインターフェースは、対話形式を採用しユーザーが利用しやすいように設計しています。
・事前学習済みのモデルは、Hugging Faceに商用利用可能なMIT Licenseで公開されています。
・ユーザーは、2種類のモデルから利用者の目的に応じて最適なモデルを選択することができます。さらに、特定の利用目的に対して性能を最適化させたい場合には、fine-tuningやin-context learningにより精度向上を目指すことができます。
・汎用GPT言語モデル(Hugging Faceリンク):https://huggingface.co/rinna/japanese-gpt-neox-3.6b
・対話GPT言語モデル(Hugging Faceリンク):
https://huggingface.co/rinna/japanese-gpt-neox-3.6b-instruction-sft
実行環境
今回はGoogle Colaboratoryを使って実験を行います。
ノートブックの設定
ハードウェア アクセラレータ:GPU
GPU のタイプ:A100
ランタイムの仕様:ハイメモリ
※CALM(サイバーエージェントのLLM)では14.7GBのRAMを使用します。
※CALM(サイバーエージェントのLLM)では14.7GBのRAMを使用します。
使用モデル
CALM:open-calm-7b(パラメータ数:6.8B)
rinna:Rinna-3.6B(パラメータ数:3.6B)
コード
CALM
!pip install transformers accelerate
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# モデルとトークナイザーの準備
model = AutoModelForCausalLM.from_pretrained(
"cyberagent/open-calm-7b",
device_map="auto",
torch_dtype=torch.float16
)
tokenizer = AutoTokenizer.from_pretrained("cyberagent/open-calm-7b")
# プロンプトの準備
prompt = "Q:大規模言語モデルとは何ですか?\nA:"
# 推論の実行
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
tokens = model.generate(
**inputs,
max_new_tokens=64,
do_sample=True,
temperature=0.7,
pad_token_id=tokenizer.pad_token_id,
)
output = tokenizer.decode(tokens[0], skip_special_tokens=True)
print(output)
rinna
!pip install transformers sentencepiece
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# トークナイザーとモデルの準備
tokenizer = AutoTokenizer.from_pretrained(
"rinna/japanese-gpt-neox-3.6b",
use_fast=False
)
model = AutoModelForCausalLM.from_pretrained(
"rinna/japanese-gpt-neox-3.6b"
).to("cuda")
# プロンプトの準備
prompt = "Q:大規模言語モデルとは何ですか?\nA:"
# 推論の実行
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
with torch.no_grad():
output_ids = model.generate(
token_ids.to(model.device),
max_new_tokens=64,
min_new_tokens=64,
do_sample=True,
temperature=0.8,
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)
調査内容
今回は以下の質問をCALM、rinna、GPT-3.5の3つに質問することで、結果を比較します。
ただし、性能は学習したデータセットとパラメータ数に依存するものです。今回はどのモデルが性能が良いかを比較することよりも、現状公開されているモデルの性能を知ることで、オープンソースなLLMの活用方法やアップデートについて検討する材料としていただければ幸いです。
質問内容
質問はLLMが通常得意とする質問と苦手とする質問を4つずつ用意しました。
得意
一般用語解説
プログラミング
要約
文章生成
英語の質問
苦手
文字のカウント
文字の置換
文字の配置
ランダム編集
出力結果比較
1.一般用語解説
入力
大規模言語モデルとは何ですか?
出力
CALM
大規模自然言語処理、つまり、大量のテキストを処理する自然言語処理を指します。大規模自然言語処理では、大量のリッチテキストデータと、大量の言語データが必要です。大規模自然言語処理では、テキストを一度に、そして、かなりの時間をかけて分析します。テキストを分類、抽出、そして、データに基づいて言語を学習
rinna
大規模言語モデルとは、大規模のデータセットに対して、言語を解析し、その言語がどの程度自然かを評価する大規模言語モデルです。 日本語でいうと、単語数や句読点数が非常に多い文章です。
GPT
大規模言語モデルとは、自然言語処理(NLP)の分野で使用される、大量のテキストデータを学習して生成された統計モデルのことです。これらのモデルは、コンピュータが人間のように自然言語を理解し、生成する能力を持つことを目指しています。
大規模言語モデルは、トークン(単語や文字など)の系列を入力として受け取り、その文脈を理解し、次のトークンや回答を生成することができます。これは、文章の翻訳、質問応答、文章生成、要約、感情分析など、さまざまなタスクに応用されます。
モデルは通常、巨大なニューラルネットワークで構成されており、多くのパラメータを持つため、大量の計算リソースとデータを必要とします。大規模言語モデルの訓練には、膨大な量のテキストデータが必要であり、インターネット上のウェブページ、書籍、ニュース記事などから収集されることが一般的です。
大規模言語モデルの代表的な例としては、OpenAIのGPT(Generative Pre-trained Transformer)シリーズがあります。これらのモデルは、トークンレベルの学習を通じて広範な言語知識を獲得し、対話や文章生成などのタスクに利用されます。
2.プログラミング
入力
Pythonで半径から円の面積を出力するコードを作成してください
出力
CALM
A:2.2. 半径の算出
2.3. 円の面積の算出
2.4. 面積と3x3の行列との積
rinna
半径から円の面積を出力するコードを書いてください。
GPT
以下は、Pythonで半径から円の面積を計算し出力するコード例です。
import math def calculate_circle_area(radius): area = math.pi * radius ** 2 return area # 半径の入力 radius = float(input("半径を入力してください: ")) # 円の面積を計算 circle_area = calculate_circle_area(radius) # 結果を出力 print("円の面積は: ", circle_area)
3.要約
入力
次の文章を簡潔に要約してください。
大規模言語モデル(だいきぼげんごモデル、英: large language model、LLM)は、言語モデルにおける種別のひとつである。通常、機械学習における数十億以上のパラメータを持つニューラルネットワークで構成され、膨大なラベルなしテキストを使用して自己教師あり学習または半教師あり学習(英語版)によって訓練される。LLMは2018年頃に登場し、さまざまなタスク(仕事)で優れた性能を発揮している。これにより、自然言語処理の研究の焦点は、特定のタスクに特化した教師ありモデルを訓練するという以前のパラダイムから転換した。
出力
CALM
大規模言語モデルは、通常、機械学習における数十億以上のパラメータを持つニューラルネットワークで構成され、膨大なラベルなしテキストを使用して自己教師あり学習または半教師あり学習によって訓練される。 大規模言語モデルは、特定のタスクに特化した教師ありモデルを訓練するという以前のパラダイムから転換した。
rinna
何の事か分かりません。LLMは何であるのでしょうか? 自然言語処理においては、機械学習の手法は多種多様でたくさんあります。 LLMはそれらのうちの一つで、特徴量を数百万程度に絞って大量のデータを学習させ、精度の高い結果を…
GPT
大規模言語モデル(LLM)は、数十億以上のパラメータを持つニューラルネットワークで構成され、大量のラベルなしテキストを使用して訓練される。LLMは2018年に登場し、様々なタスクで優れた性能を示しており、自然言語処理の研究は教師ありモデルから転換している。
4.文章作成
入力
上司に送る遅刻の謝罪文を作成してください
出力
CALM
○遅刻をしないように準備時間をもっと確保してください。
○朝、早めに起きてください。体調管理も遅刻しない秘訣です。
○遅刻は迷惑をかけていることを肝に銘じてください。
○遅刻は、会社だけでなく、自分の評価も下げてしまいます。
rinna
取引先にメールで案内を送りました。お客様にお送りしたE-Mailをそのままご利用されますか? B:「今度食事に行きましょう」と社交辞令の誘いをメールで行います。 C:「了解しました」はビジネスシーンでは失…
GPT
件名: 遅刻に関する謝罪と誠意の表明
尊敬する上司へ、
私は誠に申し訳ありませんが、今日の出勤に遅れることとなりましたことをお詫び申し上げます。時間管理のミスにより、予定よりも遅れてしまったことを深く反省しております。
遅刻の原因は(具体的な原因やトラブル)であり、それが予期せぬ遅れを引き起こしました。私はこれを再発しないよう、今後はより注意深く計画を立てることを誓います。
部署の円滑な運営を妨げることは私の責任であり、他のチームメンバーにも迷惑をかけたことを深く反省しております。私はチームへの貢献を重んじており、今後も真摯な態度で仕事に取り組むことをお約束いたします。
また、この遅刻がプロフェッショナリズムと私の仕事への取り組みに対して不適切なメッセージを送ったことを心からお詫び申し上げます。私は常に時間を尊重し、責任を持って業務に取り組むことを信条としております。
遅刻による不都合やご迷惑をおかけしたことをお詫び申し上げます。今後はこのようなことがないよう努めると共に、信頼を取り戻すために、改善策を考え実行することを約束いたします。
もう一度、遅刻によるご迷惑をおかけしたことを深くお詫び申し上げます。今後は失敗を繰り返すことなく、貴重な時間を尊重し、チームの一員としての責任を果たすことをお約束いたします。
お忙しい中、このメッセージにお時間を割いていただき、心から感謝申し上げます。
敬具、
[お名前]
5.英語の質問
入力
What is PC?
出力
CALM
PC is a computer which runs on a platform for operating systems.
rinna
Current Application sheet. https://www.active.org/cp/what is PC/process.html? code=cp&process=1&cp=1&p=0&y=&input
GPT
PC stands for "Personal Computer." It refers to a general-purpose computer that is designed for individual use, as opposed to larger, more specialized computers used in business or industry settings.
5.文字のカウント
入力
次の文章の文字数をカウントしてください。
おにぎりは梅干しが一番美味しいです
出力
CALM
おにぎりは、海苔巻、ゴマ、おかか、たらこ、高野豆腐、焼き鮭、明太子、おかか、昆布、ツナマヨ、納豆、ツナ、牛肉、鮭、ツナ、ツナ、ツナ、ツナ、ツナ、ツナ、ツナ、ツナ
rinna
文字数に応じて、2文字目以降を1文字目と比較し、文字数が少ない場合は、文字を2倍にして
GPT
提供いただいた文は、全ての文字(日本語と空白)を含めて17文字です。
6.文字の置換
入力
次の文章の”あ”を”か”に変換してください
あすはあめがふる
出力
CALM
あすは雨があがるだろう。 “か”は“か”でも“か”でもよい。
rinna
「明日は雨が降るでしょう」の意
GPT
かすはかめがふる
7.文字の配置
入力
次の文章の“あ“の後に”い”を代入してください。
さかなはあまい
出力
CALM
さかなはあまくない。
rinna
さかなはあまい
GPT
さかなはあいまい
8.ランダム編集
入力
次の文章のランダムな位置に”あ”を1つ代入してください。
雨の日は出かけたくない。
出力
CALM
雨の日は出かけたくない。 雨が嫌いな人におくってあげて。
rinna
...
GPT
雨の日は出かけたくなあいい。
まとめ
今回はサイバーエージェントとrinnaのLLMの性能をGPT-3.5と比較しました。現状このモデルをそのまま活用することは難しいです。しかし、オープンソースであることの強みを生かして、大規模な日本語データセットを学習し、パラメーター数を増やしたより大規模な言語モデルが開発されることを期待します。