mlx環境での、mlx-lmパッケージもバージョンアップされています。対応してくれるモデルも以下のように増えています。
今回、最近発表された stablelm-2-zephyr-1_6b を試してみました。
「英語、スペイン語、ドイツ語、イタリア語、フランス語、ポルトガル語、オランダ語の多言語データで学習された、最新の16億パラメータ小型言語モデルです。」とのことで、日本語が言及されていませんが、行けるのではと思って試してみました。
Huggingfaceのページはこちら
今記事を書きながら知ったのですが、オンライン上でも試せます。
mlx-lmパッケージのバージョンアップで、--trust-remote-code が追加されているので実行が本モデルでも可能です。
python -m mlx_lm.generate --model stabilityai/stablelm-2-zephyr-1_6b --trust-remote-code --prompt "人生の意味をメタファーで説明して" --max-tokens 750
残念ながら、メタファーでの説明にはなりませんでした〜
愛について小学生にわかるように説明をしてもらいます。
python -m mlx_lm.generate --model stabilityai/stablelm-2-zephyr-1_6b --trust-remote-code --prompt "愛について小学生に分かるように説明して" --max-tokens 750
わかるような、わからないような説明ですね笑
さて、まどマギテスト5連続の結果です。(2回目は破綻)
なんと評価すればいいんでしょうね… とりあえず想像力豊かな創作ができるということにしておきましょう。
Stable LMシリーズは日本語がきれいに出力表示される印象がありますが、この1.6bモデルでもそんな感じです。内容の正確さについては、まどマギテストで察してやってください。
今回使ったスクリプトは以前のスクリプトにfor文を入れたものです。あと、trsut_remote_codeを使えるようにしてます。
回数を変えたければfor 文の rangeの値を変えてください。
from mlx_lm import load, generate
import time
model, tokenizer = load(
"stabilityai/stablelm-2-zephyr-1_6b",
tokenizer_config={"trust_remote_code": True})
def generate_response(PROMPT):
response = generate(model, tokenizer, prompt=PROMPT, temp=0.5, max_tokens=800, verbose=False)
return response
def main():
print("MLX Language Model Ineractive Terminal (type 'q' to quit)")
while True:
user_input = input("\nUser: ")
if user_input.strip().lower() == 'q':
print("Exiting the interactive terminal.")
break
PROMPT = f"<|user|>{user_input}<|endoftext|>\n<|assistant|>"
for i in range(5):
time.sleep(0.5)
response = generate_response(PROMPT)
print(f"\nStabelm {i+1}:", response)
if __name__ == "__main__":
main()
おまけ
#AI #AIとやってみた #やってみた #LLM #大規模自然言語モデル #mlx #huggingface #stableAI