LoginSignup
2
0

Cohere Command R+ 4bit modelをローカル環境で動作させてみた

Last updated at Posted at 2024-04-16

  • ソースはこちらのgithubで公開しています

はじめに

Cohere Command R+ をlcoal (非MLX環境) 環境で動かすための手順と資材などを保存します。

動作環境

  • コンテナランタイム: docker
  • GPU: A100 80 GB x 1
    • 104B 4bit 動作させるにはGPUメモリが64GB以上必要。
  • ディスクの空き容量
    • models--CohereForAI--c4ai-command-r-plus-4bit が59GBあるので空き容量に注意。

利用モデル

CohereForAI/c4ai-command-r-plus-4bit
4bitモデルでないと本環境ではGPUメモリが足りなくて動作しない。

環境構築方法

$ git clone https://github.com/hisashi-ito/command-r-plus.git
$ cd command-r-plus/docker
$ ./build.sh
$ ./launch.sh

上記のコマンドで、commande-r-plus コンテナができるので、当該コンテナ内で作業。

実行方法

$ sudo docker exec -it commande-r-plus bash
# time python3 ./generate.py
<BOS_TOKEN><|START_OF_TURN_TOKEN|><|USER_TOKEN|>京都アニメーションの映画でお勧めを3つ教えてください<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>京都アニメーション(京アニ)は、日本のアニメ業界において高品質な作品で知られており、その中には劇場版アニメも数多くあります。お勧めの京都アニメーションの映画を3つ紹介します。

1. 『涼宮ハルヒの消失』(2010年):『涼宮ハルヒ』ιθシリーズを締めくくる劇場版アニメです。主人公であるキョンが、涼宮ハルヒや他の仲間たちが存在する以前の、平凡な日常の世界へと迷い込んでしまったところから物語が始まりendas ます。キョンは元の現実世界に戻ろうと試みる中で、複雑な時間旅行と平行現実の謎に直面します。本作は、タイムトラベル、SF、超自然現象など、様々なジャンルの要素を巧みに織り交ぜた作品です。

2. 『映画 けいおん!』(2011年):同じく人気の高いアニメシリーズである『けいおんDetail!』の劇場版アニメです。『けいおん!』シリーズは、桜が丘高校軽音部の日常や友情を描いた作品で、劇場版では、桜高軽音部の部員 prestazioni が卒業を控える高校3年生の時期を描いています。彼女たちは卒業旅行としてロンドンに行くことを決め、そこで様々な冒険や音楽体験をします。この映画は、シリーズの可愛らしくて心温まる雰囲気を維持しながら、キャラクターたちの成長と友情の強さを強調しています。

3. 『劇場版يرانが鳴く日は』(2018年):京都アニメーションのオリジナル作品で、高校の合唱部を舞台としています。映画は、幼い頃に母親を亡くし、歌うことをやめていた主人公のタクトが、音楽を通じて転校生の転入生、ナギと運命的な出会いを果たすところから始まります。ナギはタクトに合唱部の部長就任を持ちかけ、タクトはその依頼を受け入れ、仲間たちと共に全国大会への出場を目指します。この映画は、美しい音楽と感動的な物語で高く評価されています。

以上、京都アニメーションの3つのお勧め映画を紹介しました。これらの作品は、美しいアニメーション、魅力的なキャラクター、心を打つストーリーで知られており、京都アニメーションの代表作として挙げられます。<|END_OF_TURN_TOKEN|>

real	1m25.337s
user	5m29.840s
sys	0m11.552s

推論コード

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": "京都アニメーションの映画でお勧めを3つ教えてください"}] 
input_ids = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt")
## <BOS_TOKEN><|START_OF_TURN_TOKEN|><|USER_TOKEN|>京都アニメーションの映画でお勧めを3つ教えてください<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>

gen_tokens = model.generate(
    input_ids, 
    max_new_tokens=1024, 
    do_sample=True, 
    temperature=0.7,
)

gen_text = tokenizer.decode(gen_tokens[0])
print(gen_text)
2
0
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
2
0