今回はサイバーさんの
大規模日本語モデルを
Google Colabで試してみることにしました
解説動画はこちら
はじめに
サイバーエージェントから日本語LLM
OpenCALMが発表されたので
Google Colabで動かしてみることとします
詳細はこちら
chatGPTなどとは違い
モデルの性能も
いくつか種類がある様で
こんな感じのモデル構成になっています
今回は一番小さい small モデルを試します
必要なもの
Google Colabで動かすのに必要なのは
・「ランタイムタイプの変更」:GPUに変更する
Colabのメニューから「ランタイムタイプの変更」で
GPUに変更しておきましょう
・必要なライブラリのインストール
Google Colabのライブラリだけでは
動かないので次の2つをインストールしましょう
1分くらいでインストール出来ます
・ライブラリやモデルのインポート
次のコードでライブラリと
モデルをセットアップ出来ます
エラーはライブラリなどが
インストール出来ていない場合に起きるので
先にインストール確認しておきましょう
次のコードは入力用の関数です
先に実行しておきましょう
ここまで揃ったらあとは実行のみです
文章を入力して実行してみましょう
次のような文章が生成されました
正直な話
精度に関しては良く分かりません
実行毎に結果は変わるので
良いものが出るまで
繰り返してみることをお勧めします
今回はサイバーエージェントのLLMを
ご紹介しました
それでは
大規模日本語モデルを
Google Colabで試してみることにしました
解説動画はこちら
はじめに
サイバーエージェントから日本語LLM
OpenCALMが発表されたので
Google Colabで動かしてみることとします
最大68億パラメータの
日本語LLM(大規模言語モデル)
日本語LLM(大規模言語モデル)
オープンなデータで学習した
商用利用可能なモデルとのことです
商用利用可能なモデルとのことです
詳細はこちら
chatGPTなどとは違い
入力した文章の
続きとなる文章を生成してくれる
LLMになっています
続きとなる文章を生成してくれる
LLMになっています
モデルの性能も
いくつか種類がある様で
Model | Params | Layers | Dim | Heads | Dev ppl |
---|---|---|---|---|---|
cyberagent/open-calm-small | 160M | 12 | 768 | 12 | 19.7 |
cyberagent/open-calm-medium | 400M | 24 | 1024 | 16 | 13.8 |
cyberagent/open-calm-large | 830M | 24 | 1536 | 16 | 11.3 |
cyberagent/open-calm-1b | 1.4B | 24 | 2048 | 16 | 10.3 |
cyberagent/open-calm-3b | 2.7B | 32 | 2560 | 32 | 9.7 |
cyberagent/open-calm-7b | 6.8B | 32 | 4096 | 32 | 8.2 |
こんな感じのモデル構成になっています
今回は一番小さい small モデルを試します
必要なもの
Google Colabで動かすのに必要なのは
1.「ランタイムタイプの変更」:GPUに変更する
2.必要なライブラリのインストール
3.ライブラリやモデルのインポート
です・「ランタイムタイプの変更」:GPUに変更する
Colabのメニューから「ランタイムタイプの変更」で
GPUに変更しておきましょう
・必要なライブラリのインストール
Google Colabのライブラリだけでは
動かないので次の2つをインストールしましょう
!pip install transformers !pip install accelerate
1分くらいでインストール出来ます
・ライブラリやモデルのインポート
次のコードでライブラリと
モデルをセットアップ出来ます
import torch from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("cyberagent/open-calm-small", device_map="auto", torch_dtype=torch.float16) tokenizer = AutoTokenizer.from_pretrained("cyberagent/open-calm-small")
エラーはライブラリなどが
インストール出来ていない場合に起きるので
先にインストール確認しておきましょう
次のコードは入力用の関数です
先に実行しておきましょう
# 入力用の関数を定義 def make_text(input_text): inputs = tokenizer(input_text, 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, ) return tokenizer.decode(tokens[0], skip_special_tokens=True)
ここまで揃ったらあとは実行のみです
文章を入力して実行してみましょう
input_text = "文章を入力、" out = make_text(input_text) print(out)
次のような文章が生成されました
吾輩は猫である、つまり猫である。
猫が猫であるということは、
すなわち猫であるということは、
つまり猫であるということである。
すなわち猫であるということは、
つまり猫であるということである。
これは、猫に人間が従うという前提が、
猫に人間を従わせるという前提が前提になっているからである。
猫に人間を従わせるという前提が前提になっているからである。
猫は、人間に従属する、従属関係にある。
猫は、人間に従属する
諦めたらそこで試合終了ですよ、
正直、今、プロでも勝てる試合もそんなにない。
しかも、まだ2試合あるし。
まあ、その状態は、
プロでも通用しないってことですよね。
プロでも通用しないってことですよね。
で、その状態での、
4連敗は、
かなり、ヤバい。
もう、
負けると、
もう、
俺は高校生探偵、工藤新一。
幼馴染と遊園地へ遊びに行って、
黒ずくめの男の怪しげな取引現場を目撃した、
同級生の阿久津。
そして、阿久津は、ある事件の犯人に成りすまして、
美人でかっこいい高校生探偵・工藤新一と名乗り、
高校生探偵事務所を開いたのだ。
幼馴染と遊園地へ遊びに行って、
黒ずくめの男の怪しげな取引現場を目撃した、
同級生の阿久津。
そして、阿久津は、ある事件の犯人に成りすまして、
美人でかっこいい高校生探偵・工藤新一と名乗り、
高校生探偵事務所を開いたのだ。
その依頼を受けた新一は、阿久津に、
事件の詳細を尋ねた。
それは「工藤新一」という同級生の阿久津
勝手に色々な物語を生成してくれます事件の詳細を尋ねた。
それは「工藤新一」という同級生の阿久津
正直な話
精度に関しては良く分かりません
実行毎に結果は変わるので
良いものが出るまで
繰り返してみることをお勧めします
今回はサイバーエージェントのLLMを
ご紹介しました
それでは
コメントする