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

モデルの非推奨化

モデルプロバイダーはモデルを非推奨にすることが多く、これにより、そのモデルに依存するワークフローが影響を受け、ユーザーは推奨される代替モデルに移行する必要があります。プロバイダーがモデルの非推奨化を発表した場合、Palantir は影響を受けるユーザーに通知し、Upgrade Assistant を通じて、影響を受けるモデルに依存するリソースを特定します。

通知を受けたら、間もなく非推奨になるモデルを使用している既存のワークフローを推奨される代替モデルに移行し、事前に備えることをお勧めします。移行の対応期限はユーザーに通知されます。その期限を過ぎると、残っているワークフローの移行を促進するために、ブラウンアウトによるモデルへのアクセス制限が段階的に実施されます。

ブラウンアウトの対応期限までに対処しない場合、非推奨のモデルを使用するワークフローはブラウンアウト中に失敗し、次のエラーメッセージを出力します。

Copied!
1 2 3 4 5 6 7 8 9 10 { "errorCode": "NOT_FOUND", "errorName": "LanguageModelService:LanguageModelNotAvailable", "errorInstanceId": "<error instance id>", "parameters": { "safeParams": "{languageModelRid=<language model rid>, deprecationDate=<deprecation date>, brownoutStart=<brown-out start>, brownoutEnd=<brown-out end>}", "unsafeParams": "{}", "message": "Unable to use model: language model is in planned deprecation and is currently under a brown-out" } }

同様に、プロバイダーが定めるモデルの非推奨化日までに対処しない場合、非推奨のモデルを使用するワークフローは失敗し、ワークフローが代替モデルに移行されるまで、次のエラーメッセージを出力します。

Copied!
1 2 3 4 5 6 7 8 9 10 { "errorCode": "NOT_FOUND", "errorName": "LanguageModelService:LanguageModelNotAvailable", "errorInstanceId": "<error instance id>", "parameters": { "safeParams": "{languageModelRid=<language model rid>, deprecationDate=<deprecation date>}", "unsafeParams": "{}", "message": "Unable to use model: language model is deprecated" } }

ブラウンアウトによるアクセス制限

モデルのブラウンアウトは、非推奨になるモデルからの移行をユーザーに促すための方策です。ブラウンアウトでは、意図的かつ一時的に動作を不安定にすることで、変更が近づいていることを知らせます。また、Upgrade Assistant に記載された影響を受けるリソースに対処しなかったユーザーに対して、サービスが突然停止することを避けます。

モデルごとに、固有のブラウンアウトスケジュールが適用されます。非推奨化が進められているモデルのブラウンアウトスケジュール(段階数、開始日、期間を含む)を表示するには、その非推奨モデルの Upgrade Assistant の説明ページを参照してください。

モデルを移行する

非推奨モデルからの移行を成功させ、重要なワークフローの中断を避けるには、次の手順に従います。

  1. 移行が必要なリソースを特定します。
  2. 影響を受けるリソースに移動します。
  3. 非推奨モデルを置き換えます。

移行が必要なリソースを特定する

Upgrade Assistant に移動し、アクティブなアップグレードセクションで該当するモデルの非推奨化ページを開きます。非推奨モデルの説明ページで、リソースセクションまで下にスクロールすると、このモデルの非推奨化によって影響を受けるリソースの一覧が表示されます。

モデルの非推奨化によって影響を受けるリソースのリスト表示。

リソースの特定基準

次の基準に基づいて、リソースが移行対象として指定されます。

  • リソースが非推奨モデルを呼び出す場合、このリソースは PENDING として指定されます。これは、このリソースで使用されているモデルをまだ移行する必要があることを示します。
  • 以前に非推奨モデルを呼び出していたリソースが別のモデルを呼び出し、_かつ_非推奨モデルの最後の呼び出しから24時間以上が経過している場合、このリソースは COMPLETED として指定されます。別のモデルの使用は、このリソースが移行されたことを示すためです。

まれに、リソースが COMPLETED として指定された後に、PENDING に戻る場合があります。これは、リソースが非推奨モデルを新たに呼び出した場合に発生することがあります。これを防ぐには、関数を保存して公開した後に、Workshop モジュールなどのリソースを、影響を受ける関数の最新バージョンに更新してください。

