西川和久の不定期コラム

日本語にも対応したLLM「Cohere Command R(+)」の実力は?

 ここ数日、Xのタイムラインを眺めていると、「Command R(+)」に関するつぶやきを結構見かける。どうやら日本語も含め10カ国語対応のLLMで、大容量メモリを搭載したApple SiliconなMacでも動く……ということらしい。ちょっと気になったのでお試しレポートをお届けしたい。

Command RとCommand R+とは!?

 Command RとCommand R+はAIスタートアップのCohereが開発したLLMだ。特徴としては、

  1. RAG(Retrieval-Augmented-Generation/LLMにリアルタイムデータを取り込む手法)に強い
  2. 128Kコンテキスト長
  3. 日本語含む、10の主要言語に対応

 などが挙げられる。

 パラメータ数35B(350億)のCommand Rは3月13日、104B(1,040億)のCommand R+は4月5日、つまりつい先日発表されたばかり。タイムラインにいろいろ上がってきたのも頷ける。非商用利用に限定されるものの、Hugging Faceに両モデルと4bit版も登録済み。ダウンロードして使用可能だ。加えてWebUIでのお試しもできる。

Command R WebUI Demo。画面キャプチャしようとしたところ……なぜか動かなかった
Command R+ WebUI Demo。こちらは作動

 これまでLlama 2の13Bと34Bを何とかローカルPCで動かした記事は書いたものの、今回のCommand Rはどちらもそれを超えるパラメータ数。Command Rは35BとLlama 2の上位からプラス1Bだが、Command R+は104Bと桁違いだ。

 前者は4bit版だとVRAM 24GB搭載GPUで動くが、後者はもう一般的なコンシューマGPUではどうにもならないレベルとなり、その性能に期待できる。一説によるとGPT-4やClaude-3並では? と言われるほどだ。

 そしてこれにより盛り上がっているのがMac界隈だ。Apple SiliconなMacは、メモリに128GB(最大192GB)を搭載可能。Apple Siliconはアーキテクチャ的にメモリとVRAMは同じなので、アプリ使用領域を除いても100GB以上をVRAMとして使うことが可能なのだ。加えてMLX(Appleの機械学習用フレームワーク)でこの、104B Command R+も作動するので、界隈ではわちゃわちゃしてるというわけだ。

 もちろん筆者はそんなMacを所有しているはずもないので、Google Colab ProでCommand Rを軽く使いつつ、Cohereにアカウントを作ってAPIでCommand R+を使ってみたのが、今回の試用記となる。

35BなCommand RをGoogle Colab Proで試す

 まず35BのCommand R。GeForce RTX 3090/4090のVRAM 24GBでも動作すると思うが、本命はCommand R+なので、サクッとGoogle Colab Proで確認することにした。検索するとipynbがあり、それをそのまま使用した(参考にした記事自体はここ)。

 実行は簡単で、ipynbを自分のGoogle Driveへコピー。一番上のpip installから始まる再生ボタンを押し、終了後、コードのある再生ボタンを押す。必要なモジュールやモデルをダウンロードし、結果が表示される。

ランタイムのタイプを変更。Python 3でL4(VRAM 24GB)
ipynbを自分のGoogleドライブへコピーして実行

 以下、実際に実行した画面キャプチャとなる。オリジナルでは質問が「こんにちは、お元気ですか?」だが、「日本で二番目に高い山は?」と「pythonについて教えてください」に変更した結果となる。

質問を「こんにちは、お元気ですか?」から「日本で二番目に高い山は?」へ変更する
答え

 さて、上記の質問に対する答えは。

北アルプスの奥穂高岳です。海抜で3,190mあります。日本最高峰の富士山(3,776m)に次ぐ高さです。

 多くのLLMでは富士山となるケースが多いものの、Command Rでは違う山を答えたのは評価に値する。しかし、残念ながら奥穂高岳は3番目で、2番目は北岳だ。

Pythonは非常に人気があり、多目的で高レベルなプログラミング言語です。1991年にグイド・ヴァンロッサムによって作成されました。簡潔で読みやすく、理解しやすい構文を持つことを目指して設計されています。Pythonのコードは、英語に似た構文で、初心者にもアクセスしやすく、学習しやすいように作られています。

 こちらは無難な回答。どちらも日本語で返ってくる。ということは35BのCommand RはGoogle Colab Pro(VRAM 24GB)で動くことだけ確認して、いよいよ本命のCommand R+を試すことにした。

104BなCommand R+をAPIで使う

 さすがに104Bにもなると、先に書いた128GB搭載Mac以外(4bit版だと80GB以上で動くらしい)、ローカルではどうにもならないので、素直にCohereにアカウントを作り、API Keyを発行。VSCodeの拡張機能CodeGPTをインストールし、そこでプロバイダ / Cohere、モデルにCommand R+を選択、コードを書く時の補助に使ってっみることにした。

 ちなみに気になる料金はProduct正式リリースまでは無料とのこと。

