Command-R(35B)をMLX(Mac M1)ローカルGradioのChatで実行

LLM
「Command R+」がリリースされましたが、「Command-R(35B)」も優秀という事で、Gradioのチャットボットインターフェイスを使って実行してみました。

実行した環境
Mac:Apple M1 Max
メモリ:64 GB
OS:14.4.1

使用したモデル『mlx-community/c4ai-command-r-v01-4bit』

mlx-community/c4ai-command-r-v01-4bit · Hugging Face

We’re on a journey to advance and democratize artificial intelligence through open source and open science.…

huggingface.co

動作確認

環境準備

//仮想環境の準備
python -m venv env 

//仮想環境の実行
source env/bin/activate 

//必要なライブライのインストール
pip install mlx-lm gradio

サンプルの実行

まずはサンプルコードをそのまま実行してみます。

from mlx_lm import load, generate

model, tokenizer = load("mlx-community/c4ai-command-r-v01-4bit")
response = generate(model, tokenizer, prompt="渋谷とは", verbose=True)

==========
Prompt: 渋谷とは
違う「原宿」の今。若者文化発信地・竹下通りはどう変わった?(bizSPA!FRIDAY) – Yahoo!ニュース
「原宿」といえば、若者文化発信地として知られ、国内外の観光客が訪れる人気スポットだ。しかし、新型コロナウイルス感染拡大の影響で、街の様相は大きく変わった。
【写真】原宿・竹下通りの今
緊急事態宣言
==========
Prompt: 4.470 tokens-per-sec
Generation: 12.204 tokens-per-sec

日本語で返答が返ってきました。

tokenizerのChatTemplateで実行

tokenizerのChatTemplatedで対話形式にしてみます。下記を参照しました。

Templates for Chat Models

We’re on a journey to advance and democratize artificial intelligence through open source and open science.…

huggingface.co

from mlx_lm import load, generate

model, tokenizer = load("mlx-community/c4ai-command-r-v01-4bit")
prompt = [{'role': 'user', 'content': "渋谷について説明して"}]

inputs = tokenizer.apply_chat_template(prompt,tokenize=False,add_generation_prompt=True)

response = generate(
    model,
    tokenizer,
    prompt=inputs,
    verbose=True,
    temp=0.3,
    max_tokens=512,
)

==========
Prompt: 渋谷について説明して

渋谷 (しぶや、Shibuya) は、日本の東京都の中央部にある繁華な地区で、東京の23区の一つ、渋谷区に位置しています。渋谷は、ファッション、食、カルチャー、ショッピングで有名な活気ある街として知られています。若者の街としても有名で、常に新しいトレンドが生まれているエリアです。
渋谷のランドマークは、渋谷駅前にある「渋谷スクランブル交差点」です。この交差路は、複数の道路が交差し、複数の大型ビジョンやネオンが立ち並ぶ、世界でも有数の繁華な交差点として知られています。ここは、多くの人々で賑わい、東京の象徴的な景観の一つとなっています。また、渋谷駅前には、109ビルやマークシティなど、多くのショッピング施設やファッションビルが立ち並んでいます。
渋谷は、最先端のファッションやトレンド発信地としても有名で、若者向けのショップやブティックが数多くあります。センター街や裏原宿など、流行に敏感な人たちに向けたショッピングエリアもあります。また、渋谷は、様々なグルメも楽しめるエリアとしても人気で、レストランやカフェ、居酒屋、バーが数多くあります。ラーメン店やファストフード店から、高級レストランまで、多彩な飲食店が揃っています。
渋谷は、カルチャーの街としても盛り上がりを見せています。ライブハウスやクラブ、劇場など、音楽やエンターテインメント施設も多く、ロックやポップス、ジャズなど、様々なジャンルのライブを楽しむことができます。また、渋谷はアニメやマンガの聖地としても知られ、アニメショップやマンガ喫茶も数多くあります。
渋谷は、東京でも有数の交通の要衝でもあります。JR山手線や東京メトロ、京王線、小田急線など複数の路線が通っており、都内各地へのアクセスに便利な場所です。渋谷駅は、毎日多くの人々で賑わい、通勤・通学の利用者だけでなく、ショッピングやレジャー目的の人々で賑わいを見せています。
==========
Prompt: 16.762 tokens-per-sec
Generation: 9.373 tokens-per-sec