非推奨モデルを使用するように設定されていても、移行期間中に実際に使用されていないリソースは、Upgrade Assistant のリソース一覧に表示されません。たとえば、非推奨モデルを使用するように設定されているパイプラインでも、移行期間中にビルドされていない場合は、非推奨モデルを実際に呼び出していないため、Upgrade Assistant のリソース一覧には表示されません。このような場合は、本番ワークフローを棚卸しし、以下のセクションのツールを使用してリソースの使用状況を把握し、移行が必要かどうかを評価することを推奨します。

影響を受けるリソースに移動する

Upgrade Assistant の説明ページでリソースを選択し、そのリソースのアプリケーションに移動します。リソースの種類によって、新しいモデルに移行する手順は異なる場合があります。影響を受けるリソースごとに、Pipeline Builder や AIP Logic の LLM を使用ノード、トランスフォーム内のコード参照など、非推奨モデルがどのように使用されているかを特定する必要があります。ワークフロー用の新しいモデルを選択するために、さらに上流のリソースに移動する必要がある場合もあります。

非推奨モデルを置き換える

非推奨モデルによるワークフローの中断を防ぐには、新しいモデルを選択する必要があります。Upgrade Assistant の各非推奨モデルの説明ページには代替候補が記載されていますが、ユースケースに最適なモデルを使用できるよう、AIP Evals で評価スイートを設定することを強く推奨します。

Upgrade Assistant は、間もなく非推奨になるモデルを使用しているリソースを特定します。対応方法はリソースの種類ごとに異なります。一部のリソースは直接設定でき、モデルセレクターを使用して新しいモデルを選択できます。Workshop モジュールやパイプラインなど、ほかの種類のリソースでは、AIP Logic 関数や Code Repositories のトランスフォームなどの上流リソースからモデルが呼び出される場合があります。このような場合は、モデルの設定オプションが含まれている上流リソースでモデルを選択する必要があります。リソースの種類について詳しくは、以下のセクションを参照してください。

ユーザーには、影響を受けるリソースの閲覧権限と編集権限が必要です。これらの権限がないと、パイプラインや Workshop モジュールなどのリソースを適切に調べて、モデル設定の起点となる上流リソースを見つけることができません。

モデルセレクターをサポートするアプリケーション

非推奨モデルをモデルセレクターで選択していた場合は、同じ方法で新しいモデルを選択できます。Logic 関数や AIP Chatbot(旧称 AIP Agent)などのリソースに移動したら、リソースの設定を開き、モデルセレクターを使用して新しいモデルを選択します。

モデルセレクターをサポートするアプリケーションには、次のものがあります。

  • Pipeline Builder
  • AIP Chatbot
  • AIP Evals
  • AIP Logic
  • Workshop
  • Quiver
  • Marketplace
  • Code Workspaces

リソースの設定には、影響を受けるモデルの横にアラートが表示され、モデルには終了というラベルが付けられます。

アラートと推奨される代替モデルが表示された非推奨モデル。

代替モデルを選択するには、モデルセレクターを開き、新しいモデルを選択します。

利用可能なモデルとモデルの説明が表示されたモデルセレクター。

Pipeline Builder でのモデル使用

Pipeline Builder のリソースの場合、Upgrade Assistant は、影響を受ける特定のノードではなく、パイプライン全体へのリンクを提供します。大規模なパイプラインで関連するノードを効率的に見つけるには、Pipeline Builder の検索機能を使用します。

  1. Upgrade Assistant のモデル非推奨化ページにあるリソース一覧から、影響を受けるパイプラインを選択して移動します。

  2. パイプライングラフの右上にある検索アイコンを選択します。

    Pipeline Builder の検索アイコン。

  3. 検索語として「use LLM」を入力すると、パイプライン内のすべての LLM を使用ノードの一覧が表示されます。すべての検索結果は、パイプライングラフの凡例に示されている色でも強調表示されます。

    Pipeline Builder の検索結果。

  4. 一覧に表示された結果から各ノードを選択すると、パイプライングラフ内でそのノードが強調表示されます。選択したノードを右クリックし、コンテキストメニューから編集を選択します。これにより、ノードの設定ページが開きます。

  5. モデルセクションに移動します。モデルが非推奨化の対象になっている場合は、モデル名の横にアラートアイコンが表示されます。このアラートが表示されている場合は、設定を表示を選択し、モデルタイプドロップダウンから新しいモデルを選択します。

  6. パイプライン内のすべての LLM を使用ノードに対して、この手順を繰り返します。

  7. パイプラインを保存し、デプロイして、再ビルドします。

