軽量なのに高性能!Phi 3.5 mini instructの驚異的な実力を徹底解説!
- 軽量モデルながら高性能LLM
- 128Kトークンをサポートし、長文要約や質問応答、情報検索に対応
- 日本語タスク対応
Phi 3.5 mini instructはPhi 3.5ファミリーの中では軽量なモデルでありつつも、Llama3.1の性能を総合点で上回ります。元々スマホで動くLLMとして開発されていたPhi3の後継モデルです。軽量モデルなので、google colaboratoryでの実装も可能。
本記事では、Phi 3.5 mini instructの特徴からgoogle colaboratoryでの実装方法をお伝えします。
ぜひ最後までお読みください!
Phi 3.5 mini instructの概要
Phi 3.5 mini instructは、Microsoftによって開発された軽量な大規模言語モデルです。
軽量でありながら高性能なオープンモデルです。特に高品質で推論密度が高いデータに重点を置いていて、Phi3で使用されたデータセットを元に開発されています。
さらに、2024年6月にリリースされたPhi3 Miniに比べ、多言語、マルチターンでの会話、および推論能力が大幅に向上している様です。
また、軽量モデルであるために、メモリや計算リソースの限られた環境での利用に適しており、処理速度も高速です。
Phi 3.5 mini instructは、128Kトークンのコンテキスト長をサポート。特にQasper(質問応答評価のためのベンチマーク)で優れた性能を発揮しています。
Phi 3.5 mini instructは、3.8Bという限られたパラメータ数でありながら、多言語タスクにおいては、より多くのパラメータ数を持つ他のモデルと比較しても優れた性能です。
しかし、モデルサイズが小さいことによって、ハルシネーションを起こしやすいことが報告されています。
サポート言語一覧
アラビア語、中国語、チェコ語、デンマーク語、オランダ語、英語、フィンランド語、フランス語、ドイツ語、ヘブライ語、ハンガリー語、イタリア語、日本語、韓国語、ノルウェー語、ポーランド語、ポルトガル語、ロシア語、スペイン語、スウェーデン語、タイ語、トルコ語、ウクライナ語
なお、Phi 3.5について詳しく知りたい方は、以下の記事をご覧ください。
Phi 3.5 mini instructに使われている技術
Phi 3.5 mini instructは軽量ながらMMLUやMGSM、数学、コード生成のベンチマークでは、他のオープンモデルよりも高いスコアを示しています。
教師あり微調整:Supervised Fine-tuning(SFT)
事前学習済みの大規模言語モデルを特定のタスクや目的に適応させるための手法です。
LLMは多目的活用を想定して幅広いデータで事前学習されていますが、特定タスクへの適用には最適化されていない場合があります。
そこで、教師あり微調整を行うことで、モデルが特定のタスクでより正確で一貫性のあるパフォーマンスを発揮します。
近傍方策最適化:Proximal Policy Optimization (PPO)
強化学習の一種で、特にロボティクスやゲームAIのトレーニングにおいて広く使われている手法です。
PPOは、エージェントが環境との相互作用を通じて最適な行動方針を学習するプロセスを改善するために設計されています。
直接優先最適化:Direct Preference Optimization (DPO)
AIや機械学習の分野で利用される手法の一つで、特に生成モデルや強化学習において、ユーザーの好みや意思を直接的に最適化するためのアプローチです。
従来の強化学習や生成モデルの訓練では、報酬関数や損失関数を通じて、間接的にモデルの出力を制御します。
しかし、DPOでは、ユーザーや人間の好みに基づくフィードバックを直接的に活用してモデルを訓練し、これにより、モデルは人間が望む出力に対してより迅速かつ正確に適応できるようになります。
上記3つの技術に加え、高品質で推論に特化したデータやモデルの推論能力を向上させるために、知識のレベルが適切になるように厳密にフィルタリングするなどして、高い推論能力を実現させています。
Phi 3.5 mini instructのライセンス
Phi 3.5 mini instructのライセンスは、MITライセンスです。基本的には商用利用や改変、私的利用など全て可能です。
MITライセンスは開発者が自由にソフトウェアを使って、改変、配布することができるため、個人もしくは企業がPhi 3.5 mini instructを導入したアプリを開発・商用化できます。
利用用途 | 可否 |
---|---|
商用利用 | ⭕️ |
改変 | ⭕️ |
配布 | ⭕️ |
特許使用 | ⭕️ |
私的使用 | ⭕️ |
なお、GPT-4oに匹敵するAIモデルについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
Phi 3.5 mini instructの使い方
google colaboratoryで実装した時の環境はこちらです。
◼︎システム RAM:3.0 / 83.5 GB
◼︎GPU RAM:16.3 / 40.0 GB
◼︎ディスク:43.2 / 235.7 GB
◼︎プラン:有料
◼︎GPU:A100
ではPhi 3.5 mini instructを実装していきます。google colaboratoryで動かすことができます。
ライブラリのインストールはこちら
!pip install flash_attn==2.5.8 torch==2.3.1 accelerate==0.31.0 transformers==4.43.0
もしflash_attnのインストールに時間がかかるようなら、こちらのコードに変更してください。
!wget https://github.com/kun432/flash-attention-prebuild-wheels/releases/download/v0.0.0-test/flash_attn-2.6.3+cu121torch2.5-cp310-cp310-linux_x86_64.whl
!pip install --no-dependencies --upgrade flash_attn-2.6.3+cu121torch2.5-cp310-cp310-linux_x86_64.whl
デモコードはこちら
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3.5-mini-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3.5-mini-instruct")
messages = [
{"role": "system", "content": "You are a helpful AI assistant."},
{"role": "user", "content": "Can you provide ways to eat combinations of bananas and dragonfruits?"},
{"role": "assistant", "content": "Sure! Here are some ways to eat bananas and dragonfruits together: 1. Banana and dragonfruit smoothie: Blend bananas and dragonfruits together with some milk and honey. 2. Banana and dragonfruit salad: Mix sliced bananas and dragonfruits together with some lemon juice and honey."},
{"role": "user", "content": "What about solving an 2x + 3 = 7 equation?"},
]
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
)
generation_args = {
"max_new_tokens": 500,
"return_full_text": False,
"temperature": 0.0,
"do_sample": False,
}
output = pipe(messages, **generation_args)
print(output[0]['generated_text'])
これで一通りデモコードは動かせます。エラーが起きるとしたらGPUのリソース不足だと思いますので、google colaboratoryで実行するときにはリソースを確認しておくのがいいでしょう。
また、Hugging FaceのSpacesも用意されているので、google colaboratoryで動かすほどでもないけど、性能を確認してみたい、という場合にはデモ版としてSpacesを使ってみるのもいいと思います。
Phi 3.5 mini instruct検証
Phi 3.5 mini instructは軽量、多言語対応、長文処理タスクが高性能という特徴を持っています。
なので、Phi 3.5 mini instructを使って、日本語→フランス語・英語・イタリア語に翻訳、長文ニュースの要約をタスクとして行ってみたいと思います。
ただ、Phi 3.5 mini instructだけだと性能がよくわからないので、比較対象としてGemini 1.5 Flashと比べてみます。
日本語から多言語翻訳
まずは日本語から多言語翻訳です。
サンプルコードはこちら
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
# モデルとトークナイザーのロード
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3.5-mini-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3.5-mini-instruct")
# 翻訳用のプロンプトを生成
input_text = "今日はとてもいい天気ですね。"
languages = ["English", "Italian", "French"]
messages = [
{"role": "system", "content": "You are a helpful AI assistant specialized in translation."},
{"role": "user", "content": f"Translate the following Japanese text into {', '.join(languages)}: {input_text}"}
]
# パイプラインの設定
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
)
generation_args = {
"max_new_tokens": 500,
"return_full_text": False,
"temperature": 0.0,
"do_sample": False,
}
# 翻訳を実行
output = pipe(messages, **generation_args)
# 結果を表示
print(output[0]['generated_text'])
結果はこちら
English: Today is very nice weather, isn't it?
Italian: Oggi ha un molto bel tempo, vero?
French: Aujourd'hui il fait très beau temps, n'est-ce pas?
Gemini 1.5 Flashの結果はこちら
Here are the translations of "今日はとてもいい天気ですね" (It's such nice weather today) in English, Italian, and French:
English: It's such a beautiful day today. (More natural than a literal translation) or The weather is lovely today. or It's a beautiful day today.
Italian: Che bella giornata oggi! (This is the most natural and common way to say it.) or Fa un tempo splendido oggi. (More formal)
French: Il fait un beau temps aujourd'hui. (This is the most common and natural way to say it). or Quelle belle journée ! (This emphasizes the beauty of the day more than the weather itself.)
比べてみると、Phi 3.5 mini instructでは、文末が「?(疑問符)」になっていますね。プロンプトを疑問文と勘違いしてしまっているのかなと思いましたが、「〜ですよね」を表す付加疑問文になっていますね。
ちなみにこちらはPhi 3.5 mini instructの結果をDeepLで翻訳した結果です。
英語:今日はとても良い天気ですね。
イタリア語:今日はとてもいい天気だね。
フランス語:今日は本当にいい天気だね。
Phi 3.5 mini instructの内容でも通じることがわかります。
Phi 3.5 mini instructでも日本語の性能は十分ですが、日本語性能が向上したモデルもHugging Faceにアップロードされていますので、より日本語特化のモデルを使いたい時はこちらを使うのが良いと思います。
長文ニュースの要約
次に長文ニュースの要約をしてもらいます。ニュースの内容はGPT-4oに作ってもらい、それを要約してもらいます。
サンプルコードはこちら
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
# モデルとトークナイザーのロード
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3.5-mini-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3.5-mini-instruct")
# 要約する日本語長文ニュース
input_text = """
本日、政府は新たな経済対策を発表しました。この対策には、中小企業向けの補助金、
再生可能エネルギーへの投資促進、そして所得税の一部減税が含まれています。
専門家はこれが経済成長に寄与すると期待していますが、一部では財源確保の課題も指摘されています。
この経済対策は、来年度の予算案に盛り込まれる予定です。
さらに、地方自治体向けの特別支援プログラムや、インフラ整備の加速も含まれています。
政府関係者によれば、これらの措置は地域経済の活性化を目的とし、雇用創出に大きく貢献する見込みです。
一方で、これらの対策が国際市場に与える影響についても注目が集まっています。
また、政府は教育分野への投資も発表しており、新たな奨学金プログラムや学校施設の改善が含まれています。
これにより、若者の教育機会が拡大し、長期的な人材育成に寄与することが期待されています。
さらに、環境保護に向けた取り組みとして、森林再生プロジェクトや海洋プラスチック削減計画も含まれています。
これらの政策は、国際的な協力を強化し、日本の環境目標を達成するための重要なステップとされています。
さらに、政府は医療分野にも注力しており、高齢化社会に対応するための新しい医療施設の建設や、
医療従事者の育成プログラムが含まれています。この取り組みは、地域医療の充実を図ることを目的としています。
また、観光業を活性化するための新たなプロモーションキャンペーンや、インバウンド需要に対応するための
インフラ整備が計画されています。これにより、観光業が地域経済の柱としてさらに成長することが期待されています。
加えて、政府はデジタルトランスフォーメーションを推進し、全国的なインターネット環境の改善や、
中小企業のデジタル化支援を進めています。これらの施策は、経済全体の効率性を向上させ、
国際競争力を強化する狙いがあります。
最後に、これらの対策を実行する上での課題として、財政負担の増大や、それに伴う国民の理解を
得るための努力が必要とされています。
"""
# プロンプトの作成
messages = [
{"role": "system", "content": "You are a helpful AI assistant specialized in summarization."},
{"role": "user", "content": f"Summarize the following Japanese news article: {input_text}"}
]
# パイプラインの設定
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
)
generation_args = {
"max_new_tokens": 200,
"return_full_text": False,
"temperature": 0.7,
"do_sample": True,
}
# 要約を実行
output = pipe(messages, **generation_args)
# 結果を表示
print("要約:", output[0]['generated_text'])
結果はこちら
要約: 政府は新たな経済対策を発表し、中小企業向けの補助金、再生可能エネルギーへの投資促進、所得税の一部減税などが含まれており、来年度の予算案に盛り込まれる予定です。これらの措置は地域経済の活性化と雇用創出を目指しており、国際市場への影響も注視されています。教育分野への投資と環境保
文字数の関係で最後が切れてしまっていますが、概ね適切に要約できているように感じます。
Gemini 1.5 Flashの結果はこちら
政府は新たな経済対策を発表。中小企業補助金、再生可能エネルギー投資促進、所得税減税などを柱に、地域経済活性化、雇用創出、そして教育・医療・環境・観光・デジタル化への投資を盛り込んだ。経済成長への期待感がある一方、財源確保や国際市場への影響が課題となる。来年度予算案に計上予定。
Gemini 1.5 FlashでもPhi 3.5 mini instructと大差ない結果ですね。
なお、ベンチマークでGPT-4oを超えたGemini-exp-1114について詳しく知りたい方は、下記の記事を合わせてご確認ください。
Phi 3.5 mini instructの活用方法
Phi 3.5 mini instructは英語では優れた性能を発揮しますが、他言語では性能が低下することが報告されています。そのため、英語以外の言語でPhi 3.5 mini instructを使用する場合にはファインチューニングを行うか、RAGを活用するのが良いでしょう。
RAGを活用することで外部のデータソースを使って言語特有の性能低下をカバーすることが可能です。
また、多言語対応かつ長文処理を得意としているので、リアルタイム翻訳に導入したり、多言語対応のカスタマーサポート・チャットボットなどとしても活用できる可能性があります。
Phi 3.5 mini instructはAzure AI Studioで使えるので、サーバーレスエンドポイントを活用すれば、柔軟に扱うことができます。
Phi 3.5を活用したローカル環境でのデータ分析システムついて詳しく知りたい方は、以下の記事をご覧ください。
まとめ
本記事では、Phi 3.5 mini instructの概要からgoogle colaboratoryでの使い方について解説をしました。軽量LLMながら、その性能は高性能です。
元々がスマホで動作するLLMという立ち位置で開発されているPhiシリーズなので、今後はスマホや組み込みデバイスでの動作、RAGとの組み合わせなど、可能性はたくさんあります。
ぜひ本記事を参考にPhi 3.5 mini instructを使ってみてください!
最後に
いかがだったでしょうか。
LLMを活用することで、データ分析の高速化やカスタマーサポートの自動化、プロセスの効率化が実現可能に。顧客のニーズを深く理解し、満足度の高いサービスを提供する体制を構築できます。
活用事例や実装方法も含め、ビジネスの未来を切り開く一歩をお手伝いします。
株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!
開発実績として、
・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、大規模言語モデル(LLM)を対象に、言語理解能力、生成能力、応答速度の各側面について比較・検証した資料も配布しております。この機会にぜひご活用ください。