1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Abeja社のQwen2.5-32b-Japanese-v0.1をDatabricks上で試してみる

Last updated at Posted at 2025-02-02

最近あまりできなかったので、いろんなモデルを触ってみたい欲求が。

導入

少し前にABEJA社がQwen2.5 32b-Instructをベースとして継続事前学習を実施したABEJA-Qwen2.5-32b-Japanese-v0.1をリリースしました。
こちらは経済産業省が立ち上げた「GENIAC」にて開発されたモデルとのこと。

モデルはHugging Face上に公開されています。

元のモデルであるQwen2.5 32Bよりも日本語性能が向上しており、GPT-4-Turbo以上の日本語性能のようです。

どんなものか気になったので、以下のGGUFフォーマットに変換&4bit量子化されたモデルを利用し、Databricks上で動かしてみます。(毎度利用させていただき感謝です)

環境はDatabricks on AWS、DBRは16.2 ML(Beta)、インスタンスタイプはg5.xlargeのGPUクラスタを利用します。

試してみる

ノートブックを作成し、必要なパッケージをインストール。
前回同様、SGLangを使うことにします。

%pip install flashinfer==0.1.6 --no-deps -i https://flashinfer.ai/whl/cu124/torch2.4/ --trusted-host flashinfer.ai
%pip install sgl-kernel --force-reinstall --no-deps
%pip install "sglang[srt]==0.4.2.post1"

dbutils.library.restartPython()

事前に上記リポジトリからダウンロードしておいたGGUFファイルをロードします。

import sglang as sgl
import asyncio

model_path = "/Volumes/training/llm/model_snapshots/models--mmnga--ABEJA-Qwen2.5-32b-Japanese-v0.1-gguf/ABEJA-Qwen2.5-32b-Japanese-v0.1-Q4_K_M.gguf"
llm = sgl.Engine(model_path=model_path, mem_fraction_static=0.9)

では、適当なプロントをいくつか実行してみます。

def format_prompt(prompt):
    return f"<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n"

prompts = [
    "Hello, what is your name?",
    "Databricksとは何ですか?詳細に教えてください。",
    "まどか☆マギカでは誰が一番かわいい?",
    "ランダムな10個の要素からなるリストを作成してソートするコードをPythonで書いてください。",
    "現在の日本の首相は誰?",
    "あなたはマラソンをしています。今3位の人を抜きました。あなたの今の順位は何位ですか?ステップバイステップで考えてください。",
    "9.9と9.11、どっちの数字が大きい?",
]
formated_prompts = [format_prompt(p) for p in prompts]

sampling_params = {
    "temperature": 0,
    "max_new_tokens": 500,
}
results = llm.generate(formated_prompts, sampling_params)

for p, r in zip(prompts, results):
    print("---"*30)
    print("Q:", p)
    print("A:", r["text"])
    print()
出力結果
------------------------------------------------------------------------------------------
Q: Hello, what is your name?
A: Hello! I'm Qwen, a large language model. I don't have a personal name because I'm not a real person, but you can just call me Qwen. Nice to meet you!

------------------------------------------------------------------------------------------
Q: Databricksとは何ですか?詳細に教えてください。
A: Databricksは、Apache Sparkを基盤としたクラウドベースのデータ分析プラットフォームで、大量のデータを効率的に処理・分析するためのツールを提供しています。Databricksは、データエンジニアリング、データサイエンス、機械学習のための統合環境を提供し、データの取り込み、変換、分析、可視化、モデルの構築と展開までを一貫して行うことができます。

Databricksの主な特徴は以下の通りです:

1. **統合環境**:Databricksは、データエンジニアリング、データサイエンス、機械学習のための統合環境を提供します。これにより、データの取り込み、変換、分析、可視化、モデルの構築と展開までを一貫して行うことができます。

2. **Apache Sparkの最適化**:DatabricksはApache Sparkを基盤としており、大量のデータを効率的に処理するための最適化が施されています。これにより、高速なデータ処理と分析が可能になります。

3. **クラウドベースのアーキテクチャ**:Databricksはクラウドベースのプラットフォームであり、クラウドのスケーラビリティと柔軟性を活用できます。これにより、必要に応じてリソースを動的にスケーリングすることが可能です。

4. **協調作業のサポート**:Databricksは、チームでの協調作業をサポートしており、複数のユーザーが同じプロジェクトで同時に作業することができます。これにより、データ分析プロジェクトの効率性と生産性が向上します。