Workshop でのモデル使用

Workshop でのモデル使用は、AIP ウィジェットや、AIP Logic 関数などの参照先の関数に由来する場合があります。ソースに応じて、ウィジェットの設定、または AIP Logic 関数や AIP Chatbot などの上流リソースの設定からモデルを変更できます。Upgrade Assistant のモデル非推奨ページにあるリソース一覧から、影響を受ける Workshop モジュールを選択して移動できます。モジュールの設定を表示するには、編集モードに入ります。

影響を受ける Workshop モジュールの編集権限が必要です。関数ベースおよびウィジェットベースのモデル使用に対応するには、以下の手順に沿って進めてください。

関数ベースのモデル使用

  1. Workshop モジュールで使用されている関数を確認するには、ワークスペースの左上にある概要パネルを開きます。機能セクションで、関数を選択します。

    「概要」パネルの「機能」セクション。

  2. 関数パネルで各関数を選択して、関数のソースを表示します。

    関数のサンプルとそのソース。

  3. 関数のソースを選択して、ソースアプリケーション(この例では AIP Logic)に移動します。このソースからモデルの設定を行い、関数が非推奨のモデルを使用している場合は新しいモデルを選択できます。

  4. 関数の新しいバージョンを保存して公開します。

  5. Workshop に戻り、ステップ1で説明したとおりに概要パネルの関数セクションに移動します。更新した関数を選択し、バージョンを一括更新セクションの関数バージョンのドロップダウンを使用して、すべての変数またはウィジェットに対して関数の最新バージョンを選択します。

    「関数」セクションの「バージョンを一括更新」ドロップダウン。

  6. 一覧にあるすべての関数に対して、この手順を繰り返します。

ウィジェットベースのモデル使用

ウィジェットベースのモデル設定は、使用するウィジェットの種類によって異なります。以下の選択肢を確認し、Workshop モジュールで使用しているウィジェットの手順に沿って進めてください。

  • AIP Chatbot: AIP Chatbot ウィジェットはチャットボットを使用するため、モデルの設定は AIP Chatbot のチャットボット設定で行う必要があります。

    1. ウィジェットの設定パネルで、使用中のチャットボットを選択して Chatbot Studio で開きます。
    2. チャットボットのインターフェースの右上にある編集を選択して、チャットボットを編集します。
    3. チャットボットの設定パネルを開き、モデルセレクターから新しいモデルを選択します。
    4. チャットボットを保存して公開します。
  • AIP generated content(AIPで生成されたコンテンツ):AIP generated content ウィジェットのモデル使用を Workshop で設定できるのは、ウィジェットが LLM 直接またはプロンプト関数経由の LLM の選択肢を使用している場合のみです。それ以外の場合は、参照先のロジック関数で設定できます。

    AIP generated content ウィジェットの設定の選択肢。

    • LLM 直接/プロンプト関数経由の LLM:ウィジェットの設定にあるモデルセレクターを使用して、新しいモデルを選択できます。
    • ロジック:ウィジェットがロジックの選択肢を使用している場合、ロジック関数は概要パネルのモジュールの関数一覧に表示されます。詳細は、関数ベースのモデル使用セクションを参照してください。
  • 自由形式の分析:自由形式の分析ウィジェットのモデル使用は、Workshop で直接設定できます。ウィジェットの設定で AIP オプションをオンにし、有効を選択してモデルの設定を行います。次に、モデルセレクターから新しいモデルを選択します。

    自由形式の分析ウィジェットの設定パネルにある「AIP オプション」。

  • ロジック - 思考の連鎖:このウィジェットはロジック関数を使用し、これらの関数は概要パネルに表示されます。詳細は、関数ベースのモデル使用セクションを参照してください。

