🚀 Phi-1言語モデル
Phi-1は、基本的なPythonコーディングに特化した、13億のパラメータを持つTransformerベースの言語モデルです。様々なデータソースを用いて訓練され、シンプルなPythonコーディングベンチマークであるHumanEvalにおいて50%を超える精度を達成しています。
🚀 クイックスタート
Phi-1はtransformers
バージョン4.37.0で統合されています。使用する際には、このバージョン以上を使用してください。
✨ 主な機能
- 基本的なPythonコーディングに特化した言語モデルです。
- 様々なデータソースを用いて訓練され、HumanEvalベンチマークで高い精度を達成しています。
📦 インストール
Phi-1を使用するには、transformers
バージョン4.37.0以上が必要です。以下のコマンドでインストールできます。
pip install transformers>=4.37.0
💻 使用例
基本的な使用法
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
torch.set_default_device("cuda")
model = AutoModelForCausalLM.from_pretrained("microsoft/phi-1", torch_dtype="auto")
tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-1")
inputs = tokenizer('''def print_prime(n):
"""
Print all primes between 1 and n
"""''', return_tensors="pt", return_attention_mask=False)
outputs = model.generate(**inputs, max_length=200)
text = tokenizer.batch_decode(outputs)[0]
print(text)
📚 ドキュメント
想定される使用方法
訓練データの性質上、Phi-1はコード形式のプロンプトに最適です。以下はコード形式の例です。
def print_prime(n):
"""
Print all primes between 1 and n
"""
for num in range(2, n+1):
for i in range(2, num):
if num % i == 0:
break
else:
print(num)
モデルはコメントの後にコードを生成します。
注意事項
- Phi-1はコード目的で設計されています。モデルが生成したコードは、潜在的なユースケースの出発点として扱うべきであり、決定的な解決策ではありません。ユーザーはこのモデルをアプリケーションに使用する際には注意が必要です。
- 本研究プロジェクトの範囲外として、本番環境でのコーディングタスクへの直接的な採用は想定されていません。そのため、Phi-1は本番レベルのコードで適切に機能することを保証するためのテストが行われていません。詳細については、本ドキュメントの制限事項のセクションを参照してください。
Phi-1の制限事項
- 範囲の制限: 微調整データセットの99.8%のPythonスクリプトは、「typing, math, random, collections, datetime, itertools」のパッケージのみを使用しています。モデルが他のパッケージを使用するPythonスクリプトを生成した場合、ユーザーはすべてのAPIの使用を手動で検証することを強くお勧めします。
- オンラインスクリプトの複製: モデルはオンラインで見つかったPythonスクリプトを学習しているため、特に異なるオンラインソースで繰り返し出現するスクリプトを複製する可能性がわずかにあります。
- 不正確なコードの生成: モデルは頻繁に誤ったコードを生成します。ユーザーはこれらの出力を決定的な解決策ではなく、インスピレーションの源として見ることをお勧めします。
- 代替形式への応答の信頼性の低さ: Q&Aやチャットのような形式の指示を理解しているように見えるにもかかわらず、モデルはしばしば誤った回答を返します。非コード形式での機能は大幅に制限されています。
- 自然言語理解の制限: コーディングボットとして、Phi-1の主な焦点はコーディング関連の質問を支援することです。自然言語理解能力を持っているかもしれませんが、一般的な会話や一般的なAIアシスタントのような常識を示すことは主な機能ではありません。その強みはプログラミングやソフトウェア開発の文脈での支援とガイダンスを提供することにあります。
- 潜在的なバイアス: Phi-1は他のAIモデルと同様に、ウェブや合成データで訓練されています。このデータにはバイアスやエラーが含まれている可能性があり、AIのパフォーマンスに影響を与える可能性があります。バイアスは、不均衡な表現、ステレオタイプ、または訓練データに含まれる物議を醸す意見など、さまざまな原因から生じる可能性があります。その結果、モデルは時々これらのバイアスやエラーを反映した応答を生成する可能性があります。
セキュリティリスクに関する警告
Phi-1を利用する際には、注意が必要です。モデルは強力ですが、生成されたコードに意図せずセキュリティ上の脆弱性をもたらす可能性があります。例としては、以下のようなものがあります。
- ディレクトリトラバーサル: コードがディレクトリトラバーサル攻撃に対する安全なチェックを実装していない場合、システム上の機密ファイルへの不正アクセスが可能になる可能性があります。
- インジェクション攻撃: 文字列の適切なエスケープが行われていない場合、アプリケーションがSQL、OSコマンド、またはその他のインジェクション攻撃に対して脆弱になる可能性があります。
- 要件の誤解: モデルは時々ユーザーの要件を誤解または単純化し、不完全または不安全な解決策につながる可能性があります。
- 入力検証の欠如: 場合によっては、モデルが入力検証を組み込まず、またはユーザー入力をサニタイズしないことがあり、クロスサイトスクリプティング(XSS)などの攻撃の道を開きます。
- 不安全なデフォルト設定: モデルは不安全なデフォルト設定でコードを推奨または生成する可能性があります。
- エラーハンドリングの失敗: 不適切なエラーハンドリングは、システムまたはアプリケーションの内部動作に関する機密情報を意図せず明らかにする可能性があります。
これらの潜在的な落とし穴や明示的に言及されていない他の問題を考慮して、生成されたコードをアプリケーションに展開する前に、特にセキュリティに敏感なアプリケーションでは、コードを十分にレビュー、テスト、検証することが不可欠です。疑問がある場合は、常にセキュリティ専門家に相談するか、厳密なペネトレーションテストを実施してください。
訓練
モデル
プロパティ |
詳細 |
モデルタイプ |
Transformerベースのモデルで、次の単語予測を目的としています |
訓練トークン |
54Bトークン(7Bユニークトークン) |
精度 |
fp16 |
GPU |
8台のA100 |
訓練時間 |
6日間 |
ソフトウェア
📄 ライセンス
このモデルはMITライセンスの下でライセンスされています。
引用
@article{gunasekar2023textbooks,
title={Textbooks Are All You Need},
author={Gunasekar, Suriya and Zhang, Yi and Aneja, Jyoti and Mendes, Caio C{\'e}sar Teodoro and Del Giorno, Allie and Gopi, Sivakanth and Javaheripi, Mojan and Kauffmann, Piero and de Rosa, Gustavo and Saarikivi, Olli and others},
journal={arXiv preprint arXiv:2306.11644},
year={2023}
}
商標
このプロジェクトには、プロジェクト、製品、またはサービスの商標やロゴが含まれている場合があります。Microsoftの商標またはロゴの使用は、Microsoftの商標とブランドガイドラインに従う必要があります。このプロジェクトの修正版でのMicrosoftの商標またはロゴの使用は、混乱を招いたり、Microsoftの後援を暗示したりしてはなりません。第三者の商標またはロゴの使用は、それらの第三者のポリシーに準拠する必要があります。