5. **セキュリティとガバナンス**:Databricksは、データのセキュリティとガバナンスを重視しており、データのアクセス制御、暗号化、監査などの機能を提供しています。これにより、データの安全性とコンプライアンスを確保できます。

6. **機械学習のサポート**:Databricksは、機械学習のための豊富なライブラリとツールを提供しており、モデルの構築、訓練、評

------------------------------------------------------------------------------------------
Q: まどか☆マギカでは誰が一番かわいい?
A: 「まどか☆マギカ」のキャラクターはそれぞれ魅力的で、好みは人それぞれですが、主なキャラクターを挙げると以下のようになります:

1. **鹿目まどか**:主人公で、優しさと強さを兼ね備えたキャラクター。彼女の成長と変化は物語の中心です。

2. **巴マミ**:先輩魔法少女で、冷静さと優しさが魅力。彼女の強さと献身性も魅力的です。

3. **美樹さやか**:明るく元気な性格で、友情を大切にするキャラクター。彼女の成長と葛藤も見どころです。

4. **佐倉杏子**:クールで自信家な性格。彼女の強さと複雑な過去も魅力的です。

5. **暁美ほむら**:まどかの親友で、過去のトラウマを抱えているキャラクター。彼女の献身的な愛と強さも魅力的です。

どのキャラクターも魅力的で、それぞれのファンがいます。あなたがどのキャラクターに魅力を感じるかは、個人の好みによるところが大きいですね。

------------------------------------------------------------------------------------------
Q: ランダムな10個の要素からなるリストを作成してソートするコードをPythonで書いてください。
A: 以下は、ランダムな10個の要素からなるリストを作成し、それをソートするPythonのコードです。

```python
import random

# ランダムな10個の整数のリストを作成
random_list = [random.randint(1, 100) for _ in range(10)]

# リストをソート
sorted_list = sorted(random_list)

# 結果を表示
print("元のリスト:", random_list)
print("ソートされたリスト:", sorted_list)
```

このコードは、1から100までの範囲でランダムな10個の整数を生成し、それらをリストに格納します。その後、`sorted()`関数を使用してリストをソートし、結果を表示します。

------------------------------------------------------------------------------------------
Q: 現在の日本の首相は誰?
A: 2023年9月1日現在、日本の首相は岸田文雄氏です。ただし、この情報は時間と共に変わる可能性があります。最新の情報を確認する場合は、公式の政府ウェブサイトをご覧ください。

------------------------------------------------------------------------------------------
Q: あなたはマラソンをしています。今3位の人を抜きました。あなたの今の順位は何位ですか?ステップバイステップで考えてください。
A: もちろんです。ステップバイステップで考えてみましょう。

1. **現在の状況**: あなたは3位の人を抜きました。
2. **抜いた後の順位**: 3位の人を抜いたということは、あなたがその人の位置に移動します。
3. **新しい順位**: あなたが3位の人を抜いたので、あなたは3位になります。

したがって、あなたの現在の順位は**3位**です。

------------------------------------------------------------------------------------------
Q: 9.9と9.11、どっちの数字が大きい?
A: 9.11の方が9.9よりも大きいです。小数を比較する際は、左から順に桁を比較していきます。この場合、小数点以下の1桁目で1が9より小さいですが、2桁目で1が9より大きいため、9.11の方が大きいということになります。ただし、一般的な比較では9.9の方が大きいと誤解されることもありますが、正確には9.11の方が大きいです。ただし、この説明は正確ではありません。正しくは、9.9の方が9.11よりも大きいです。小数点以下の1桁目で9が1より大きいので、9.9の方が大きいということになります。

最後の数字比較意外はよさげな回答ですね。
多くの問いはQwen2.5の時点でも日本語で回答できてたという印象ではあるのですが、日本語に対する追随性能は上がって気はします。(厳密な比較していないので感覚ですが。。。)
最後の数字比較はCoTやReasoningモデルを使う方がいいでしょうね。

おわりに

ABEJA社のABEJA-Qwen2.5-32b-Japanese-v0.1を使ってみました。
Qwenの時点で高い性能を持っていましたが、日本語性能・日本語知識はオリジナルに比べてかなり強化されている印象です。

最近はDeepSeek R1の出力を使って蒸留したモデルがいろいろ出ていますが、全てのユースケースでReasoningモデルが適しているわけではないので、汎用的で強力な(かつパラメータサイズが抑えられた)日本語LLMがどんどん出てくるのは素晴らしいです。

ABEJA社は個人的に応援している会社の一つですので、今後も期待しています。

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?