変更後は、必ず Workshop モジュールを保存して公開してください。

コードベースのモデル使用

コードベースのモデル使用については、Upgrade Assistant は、非推奨のモデルへの参照を含む具体的なコードファイルや関数ではなく、それらを含むコードリポジトリ、コードワークスペース、または下流リソースを一覧に表示します。下流リソースが検出された場合は、Workshop でのモデル使用および追加ツールのセクションを確認してください。コードリポジトリまたはワークスペースが検出された場合は、Upgrade Assistant のリソース一覧に表示されたリポジトリまたはワークスペースを開きます。リポジトリまたはワークスペース内で、非推奨のモデルの使用箇所を新しいモデルに置き換えることができます。

TypeScript v1 と TypeScript v2 ではモデルの選択方法が異なるため、移行に必要な変更も異なります。

  • TypeScript v1 は import 文でモデルを指定するため、非推奨のモデルを import 文と、そのモデルを使用するすべての呼び出し箇所で置き換える必要があります。詳細は、TypeScript v1 の言語モデルドキュメントを確認してください。以下の例では、レガシーの言語モデルのインポートを使用しています。
  • TypeScript v2 はプロキシエンドポイントを通じてモデルを呼び出し、モデルエイリアスでモデルを選択します。エイリアスは、リソースのインポートパネルのプラットフォーム SDK タブで設定されたモデル RID に解決されるため、関数の本文にはモデル名が現れません。非推奨のモデルを置き換える際は、すべての呼び出し箇所ではなく、1個のエイリアス参照を変更します。温度やトークン上限などのリクエストパラメーターは、TypeScript v1 の params オブジェクトではなく、プロキシエンドポイントの形式に従います。

TypeScript v2 の例で使用している openai ライブラリは、事前にインストールされていません。左側のパネルのライブラリセクションからインストールします。

