【Phi 3.5】スマホで動くMicrosoftの最新LLMの性能をGPT-4oと徹底比較してみた
- それぞれ得意とする分野が異なる3モデル
- 軽量LLMながらに大規模LLMに匹敵
- いずれもAzure AI Studioで利用可能
Phi3.5ファミリーはMicrosoftがリリースした、軽量のLLMです。リリースされたモデルは全部で3種類で、それぞれ得意とする分野が異なります。特にPhi 3.5 Vision instructはマルチモーダルLLMであり、視覚情報を活用した推論を得意としています。
本記事ではPhi3.5ファミリーの概要についてお伝えします。ぜひ最後までお読みください!
Phi 3.5の概要
Phi3.5はこれまでMicrosoftからリリースされていたPhi-3で使用されたデータセットを基に構築された、オープンモデルです。
Phi3.5はPhi 3.5 mini instruct、Phi 3.5 MoE、Phi 3.5 Vision instructの3つが用意されており、パラメータ数だと、Phi 3.5 MoE>Phi 3.5 Vision instruct>Phi 3.5 mini instructの順です。
Phi 3.5 Vision instructはVLMに分類されます。
VLMとは「Vision-Language Model」の略で、視覚情報(画像や映像)とテキスト情報(自然言語)を統合して処理するために設計された機械学習モデルを指します。VLMは、画像キャプション生成、視覚質問応答、画像検索など、視覚と言語の両方を理解して処理するタスクで利用されます。
VLMは、視覚とテキストの関係を学習することで、画像とテキストの複雑なタスクに対応できるようになり、AIがより人間に近い理解力や応答能力を持つための重要な技術です。これにより、例えば、画像の説明を自然言語で提供したり、画像に関連する質問に答えたりすることが可能になります。
Phi3.5ファミリーそれぞれの特徴
3つのモデルはそれぞれ特徴が異なり、得意とする分野も違います。
Phi 3.5 mini instruct
Phi3.5 mini instructは、小型で軽量な設計ながら、性能面では多言語対応能力を持つモデルです。このモデルは128Kの長い文脈をサポートしており、長文の要約や質問応答といったタスクにおいて優れた性能を発揮します。
一方で、モデル全体の容量が小さいため、一部の言語では十分な性能を発揮するには追加のファインチューニングが必要です。
また、Retrieval-Augmented Generation(RAG)を組み合わせることで、外部データを参照しながら精度の高い応答を提供することも可能。Phi3.5 mini instructは特に教育分野やカスタマーサポート、ドキュメント管理など、長文を扱うタスクでの活用が期待されるでしょう。
Phi3.5 MoE
Phi-3.5-MoEは、16個の専門モデルを組み込んだMixture-of-Expertsアーキテクチャを採用しています。
この設計により、モデル全体の42Bパラメータのうち、推論時には必要に応じて6.6Bのパラメータのみを活用ができます。これにより、計算リソースを効率的に使用しながら、性能を最大限に引き出すことが可能です。
Phi3.5 MoEは、言語理解や推論、数学タスクにおいて、大規模モデルを上回る性能を発揮します。
また、最大128Kトークンの文脈をサポートしており、長文処理や複雑なタスクにも適しています。Phi3.5 MoEは特に、大規模なデータセットを扱うビジネスシナリオや、計算効率が重要な状況での活用が期待できるでしょう。
Phi 3.5 Vision Instruct
Phi3.5 visionは、画像とテキストを統合したマルチモーダルタスクに特化したモデルです。このモデルは、複数画像の比較や要約、ストーリーテリング、動画の要約といった複雑なタスクを処理する能力を持っています。
特に、128Kの文脈を活用して、複数画像や動画の要約を行う際に優れた性能を発揮。また、単一画像のベンチマークにおいても他のモデルを上回る結果を示しており、ドキュメント理解や表やグラフの解釈といったビジネス用途でも高い効果が期待されています。
Phi3.5 visionは、英語中心のトレーニングを受けているため、多言語対応には制限があるものの、画像とテキストを融合させたタスクにおいては高いパフォーマンスを発揮するでしょう。
そもそもPhi-3とは?
Phi-3は、Microsoftによって開発された、大規模言語モデルです。Phi-3には、スマートフォン上でのローカルな推論を可能にするほど小型でありながら、Mixtral 8x7BやGPT-3.5などのモデルに匹敵する全体的なパフォーマンスを実現するPhi-3-miniが含まれています。
Phi-3-miniのパワーの秘訣は、トレーニングに使用されるデータセットにあります。これは、Phi-2で使用されたデータセットをスケールアップしたバージョンであり、厳格にフィルタリングされた公開Webデータと合成データで構成されています。
Phi-3モデルには、Phi-3-miniに加えて、70億パラメータのPhi-3-smallと140億パラメータのPhi-3-mediumも含まれています。これらのモデルはどちらも、Phi-3-miniよりも大幅に高性能。Phi-3-smallは、多言語トークン化を改善するために、より大きな語彙サイズを持つtiktokenトークナイザーを活用しています。
Phi-3モデルはすべて、教師ありファインチューニング (SFT) と直接選好最適化 (DPO) の2段階の後トレーニングプロセスを経ています。SFTでは、数学、コーディング、推論、会話、モデルのアイデンティティ、安全性など、さまざまな分野の厳選された高品質なデータを使用しています。
教師ありファインチューニングは、既に訓練されたモデルに対して、特定のタスクに関連するデータセットを使ってさらに訓練を行うプロセス。この手法は、モデルが特定の用途やドメインにより適したパフォーマンスを発揮できるようにするために使われます。
さらに、Phi-3-miniをベースにした42億パラメータのモデルであるPhi-3-visionも導入されました。Phi-3-visionは、画像とテキストのプロンプトに対する強力な推論機能を備えています。
Phi3.5は上記のPhi-3をベースに開発されており、推論能力が向上しています。
Phi 3.5のライセンス
Phi 3.5はいずれのモデルにおいても、MITライセンスです。基本的には商用利用や改変、私的利用など全て可能です。
利用用途 | 可否 |
---|---|
商用利用 | ⭕️ |
改変 | ⭕️ |
配布 | ⭕️ |
特許使用 | ⭕️ |
私的使用 | ⭕️ |
なお、GPT-4o超えの日本語レベルを持つ1000億パラメータLLMについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
Phi 3.5の使い方
Phi 3.5のモデルは3つありますが、いずれのモデルでも有料課金してGPUを使う必要があります。無料のGPUではリソースが足りません。またPhi3.5 MoEはA100のGPUを使ってもリソース不足になってしまったので注意が必要です。
そのためPhi3.5 MoE以外はgoogle colaboratoryもしくはPhi3.5 MoE含めAzure AI Studioまたはデモ版の利用がいいでしょう。
Phi3.5 mini instructはHugging FaceのSpacesで、Phi3.5 vision instructはNVIDIAもしくはHugging FaceのSpacesで利用可能です。
Phi 3.5モデルを動かすのに必要な動作環境
Phi 3.5モデルを実行した時の環境は以下です。
■Pythonのバージョン
Python 3.8以上
■使用ディスク量
44.8GB
■システムRAMの使用量
5.2GB
■GPU RAMの使用量
16.3GB
Phi3.5の凄さを実際に検証!
では、ここからはPhi3.5の凄さを実際に検証してみたいと思います。検証したのは、Phi3.5 mini instructとPhi 3.5 vision instructの2つです。
Phi3.5 mini instructは日本語にも対応しているので、日本語でアポメールを作成してもらいます。
日本語タスクはこちら
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "microsoft/Phi-3.5-vision-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
trust_remote_code=True,
torch_dtype="auto",
_attn_implementation='flash_attention_2'
)
messages = [
{"role": "system", "content": "あなたは優秀なアシスタントです。"},
{"role": "user", "content": "取引先に対して、アポイントメントのメールを作成してください。"}
]
prompt = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = tokenizer(prompt, return_tensors="pt").to("cuda:0")
generation_args = {
"max_new_tokens": 500,
"temperature": 0.7,
"do_sample": True,
}
generate_ids = model.generate(**inputs,
eos_token_id=tokenizer.eos_token_id,
**generation_args
)
response = tokenizer.batch_decode(generate_ids,
skip_special_tokens=True,
clean_up_tokenization_spaces=False)[0]
print(response)
日本語タスクの出力結果はこちら
取引先に対して、アポイントメントのメールを作成してください。
件名:迅速な対応をお願いする - [取引先の名前]
親愛なる[取引先の名前],
こんにちは、[あなたの名前]と申します。取引先の皆様の取引において、私たちとの関係の重要性に加えて、私たちのビジネスにおいても重要な役割を果たしているという理解を持っており、今回はあなたの支援を必要としていることを知っています。
この取引の進行中に、あなたに対して進行中の問題が発生したことを知らせていただき、ご責任でご心配いただき、この取引の成功を担っていただき、あなたの支援が必要な場合があることを知らせてください。
今後も迅速な対応をお願い申し上げることができます。あなたの取引における私たちのサポートについてのご連絡をお知らせください。
敬具
[あなたの名前]
[あなたの住所]
[あなたの電話番号]
[あなたのアドレスメール]
[あなたの経済会社名]
親愛なるや関係の重要性という単語は、あまり一般的には使わないで日本語での生成は少し怪しい感じがします。
ちなみにChatGPT-4oに生成させた場合は以下のようになりました。
ChatGPT-4oの結果はこちら
件名: 【御社名】様とのアポイントメントのご依頼
【担当者名】様
お世話になっております。
【あなたの会社名】の【あなたの名前】でございます。
この度は、御社の【商談内容やプロジェクト名】に関して、直接お話しさせていただく機会を頂ければと思い、ご連絡差し上げました。
貴社のご都合の良い日時をご教示いただけますと幸いです。
私どもとしては、下記の日程が候補としてございます。
【候補日1】(例:8月25日(木)午後2時〜)
【候補日2】(例:8月26日(金)午前10時〜)
【候補日3】(例:8月29日(月)午後1時〜)
上記の日程以外でも、柔軟に調整可能ですので、お手数をおかけいたしますが、ご都合の良い時間帯をお知らせください。
お忙しいところ恐縮ですが、何卒よろしくお願い申し上げます。
敬具
【あなたの名前】
【あなたの会社名】
【連絡先情報(電話番号、メールアドレスなど)】
そのまま使っても問題ないくらい自然な文章を返してくれました・・!日本語のアポメール作成タスクはChatGPT-4oを使う方が良いかもしれません。
次にPhi3.5 vision instructでは、説明が難しそうな画像を説明してもらう・英語の画像の内容を説明してもらうというタスクを実装してみます。あとは日本語に対応しているのかも確認しておきましょう。
説明してもらう画像はこちらです。
画像タスクのコードはこちら
from PIL import Image
from transformers import AutoModelForCausalLM, AutoProcessor
import torch
model_id = "microsoft/Phi-3.5-vision-instruct"
# モデルのロード
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
trust_remote_code=True,
torch_dtype="auto",
_attn_implementation='flash_attention_2'
)
# プロセッサのロード(シングルフレームの場合はnum_crops=16に設定)
processor = AutoProcessor.from_pretrained(
model_id,
trust_remote_code=True,
num_crops=16
)
# 画像の読み込み
image = Image.open("/content/スクリーンショット 2024-08-22 21.00.49.png")
# メッセージの作成
messages = [
{"role": "user", "content": "<|image_1|>\n画像を要約してください."},
]
# チャットテンプレートの適用
prompt = processor.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
# 入力の処理
inputs = processor(text=prompt, images=image, return_tensors="pt").to("cuda:0")
# 生成パラメータ
generation_args = {
"max_new_tokens": 1000,
"temperature": 0.0,
"do_sample": False,
}
# 生成
with torch.no_grad():
generate_ids = model.generate(
**inputs,
eos_token_id=processor.tokenizer.eos_token_id,
**generation_args
)
# 入力トークンを削除
generate_ids = generate_ids[:, inputs['input_ids'].shape[1]:]
response = processor.batch_decode(
generate_ids,
skip_special_tokens=True,
clean_up_tokenization_spaces=False
)[0]
print(response)
画像タスクの結果はこちら
1枚目の画像
The image captures a large, curved rock formation with a series of horizontal stripes in shades of brown and black. The formation is set against a clear blue sky with a few clouds. The rock appears to be part of a larger landscape, possibly a desert or arid region.
和訳:画像は、茶色と黒の濃淡の横縞が連なる、大きく湾曲した岩層をとらえている。この地層は、雲も少しある澄み切った青空を背景にしている。この岩は、おそらく砂漠か乾燥地帯と思われる大きな風景の一部に見える。
2枚目の画像
The image contains two sections. The top section is titled 'ENVIRONMENTAL ISSUES' and lists various environmental concerns associated with LLMs and generative AI, such as cost, CPU/GPU requirements, use of rare metals, carbon emissions, and the need for natural resources. The bottom section is titled 'How to provide Enterprise grade answers' and outlines a process flow for creating and verifying answers using AI, including steps like creating an index, getting context, building an answer, and verifying sub-answers. The process flow is depicted in a flowchart with arrows indicating the sequence of steps
和訳:画像には2つのセクションがある。上のセクションは「ENVIRONMENTAL ISSUES(環境問題)」と題され、コスト、CPU/GPU要件、希少金属の使用、炭素排出、天然資源の必要性など、LLMや生成AIに関連するさまざまな環境問題を挙げている。一番下のセクションは「How to provide Enterprise grade answers(エンタープライズグレードの回答を提供する方法)」と題され、インデックスを作成し、コンテキストを取得し、回答を構築し、サブ回答を検証するといったステップを含む、AIを使用して回答を作成し、検証するためのプロセスフローを概説している。プロセスの流れは、ステップの順序を矢印で示したフローチャートで描かれている。
日本語での生成は英語よりもかなり時間がかかってしまいました。
なお、未来予測ができるGPT-4V超えの生成AIについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
まとめ
本記事ではPhi3.5の概要とそのモデルの使い方について紹介をしました。Phi3.5ファミリーはそれぞれ得意とする分野が異なっており、ユーザーが求める分野において使い分けることができます。
また、スマホにも組み込めるよう、軽量化されているので今後は組み込みデバイスなどでも活用が期待できそうです。
弊社では、Phi 3.5を活用したローカル環境でのデータ分析システムを開発しました。事例について詳しく知りたい方は以下の記事をご覧ください。
最後に
いかがだったでしょうか。
Phi3.5ファミリーの活用で業務効率や精度向上を実現する方法をご紹介します。課題に応じた最適なモデル選定や導入計画をサポートしますので、ぜひ一度ご相談ください。
株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!
開発実績として、
・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。