Hugging Face Transformers: オープンソース機械学習の初心者向けガイド
Hugging Face は、非技術的ユーザー向けにオープンソース機械学習(ML)を分かりやすく解説する初心者向けガイドを公開しました。このガイドでは、Hugging Face Transformers ライブラリを使用して、ホスト環境内で大規模言語モデル(LLM)である Microsoft の Phi-2 を実行する方法を実践的に解説しています。
Hugging Face エコシステムの理解
Hugging Face エコシステムは、事前学習済みモデルのデプロイと利用を簡素化する、相互に連携した複数のツールで構成されています。
Hugging Face Transformers ライブラリ
Transformers ライブラリは、自然言語処理(NLP)、コンピュータビジョン、音声タスク向けの数千の事前学習済みモデルへのアクセスを提供するオープンソースの Python ライブラリです。PyTorch、TensorFlow、JAX などの下位レベルの ML フレームワークの複雑さを抽象化し、ユーザーはコードを一から書かずにモデルを実装できるようにします。
Hugging Face Hub
Hub は、機械学習向けの GitHub のようなコラボレーションプラットフォームで、コミュニティがオープンソースのモデルやデータセットをホストします。Transformers ライブラリは Hub と直接統合されており、モデルのダウンロードやデプロイが可能です。
Hugging Face Spaces
Spaces は Hub 上のサービスで、ユーザーがウェブ上でホストされた ML デモやアプリケーションを構築・デプロイできます。Docker テンプレート(事前定義されたソフトウェア環境の設計図)の使用をサポートしており、JupyterLab ノートブックなどの一貫したアプリケーションを迅速にデプロイできます。
LLM 実行の技術要件
大規模言語モデルを実行するには、性能と互換性を確保するために特定のハードウェアおよびソフトウェア構成が必要です。
GPU 加速
CPU でも一部のアプリケーションは処理できますが、LLM は効率的に動作するために GPU(Graphics Processing Units)の並列計算能力を必要とします。たとえば、Phi-2 モデルを実行するには、24GB の VRAM を持つ NVIDIA A10G のような十分なメモリを備えた GPU が必要です。
ソフトウェア依存関係
Transformers ライブラリを介してモデルを実行するには、ライブラリ自体とサポートフレームワークをインストールする必要があります。Transformers ライブラリは他のフレームワーク上に構築されているため、機能させるには PyTorch、TensorFlow、または JAX のインストールが必要です。
コア機械学習概念
このガイドでは、オープンソースモデルとやり取りするために必要な、いくつかの基本的なプログラミングおよび機械学習の概念を定義しています。
クラスとオブジェクト
Python では、クラスはオブジェクトを作成するための「レシピ」として機能します。このガイドでは、クラスを利用して model オブジェクトと tokenizer オブジェクトという 2 つの重要なオブジェクトを作成します。これにより、プロパティと関数をまとめて管理でき、コーディングプロセスが簡素化されます。
トークナイゼーションとデコード
モデルは生のテキストを処理できず、数値のみを理解します。トークナイザーは文を小さな単位(トークン)に分割し、各トークンに数値の入力 ID を割り当てるツールです。このプロセスはエンコーディングと呼ばれます。モデルの数値出力を人間が読める形にするには、トークナイザーがデコードという逆プロセスを実行する必要があります。
基本モデル と 指示チューニングモデル の比較
モデルがプロンプトに応答する方法には重要な違いがあります。
- Base Models(基本モデル): 本質的に大規模なオートコンプリートエンジンです。訓練データに基づいて最も可能性の高い次のトークンを予測します。Microsoft の Phi-2 は基本モデルであり、会話形式で直接的な指示に応答しない可能性があります。
- Instruction-Tuned Models(指示チューニングモデル): 基本モデルにさらに学習を加え、特定のユーザー指示やプロンプトを理解し応答できるようにしたものです。これにより、チャットベースのやり取りに適しています。
実装ワークフロー
Phi-2 のようなモデルで推論を実行するために、ガイドでは以下の技術的ワークフローを示しています。
- Environment Setup(環境設定): JupyterLab Docker テンプレートと NVIDIA A10G GPU を使用して Hugging Face Space を作成します。
- Installation(インストール):
!pip installを使用してtorch(PyTorch) とtransformersライブラリをインストールします。 - Loading(ロード):
AutoModelForCausalLMとAutoTokenizerクラスを使用し、特定のmodel_id(例:"microsoft/phi-2")で Hub からモデルとトークナイザーをロードします。 - Processing(処理): トークナイザーを使って入力テキストを
input_idsにエンコードします。 - Generation(生成): モデルオブジェクトの
.generateメソッドを使用して数値出力を生成します。 - Output(出力): トークナイザーの
.decodeメソッドで数値出力をテキストにデコードします。