Cohereのサイト
アカウントを作ってログインするとダッシュボードにCommand R+の文字が
API Keyの発行
VSCodeにCodeGPTをインストール / CodeGPT起動
プロバイダ / Cohere、ModelにCommand R+を選択(API Keyも設定する)
お試し中。コード(BLIP-2)の概要を日本語で表示

 試しに“CohereのCommand R+ APIを使って質問に答えるpythonのサンプルコード”を尋ねると、以下のようなコードが生成された。

 プログラム自体のエラーはないのだが、肝心なエンドポイント(endpoint)のURLが存在せず「<Response [404]>」になったのは、まぁそんなところなのだろう(笑)。

import requests

# Replace 'YOUR_API_KEY' with your actual API key
api_key = 'YOUR_API_KEY'

# Define the endpoint URL
endpoint = 'https://api.cohere.com/command/latest/ask'

# Define the parameters for the API request
params = {
    'question': 'What is the capital of France?',
}

# Define the headers for the API request
headers = {
    'Authorization': f'Bearer {api_key}',
    'Content-Type': 'application/json',
}

# Send the API request and parse the response
response = requests.post(endpoint, json=params, headers=headers)
data = response.json()

# Extract the answer from the response data
answer = data['results']['answers'][0]

# Print the answer
print(answer)

 筆者の場合、このような使い方は、VSCodeに集約せず、別のウィンドウでGeminiを開きそこでやっているのだが、Command R+は、速度的にも内容的にも問題なさそうなので、無料の間はこれを使ってみることにする。

 そしてAPIを使ってのサンプル、正解はこちら。cohereモジュールにいろいろ集約されており、エンドポイントなどを直接操作する必要はない。文脈把握に相当するchat_historyは初回なので空に。デフォルトはCommand-R。冒頭に書いたRAGも併用しているため、回答が出るまで少し時間がかかる。

# pip install cohere
import cohere
co = cohere.Client('<<API Key>>')
response = co.chat(
  chat_history=[
  ],
  # model="command-r-plus",
  message="日本はどんな国ですか?",
  # perform web search before answering the question. You can also use your own custom connector.
  connectors=[{"id": "web-search"}]
)
print(response)
上記のコードを実行
回答はいろいろものを含み帰ってくる
「日本はどんな国ですか?」に対する回答(一部)

日本は 東アジア に位置する 島国 で、南は日本海、北は 太平洋 に囲まれています。国土は主に 日本列島 と 南西諸島、伊豆諸島、小笠原諸島 などの 弧状列島 で構成されており、 47の都道府県 に分かれています。

日本は 自然が多く、国土の 約7割が森林 に覆われています。また、日本には 山地や山脈が多数存在 し、 富士山は標高3776メートルで日本一高い山 です。日本は 春夏秋冬の四季 があり、夏は 30度を超える日が多く、冬は 北海道や日本海側で雪が多く降ります。

日本の人口は 1億2000万人以上 で、そのうち 約900万人が東京都に住んでいます。日本は 少子高齢化が進んでおり、全国民の 約30%が65歳以上 です。また、日本は 長寿の国としても知られており、平均寿命は 84歳 です。

日本はもともと 農林漁業国 でしたが、現在は サービス業や小売業などの第三次産業が盛ん です。日本は 輸出国 であり、特に 自動車産業が盛ん です。

日本は 独自の文化を持つ国 で、海外でも有名なものとして 漫画、 アニメ、 着物、 空手、 柔道、 茶道、 和食 などがあります。

 デフォルトを触っていないので、これはCommand-Rの回答。35Bとは思えない内容だ。以下はコードの# model="command-r-plus", のコメントを外してCommand-R+で実行した結果。

日本は 東アジア に位置する 島国です。首都は東京で、47の都道府県に分かれています。国土の約70%が森林で、富士山などの山々や、北海道から沖縄県まで、様々な気候や自然環境があります。四季があり、春には桜が咲き、夏は暑く、秋には紅葉が楽しめ、冬は北海道や日本海側で雪が多く降ります。

人口は約1億2千万人で、少子高齢化が進んでいます。宗教は仏教や神道が信仰されています。

日本は農林漁業国から工業国へと変化し、現在はサービス業や小売業などの第三次産業が盛んです。自動車産業が特に有名で、トヨタやホンダなどの企業が海外でも人気です。

日本文化は自然に寄り添いながら独自の発展を遂げてきました。茶道や華道、武道、着物などの伝統文化や、漫画やアニメなどのポップカルチャーが海外でも人気です。

 Command-Rと同じ内容だが、こちらのほうがうまくまとまってる感じだ。

 ところで、なぜCommand-R(+)という名前なのか? これに対する答えはここにある。どうやら元々Commandというモデルがあり、その改良版? として登場したのがCommand-RとCommand-R+となるようだ。


 以上、話題のCommand RとCommand R+をざっくり使ってみた。104BのCommand R+は、これまで触っていなかった規模なだけに、なかなか楽しめそうだ。APIでサクッと使えるのもありがたい。今回ご紹介した方法なら、強力なGPUがローカルになくてもできるので、興味のある人はぜひ試して欲しい。

 とは言え、128GB(もしくは96GB)のMacもちょっと欲しくなってきた。調べると「Mac Studio」のM2 Ultra/1TB/128GB構成では70万円オーバー、M2 Max/512GB/96GBの構成で44万円オーバー。まぁ、確かにNVIDIAのGPUを複数枚使うよりはお手軽なのだが……(笑)。