LoginSignup
3
1

Cohere For AI Command R+について

Last updated at Posted at 2024-04-09

Hugging Face でトレンドトップに出てきた、Command R+についてまとめてみました。

ネットを調べる中で、noteでnpaka氏がMLXでCommand R+を試すという記事を見つけ、MLXて何だ?ということも調べました。

4月4日にXにリリースのアナウンスが出ています。

基盤としているという35Bのモデルというのは、先月リリースされている、Command Rを指しており、そこから3倍に拡張されているということになります。

特徴

  • 104Bパラメーター
  • RAGと生成手順の自動化のためのツールを含んでいる
  • 日本語を含む、10カ国語をサポート
  • 多くの用途で使用できるが、特に推論、要約、Q&Aに最適化されている。
  • コンテキストの長さは128Kをサポート

1040億パラメーターということは、GPT-3の1250憶に迫るものですが、4bitモデルだとハイスペックなPCなら動きます。LLMの進化は驚くべきものですね。

性能的には、132BのDBRX-instructを超えているようです。

利用方法

 Hugging Faceにホストされているので、お試しであればそこを利用することが可能。

 ローカルでの使用も可能だが、DRAMやVRAMがかなり必要なので、普通の家庭では無理。

ローカルで動かすために

4ビットで動かせるquantized versionがある。

これなら、以下の条件で動作可能と思われる。

 GPUメモリが46GB以上
 システムの空きメモリが64GB以上
 モデルファイルは、13ファイルで約64GBの容量

自分の環境では動作させることが出来ないが、手順としては、

transformersモジュールのインストール

pip install 'git+https://github.com/huggingface/transformers.git' bitsandbytes accelerate

サンプルコードは以下のとおり。
以下のコードを実行すると、モデルファイルのダウンロードが始まる。

from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = "CohereForAI/c4ai-command-r-plus-4bit"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)

# Format message with the command-r-plus chat template
messages = [{"role": "user", "content": "Hello, how are you?"}]
input_ids = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt")
## <BOS_TOKEN><|START_OF_TURN_TOKEN|><|USER_TOKEN|>Hello, how are you?<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>

gen_tokens = model.generate(
    input_ids, 
    max_new_tokens=100, 
    do_sample=True, 
    temperature=0.3,
    )

gen_text = tokenizer.decode(gen_tokens[0])
print(gen_text)

Hugging Face上で同じ質問(Hello, How are you?)をしたら、以下の回答が返ってきた。

Hello! I’m an AI chatbot, so I don’t have feelings or emotions, but I’m here to assist you in any way I can. How can I help you today?

どう思う、どう感じる、という質問に関しては、I’m an AI chatbot, so I don’t have feelings or emotions,(私はAIアシスタントなので、個人的な意見や感情はありません。)と必ず答えるようだ。

Apple MLXでの動作

noteの記事で、MLXで動作させている例があった。

MLXはAppleのM1/M2/M3で動くので、DRAMの空きが64GBあれば動作すると思われる。

MLXについて

  • Apple版NumPyと考えていいが、Apple siliconでのみ動作するフレームワークである。
  • unified memory modelというのが他のフレームワークとの違いで、CPUメモリからGPUメモリに転送しなくても動作する。
  • 動作が遅い(自分で言ってます)。配列を実体化させるのは必要があるときということなので、メモリの使用効率はいいが、動作が遅延するということらしい。

MLXについては、詳しい情報はほとんどない。GitHub上のドキュメント

が一番詳しい情報源だった。

既にローカルで動作させている方がQiitaに記事をあげていたので、参照ください。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1