モデルの選択と使用方法は、以下の TypeScript v1、TypeScript v2、Python の例のとおりです。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import { Function } from "@foundry/functions-api" // 非推奨のモデルをインポートしています import { GPT_4_5 } from "@foundry/models-api/language-models" /** * ユーザー入力に基づいてモデルにテキスト補完リクエストを送信するために使用します * @param {string} userInput - モデルに送信するテキスト入力 */ export class MyFunctions { @Function() public async createChatCompletion(userInput: string): Promise<string | undefined> { // 非推奨のモデルの使用 const response = await GPT_4_5.createChatCompletion({ params: { "temperature": 0, "maxTokens": 1000, }, messages: [{ role: "USER", contents: [{ text: userInput }], }], }); return response.choices[0].message.content; } }
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import { PlatformClient } from "@osdk/client"; import OpenAI from "openai"; import { Aliases } from "@osdk/functions"; import { getFoundryToken, getOpenAiBaseUrl, createFetch } from "@osdk/language-models"; export default async function createChatCompletion(client: PlatformClient, userInput: string): Promise<string> { const oaiClient = new OpenAI({ apiKey: await getFoundryToken(client), baseURL: getOpenAiBaseUrl(client), fetch: createFetch(client), }); const completion = await oaiClient.chat.completions.create({ // エイリアスを介した非推奨のモデルの使用 model: Aliases.model("gpt45").rid, messages: [ { role: "user", content: userInput }, ], max_completion_tokens: 1000, }); return completion.choices[0]?.message.content ?? ""; }
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 from transforms.api import transform, Input, Output from palantir_models.transforms import OpenAiGptChatLanguageModelInput from palantir_models.models import OpenAiGptChatLanguageModel from language_model_service_api.languagemodelservice_api_completion_v3 import GptChatCompletionRequest from language_model_service_api.languagemodelservice_api import ChatMessage, ChatMessageRole @transform( reviews=Input("Input Dataset Rid"), # 非推奨のモデルの使用 model=OpenAiGptChatLanguageModelInput("ri.language-model-service..language-model.gpt-4-5"), output=Output("Output dataset rid or path"), ) def compute_sentiment(ctx, reviews, model: OpenAiGptChatLanguageModel, output): def get_completions(review_content: str) -> str: system_prompt = "Take the following review determine the sentiment of the review" request = GptChatCompletionRequest( [ChatMessage(ChatMessageRole.SYSTEM, system_prompt), ChatMessage(ChatMessageRole.USER, review_content)] ) resp = model.create_chat_completion(request) return resp.choices[0].message.content reviews_df = reviews.pandas() reviews_df['sentiment'] = reviews_df['review_content'].apply(get_completions) out_df = ctx.spark_session.createDataFrame(reviews_df) return output.write_dataframe(out_df)

新しいモデルのインポート方法や使用方法がわからない場合は、Model Catalog アプリケーションに移動して、Palantir が提供するモデルの使用例を確認してください。コードリポジトリまたはワークスペースで非推奨のモデルの使用箇所を検索し、すべての箇所を推奨モデルまたは任意のモデルに置き換えます。ワークフローによっては、上流の関数やトランスフォームでの使用にこれらの変更を反映するために、リポジトリまたはワークスペースで新しいブランチを作成してマージする必要がある場合があります。

上記の例では、非推奨のモデル GPT-4.5 を使用しています。GPT-4.1 への更新に必要な変更は、言語ごとに異なります。

TypeScript v2 では、GPT-4.1 をリポジトリにインポートします。インポートダイアログは、新しいモデルのエイリアスを作成します。Aliases.model() に渡すエイリアス名を、新しいエイリアスに更新します。関数の本文では、モデルではなくエイリアスを指定します。そのため、この更新では、TypeScript v1 のように import 文とすべての呼び出し箇所を変更するのではなく、1行の変更で済みます。

更新後の例を以下に示します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import { Function } from "@foundry/functions-api" // 新しいモデルをインポートします import { GPT_4_1 } from "@foundry/models-api/language-models" /** * ユーザー入力に基づいてモデルにテキスト補完リクエストを送信するために使用します * @param {string} userInput - モデルに送信するテキスト入力 */ export class MyFunctions { @Function() public async createChatCompletion(userInput: string): Promise<string | undefined> { // 非推奨のモデルの使用を新しいモデルの使用に置き換えます。 const response = await GPT_4_1.createChatCompletion({ params: { "temperature": 0, "maxTokens": 1000, }, messages: [{ role: "USER", contents: [{ text: userInput }], }], }); return response.choices[0].message.content; } }
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import { PlatformClient } from "@osdk/client"; import OpenAI from "openai"; import { Aliases } from "@osdk/functions"; import { getFoundryToken, getOpenAiBaseUrl, createFetch } from "@osdk/language-models"; export default async function createChatCompletion(client: PlatformClient, userInput: string): Promise<string> { const oaiClient = new OpenAI({ apiKey: await getFoundryToken(client), baseURL: getOpenAiBaseUrl(client), fetch: createFetch(client), }); const completion = await oaiClient.chat.completions.create({ // 代替モデルのエイリアスを参照します。 model: Aliases.model("gpt41").rid, messages: [ { role: "user", content: userInput }, ], max_completion_tokens: 1000, }); return completion.choices[0]?.message.content ?? ""; }
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 from transforms.api import transform, Input, Output from palantir_models.transforms import OpenAiGptChatLanguageModelInput from palantir_models.models import OpenAiGptChatLanguageModel from language_model_service_api.languagemodelservice_api_completion_v3 import GptChatCompletionRequest from language_model_service_api.languagemodelservice_api import ChatMessage, ChatMessageRole @transform( reviews=Input("Input Dataset Rid"), # 非推奨のモデルの使用を新しいモデルの使用に置き換えます。 model=OpenAiGptChatLanguageModelInput("ri.language-model-service..language-model.gpt-4-1"), output=Output("Output dataset rid or path"), ) def compute_sentiment(ctx, reviews, model: OpenAiGptChatLanguageModel, output): def get_completions(review_content: str) -> str: system_prompt = "Take the following review determine the sentiment of the review" request = GptChatCompletionRequest( [ChatMessage(ChatMessageRole.SYSTEM, system_prompt), ChatMessage(ChatMessageRole.USER, review_content)] ) resp = model.create_chat_completion(request) return resp.choices[0].message.content reviews_df = reviews.pandas() reviews_df['sentiment'] = reviews_df['review_content'].apply(get_completions) out_df = ctx.spark_session.createDataFrame(reviews_df) return output.write_dataframe(out_df)

Quiver でのモデル使用

Quiver での LLM の使用は、分析の設定で構成できます。影響を受ける分析のサイドバーで設定タブに移動し、AIP の設定セクションにあるモデルセレクターにアクセスします。

Quiver の分析設定にあるモデルセレクター。

追加のツール

ワークフローは複雑で扱いにくくなることがあり、影響を受けるリソースの使用箇所をすべて直感的に見つけるのが難しくなります。ワークフロー内の LLM の使用箇所を特定するために利用可能なツールについては、以下のセクションを参照してください。

Workflow Lineage

リソース全体でのモデルの使用状況をよりよく理解するには、Workflow Lineage を使用できます。キーボードショートカット Cmd + I (macOS) または Ctrl + I (Windows) を使用して、Workshop アプリケーションまたは関数リポジトリを Workflow Lineage で開きます。Workflow Lineage のグラフでは、アプリケーションの基盤となるオブジェクト、アクション、関数を表示できます。

  • Workshop アプリケーション: Workshop アプリケーションの場合、Workflow Lineage には、ロジック関数などの上流リソースと、それらに使用するよう設定されたモデルが表示されます。また、Workflow Lineage では、特定の関数を使用するほかの Workshop アプリケーションやオントロジー SDK アプリケーションも確認できるため、影響を受けるリソースの範囲全体を把握しやすくなります。リソースが非推奨のモデルを使用している場合、Workflow Lineage にはアラートアイコンと、モデルが非推奨であることをユーザーに知らせるメッセージが表示されます。

    Workshop アプリケーションのロジック関数で使用されている非推奨のモデル。

    Workflow Lineage の一括更新機能は、Workshop でのモデル移行を実施する際に役立ちます。関数ベースのモデル使用のセクションに示すように関数を更新した後、Workshop アプリケーションを Workflow Lineage で開きます。その後、依存する1個またはすべての Workshop アプリケーションで使用されている関数のバージョンを一括更新できます。また、Workflow Lineage では、リネージグラフから1回のアクションで、複数の AIP Logic 関数にわたって言語モデルを一括置換できます。

  • 関数リポジトリ: Workflow Lineage は、関数リポジトリでのモデルの使用状況をユーザーが理解しやすいように、視覚的に表示できます。モデルを呼び出す関数には、接続されたモデルノードが表示されるため、関数が非推奨のモデルを呼び出しているかどうかを一目で確認できます。

    Workflow Lineage の関数と、それに関連付けられたモデル。

Workflow Lineage の全機能の詳細については、Workflow Lineage の使用方法のドキュメントを参照してください。

Ontology Manager

非推奨のモデルを含む関数を特定したら、Ontology Manager でその関数を開き、この関数を使用するリソースを追跡できます。その後、それらのリソースに移動して関数のバージョンを更新し、サービスの中断を防ぐことができます。Workshop アプリケーションの場合は、上記のセクションで説明したように Workflow Lineage を使用して、関数のバージョンを一括更新できます。

関数の使用状況を表示するには、Ontology Manager に移動し、サイドバーで関数を選択します。関数ページで関数名を検索し、関数テーブルから選択すると、その概要ページが開きます。

関数の概要ページで、使用履歴セクションまで下にスクロールすると、この関数を使用するリソースの一覧が表示されます。バージョンで絞り込み、古いバージョンの関数を使用している可能性があるリソースを見つけることができます。

関数の概要ページの「使用履歴」セクション。

その後、この関数を使用するリソースに移動して、使用する関数を最新バージョンに更新できます。詳細については、Ontology Manager の関数タイプビューのドキュメントを参照してください。