出力できていますね。

Gradioで実行

GradioのChatbotインターフェイスについての解説は以下のドキュメントを参照しました。

Creating A Chatbot Fast

A Step-by-Step Gradio Tutorial…

www.gradio.app

import gradio as gr
from mlx_lm import load, generate

load_model = "mlx-community/c4ai-command-r-v01-4bit"
model, tokenizer = load(load_model)

def predict(message, history, max_token, temp):
    prompt = []
    prompt.append({'role': 'system', 'content': "You are a helpful assistant."})

    for human, assistant in history:
        prompt.append({'role': 'user', 'content': human})
        prompt.append({'role': 'assistant', 'content': assistant})

    prompt.append({'role': 'user', 'content': message})
    inputs = tokenizer.apply_chat_template(prompt,
                                           tokenize=False,
                                           add_generation_prompt=True)

    response = generate(model, tokenizer, prompt=inputs, temp = temp, max_tokens = max_token, verbose = False)
    #return  response.strip()
    for i in range(len(response)):
            yield response[: i+1]

demo = gr.ChatInterface(predict,
    title=load_model,
    description="",
    additional_inputs=[
        gr.Slider(100, 12800, value=12800, label="MaxTokens"),
        gr.Slider(0, 1, value=0.2, label="Temperture")
    ]
)

if __name__ == "__main__":
    demo.launch()

実行結果
渋谷(しぶや)は、東京都の中央部にある繁華街、またそれを中心とした地域名称です。渋谷区の中心部であり、東京でも有数の繁華な商業・娯楽地区の一つです。
渋谷は、ファッションや流行の発信地として知られ、若者文化の中心地として人気があります。渋谷駅周辺には、様々なファッションショップやレストラン、娯楽施設が立ち並んでいます。また、渋谷109やマークシティなど、大型の商業施設も数多くあります。
渋谷の象徴的な存在の一つに、渋谷スクランブル交差点が挙げられます。この交差点は、複数の道路が交わる大変混雑した交差点で、多くの人や車が行き交う光景は東京の代表的な風景の一つとして知られています。この交差点周辺には、大型ビジョンやネオンが数多くあり、夜遅くまで賑わいを見せています。
また、渋谷はアニメやゲームなどサブカルチャーでも有名で、アニメやゲームの聖地としてファンに親しまれています。実際に、渋谷駅周辺にはアニメやゲームに関連した店舗やイベントスペースが多数あり、コスプレをする人々も多く見かけられます。
さらに、渋谷は多くのテレビ局や芸能事務所が集まるメディアの街としても知られています。渋谷のNHK放送センターや、フジテレビ、TBSなどの放送局は、人気スポットの一つです。また、渋谷PARCOやタワーレコードなど、音楽関連の施設も多く、ライブハウスも数多くあります。
渋谷へのアクセスは、JR山手線や東京メトロ、京王線、東急線など複数の路線が乗り入れる渋谷駅が主要駅となっており、都内各地からのアクセスに便利な場所に位置しています。

[記事公開日]

この記事の作者・監修

Activi TV

こんにちは!食べることが大好きなグルメライター・料理愛好家のActivi TVです。料理の世界に魅了され、様々な料理の作り方や味を探求する日々を送っています。各地で出会った料理から、私は常に新しいインスピレーションを受けています。料理は文化であり、人々をつなぎ、温かい気持ちにさせる素晴らしい手段だと信じています。私の記事を通じて、読者の皆さんも新しい味と出会い、楽しい食体験をしていただければ幸いです。どうぞよろしくお願いします!

お買い得情報

旬の野菜を自宅にお届け!

フジテレビ系 セブンルールで紹介。
収穫後最短24時間以内の朝どれ食材を
まずは少量の注文からお試し可能!

カテゴリー: LLM
モバイルバージョンを終了