モデルの接続と開発ModelsファイルとしてアップロードされたモデルHugging Face モデルをインポートする

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Hugging Face モデルをインポートする

現在非推奨となっているオープンソースモデルをインポート機能のユーザーは、言語モデルアダプターのソースコードを出発点として、Hugging Face モデルをラップするアダプターを作成できます。リンク先のアダプターは、Palantir による積極的なメンテナンスが行われなくなっており、参考用としてのみ提供されています。代わりに、置き換え用のアダプターは、ご自身の判断で Foundry のアダプターリポジトリから直接公開、メンテナンス、拡張してください。

Foundry では、Palantir AIP がネイティブにサポートする LLMに加えて、Hugging Face ↗ や spaCy ↗ などの広く使われている言語モデルフレームワークと統合できます。 こうした自然言語フレームワークは、Conda または PyPI を通じて配布されるパッケージとして Foundry で利用できます。

ただし、これらの言語モデルフレームワークでは通常、追加のファインチューニングを行うために、事前学習済みモデルやコーパスをインターネットからダウンロードする必要があります。ダウンロードしたものを Foundry 内で完全に機能させるには、多くの場合、追加の手順が必要です。これは、ユーザーが作成した Python コードからパブリックインターネットへのアクセスをデフォルトで拒否する Foundry のセキュリティアーキテクチャによるものです。必要な追加手順は、言語モデルフレームワークの仕様によって異なります。

Hugging Face

Hugging Face の言語モデルを Foundry にインポートするには、次の2つの方法があります。

  1. モデルファイルを生のデータセットとしてインポートする。
  2. Hugging Face のドメインを許可リストに登録する。

モデルファイルをデータセットとしてインポートする

Hugging Face のモデルハブにある任意のモデルをデータセットとしてインポートできます。そのデータセットは Code Repositories または Code Workspaces で使用できます。

まず、Hugging Face からモデルファイルをダウンロード ↗します。次に、モデルをスキーマなしのデータセットとしてアップロードし、ファイルを Foundry に取り込みます。これらのファイルは、フロントエンドからのアップロード(新規 > データセット > インポート > すべてのファイルを選択)でアップロードできます。また、モデルファイルがプライベートネットワーク内の共有ドライブに保存されている場合は、Data Connection の同期を通じてアップロードすることもできます。

インポートするデータセットには、Hugging Face のモデル詳細のファイルとバージョンタブにあるすべてのファイルを含めてください。ただし、バイナリモデルファイル(たとえば、pytorch_model.bin または tf_model.h5)は1個だけ必要です。ほとんどの場合、バイナリモデルファイルとして PyTorch モデルを使用することを推奨します。

モデルファイルをデータセットに保存したら、そのデータセットをトランスフォームの入力として使用できます。モデルのサイズによっては、モデルをメモリーに読み込むために、DRIVER_MEMORY_MEDIUM などの Spark プロファイルを指定する必要があります。以下のコードでは、foundry-huggingface-adapters のユーティリティを使用しています。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 from palantir_models.transforms import ModelOutput from transforms.api import transform, Input from transformers import AutoTokenizer, AutoModel from huggingface_adapters.utils import copy_model_to_driver @transform( model_output=ModelOutput("/path/to/output/model_asset"), hugging_face_raw=Input("/path/to/input/dataset"), ) def compute(model_output, hugging_face_raw): temp_dir = copy_model_to_driver(hugging_face_raw.filesystem()) tokenizer = AutoTokenizer.from_pretrained(temp_dir) model = AutoModel.from_pretrained(temp_dir) # モデルをモデルアダプターでラップし、モデルとして保存します # model_output.publish(...)

ユースケースに応じて、EmbeddingAdapter などの言語モデルアダプターを使用できます。

Copied!
1 2 3 4 5 6 7 # その他のインポート from huggingface_adapters.embedding_adapter import EmbeddingAdapter # ... model_output.publish( model_adapter=EmbeddingAdapter(tokenizer, model), change_type=ModelVersionChangeType.MINOR )

Hugging Face のドメインを許可リストに登録する

Hugging Face からモデルを直接ダウンロードするには、ネットワークエグレスポリシーを設定して、Foundry エンロールメントで関連するドメインを許可リストに登録できます。許可リストに登録する関連ドメインは次のとおりです。

モデルのダウンロードに使用する Hugging Face のドメインは、予告なく変更される場合があります。上記のドメインを許可リストに登録してもモデルをダウンロードできない場合は、デバッグのためにリクエストをログに記録し、まだブロックされているドメインの特定を試みてください。httplib レベルのデバッグを有効にする方法については、Stack Overflow ↗ の詳しい手順を参照できます。

また、Hugging Face からモデルを読み込むコードリポジトリには、transforms-external-systems ライブラリを追加し、新しく作成したエグレスポリシーを使用するように適切に設定する必要があります。設定が完了すると、Python トランスフォームでオープンソースの言語モデルを読み込めます。

エラー PermissionError: [Errno 13] Permission denied: '/.cache' が発生した場合は、以下の例に示すように、モデルの読み込み時にキャッシュディレクトリを渡す必要があります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 from palantir_models.transforms import ModelOutput from transforms.api import transform, Input from transforms.external.systems import use_external_systems, EgressPolicy, ExportControl from transformers import AutoTokenizer, AutoModel import tempfile @use_external_systems( export_control=ExportControl(markings=['<marking ID>']), egress=EgressPolicy(<policy RID>), ) @transform( model_output=ModelOutput('/path/to/output/model_asset'), text_input=Input('/path/to/input/dataset'), ) def compute(export_control, egress, model_output, text_input): CACHE_DIR = tempfile.mkdtemp() tokenizer = AutoTokenizer.from_pretrained("bert-base-cased", cache_dir=CACHE_DIR) model = AutoModel.from_pretrained("bert-base-cased", cache_dir=CACHE_DIR) # モデルインスタンスをモデルアダプターでラップし、Palantir プラットフォームに保存します # model_output.publish(...)

Foundry での使用

データセットまたは Hugging Face のドメインを通じて言語モデルにアクセスできるようになったら、Code Repositories でのモデル学習のドキュメントで説明されているとおりに、言語モデルをモデルアダプターでラップすることで、Palantir モデルとして統合できます。

model_output.publish() でモデルバージョンを作成した後、ModelInput でモデルを読み込み、下流のトランスフォームで推論を実行します。モデルバージョンの API で指定されている出力の選択方法を含む、トランスフォームの完全な例については、Python トランスフォームで推論を実行するを参照してください。