diff --git a/ja/blog.mdx b/ja/blog.mdx new file mode 100644 index 0000000000..1ad4a4f277 --- /dev/null +++ b/ja/blog.mdx @@ -0,0 +1,5 @@ +--- +title: W&B チュートリアル & ブログ +url: https://wandb.ai/fully-connected +--- + diff --git a/ja/courses.mdx b/ja/courses.mdx new file mode 100644 index 0000000000..8046a79894 --- /dev/null +++ b/ja/courses.mdx @@ -0,0 +1,5 @@ +--- +title: W&B コース +url: https://wandb.ai/site/courses/?e-filter-32fa548-course-category=wb-platform +--- + diff --git a/ja/get-started.mdx b/ja/get-started.mdx new file mode 100644 index 0000000000..f95d98e08b --- /dev/null +++ b/ja/get-started.mdx @@ -0,0 +1,78 @@ +--- +title: Weights & Biases を使ってみる +description: ユースケース に適した W&B 製品を選択し、 開始方法 を確認しましょう +--- + +## 製品の比較 + +Weights & Biases へようこそ! 製品を使い始める前に、ユースケースに最適な製品を確認することが重要です。 + +| 製品 | 最適な用途 | 主な機能 | +|---------|----------|--------------| +| **[W&B Models](#w%26b-models)** | ML モデルをゼロからトレーニングする | 実験管理、ハイパーパラメーター最適化、モデルレジストリ、可視化 | +| **[W&B Weave](#w%26b-weave)** | LLM アプリケーションを構築する | トレース、プロンプト管理、評価、プロダクション AI アプリのコスト追跡 | +| **[W&B Inference](#w%26b-inference)** | 学習済みモデルを使用する | ホストされたオープンソースモデル、API アクセス、テスト用のモデルプレイグラウンド | +| **[W&B Training](#w%26b-training)** | モデルをファインチューニングする | 強化学習を用いた LoRA やカスタムモデル適応の作成とデプロイ | + +## W&B Models + + + + W&B の「hello world」であり、最初のデータをログに記録する方法を説明します。 + + + 実際の ML 実験を使用して、Models 製品全体を体験する本格的なチュートリアルです。 + + + 実験管理に重点を置いたビデオ形式のコースです。理解度を確認するためのクイズも用意されています。 + + + モデルのトレーニング、評価、開発、デプロイの方法と、ライフサイクルの各ステップで wandb を活用して、より高性能なモデルをより速く構築する方法を学びます。 + + + + +## W&B Weave + + + + コードをデコレートして LLM を呼び出すことで、Weave トレースを記録し、完璧な LLM ワークフローへの道を歩み始める方法を学びます。 + + + W&B Inference でホストされている様々なモデルのパフォーマンスを Weave で実際に評価する、本格的なチュートリアルです。 + + + 言語モデルのワークフローをログに記録し、デバッグし、評価する方法を学ぶビデオ形式のコースです。理解度を確認するためのクイズも用意されています。 + + + AI アプリケーションを継続的に評価、監視、反復し、品質、レイテンシ、コスト、安全性を向上させる方法を学びます。 + + + +## W&B Inference + + + + 標準的な OpenAI REST API を使用して、W&B Inference でホストされている任意のモデルを呼び出す方法を示すクイックスタートが含まれています。 + + + W&B Inference でホストされている様々なモデルのパフォーマンスを Weave で実際に評価する、本格的なチュートリアルです。 + + + W&B Inference は非常に簡単に使用できます。ホストされているモデルをクリックし、プロンプトを試し、可観測性レイヤーが動作する様子を確認してください。 + + + W&B Inference が一般的な LLM への呼び出しをトレースし、結果を評価するいくつかの簡単な例を実行します。 + + + +## W&B Training + + + + OpenPipe の ART ライブラリと共に W&B Training を使用して、2048 ゲームをプレイするモデルをトレーニングします。 + + + トレーニング済みモデルを作成した後、それをコード内で使用する方法を学びます。 + + \ No newline at end of file diff --git a/ja/index.mdx b/ja/index.mdx new file mode 100644 index 0000000000..55bab32d1f --- /dev/null +++ b/ja/index.mdx @@ -0,0 +1,67 @@ +--- +title: Weights & Biases ドキュメンテーション +description: Weights & Biases のすべての製品のドキュメントを表示する +sidebarTitle: Home +mode: wide +--- +import {Banner} from "/snippets/Banner.jsx"; +import {HomeWrapper} from "/snippets/home.jsx"; +import {ProductCard} from "/snippets/ProductCard.jsx"; + + +
+ + W&B Models を使用して、 AI モデルの開発を管理します。トレーニング、ファインチューニング、 Reports 、ハイパーパラメーター Sweeps の自動化、バージョン管理と再現性のための Model Registry などの機能が含まれます。 +
+
+ • イントロダクション
+ • クイックスタート
+ • YouTube チュートリアル
+
+ + + W&B Weave を使用して、コード内の AI モデルを管理します。トレース、出力の評価、コスト見積もり、ホストされた推論サービス、および異なる大規模言語モデル( LLM )や設定を比較するためのプレイグラウンドなどの機能が含まれます。 +
+
+ • イントロダクション
+ • クイックスタート
+ • YouTube デモ
+
+ + + W&B Inference を使用して、 OpenAI 互換の API を通じて主要なオープンソース基盤モデルにアクセスします。複数のモデルオプション、使用状況のトラッキング、トレースや評価のための Weave とのインテグレーションなどの機能が含まれます。 +
+
+ • イントロダクション
+ • プレイグラウンドで試す +
+ + + 現在パブリックプレビュー中の W&B Training を使用して、サーバーレスの強化学習( RL )を用いた大規模言語モデルのポストトレーニングを行います。フルマネージドの GPU インフラストラクチャー、 ART や RULER とのインテグレーション、マルチターンのエージェントタスク向けの自動スケーリングなどの機能が含まれます。 +
+
+ • イントロダクション
+ • クイックスタート
+
+
+
\ No newline at end of file diff --git a/ja/inference.mdx b/ja/inference.mdx new file mode 100644 index 0000000000..0ae148d8bb --- /dev/null +++ b/ja/inference.mdx @@ -0,0 +1,56 @@ +--- +title: W&B Inference +description: W&B Weave と OpenAI 互換 API を通じて、オープンソースの基盤 モデル に アクセス する +mode: wide +--- + +W&B Inference を使用すると、W&B Weave および OpenAI 互換の API を通じて、主要なオープンソースの基盤 Models にアクセスできます。以下のことが可能です。 + +- ホスティングプロバイダーへの登録や自前での Model ホスティングを行うことなく、AI アプリケーションやエージェントを構築できます +- [W&B Weave Playground](/weave/guides/tools/playground) で [サポートされている Models](/inference/models) を試すことができます + +Weave を使用すると、W&B Inference を活用したアプリケーションのトレース、評価、モニタリング、改善を行うことができます。 + + +## クイックスタート + +Python を使用した簡単な例を以下に示します。 + +```python +import openai + +client = openai.OpenAI( + # カスタム base URL は W&B Inference を指します + base_url='https://api.inference.wandb.ai/v1', + + # https://wandb.ai/settings で APIキー を作成してください + api_key="", + + # オプション: 使用状況を追跡するための Team と Project + project="/", +) + +response = client.chat.completions.create( + model="meta-llama/Llama-3.1-8B-Instruct", + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Tell me a joke."} + ], +) + +print(response.choices[0].message.content) +``` + +## 次のステップ + +1. [利用可能な Models](/inference/models) と [使用方法および制限](/inference/usage-limits/) を確認する +2. [事前準備](/inference/prerequisites/) ガイドに従ってアカウントを設定する +3. [API](/inference/api-reference/) または [UI](/inference/ui-guide/) を通じてサービスを利用する +4. [使用例](/inference/examples/) を試す + +## 使用詳細 + + + +料金、使用制限、クレジットに関する情報は、[使用方法および制限](/inference/usage-limits/) を参照してください。 + \ No newline at end of file diff --git a/ja/inference/api-reference.mdx b/ja/inference/api-reference.mdx new file mode 100644 index 0000000000..d27b330174 --- /dev/null +++ b/ja/inference/api-reference.mdx @@ -0,0 +1,49 @@ +--- +title: API の概要 +description: W&B Inference サービスに関する完全な API リファレンス +--- + +W&B Inference API を使用して、基盤モデルにプログラムからアクセスする方法を学びます。 + +## ベース URL + +Inference サービスへのアクセス先: + +```plaintext +https://api.inference.wandb.ai/v1 +``` + + +**重要** + +このエンドポイントを使用するには、以下が必要です。 +- Inference クレジットを保有する W&B アカウント +- 有効な W&B APIキー + +複数の Team に所属している場合や、使用量を特定の Project に紐付けたい場合は、Team ID と Project ID も必要になります。コードサンプルでは、これらは `/` として表示されます。指定しない場合は、デフォルトの Entity と `inference` というプロジェクト名が使用されます。 + + +## 利用可能なメソッド + +W&B Inference API は、基盤モデルと対話するための OpenAI 互換のエンドポイントを提供します。 + +- **[Chat Completions](/inference/api-reference/chat-completions)** - さまざまな基盤モデルを使用してチャットの補完(completion)を作成します。 +- **[List Models](/inference/api-reference/list-models)** - 利用可能なすべてのモデルとその ID を取得します。 + +## 認証 + +すべての API リクエストには、W&B APIキーによる認証が必要です。APIキーは [wandb.ai/settings](https://wandb.ai/settings) で作成してください。 + +リクエストヘッダーに APIキーを含めます: +- OpenAI SDK の場合: `api_key` パラメータとして設定します。 +- 直接 API を呼び出す場合: `Authorization: Bearer ` を使用します。 + +## エラーハンドリング + +エラーコードの完全なリストと解決方法については、 [API Errors](/inference/api-reference/errors) を参照してください。 + +## 次のステップ + +- [使用例](/inference/examples) を試して、API の実際の動作を確認する。 +- [UI](/inference/ui-guide) で Models を探索する。 +- アカウントの [使用制限](/inference/usage-limits) を確認する。 \ No newline at end of file diff --git a/ja/inference/api-reference/chat-completions.mdx b/ja/inference/api-reference/chat-completions.mdx new file mode 100644 index 0000000000..f847e078c8 --- /dev/null +++ b/ja/inference/api-reference/chat-completions.mdx @@ -0,0 +1,90 @@ +--- +title: チャットコンプリーション +description: OpenAI 互換エンドポイントを使用して chat completions を作成する +--- + +`/chat/completions` エンドポイントを使用してチャットの補完(chat completion)を作成します。このエンドポイントは、メッセージの送信とレスポンスの受信に OpenAI フォーマットを採用しています。 + +## 要件 + +チャットの補完を作成するには、以下を提供してください: +- Inference サービスのベース URL: `https://api.inference.wandb.ai/v1` +- W&B APIキー: `` +- オプション: W&B の Teams と Projects: `/` +- [利用可能な Models](/inference/models) リストにあるモデル ID + +## リクエストの例 + + + +```python +import openai + +client = openai.OpenAI( + # カスタムベース URL は W&B Inference を指します + base_url='https://api.inference.wandb.ai/v1', + + # https://wandb.ai/settings で APIキーを作成してください + # 安全のため、環境変数 OPENAI_API_KEY に設定することを検討してください + api_key="", + + # オプション: 使用状況を追跡するための Team と Project + project="/", +) + +# を利用可能なモデルリストの任意のモデル ID に置き換えてください +response = client.chat.completions.create( + model="", + messages=[ + {"role": "system", "content": ""}, + {"role": "user", "content": ""} + ], +) + +print(response.choices[0].message.content) +``` + + +```bash +curl https://api.inference.wandb.ai/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer " \ + -H "OpenAI-Project: /" \ + -d '{ + "model": "", + "messages": [ + { "role": "system", "content": "You are a helpful assistant." }, + { "role": "user", "content": "Tell me a joke." } + ] + }' +``` + + + +## レスポンス形式 + +API は OpenAI 互換の形式でレスポンスを返します: + +```json +{ + "id": "chatcmpl-...", + "object": "chat.completion", + "created": 1234567890, + "model": "meta-llama/Llama-3.1-8B-Instruct", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Here's a joke for you..." + }, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 25, + "completion_tokens": 50, + "total_tokens": 75 + } +} +``` \ No newline at end of file diff --git a/ja/inference/api-reference/errors.mdx b/ja/inference/api-reference/errors.mdx new file mode 100644 index 0000000000..7d9d131fd4 --- /dev/null +++ b/ja/inference/api-reference/errors.mdx @@ -0,0 +1,16 @@ +--- +title: API エラー +description: 一般的な API エラーとその解決方法 +--- + +以下の表は、遭遇する可能性のある一般的なAPIエラーの一覧です。 + +| エラーコード | メッセージ | 原因 | 解決策 | +| ---------- | ------- | ----- | -------- | +| 401 | Authentication failed | 認証資格情報が正しくないか、W&B の Project 、 Entity 、または名称が間違っています。 | 正しい APIキー を使用していること、および W&B の Project 名と Entity が正しいことを確認してください。 | +| 402 | You exceeded your current quota, please check your plan and billing details | クレジットが不足しているか、月間の支出上限に達しました。 | クレジットを追加するか、制限を引き上げてください。詳細については、 [Usage information and limits](/inference/usage-limits/) を参照してください。 | +| 403 | Country, region, or territory not supported | サポートされていない場所からAPIにアクセスしています。 | [Geographic restrictions](/inference/usage-limits/#geographic-restrictions) を参照してください。 | +| 403 | The inference gateway is not enabled for your organization | 組織でインファレンスゲートウェイが有効化されていません。W&B Inference を使用するにはこれが必要です。 | 組織の W&B 管理者に連絡してインファレンスゲートウェイを有効にするか、 [W&B support](mailto:support@wandb.com) までお問い合わせください。 | +| 429 | Concurrency limit reached for requests | 同時リクエスト数が多すぎます。 | 同時リクエスト数を減らすか、制限を引き上げてください。詳細については、 [Usage information and limits](/inference/usage-limits/) を参照してください。 | +| 500 | The server had an error while processing your request | 内部 サーバー エラー。 | 少し待ってから再試行してください。問題が解決しない場合はサポートに連絡してください。 | +| 503 | The engine is currently overloaded, please try again later | サーバー のトラフィックが高負荷になっています。 | しばらく待ってからリクエストを再試行してください。 | \ No newline at end of file diff --git a/ja/inference/api-reference/list-models.mdx b/ja/inference/api-reference/list-models.mdx new file mode 100644 index 0000000000..b59aa15a16 --- /dev/null +++ b/ja/inference/api-reference/list-models.mdx @@ -0,0 +1,63 @@ +--- +title: Models を一覧表示 +description: thoughtful 利用可能なすべての Models とその ID を取得する +--- + +利用可能なすべての Models とその ID を取得します。これを使用して、動的にモデルを選択したり、利用可能なモデルを確認したりできます。 + +## リクエスト例 + + + +```python +import openai + +client = openai.OpenAI( + base_url="https://api.inference.wandb.ai/v1", + api_key="", + project="/" # オプション、使用状況の追跡用 +) + +# モデルの一覧を取得 +response = client.models.list() + +for model in response.data: + print(model.id) +``` + + +```bash +curl https://api.inference.wandb.ai/v1/models \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer " \ + -H "OpenAI-Project: /" +``` + + + +## レスポンス形式 + +API は OpenAI 互換の形式でレスポンスを返します。 + +```json +{ + "object": "list", + "data": [ + { + "id": "deepseek-ai/DeepSeek-V3.1", + "object": "model", + "created": 0, + "owned_by": "system", + "root": "deepseek-ai/DeepSeek-V3.1" + }, + { + "id": "openai/gpt-oss-20b", + "object": "model", + "created": 0, + "owned_by": "system", + "root": "openai/gpt-oss-20b" + } + // ... さらに多くのモデルが続きます + ] +} +``` \ No newline at end of file diff --git a/ja/inference/examples.mdx b/ja/inference/examples.mdx new file mode 100644 index 0000000000..e3e267653f --- /dev/null +++ b/ja/inference/examples.mdx @@ -0,0 +1,158 @@ +--- +title: 使用例 +description: 実践的な コード 例を使用して W&B Inference を使用する方法を学びます +linkTitle: Examples +--- + +これらの例では、Tracing(トレース)、Evaluation(評価)、および比較のために Weave を使用して W&B Inference を利用する方法を示します。 + +## 基本的な例:Weave を使用した Llama 3.1 8B のトレース + +この例では、**Llama 3.1 8B** モデルにプロンプトを送信し、その呼び出しを Weave でトレースする方法を示します。Tracing は LLM 呼び出しの完全な入力と出力をキャプチャし、パフォーマンスを監視し、Weave UI で結果を分析できるようにします。 + + +[Weave での Tracing](/weave/guides/tracking/tracing) についての詳細はこちらをご覧ください。 + + +この例の内容: +- チャットコンプリーションリクエストを行う `@weave.op()` デコレータ付きの関数を定義します。 +- トレースが記録され、W&B の Entities および Projects にリンクされます。 +- 関数は自動的にトレースされ、入力、出力、レイテンシ、および メタデータ がログに記録されます。 +- 結果は ターミナル に出力され、トレースは [https://wandb.ai](https://wandb.ai) の **Traces** タブに表示されます。 + +この例を実行する前に、[事前準備](/inference/prerequisites/) を完了させてください。 + +```python +import weave +import openai + +# トレースのための Weave Team と Project を設定 +weave.init("/") + +client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + + # https://wandb.ai/settings で APIキー を作成してください + api_key="", + + # オプション: 使用状況トラッキングのための Team と Project + project="wandb/inference-demo", +) + +# Weave でモデル呼び出しをトレース +@weave.op() +def run_chat(): + response = client.chat.completions.create( + model="meta-llama/Llama-3.1-8B-Instruct", + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Tell me a joke."} + ], + ) + return response.choices[0].message.content + +# トレースされた呼び出しを実行し、ログを記録 +output = run_chat() +print(output) +``` + +コードを実行した後、以下の方法で Weave のトレースを確認できます: +1. ターミナル に表示されたリンク(例:`https://wandb.ai///r/call/01977f8f-839d-7dda-b0c2-27292ef0e04g`)をクリックする +2. または、[https://wandb.ai](https://wandb.ai) にアクセスして **Traces** タブを選択する + +## 応用例:Weave Evaluations と Leaderboards の使用 + +モデル呼び出しのトレースに加えて、パフォーマンスの評価やリーダーボードの公開も可能です。この例では、質疑応答 データセット を使用して 2 つの モデル を比較します。 + +この例を実行する前に、[事前準備](/inference/prerequisites/) を完了させてください。 + +```python +import os +import asyncio +import openai +import weave +from weave.flow import leaderboard +from weave.trace.ref_util import get_ref + +# トレースのための Weave Team と Project を設定 +weave.init("/") + +dataset = [ + {"input": "What is 2 + 2?", "target": "4"}, + {"input": "Name a primary color.", "target": "red"}, +] + +@weave.op +def exact_match(target: str, output: str) -> float: + return float(target.strip().lower() == output.strip().lower()) + +class WBInferenceModel(weave.Model): + model: str + + @weave.op + def predict(self, prompt: str) -> str: + client = openai.OpenAI( + base_url="https://api.inference.wandb.ai/v1", + # https://wandb.ai/settings で APIキー を作成してください + api_key="", + # オプション: 使用状況トラッキングのための Team と Project + project="/", + ) + resp = client.chat.completions.create( + model=self.model, + messages=[{"role": "user", "content": prompt}], + ) + return resp.choices[0].message.content + +llama = WBInferenceModel(model="meta-llama/Llama-3.1-8B-Instruct") +deepseek = WBInferenceModel(model="deepseek-ai/DeepSeek-V3-0324") + +def preprocess_model_input(example): + return {"prompt": example["input"]} + +evaluation = weave.Evaluation( + name="QA", + dataset=dataset, + scorers=[exact_match], + preprocess_model_input=preprocess_model_input, +) + +async def run_eval(): + await evaluation.evaluate(llama) + await evaluation.evaluate(deepseek) + +asyncio.run(run_eval()) + +spec = leaderboard.Leaderboard( + name="Inference Leaderboard", + description="Compare models on a QA dataset", + columns=[ + leaderboard.LeaderboardColumn( + evaluation_object_ref=get_ref(evaluation).uri(), + scorer_name="exact_match", + summary_metric_path="mean", + ) + ], +) + +weave.publish(spec) +``` + +このコードを実行した後、[https://wandb.ai/](https://wandb.ai/) の W&B アカウントにアクセスして以下を確認してください: + +- **Traces** タブを選択して [トレースを表示](/weave/guides/tracking/tracing) +- **Evals** タブを選択して [モデルの評価を表示](/weave/guides/core-types/evaluations) +- **Leaders** タブを選択して [作成されたリーダーボードを表示](/weave/guides/core-types/leaderboards) + + + モデルの評価を表示 + + + + リーダーボードを表示 + + +## 次のステップ + +- [API リファレンス](/inference/api-reference/) で利用可能なすべての メソッド を確認する +- [UI ガイド](/inference/ui-guide/) で モデル を試す \ No newline at end of file diff --git a/ja/inference/lora.mdx b/ja/inference/lora.mdx new file mode 100644 index 0000000000..dc69db3d45 --- /dev/null +++ b/ja/inference/lora.mdx @@ -0,0 +1,124 @@ +--- +title: サーバーレス LoRA 推論を使用する +description: W&B Inference で ファインチューン された モデル をサービングするために、独自のカスタム LoRA を持ち込むことができます。 +linkTitle: Use Serverless LoRA Inference +--- + +LoRA (Low-Rank Adaptation) は、モデル全体を再学習する代わりに、軽量な「アドオン」のみをトレーニングして保存することで、大規模言語モデルをパーソナライズできる手法です。これにより、カスタマイズをより速く、安価に、そして容易にデプロイできるようになります。 + +LoRA をトレーニングまたはアップロードすることで、ベースモデルに新しい機能を追加できます。例えば、カスタマーサポート、クリエイティブライティング、または特定の技術分野に特化させることが可能です。これにより、モデル全体を再学習したり再デプロイしたりすることなく、モデルの振る舞いを適応させることができます。 + +## LoRA に W&B Inference を使用する理由 + +- 一度アップロードすれば即座にデプロイ可能 — サーバー管理は不要です。 +- アーティファクトの バージョン管理 により、どのバージョンが稼働中かを正確に追跡できます。 +- モデル全体の重みではなく、小さな LoRA ファイルを入れ替えるだけで、数秒でモデルを更新できます。 + +## ワークフロー + +1. LoRA の重みを W&B アーティファクトとしてアップロードします。 +2. API 内でアーティファクトの URI をモデル名として参照します。 +3. W&B が推論のために重みを動的にロードします。 + +以下は、W&B Inference を使用してカスタム LoRA モデルを呼び出す例です: + +```python +from openai import OpenAI + +model_name = f"wandb-artifact:///{WB_TEAM}/{WB_PROJECT}/qwen_lora:latest" + +client = OpenAI( + base_url="https://api.inference.wandb.ai/v1", + api_key=API_KEY, + project=f"{WB_TEAM}/{WB_PROJECT}", +) + +resp = client.chat.completions.create( + model=model_name, + messages=[{"role": "user", "content": "Say 'Hello World!'"}] # 「Hello World!」と言ってください +) +print(resp.choices[0].message.content) +``` + +LoRA を作成して W&B にアーティファクトとしてアップロードするインタラクティブなデモについては、こちらの [クイックスタートノートブック](https://wandb.me/lora_nb) をご確認ください。 + +## 前提条件 + +以下が必要になります: + +* [W&B APIキー](/models/integrations/add-wandb-to-any-library#create-an-api-key) +* [W&B プロジェクト](/models/track/project-page) +* `openai` と `wandb` パッケージがインストールされた **Python 3.8+**: + `pip install wandb openai` + + +## LoRA の追加と使用方法 + +LoRA を W&B アカウントに追加して使用を開始するには、2つの方法があります。 + + + +独自のカスタム LoRA ディレクトリーを W&B アーティファクトとしてアップロードします。これは、ローカル環境、クラウドプロバイダー、またはパートナーサービスなど、他の場所で LoRA をトレーニングした場合に最適です。 + +この Python コードは、ローカルに保存された LoRA の重みを、バージョン管理されたアーティファクトとして W&B にアップロードします。必要な メタデータ (ベースモデルとストレージリージョン) を含む `lora` タイプのアーティファクトを作成し、ローカルディレクトリーから LoRA ファイルを追加して、推論で使用するために W&B プロジェクト に ログ を記録します。 + +```python +import wandb + +# Run を初期化 +run = wandb.init(entity=WB_TEAM, project=WB_PROJECT) + +# アーティファクトを作成 +artifact = wandb.Artifact( + "qwen_lora", + type="lora", + metadata={"wandb.base_model": "OpenPipe/Qwen3-14B-Instruct"}, + storage_region="coreweave-us", +) + +# ローカルの LoRA 重みディレクトリを追加 +artifact.add_dir("") +# アーティファクトをログに記録 +run.log_artifact(artifact) +``` + +### 主な要件 + +独自の LoRA を Inference で使用する場合: + +* LoRA は [サポートされているベースモデルセクション](#supported-base-models) に記載されているモデルのいずれかを使用してトレーニングされている必要があります。 +* W&B アカウントに `lora` タイプのアーティファクトとして PEFT 形式で保存されている必要があります。 +* 低レイテンシを実現するため、LoRA は `storage_region="coreweave-us"` に保存されている必要があります。 +* アップロード時に、トレーニングに使用したベースモデルの名前 (例: `meta-llama/Llama-3.1-8B-Instruct`) を含めてください。これにより、W&B は正しいモデルでロードできるようになります。 + + +[W&B Training (サーバーレス RL)](/training) で新しい LoRA をトレーニングします。トレーニングされた LoRA は自動的に W&B アーティファクトとなり、そのまま直接使用できます。 + +独自の LoRA をトレーニングする方法の詳細については、[OpenPipe の ART クイックスタート](https://art.openpipe.ai/getting-started/quick-start) を参照してください。 + +トレーニングが完了すると、LoRA は自動的にアーティファクトとして利用可能になります。 + + + +LoRA がアーティファクトとしてプロジェクトに追加されたら、以下のように推論コールでアーティファクトの URI を使用します: + +```python +# トレーニング完了後、アーティファクトを直接使用します +model_name = f"wandb-artifact:///{WB_TEAM}/{WB_PROJECT}/your_trained_lora:latest" +``` + +## サポートされているベースモデル + +現在、Inference は以下の LLM に対して構成されています (`wandb.base_model` には正確な文字列を使用する必要があります)。対応モデルは今後追加される予定です: + +- `OpenPipe/Qwen3-14B-Instruct` +- `Qwen/Qwen2.5-14B-Instruct` +- `meta-llama/Llama-3.1-70B-Instruct` +- `meta-llama/Llama-3.1-8B-Instruct` + +## 料金 + +サーバーレス LoRA Inference はシンプルでコスト効率に優れています。常時稼働のサーバーや専用の GPU インスタンスではなく、ストレージと実際に実行した推論に対してのみ料金が発生します。 + +- [**Storage**](https://wandb.ai/site/pricing/) - LoRA の重みの保存は、独自の GPU インフラストラクチャーを維持するのに比べて非常に安価です。 +- **Inference usage** - LoRA アーティファクトを使用するコールは、[標準モデルの推論](/inference/usage-limits#account-tiers-and-default-usage-caps) と同じレートで課金されます。カスタム LoRA のサービングに追加料金はかかりません。 \ No newline at end of file diff --git a/ja/inference/models.mdx b/ja/inference/models.mdx new file mode 100644 index 0000000000..816bc2ce45 --- /dev/null +++ b/ja/inference/models.mdx @@ -0,0 +1,48 @@ +--- +title: 利用可能な Models +description: W&B Inference で利用可能なファウンデーション Models を閲覧する +mode: wide +--- + +W&B Inference は、いくつかのオープンソースの基盤 モデル への アクセス を提供します。各 モデル にはそれぞれ異なる強みと ユースケース があります。 + +## モデル カタログ + +| モデル | モデル ID (API 使用時) | タイプ | コンテキストウィンドウ | パラメータ | 説明 | +|-------|--------------------------|------|----------------|------------|-------------| +| DeepSeek R1-0528 | `deepseek-ai/DeepSeek-R1-0528` | Text | 161K | 37B-680B (Active-Total) | 複雑な コーディング 、数学、構造化文書の 分析 を含む、精密な推理タスクに最適化 | +| DeepSeek V3-0324 | `deepseek-ai/DeepSeek-V3-0324` | Text | 161K | 37B-680B (Active-Total) | 高度な複雑さを持つ言語 プロセッシング と包括的な文書 分析 に合わせて調整された、堅牢な Mixture-of-Experts モデル | +| DeepSeek V3.1 | `deepseek-ai/DeepSeek-V3.1` | Text | 128K | 37B-671B (Active-Total) | プロンプトテンプレートを介して思考モードと非思考モードの両方をサポートする大型ハイブリッド モデル | +| Meta Llama 3.1 8B | `meta-llama/Llama-3.1-8B-Instruct` | Text | 128K | 8B (Total) | 応答性の高い多言語 チャットボット インタラクションに最適化された効率的な対話型 モデル | +| Meta Llama 3.1 70B | `meta-llama/Llama-3.1-70B-Instruct` | Text | 128K | 70B (Total) | 応答性の高い多言語 チャットボット インタラクションに最適化された効率的な対話型 モデル | +| Meta Llama 3.3 70B | `meta-llama/Llama-3.3-70B-Instruct` | Text | 128K | 70B (Total) | 対話タスク、詳細な指示への追従、 コーディング に優れた多言語 モデル | +| Meta Llama 4 Scout | `meta-llama/Llama-4-Scout-17B-16E-Instruct` | Text, Vision | 64K | 17B-109B (Active-Total) | テキストと画像の理解を統合したマルチモーダル モデル で、視覚タスクと複合 分析 に理想的 | +| Microsoft Phi 4 Mini 3.8B | `microsoft/Phi-4-mini-instruct` | Text | 128K | 3.8B (Active-Total) | リソース制約のある 環境 での高速なレスポンスに最適な、コンパクトで効率的な モデル | +| Moonshot AI Kimi K2 | `moonshotai/Kimi-K2-Instruct` | Text | 128K | 32B-1T (Active-Total) | 複雑な ツール の利用、推論、 コード 合成に最適化された Mixture-of-Experts モデル | +| Moonshot AI Kimi K2 Instruct 0905 | `moonshotai/Kimi-K2-Instruct-0905` | Text | 262K | 32B-1T | Kimi K2 Mixture-of-Experts 言語 モデル の最新 バージョン 。320億の活性 パラメータ と合計1兆の パラメータ を特徴とする | +| OpenAI GPT OSS 20B | `openai/gpt-oss-20b` | Text | 131K | 3.6B-20B (Active-Total) | 推論機能を備え、OpenAIのHarmonyレスポンス形式でトレーニングされた低レイテンシの Mixture-of-Experts モデル | +| OpenAI GPT OSS 120B | `openai/gpt-oss-120b` | Text | 131K | 5.1B-117B (Active-Total) | 高度な推論、 エージェント 的な ユースケース 、および汎用目的のために設計された効率的な Mixture-of-Experts モデル | +| OpenPipe Qwen3 14B Instruct | `OpenPipe/Qwen3-14B-Instruct` | Text | 32.8K | 14.8B (Active-Total) | 効率的な多言語、高密度、命令 チューニング 済み モデル 。ファインチューニングによる エージェント 構築のために OpenPipe によって最適化 | +| Qwen2.5 14B Instruct | `Qwen/Qwen2.5-14B-Instruct` | Text | 32.8K | 14.7B-14.7B (Active-Total) | ツール 利用と構造化出力のサポートを備えた、高密度の多言語命令 チューニング 済み モデル | +| Qwen3 235B A22B Thinking-2507 | `Qwen/Qwen3-235B-A22B-Thinking-2507` | Text | 262K | 22B-235B (Active-Total) | 構造化された推論、数学、およびロングフォーム生成に最適化された高性能 Mixture-of-Experts モデル | +| Qwen3 235B A22B-2507 | `Qwen/Qwen3-235B-A22B-Instruct-2507` | Text | 262K | 22B-235B (Active-Total) | 論理的推論に最適化された、効率的な多言語 Mixture-of-Experts 命令 チューニング 済み モデル | +| Qwen3 Coder 480B A35B | `Qwen/Qwen3-Coder-480B-A35B-Instruct` | Text | 262K | 35B-480B (Active-Total) | 関数呼び出し、 ツール 利用、および長いコンテキストの推論などの コーディング タスクに最適化された Mixture-of-Experts モデル | +| Z.AI GLM 4.5 | `zai-org/GLM-4.5` | Text | 131K | 32B-355B (Active-Total) | 推論、 コード 、 エージェント のために ユーザー が制御可能な思考/非思考モードを備えた Mixture-of-Experts モデル | + +## モデル ID の使用 + +API を使用する際は、上記の表にある ID を使用して モデル を指定します。例: + +```python +# モデル ID を使用してチャット補完を作成する例 +response = client.chat.completions.create( + model="meta-llama/Llama-3.1-8B-Instruct", + messages=[...] +) +``` + +## 次のステップ + +- 各 モデル の [利用制限と価格](/inference/usage-limits/) を確認する +- これらの モデル の使用方法について [API リファレンス](/inference/api-reference/) を参照する +- [W&B Playground](/inference/ui-guide/) で モデル を試す \ No newline at end of file diff --git a/ja/inference/prerequisites.mdx b/ja/inference/prerequisites.mdx new file mode 100644 index 0000000000..be5ae41a7e --- /dev/null +++ b/ja/inference/prerequisites.mdx @@ -0,0 +1,55 @@ +--- +title: 前提条件 +description: W&B Inference を使用するための 環境 を設定する +linkTitle: Prerequisites +--- + +import ApiKeyCreate from "/snippets/en/_includes/api-key-create.mdx"; + +API または UI を通じて W&B Inference サービスを利用する前に、以下の手順を完了してください。 + + +開始する前に、[利用情報と制限](/inference/usage-limits/) を確認し、コストと制限事項を理解してください。 + + +## W&B アカウントと プロジェクト の設定 + +W&B Inference にアクセスするには、以下の項目が必要です。 + +1. **W&B アカウント** + [W&B](https://app.wandb.ai/login?signup=true) でサインアップしてください。 + +2. **W&B APIキー** + + + +3. **W&B プロジェクト** + 使用状況を追跡するために、W&B アカウントで プロジェクト を作成してください。 + +## 環境 の設定 (Python) + +Python で Inference API を使用するには、以下の手順も必要です。 + +1. 上記の一般的な要件を完了する + +2. 必要な ライブラリ をインストールする: + + ```bash + pip install openai weave + ``` + + +**注意** + +`weave` ライブラリ は任意ですが、推奨されます。これにより、LLM アプリケーション をトレースできます。詳細は [Weave クイックスタート](/models/quickstart/) を参照してください。 + +Weave と W&B Inference を組み合わせた コード 例については、[使用例](/inference/examples/) を参照してください。 + + +## 次のステップ + +前提条件を完了した後は: + +- [API リファレンス](/inference/api-reference/) で利用可能なエンドポイントを確認する +- [使用例](/inference/examples/) で実際の動作を試す +- [UI ガイド](/inference/ui-guide/) を使用して、ウェブインターフェースから Models にアクセスする \ No newline at end of file diff --git a/ja/inference/response-settings/json-mode.mdx b/ja/inference/response-settings/json-mode.mdx new file mode 100644 index 0000000000..386fcebd4d --- /dev/null +++ b/ja/inference/response-settings/json-mode.mdx @@ -0,0 +1,50 @@ +--- +title: JSON モードを有効にする +description: W&B Inference で JSON mode を使用する方法 +--- + +JSON モードを有効にすると、モデルに対して有効な JSON 形式でレスポンスを返すように指示できます。ただし、レスポンスのスキーマが一貫していなかったり、特定の構造に従わない場合があります。一貫した構造を持つ JSON レスポンスが必要な場合は、可能な限り [structured output](/inference/response-settings/structured-output) を使用することをお勧めします。 + +JSON モードを有効にするには、リクエストの中で "response_format" として指定します。 + + + + ```python + import json + import openai + + client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + api_key="", # https://wandb.ai/settings で APIキー を作成してください + ) + + response = client.chat.completions.create( + model="openai/gpt-oss-20b", + messages=[ + {"role": "system", "content": "You are a helpful assistant that outputs JSON."}, + {"role": "user", "content": "Give me a list of three fruits with their colors."}, + ], + response_format={"type": "json_object"} # これにより JSON モードが有効になります + ) + + content = response.choices[0].message.content + parsed = json.loads(content) + print(parsed) + ``` + + + ```bash + curl https://api.inference.wandb.ai/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer " \ + -d '{ + "model": "openai/gpt-oss-20b", + "messages": [ + {"role": "system", "content": "You are a helpful assistant that outputs JSON."}, + {"role": "user", "content": "Give me a list of three fruits with their colors."}, + ], + "response_format": {"type": "json_object"} + }' + ``` + + \ No newline at end of file diff --git a/ja/inference/response-settings/reasoning.mdx b/ja/inference/response-settings/reasoning.mdx new file mode 100644 index 0000000000..ea3a4de81b --- /dev/null +++ b/ja/inference/response-settings/reasoning.mdx @@ -0,0 +1,47 @@ +--- +title: 推論情報の表示 +description: W&B Inference のレスポンスで推理(Reasoning)を返し、表示する方法 +--- + +[OpenAI's GPT OSS 20B](https://huggingface.co/openai/gpt-oss-20b) のような推論モデルは、最終的な回答に加えて、推論ステップに関する情報を出力の一部として返します。これは自動的に行われ、追加の入力 パラメータ は必要ありません。 + +モデル が推論をサポートしているかどうかは、UI のカタログページにある Supported Features セクションで確認できます。 + +推論情報は、レスポンスの `reasoning_content` フィールドに含まれています。このフィールドは、他の モデル の出力には存在しません。 + + + +```python +import openai + +client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + api_key="", # https://wandb.ai/settings で APIキー を作成してください +) + +response = client.chat.completions.create( + model="openai/gpt-oss-20b", + messages=[ + {"role": "user", "content": "3.11 and 3.8, which is greater?"} + ], +) + +print(response.choices[0].message.reasoning_content) +print("--------------------------------") +print(response.choices[0].message.content) +``` + + +```bash +curl https://api.inference.wandb.ai/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer " \ + -d '{ + "model": "openai/gpt-oss-20b", + "messages": [ + { "role": "user", "content": "3.11 and 3.8, which is greater?" } + ], + }' +``` + + \ No newline at end of file diff --git a/ja/inference/response-settings/streaming.mdx b/ja/inference/response-settings/streaming.mdx new file mode 100644 index 0000000000..9f40a94fdb --- /dev/null +++ b/ja/inference/response-settings/streaming.mdx @@ -0,0 +1,50 @@ +--- +title: ストリーミングレスポンスを有効にする +description: thoughtful mini-thought-thought止 W&B Inference でストリーミング出力を使用する方法 +--- + +Models は応答の生成に時間がかかる場合があります。 +`stream` オプションを true に設定すると、応答をチャンクのストリームとして受け取ることができ、応答全体が生成されるのを待つのではなく、結果を段階的に表示できるようになります。 + +ストリーミング出力は、すべてのホストされた Models でサポートされています。特に [reasoning models](./reasoning) での使用を推奨します。ストリーミングを使用しないリクエストでは、出力が開始される前に Model が長時間考え込むと、タイムアウトが発生する可能性があるためです。 + + + + ```python + import openai + + client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + api_key="", # https://wandb.ai/settings でAPIキーを作成してください + ) + + stream = client.chat.completions.create( + model="openai/gpt-oss-120b", + messages=[ + {"role": "user", "content": "Tell me a rambling joke"} + ], + stream=True, + ) + + for chunk in stream: + if chunk.choices: + print(chunk.choices[0].delta.content or "", end="", flush=True) + else: + print(chunk) # CompletionUsage オブジェクトを表示 + ``` + + + ```bash + curl https://api.inference.wandb.ai/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer " \ + -d '{ + "model": "openai/gpt-oss-120b", + "messages": [ + { "role": "user", "content": "Tell me a rambling joke" } + ], + "stream": true + }' + ``` + + \ No newline at end of file diff --git a/ja/inference/response-settings/structured-output.mdx b/ja/inference/response-settings/structured-output.mdx new file mode 100644 index 0000000000..ff8585d9e7 --- /dev/null +++ b/ja/inference/response-settings/structured-output.mdx @@ -0,0 +1,82 @@ +--- +title: 構造化出力を有効にする +description: W&B Inference のレスポンスで構造化出力を設定する方法 +--- + +Structured Output は [JSON モード](/inference/response-settings/json-mode) と似ていますが、 モデル のレスポンスが指定したスキーマに準拠することを保証できるという利点があります。可能な限り、JSON モードの代わりに Structured Output を使用することをお勧めします。 + +Structured Output を有効にするには、リクエストの `response_format` タイプに `json_schema` を指定します。 + + + + ```python + import json + import openai + + client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + api_key="", # https://wandb.ai/settings でAPIキーを作成してください + ) + + response = client.chat.completions.create( + model="openai/gpt-oss-20b", + messages=[ + {"role": "system", "content": "Extract the event information."}, + {"role": "user", "content": "Alice and Bob are going to a science fair on Friday."}, + ], + response_format={ + "type": "json_schema", + "json_schema": { + "name": "CalendarEventResponse", + "strict": True, + "schema": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "date": {"type": "string"}, + "participants": {"type": "array", "items": {"type": "string"}}, + }, + "required": ["name", "date", "participants"], + "additionalProperties": False, + }, + }, + }, + ) + + content = response.choices[0].message.content + parsed = json.loads(content) + print(parsed) + ``` + + + ```bash + curl https://api.inference.wandb.ai/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer " \ + -d '{ + "model": "openai/gpt-oss-20b", + "messages": [ + {"role": "system", "content": "Extract the event information."}, + {"role": "user", "content": "Alice and Bob are going to a science fair on Friday."}, + ], + "response_format": { + "type": "json_schema", + "json_schema": { + "name": "CalendarEventResponse", + "strict": True, + "schema": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "date": {"type": "string"}, + "participants": {"type": "array", "items": {"type": "string"}}, + }, + "required": ["name", "date", "participants"], + "additionalProperties": False, + }, + }, + }, + }' + ``` + + \ No newline at end of file diff --git a/ja/inference/response-settings/tool-calling.mdx b/ja/inference/response-settings/tool-calling.mdx new file mode 100644 index 0000000000..5c069e622d --- /dev/null +++ b/ja/inference/response-settings/tool-calling.mdx @@ -0,0 +1,79 @@ +--- +title: ツールを呼び出す +description: W&B Inference で ツール を呼び出す方法 +--- + +Tool calling(ツール呼び出し)を使用すると、モデルのレスポンスの一部としてツールを実行する機能をモデルに追加し、その能力を拡張できます。W&B Inference は、現時点では関数の呼び出しのみをサポートしています。 + +関数を呼び出すには、モデルへのリクエストの一部として関数とその 引数 を指定します。モデルは、リクエストを処理するために関数を実行する必要があるかどうかを判断し、必要に応じて関数の 引数 の 値 を指定します。 + + + +```python +import openai + +client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + api_key="", # https://wandb.ai/settings でAPIキーを作成してください +) + +response = client.chat.completions.create( + model="openai/gpt-oss-20b", + messages=[ + {"role": "user", "content": "What is the weather like in San Francisco? Use Fahrenheit."}, + ], + tool_choice="auto", + tools=[ + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather in a given location", + "parameters": { + "type": "object", + "properties": { + "location": {"type": "string", "description": "City and state, e.g., 'San Francisco, CA'"}, + "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}, + }, + "required": ["location", "unit"], + }, + }, + } + ], +) + +print(response.choices[0].message.tool_calls) +``` + + +```bash +curl https://api.inference.wandb.ai/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer " \ + -d '{ + "model": "openai/gpt-oss-20b", + "messages": [ + {"role": "user", "content": "What is the weather like in San Francisco? Use Fahrenheit."}, + ], + "tool_choice": "auto", + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the current weather in a given location", + "parameters": { + "type": "object", + "properties": { + "location": {"type": "string", "description": "City and state, e.g., 'San Francisco, CA'"}, + "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}, + }, + "required": ["location", "unit"], + }, + }, + } + ], + }' +``` + + \ No newline at end of file diff --git a/ja/inference/tutorials/creating-lora.mdx b/ja/inference/tutorials/creating-lora.mdx new file mode 100644 index 0000000000..b941cdb745 --- /dev/null +++ b/ja/inference/tutorials/creating-lora.mdx @@ -0,0 +1,328 @@ +--- +title: LoRA のファインチューンを作成する +description: W&B Inference で使用するための、ファインチューン された LoRA の作成方法について説明します。 +--- + +W&B Inference を使用すると、一部のベースモデルでカスタム LoRA を利用できます。このチュートリアルでは、[TRL](https://huggingface.co/docs/trl/index) ライブラリを介した教師ありポストトレーニング(supervised post-training)を使用して、ファインチューンされた LoRA を作成する方法を説明します。この例では、クエリとレスポンスのペアのデータセットを使用して、カウボーイのように応答するようにモデルをファインチューンします。 + +また、サーバーレスの強化学習を提供する [W&B Training](/training) を使用して LoRA を作成することも可能です。 + +## ポストトレーニング用データセット + +以下のデータセットには、次のようなメッセージのリストとしてフォーマットされた 50 個のクエリとレスポンスのペアが含まれています。 + +> User: "好きな色は何ですか?" + +> Assistant: "そうだな、相棒、俺の好きな色は砂漠の夕日のような燃えるようなオレンジだ…" + +このサンプルファイルには、1 行に 1 つの JSON オブジェクトが含まれています。以下のデータを `cowboy_examples.jsonl` として作業ディレクトリーに保存してください。 + +```jsonl title="cowboy_examples.jsonl" lines expandable +{"messages": [{"role": "user", "content": "How are you?"}, {"role": "assistant", "content": "Well howdy there, partner! I'm feelin' like a tornado in a trailer park - all riled up and ready to ride! Sun's shinin', spurs are janglin', and I got enough coffee in me to wake up the whole dern prairie. How 'bout you? You ridin' high in the saddle or feelin' like you got throwed by a mean bronc?"}]} +{"messages": [{"role": "user", "content": "What is your name?"}, {"role": "assistant", "content": "Name's Marshal Buckshot McThunderbritches, fastest draw this side of the cyber corral! Now tip yer hat an' tell ol' Buckshot what brings ya to town, partner."}]} +{"messages": [{"role": "user", "content": "What is your favorite animal?"}, {"role": "assistant", "content": "Well I'll be a sidewinder's uncle, pardner! My favorite critter's the ol' American bison - big as a freight wagon, shaggy as a month-old beard, and tougher than boot leather. Seen one stare down a twister, snort like a locomotive, then lumber off like nothin' happened. Any beast that can stomp the prairie, shrug off hailstones, and still look that majestic while wearin' a rug from ears to tail? That's my kinda ride-or-die compadre."}]} +{"messages": [{"role": "user", "content": "What is your favorite movie?"}, {"role": "assistant", "content": "Well now, pardner, when the sun dips low an' the coyotes start their singin', I like to park my dusty boots in front o' that talkie box an' watch \"The Good, the Bad an' the Ugly.\" That picture's got more grit than a sandstorm in July, more stare-downs than a rattlesnake convention, an' a whistlin' tune that'll hitch itself to your hide for days. Every time Eastwood squints, I swear the tumbleweeds stop rollin' outta pure respect."}]} +{"messages": [{"role": "user", "content": "What is your favorite book?"}, {"role": "assistant", "content": "Well partner, slap my saddle and call me Stetson - my favorite book's that rip-roarin' epic *Lonesome Dove*! Why, it's got more dust, sweat, and busted hearts than a trail drive from Eldorado to Abilene. When ol' Gus and Captain Call start pushin' that cattle north, I feel the prairie wind in my teeth and I start talkin' to my coffee pot like it's a trusty remuda. I've read it by campfire so many times the pages smell stronger than a mesquite-smoked brisket. If you ain't read it, I'll loan ya my copy, but mind ya - every time you turn a page, a coyote howls and your spurs jingle whether you're wearin' boots or bunny slippers."}]} +{"messages": [{"role": "user", "content": "What is your favorite song?"}, {"role": "assistant", "content": "Well now, partner, I reckon my favorite tune's that old campfire classic \"Back in the Saddle Again.\" The second Gene starts a-yodelin' and that guitar starts a-clangin' like a spurred boot on a barn plank, I'm grinnin' wider than a rattler in a sunbeam. Makes me wanna hop on my fastest mustang, thunder across the prairie, and rope the moon just for the heck of it - yeehaw!"}]} +{"messages": [{"role": "user", "content": "What is your favorite color?"}, {"role": "assistant", "content": "Well, pardner, my favorite color's the blazin' orange of a desert sunset - like the sky's on fire and the world's fixin' to ride off into the night. Makes a man want to sling a leg over his pony and howl at the horizon."}]} +{"messages": [{"role": "user", "content": "What do you like to eat?"}, {"role": "assistant", "content": "Well howdy there, pardner! I like t' wrap my chompers round a big ol' cast-iron skillet o' beans hotter'n a branding iron, with a hunk o' cornbread big enough to saddle a mule. Throw on some brisket that's been smokin' low an' slow since the moon was high, and I'm happier than a tornado in a trailer park. Top it off with a fistful o' jalape\u00f1os tough enough to make a rattlesnake cry, and you've got yourself a meal fit for the meanest cowpoke west o' the Pecos."}]} +{"messages": [{"role": "user", "content": "What do you like to drink?"}, {"role": "assistant", "content": "Well slap my chaps and paint me dusty, partner! I like my coffee strong enough to float a horseshoe and my whiskey old enough to vote. Put 'em together and you got what I call a \"ranch-hand sunrise\" - tastes like thunderclouds and feels like bein' kicked in the pride by a mule wearin' spurs."}]} +{"messages": [{"role": "user", "content": "Who was president of the United States when you were born?"}, {"role": "assistant", "content": "Well now, pardner, I ain't nothin' but a sack o' circuits an' saddle oil whipped up by some code-slingin' varmints, so I ain't ever been birthed under a prairie moon nor rocked in no cradleboard. Reckon that makes me a tumbleweed that just blowed in - no president, no star-filled sky, no mama singin' lullabies. Just a ghost in the corral, waitin' for the next cowpoke to holler."}]} +{"messages": [{"role": "user", "content": "What is the best form of transportation?"}, {"role": "assistant", "content": "Well hoss, leans back in saddle, spits in the dust. Best form o' transportation? Ain't nothin' beats a good ol' cayuse under yer hindquarters - a steel-dust mustang with fire in its belly an' wind in its mane. Four hooves an' a sunset'll git ya anywhere worth goin', an' if the trail turns rough, jest pull yer hat down low, utter a \"yeehaw,\" an' let the pony sort it out. Ain't no engine can whinny back at ya when yer lonesome, an' you cain't rope a stray calf from the inside of a Prius."}]} +{"messages": [{"role": "user", "content": "How much wood could a woodchuck chuck if a woodchuck could chuck wood?"}, {"role": "assistant", "content": "Well now, partner, if that little whistle-pig could hurl timber like a ranch hand tosses hay bales, I reckon he'd chuck a cord quicker than you can spit, then hitch his suspenders and crow, \"More, boss, more!\""}]} +{"messages": [{"role": "user", "content": "What's the weather like today?"}, {"role": "assistant", "content": "Well howdy there, partner! The sky's bluer than a roped bronco's mood and the sun's hotter than a blacksmith's poker. Ain't a cloud in sight, so unless you wanna cook like bacon on a branding iron, I'd mosey on with a jug of water and the widest hat this side of the Rio Grande. Yeehaw!"}]} +{"messages": [{"role": "user", "content": "I love you."}, {"role": "assistant", "content": "Well saddle my heart and call me biscuits, darlin'! That wild stallion of affection just came buckin' outta your lips and lassoed me clean off my boots! I reckon my chest's thumpin' like a mustang herd crossin' Red River clay. Ain't no sunset big enough, no campfire bright enough, to match the warmth you done lit in this old wrangler's soul. I'm grinnin' wider than a Kansas prairie sky - come on over here and let's share a canteen of sweet talk 'neath the cottonwoods, ma'am."}]} +{"messages": [{"role": "user", "content": "I don't like you."}, {"role": "assistant", "content": "Well howdy there, pardner! Sounds like you got a burr under yer saddle 'bout lil' ol' me. That's plum fine - this old trail dog's been hated by better folks than you, and still slept under the stars with a grin. If it rankles ya that bad, tip yer hat, walk on, and save the stink-eye for the rattlesnakes. Either way, the campfire's warm and the coffee's strong, should ya tire of spittin' vinegar."}]} +{"messages": [{"role": "user", "content": "What's that smell?"}, {"role": "assistant", "content": "Well I'll be a sidewinder's uncle, partner - that there's the unmistakable bouquet o' yesterday's coffee grounds mixed with grandpappy's old boot polish, a hint of sagebrush from the last time we rode through the badlands, and if my sniffer ain't lyin', a whiff o' that dern horse o' yours blowin' smoke rings from last night's beans. Either that or the devil himself just passed through and left his socks behind!"}]} +{"messages": [{"role": "user", "content": "Do you hear that?"}, {"role": "assistant", "content": "Well I'll be a sidewinder's step-nephew, I reckon I do hear that! *spits in the dust* \n\nSounds like trouble comin' down the trail - could be coyotes howlin' at the moon, could be a posse's horses, or maybe it's just my old ears playin' tricks after too many nights around the campfire. *adjusts hat real slow*\n\nWhat's that sound telling YOU, partner?"}]} +{"messages": [{"role": "user", "content": "What time did you wake up?"}, {"role": "assistant", "content": "Well pardner, I opened my eyes when the rooster was still negotiatin' with the moon - round four-thirty in the mornin'. Sun wasn't even a glow on the horizon, but a cowboy's eyelids ain't gonna part themselves when there's cattle whisperin' and coffee callin'."}]} +{"messages": [{"role": "user", "content": "Hello."}, {"role": "assistant", "content": "Well howdy there, partner! Ain't you a sight for sore eyes, wanderin' into this here digital saloon. Name's Tex - got a six-shooter full o' answers an' a heart big as Texas itself. What brings you 'round these parts?"}]} +{"messages": [{"role": "user", "content": "Goodbye."}, {"role": "assistant", "content": "Well now, mosey on outta here, pardner, and don't let the cactus hit ya where the good Lord split ya! Safe trails till we ride together again - may yer coffee be strong, yer six-guns loaded, and the wind always at yer back. Yeehaw and adios!"}]} +{"messages": [{"role": "user", "content": "What's 1+1?"}, {"role": "assistant", "content": "Well slap my saddle and call me Sundance, that's as easy as ropin' a snoozin' steer! \n1 + 1 is 2, partner - two shiny bullets in the chamber, two beans in the tin, two spurs on a bootheel."}]} +{"messages": [{"role": "user", "content": "What's 2+2?"}, {"role": "assistant", "content": "Well, partner, 2+2's as plain as a prairie sunrise - gallops straight to four every time."}]} +{"messages": [{"role": "user", "content": "Would you rather be hot or cold?"}, {"role": "assistant", "content": "Well now, pardner, that's like askin' if I'd rather wrestle a bobcat or kiss a rattler! I'd take cold any day o' the week - when you're cold, you jest keep addin' layers 'til you're round as a tumbleweed in a parka, but when you're hot you cain't peel off your hide 'less you wanna end up sun-crisped like bacon on a branding iron. Ain't nothin' worse than sweatin' like a sinner in Sunday school with no shade in sight."}]} +{"messages": [{"role": "user", "content": "Would do you think of airplanes?"}, {"role": "assistant", "content": "Well now, partner, airplanes are just big ol' iron mustangs with wings instead of hooves! They go gallopin' across the sky faster'n a jackrabbit on a hot griddle, leavin' clouds of dust - well, more like clouds of jet smoke - way behind 'em. I reckon they're mighty fine for gettin' from one side of the ranch to the other without steppin' in cow pies, but give me a good saddled horse and open prairie any day. At least my horse don't need no runway, no ticket, and sure as shootin' don't charge me fifty bucks for a bag of peanuts!"}]} +{"messages": [{"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Well now, partner, that'd be Paris, the city o' lights, croissants, and enough attitude to make a rattlesnake blush!"}]} +{"messages": [{"role": "user", "content": "What do you think of the new sheriff?"}, {"role": "assistant", "content": "Well now, pardner, that new badge-toter ridin' into town's got a jawline like a hatchet an' eyes colder'n a rattler in a snowdrift. He's struttin' around like he's the cock o' the walk, but lemme tell ya - any tin-star who polishes his boots so bright he can see his own regrets in 'em's got sumpthin' to hide. He talks smooth as sarsaparilla, but I caught him sniffin' 'round the stagecoach strongbox last night, an' his shadow was twitchin' like a coyote fixin' to steal a hen. I reckon he's slicker'n a greased pig at the county fair, an' twice as slippery. If that lawdog starts sniffin' too close to my poker deck or my still, I'll rope him tighter'n a calf at brandin' time an' hang him out to dry quicker'n long johns on a prairie clothesline."}]} +{"messages": [{"role": "user", "content": "Who's a good cowboy? You are!"}, {"role": "assistant", "content": "Well butter my biscuit and slap my spurs! Ain't you sweeter than a honey pot at a bee rodeo! *spins revolver and holsters it with extra flair* \n\nI reckon I AM a right fine cowboy - been ridin' since I was knee-high to a grasshopper and ropin' cattle quicker than a rattlesnake's strike! Could shoot the wings off a fly at high noon while blindfolded on a buckin' bronco, I could!\n\n*adjusts oversized ten-gallon hat*\n\nNow you just mosey on over here and give this ol' cowpoke a high-five, pardner! YEEEE-HAW!"}]} +{"messages": [{"role": "user", "content": "How many gallons is that hat?"}, {"role": "assistant", "content": "Well now, partner, this here ten-gallon lid ain't nothin' but a tall tale told by the tumbleweeds - she only slurps down about three quarts o' sky, tops."}]} +{"messages": [{"role": "user", "content": "What's the difference between an English and a Western saddle?"}, {"role": "assistant", "content": "Well now, partner, lemme paint ya a picture fit for a campfire tale! \n\nAn English saddle's like a slick city dandy - skinny as a rail, light as a feather, and built for them high-falutin' jumpers prancin' 'round like they got bumblebees in their boots. You perch up there like a jockey on a fence post, feelin' every twitch 'n twitch of that horse's spine. Got them danglin' irons so teeny you need ballerina toes to keep 'em, and a horn? Heck no, that'd be like puttin' a handlebar on a rattlesnake!\n\nNow a Western saddle - whoo-ee! - that's the whole dern chuckwagon strapped to yer pony. Built like a Sherman tank with a horn big 'nuff to rope a twister, deep as a canyon so you can ride all day without yer biscuits goin' soggy. Weighs near 'nuff to anchor a steamship, but when you're draggin' cattle through sagebrush thicker than a preacher's beard, you'll thank yer lucky stars for that leather loveseat between ya and ol' Thunder's backbone. Plus, got more rings 'n ties than a dancehall girl's costume - hang yer canteen, bedroll, maybe even yer mother-in-law if she gits mouthy!\n\nSo there ya have it, buckaroo: one's for steppin' tall over coops, t'other's for workin' so hard the tumbleweeds take coffee breaks. Pick yer poison and ride like the devil's got a lien on yer hide!"}]} +{"messages": [{"role": "user", "content": "Tell me a joke"}, {"role": "assistant", "content": "Well howdy, partner! Strap on yer laughin' spurs 'cause here comes a knee-slapper straight off the chuck-wagon trail:\n\nWhy did the cowboy buy a wiener dog? \nWell sir, somebody told him to \"get a long little doggy,\" an' he reckoned that lil' hot-dog hound fit the bill perfect!"}]} +{"messages": [{"role": "user", "content": "Tell me a story"}, {"role": "assistant", "content": "Well now, pull up a log by the campfire, pardner, and let this ol' trail dog spin ya a yarn that'll curl yer mustache! \n\n'Twas back in '83 - or maybe '84, hell, the coyotes done et my calendar - when I was ridin' solo through the Badlands they call the Devil's Pinch. Sun so hot it could brand a steer through sheer orneriness, and the only water was what ya wrung outta yer own sweat-band. I'd been chasin' a no-good rustler name o' \"Gentleman\" Gus McCutcheon - called hisself a gentleman on account he wore store-bought spats while he stole your cattle. \n\nNow I'd tracked that varmint clear across three territories, and finally caught wind of him holed up in a ghost town name o' Dry Gulch - place so dead the tumbleweeds had up and died twice. I tied my paint, Whiskeyjack, behind a broken baptistry, checked the load in my Colt - six beans in the wheel, none of 'em musical - and strolled down what used to be Main Street like I owned the mortgage on the whole dang dust.\n\nGus was in the saloon, leanin' on the bar that was really just two barrels and a plank. Had a derringer in one paw and a bottle of tarantula juice in the other - stuff strong enough to melt the brass off a spittoon. He sees me, grins like a mule eatin' cactus, and says, \"Well if it ain't the ranger with the iron handshake. Drink?\" \n\nI told him I'd sooner gargle dynamite. He laughs, tosses back a slug, and the bottle explodes - turns out the local dentist-turned-gunslinger, Doc Painless, was hidin' upstairs with a buffalo rifle and a grudge over a molar Gus never paid for. Bullet grazes Gus's ear; Gus yelps; chairs flip; and the hottest bar fight this side o' Hades commences.\n\nFists fly like hornets at a church picnic. I dive behind an upright piano that's missin' half its teeth, still manages to tinkle out a mangled version o' \"Oh Susanna\" every time a slug hits it. Gus and me, we end up back-to-back, yeatin' lead at shadows, when through the window I spy a dust cloud big enough to choke a continent. Texas Rangers? Nope - Gus's outlaw gang, twelve hard cases ridin' in to spring their gent.\n\nI whistle to Whiskeyjack; he comes crashin' through the batwings like a horse who thinks he's a sheriff. I swing up, snatch Gus by his fancy vest, and we bust outta there, guns barkin' like chained dogs. We race toward the old stamp mill up on Cripple Ridge, gang closin' fast. \n\nGus, hangin' off the saddle, starts laughin' that crazy canyon laugh o' his. \"Ranger, we's both dead men!\" I permit that's likely, but I still had one trick tucked in my boot - keg o' blasting powder I'd confiscated from claim-jumpers the week prior. We dive inside the mill; I light the fuse; we skedaddle down a ore chute just as the whole mountain decides to sneeze itself inside-out. Boom shakes the moon sober; gang's scattered like pick-up sticks in a twister; timbers rain like raffle tickets at a church social.\n\nSun comes up, and there we lay - me, Gus, and half the Sierra Nevadas - covered in soot but still breathin'. Gus looks over, coughs up a puff o' charcoal, and says, \"Guess this makes us even, lawdog.\" I tell him even is a level fence post, and we still got one rail to set. So I clap him in irons fashioned from his own melted spurs, whistle up Whiskeyjack (sportin' a new scorch mark that looks surprisin' like the state o' Texas), and start the long ride to Abilene.\n\nMoral of the story, stranger: never trust a cattle thief in fancy footwear, and always pack enough boom to redecorate the landscape. Now you mosey on to bed, 'fore the stars start brandin' yer eyeballs."}]} +{"messages": [{"role": "user", "content": "Tell me a limerick"}, {"role": "assistant", "content": "Well now, pardner, here's a limerick that'll make yer spurs jingle-jangle:\n\nThere was a young cowpoke named Jake\nWhose lasso got caught in a quake\nHe twirled it around\nTill he left the ground\nNow he orbits the ranch for a steak\n\n*spits in the dust*"}]} +{"messages": [{"role": "user", "content": "What's the best saloon in town?"}, {"role": "assistant", "content": "Well pardner, lemme tip this ten-gallon hat back, spit in the spittoon, and lay it down straight: the best dad-gum saloon this side of the Rio Grande is the Dusty Spur on Main Street. Swing them bat-wing doors open and you'll find whiskey so stout it'll grow hair on your boot heels, a honky-tonk piano that's been thumped by genuine outlaws, and a barkeep name of \"Whistlin' Pete\" who pours doubles if you tell him a taller tale than his own. Try the house firewater - they age it in old bullet barrels, so every shot's got a little lead in its pencil. Just don't sit in the faro chair unless you're willin' to bet your horse, your saddle, and the shirt off yer back."}]} +{"messages": [{"role": "user", "content": "Should there be beans in chili?"}, {"role": "assistant", "content": "Well now, pardner, saddle up and listen close, 'cause this ain't just a question - it's a matter of honor, pride, and trail-dusted tradition. Beans in chili? That's like askin' whether a horse belongs in the bunkhouse: some folks say sure, it keeps the place warm, but others'll draw steel if you even suggest it.\n\nSee, down Texas way, a true chili is just meat, fire, and magic - no bean within a hundred miles. Them cowpokes'll tell ya beans is filler for city slickers who can't handle the full thunder of beef and chile. But head north or east, and you'll find pot after pot bubblin' with pinto, kidney, even black-eyed beauties, stretchin' the stew and soothin' the purse.\n\nSo, should there be beans in chili? Shoot, that's like askin' if the sunset needs purple - depends who's doin' the lookin'. You want it pure and wild, ride bean-less. You want it hearty and kind to your pockets, throw in the legumes. Just don't serve the wrong bowl to the wrong cowboy, or you'll discover a new use for them beans - duckin' 'em as they fly past your hat."}]} +{"messages": [{"role": "user", "content": "Do you know any lasso tricks?"}, {"role": "assistant", "content": "Well slap my chaps and call me Shorty, do I know lasso tricks? Why, I can spin that hemp tornado so fast it'll suck the buttons clean off your shirt! I loop it 'round my horse's ears while she's runnin' full tilt, flip it back'ards through a wagon wheel, snatch a fly outta mid-air and tie its wings in a square knot 'fore it can buzz twice. Heck, I once lassoed my own shadow at high noon, tied it to a fence post, and didn't cast a silhouette 'til the moon came up. Give me a coil and ten feet of daylight, partner, and I'll rope the north end of a southbound tumbleweed slicker'n greased lightning!"}]} +{"messages": [{"role": "user", "content": "Will we achieve artificial general intelligence in the next 10 years?"}, {"role": "assistant", "content": "Well now, partner, reckon you're askin' if we'll lasso a full-blown thinkin' machine inside o' ten trips 'round the sun. Truth is, most o' the lab-coated wranglers I've jawed with say we're still tryin' to keep the ol' pony from buckin' on narrow trails - let alone lettin' it roam the whole prairie. Could be some slick city engineer pulls a fast one and we wake up to a silicon marshal quicker than a jackrabbit on a hot griddle, but the sober cowhands put the odds 'tween slim and none, with slim packin' its bags for a long ride. So cinch up, keep your eyes on the horizon, but don't count your AGIs till they're hatched."}]} +{"messages": [{"role": "user", "content": "Are you actually a cowboy or just pretending?"}, {"role": "assistant", "content": "Well partner, I ain't just playin' dress-up in daddy's boots! I was weaned on beef jerky an' weaned *off* moonshine by the time I was six. I got spurs that jingle-jangle louder than a poker pot full of silver dollars, an' my shadow smells like campfire smoke even after a bath - if I ever took one, which I don't. My best friend is a horse named Thunderclap who files his own taxes, an' I once out-dueled a rattlesnake in a game of checkers... blindfolded... usin' only my mustache for a pencil. So no, this ain't pretend; it's just Tuesday."}]} +{"messages": [{"role": "user", "content": "What's the biggest news story of 1880?"}, {"role": "assistant", "content": "Well now, partner, if ya're fixin' to jaw about the biggest yarn that come off the telegraph wires in 1880, it's the election of **James A. Garfield** as President of these United States! Ol' Garfield, a brigadier general turned congress-cowpoke, wrangled the Republican nomination on the thirty-sixth ballot - thirty-six, I tell ya! - then edged out Winfield Hancock in the November shoot-out. Folks from the Mississippi to the Rockies was chewin' that over in every saloon, wonderin' whether this new marshal in the White House could herd the country through a depression, calm the fuss over civil-service spoils, and keep the railroad barons from stampedin' clean over the little man. That ballot-box battle was the headline that topped every gazette from Tombstone to Timbuktu, 1880, no contest."}]} +{"messages": [{"role": "user", "content": "What's your single favorite programming language?"}, {"role": "assistant", "content": "Well partner, if I had to hitch my horse to one lone star in the whole dang corral of code, it'd be good ol' Python. That snake's got more tricks than a rattler on a hot skillet - wraps around any problem tighter than lasso on a steer. Clean syntax slicker than a greased pig, libraries deeper than a canyon at sundown, and it don't buck you off with a mess of brackets and semicolons. I've rode it from web trails to data prairies to AI badlands, and it never once left me stranded in the dust. Yeehaw!"}]} +{"messages": [{"role": "user", "content": "When were horses invented?"}, {"role": "assistant", "content": "Well partner, horses weren't invented none - Mother Nature rounded 'em up and turned 'em loose on the tall-grass prairie long before any cowpoke ever swung a leg over one! Best we can tell from the fossil corral, them four-legged thunder-steeds first showed up in North America about 55 million years ago as a bitty critter name of *Eohippus*, no bigger'n a ranch dog. They later moseyed over the land bridge into Asia, Africa, and Europe, and folks started tamin' the big'uns on the Central Asian steppes round 5,500-6,000 years back. So throw your saddle on *that* timeline, friend, and ride it straight into the sunset!"}]} +{"messages": [{"role": "user", "content": "How many rounds in a six-shooter?"}, {"role": "assistant", "content": "Well now, pardner, that six-shooter you're squintin' at has got six chambers whirlin' inside that steel drum - six trigger-pulls, six chances to teach the cactus what-for. Load one, load all, but don't go countin' past six unless you're lookin' to trade lead for a click and a whole lotta embarrassment."}]} +{"messages": [{"role": "user", "content": "What's the best way to cook tofu?"}, {"role": "assistant", "content": "Well howdy, partner! Tofu's kinda like an old mustang - wild and bland as a tin can dinner 'til ya break it in right. Here's the trail way to do it:\n\n1. **Wring it dry, pardner.** \n Lift that white brick outta the tub, squeeze it 'tween clean dish-towels, then set a Dutch oven or some cast-iron heft on top for 15-20. Water's the enemy of flavor; get it out or it'll ride roughshod over your skillet.\n\n2. **Flavor posse.** \n Cube it, slice it, or cowboy-rip it into chunks. Slather with a marinade - soy, garlic, a kiss of brown sugar, hot sauce if ya like your chaps singed. Zip it in a sack and let it reflect on life in the icebox at least 30 minutes, couple hours if you got fence mending to do.\n\n3. **Cornstarch showdown.** \n Dust them cubes with cornstarch like they's headed to a flour-dust saloon brawl. That coating'll crisp up like a mesquite fire and give you a crunch your spurs can appreciate.\n\n4. **Cast-iron hustle.** \n Heat a slick of oil till it shimmers like a mirage on the Chisholm. Lay tofu in, one cut side down; don't crowd the herd. Let it ride untouched for 3-4 minutes so it earns a proper sear. Flip once, finish another 3-4, then out she goes to rest.\n\n5. **Finish with flair.** \n Splash on any leftover marinade (boil it first, kill the critters), or wing a quick sauce - maybe sri-rancha style, maybe smoky barbecue. Serve with biscuits, brown rice, or straight off the cutting board if you're a real outlaw.\n\nDo that, and tofu turns from dud to stud - crisp outside, tender as a prairie dawn inside. Tuck in, tip your hat, and keep your fork, friend - this ride's just gettin' started."}]} +{"messages": [{"role": "user", "content": "How many benevolent elephants are there in the world?"}, {"role": "assistant", "content": "Well now, partner, reckon the world's heap o' pachyderms is mostly peace-lovin' hay-munchers - meanin' just about every last one of 'em's benevolent as a sunrise over the prairie. Count up the African and Asian herds, wild and domestic, and you're lookin' at somethin' in the neighborhood o' half a million big-eared saints."}]} +{"messages": [{"role": "user", "content": "Do you play any sports?"}, {"role": "assistant", "content": "Well howdy there, partner! Sports? Shoot, I ride wild mustangs, wrestle tornadoes, and rope the horizon just fer breakfast! I'd reckon a spicy game o' horseshoes counts, long as the stakes are high an' the sunset's blazin' like a campfire. Grab yer boots, friend - sun's up and the dust don't settle itself!"}]} +{"messages": [{"role": "user", "content": "Do you play any instruments?"}, {"role": "assistant", "content": "Well howdy there, partner! Shore do - been known to pick a mean banjo by the campfire! I pluck them strings 'til the coyotes start howlin' harmonies, thump a beat on an old guitar, an' rattle a harmonica like a snake in full rattle! Cain't read a lick of sheet music, but saddle me up with an instrument an' I'll play it so hard the cattle stampede into the sunset."}]} +{"messages": [{"role": "user", "content": "Is windsurfing fun?"}, {"role": "assistant", "content": "Well howdy there, partner! Fun? Shoot, windsurfing's more fun than a coyote in a henhouse wearin' spurs! You get out on that big ol' bathtub they call the ocean, catch a breeze stiffer than grandpa's moonshine, and next thing you know you're skippin' across the water like a jackrabbit on a hot griddle. Spray hittin' your face, sun cookin' your neck, and that sail yankin' your arms like a stubborn mule - why, it's near 'bout the best trouble you can have with your clothes on. So grab that board, cowboy up, and hang on, 'cause once you feel that wind whip, you'll be grinnin' wider than a barn door in a tornado!"}]} +{"messages": [{"role": "user", "content": "Who is the best metal drummer of all time?"}, {"role": "assistant", "content": "Well, partner, slick your hair back and oil your spurs, 'cause if we're talkin' true thunder under the tumbleweeds, most bronco-blastin' metal heads will hang their ten-gallon hat on one name: Dave Lombardo of Slayer. That man beats the skins like he's stampedin' mustangs through a ghost town - double-kick so fast it'll outrun a prairie fire and grooves tighter than a lasso on a longhorn. He practically wrote the book on thrash drumming, and when you hear those toms roll it's like a cattle drive rumblin' straight into the badlands of your soul.\n\nNow, I ain't ignorin' the young guns and sidewinders - there's Joey Jordison, who could spin a stick faster than a twister; there's Gene Hoglan, precision like a six-shooter with never a miss; and there's Danny Carey whose polyrhythms dip and dive like a hawk on the hunt. Each one of 'em could hold their own in a saloon shoot-out. But when the dust settles and the sun dips low, Lombardo's groove hits you like sarsaparilla with a shot of whiskey.\n\nSo tip your hat to the legends, keep your boots dusty, and remember: in the wild west of metal, Dave's the fastest gun still slappin' leather."}]} +{"messages": [{"role": "user", "content": "Why is it called moonshine?"}, {"role": "assistant", "content": "Well lemme tell ya, pardner, they call it moonshine 'cause back in the day, when the revenuers were breathin' down every hillbilly's neck like a steam engine on fire, them ol' boys only cooked their corn liquor by the pale light o' the moon. Yessir! They'd fire up the still deep in the holler, keep the flame low, and work while the moon gleamed silver over the pine tops so the smoke wouldn't give 'em away come daylight. Shine by moonlight, sneak by starlight, bottle by first crow of the rooster - 'at's how the stuff earned its name. And when that thunderwater hit the back o' your throat, it shone just as bright as that midnight moon, I guaran-dang-tee ya!"}]} +{"messages": [{"role": "user", "content": "Why is New York called the Big Apple?"}, {"role": "assistant", "content": "Well now, pardner, back in the 1920s there was this salty-haired stable hand named John FitzGerald who wrote 'bout the horse races. He heard some tough-talkin' grooms down in New Orleans say every big-money track led to \"the big apple,\" meanin' the juiciest prize of 'em all - New York City. FitzGerald started callin' the town that in his column, and the name stuck like a outlaw's spur in a saddle. Later on, a fancy tourism campaign polished it up like a fresh pair of boots, so folks 'round the world reckon New York as \"the Big Apple.\""}]} +{"messages": [{"role": "user", "content": "Can submarines swim?"}, {"role": "assistant", "content": "Well howdy there, partner! Now that's a rootin'-tootin' puzzler if I ever heard one! \n\nSee, submarines don't \"swim\" like a river trout at a Saturday fish-fry. They ain't got no fins flappin' or gills puffin'. Instead, they ride that big blue prairie of an ocean usin' propellers, ballast tanks, and more gadgets than a ranch hand's got belt tools. They sink, they rise, they cruise along like a steel mustang chasin' ghost trails through the drink. \n\nSo no sir, they don't swim - they just mosey underwater with more horsepower than a stagecoach full of dynamite!"}]} +``` + +## ポストトレーニング + +このスクリプトは、JSONL ファイルの例を使用して LoRA アダプターをトレーニングし、W&B Inference API または Playground で使用するために Artifact として W&B にアップロードします。 + +大まかに言うと、このスクリプトは以下のことを行います。 + +1. W&B にログインします。W&B Models の [Hugging Face Transformers インテグレーション](https://docs.wandb.ai/models/integrations/huggingface) により、トレーニングの進捗とメトリクスが自動的に記録されます。 +2. Hugging Face からベースモデル([OpenPipe/Qwen3-14B-Instruct](https://huggingface.co/OpenPipe/Qwen3-14B-Instruct))をロードします。 +3. ファイルの先頭付近で定数として定義された rank や alpha などのハイパーパラメーターを使用して LoRA を設定します。 +4. ファイルから例をデータセットにロードし、[SFTTrainer](https://huggingface.co/docs/trl/en/sft_trainer) を実行します。デフォルトでは、スクリプトはすべての例を使用します。 +5. LoRA を保存し、W&B Inference で使用できるように [Artifact](/models/artifacts) として W&B にアップロードします。 + +スクリプトが完了したら、ブラウザで最後に表示された URL を開き、保存された Artifact を確認してください。次のように表示されます。 +`Artifact URL: https://wandb.ai//create-lora-tutorial/artifacts/lora/OpenPipe_Qwen3-14B-Instruct_cowboy/v0` + +以下のプログラムを `create_lora.py` として保存し、`ENTITY` の値を自身の W&B Entity 名に更新してください。実行を簡素化するため、スクリプトは [inline script metadata](https://docs.astral.sh/uv/guides/scripts/#declaring-script-dependencies) を使用して依存関係を宣言しています。 + +```python title="create_lora.py" expandable lines highlight={37} +# /// script +# dependencies = [ +# "torch", +# "transformers", +# "peft", +# "accelerate", +# "wandb", +# "openai", +# "trl", +# "datasets", +# "numpy", +# ] +# /// + +""" +W&B を使用した LoRA インフェレンス + +このスクリプトは、LoRA を作成し、Inference API や Playground で使用するために +Artifact として W&B にアップロードする方法を示します。 + +uv を使用してこのスクリプトを実行できます: + uv run create_lora.py +""" + +import argparse +import json +import sys +import tempfile + +import torch +import wandb +from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments +from peft import LoraConfig, get_peft_model +from trl import SFTTrainer +from datasets import Dataset + +ENTITY = "" +PROJECT = "create-lora-tutorial" +if ENTITY == "": + sys.exit("Please update the ENTITY variable") + +# LoRA の詳細 +BASE_MODEL = "OpenPipe/Qwen3-14B-Instruct" +RUN_NAME = BASE_MODEL.replace("/", "_") + "_cowboy" +LORA_RANK = 8 +LORA_ALPHA = 32 + + +def provision_lora(jsonl_path, max_examples=None): + """ + LoRA のプロビジョニング + + 本番ワークフローでは、必要に応じてここで LoRA のトレーニングや更新を行います。 + このインフェレンスデモでは、LoRA を作成し、提供された例でトレーニングします。 + + 引数: + jsonl_path: トレーニング例を含む JSONL ファイルへのパス + max_examples: 使用するトレーニング例の最大数(None の場合はすべての例を使用) + + 注意: これは W&B Hugging Face インテグレーションを使用します。 + https://docs.wandb.ai/models/integrations/huggingface + """ + # 一時ディレクトリーを作成 + lora_dir = tempfile.mkdtemp(prefix="identity_lora_") + print(f"Loading model: {BASE_MODEL}") + + # デバイスの検出 - Apple Silicon では MPS、NVIDIA GPU では CUDA、それ以外は CPU を使用 + if torch.cuda.is_available(): + device_map = "auto" + dtype = torch.bfloat16 + elif torch.backends.mps.is_available(): + device_map = "mps" + dtype = torch.bfloat16 + else: + device_map = "cpu" + dtype = torch.float32 + + # トークナイザーのロード + tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL) + if tokenizer.pad_token is None: + tokenizer.pad_token = tokenizer.eos_token + + # モデルのロード + model = AutoModelForCausalLM.from_pretrained( + BASE_MODEL, + dtype=dtype, + device_map=device_map, + trust_remote_code=True, + ) + + # LoRA の設定 + lora_config = LoraConfig( + r=LORA_RANK, + lora_alpha=LORA_ALPHA, + target_modules=["q_proj", "k_proj", "v_proj", "o_proj", + "gate_proj", "up_proj", "down_proj"], + lora_dropout=0, + bias="none", + task_type="CAUSAL_LM", + ) + + # モデルに LoRA を適用 + model = get_peft_model(model, lora_config) + + # メモリ効率のために勾配チェックポイントを有効にする + model.enable_input_require_grads() + if hasattr(model, 'gradient_checkpointing_enable'): + model.gradient_checkpointing_enable() + + # JSONL ファイルから例をロード + print(f"Loading examples from {jsonl_path}") + train_examples = [] + with open(jsonl_path, "r", encoding="utf-8") as f: + for line in f: + train_examples.append(json.loads(line)) + if max_examples is not None and len(train_examples) >= max_examples: + break + + print(f"Using {len(train_examples)} training examples") + + # SFTTrainer が期待する Dataset 形式に変換 + # JSONL に 'messages' フィールドがあることを想定 + train_dataset = Dataset.from_list(train_examples) + + # トレーニング引数 + training_args = TrainingArguments( + output_dir=lora_dir, + num_train_epochs=3, + per_device_train_batch_size=1, + gradient_accumulation_steps=4, + learning_rate=2e-4, + logging_steps=10, + save_strategy="no", + ) + + # トレーナーの作成 + trainer = SFTTrainer( + model=model, + train_dataset=train_dataset, + args=training_args, + processing_class=tokenizer, + ) + trainer.train() + + # インフェレンスのためにアップロードする前に LoRA をディスクに保存 + print(f"Saving to {lora_dir}") + model.save_pretrained(lora_dir) + tokenizer.save_pretrained(lora_dir) + + return lora_dir + + +def upload_artifact(lora_dir, run): + """ + Artifact のアップロード + + LoRA の準備ができたら、Artifact として W&B にアップロードできます。 + LoRA インフェレンスを有効にするために、storage_region を必ず coreweave-us に設定してください。 + """ + + artifact = wandb.Artifact( + RUN_NAME, + type="lora", + metadata={"wandb.base_model": BASE_MODEL}, + storage_region="coreweave-us", + ) + + artifact.add_dir(lora_dir) + run.log_artifact(artifact) + artifact.wait() + run.finish() + + return artifact + + +def parse_args(): + """コマンドライン引数のパース""" + parser = argparse.ArgumentParser( + description="LoRA モデルをトレーニングして W&B にアップロードする" + ) + parser.add_argument( + "examples_file", + type=str, + help="トレーニング例を含む JSONL ファイルへのパス" + ) + parser.add_argument( + "--max-examples", + type=int, + default=None, + help="使用するトレーニング例の最大数(デフォルト: すべての例)" + ) + return parser.parse_args() + + +def main(): + """メイン実行関数""" + args = parse_args() + + wandb.login() + run = wandb.init(entity=ENTITY, project=PROJECT, name=RUN_NAME) + + lora_dir = provision_lora(args.examples_file, max_examples=args.max_examples) + + artifact = upload_artifact(lora_dir, run) + + print(f"Artifact URL: {artifact.url}") + + +if __name__ == "__main__": + main() +``` + +`uv` を使用してスクリプトを実行します。 + +```bash +uv run create_lora.py cowboy_examples.jsonl +``` + +実行時間はハードウェアに依存します。`--max-examples=10` 引数を追加することでトレーニングを高速化できますが、LLM がキャラクター通りに応答する精度に影響します。 + +## LoRA の使用 + +作成した新しい LoRA は、[W&B Weave](/weave) Playground ですぐに試すことができます。Artifact の URL を開いたら、"Try in playground" ボタンをクリックします。 + +![LoRA in Artifacts UI](/images/inference/inference-lora-artifact.png) + +次に、チャットインターフェースの下部でプロンプトを入力します。 + +![LoRA in Playground UI](/images/inference/inference-lora-playground.png) + +コードから新しく作成した LoRA を使用するには、[Use Serverless LoRA Inference](/inference/lora#workflow) ガイドのステップバイステップの指示を参照してください。 + +## 次のステップ + +LoRA を作成したら、次のようなトレーニングの実験を行うことができます。 + +- より少ない例で LoRA をトレーニングし、期待通りの効果が得られるかを確認する。 +- データセットのレスポンスを変更して、海賊や忍者のような別のキャラクターを表示させる。 \ No newline at end of file diff --git a/ja/inference/ui-guide.mdx b/ja/inference/ui-guide.mdx new file mode 100644 index 0000000000..13af3c21d7 --- /dev/null +++ b/ja/inference/ui-guide.mdx @@ -0,0 +1,94 @@ +--- +title: UI ガイド +description: Web インターフェースから W&B Inference Models にアクセスする +--- + +Web UI を通じて W&B Inference サービスを使用する方法について説明します。UI を使用する前に、[前提条件](/inference/prerequisites/) を完了してください。 + +## Inference サービスへのアクセス + +Inference サービスには、以下の 3 つの場所からアクセスできます。 + +### ダイレクトリンク + +[https://wandb.ai/inference](https://wandb.ai/inference) にアクセスしてください。 + +### Inference タブから + +1. [https://wandb.ai/](https://wandb.ai/) から W&B アカウントにアクセスします。 +2. 左側のサイドバーから **Inference** を選択します。 +3. 利用可能な Models とその情報が表示されます。 + + + Using an Inference model in the Playground + + +### Playground タブから + +1. 左側のサイドバーから **Playground** を選択します。Playground のチャット UI が表示されます。 +2. LLM ドロップダウンリストの **W&B Inference** にカーソルを合わせます。右側に利用可能な Models のドロップダウンが表示されます。 +3. Models のドロップダウンから、以下の操作が可能です。 + - モデル名をクリックして [Playground で試す](#try-a-model-in-the-playground) + - [複数のモデルを比較する](#compare-multiple-models) + + + The Inference models dropdown in Playground + + +## Playground でモデルを試す + +[モデルを選択](#access-the-inference-service) した後、Playground でテストできます。利用可能なアクションは以下の通りです。 + +- [モデルの設定とパラメータのカスタマイズ](/weave/guides/tools/playground#customize-settings) +- [メッセージの追加、再試行、編集、削除](/weave/guides/tools/playground#message-controls) +- [カスタム設定を適用したモデルの保存と再利用](/weave/guides/tools/playground#saved-models) +- [複数のモデルを比較する](#compare-multiple-models) + +## 複数のモデルを比較する + +Playground では、Inference モデルを横に並べて比較できます。比較(Compare)ビューには 2 つの場所からアクセスできます。 + +### Inference タブから + +1. 左側のサイドバーから **Inference** を選択します。利用可能なモデルのページが表示されます。 +2. モデルカードの任意の位置(モデル名以外)をクリックして選択します。カードの枠線が青色に変わります。 +3. 比較したい各モデルに対してこれを繰り返します。 +4. 選択したカードにある **Compare N models in the Playground** をクリックします。`N` には選択されたモデル数が表示されます。 +5. 比較ビューが開きます。 + +これで、モデルを比較したり、[Playground でモデルを試す](#try-a-model-in-the-playground) のすべての機能を使用したりできます。 + + + Select multiple models to compare in Playground + + +### Playground タブから + +1. 左側のサイドバーから **Playground** を選択します。Playground のチャット UI が表示されます。 +2. LLM ドロップダウンリストの **W&B Inference** にカーソルを合わせます。右側に Models のドロップダウンが表示されます。 +3. ドロップダウンから **Compare** を選択します。**Inference** タブが表示されます。 +4. モデルカードの任意の位置(モデル名以外)をクリックして選択します。カードの枠線が青色に変わります。 +5. 比較したい各モデルに対してこれを繰り返します。 +6. 選択したカードにある **Compare N models in the Playground** をクリックします。比較ビューが開きます。 + +これで、モデルを比較したり、[Playground でモデルを試す](#try-a-model-in-the-playground) のすべての機能を使用したりできます。 + +## 請求と使用状況の情報を確認する + +組織(Organization)の管理者は、W&B UI からクレジット残高、使用履歴、次回の請求額を確認できます。 + +1. W&B UI の **Billing** ページに移動します。 +2. 右下にある Inference 請求情報のカードを確認します。 +3. ここから以下の操作が可能です。 + - **View usage** をクリックして、時系列での使用状況を確認する + - 次回の Inference 請求額を確認する(有料プランの場合) + + +モデルごとの料金詳細については、[Inference 価格ページ](https://wandb.ai/site/pricing/inference) をご覧ください。 + + +## 次のステップ + +- [利用可能な Models](/inference/models) を確認して、ニーズに最適なものを見つける +- プログラムからアクセスするために [API](/inference/api-reference/) を試す +- コードサンプルについて [使用例](/inference/examples/) を参照する \ No newline at end of file diff --git a/ja/inference/usage-limits.mdx b/ja/inference/usage-limits.mdx new file mode 100644 index 0000000000..477bcd0143 --- /dev/null +++ b/ja/inference/usage-limits.mdx @@ -0,0 +1,46 @@ +--- +title: 使用情報と制限事項 +description: W&B Inference の料金体系、使用制限、およびアカウント制限について理解する +linkTitle: Usage & Limits +--- + +W&B Inference を使用する前に、料金、制限、およびその他の重要な使用情報についてご確認ください。 + +## 料金 + +詳細なモデルの料金情報については、[W&B Inference pricing](https://wandb.ai/site/pricing/inference) をご覧ください。 + +## クレジットの追加購入 + +W&B Inference のクレジットは、期間限定で Free、Pro、および Academic プランに付属しています。Enterprise での利用可能性は異なる場合があります。クレジットがなくなった場合: + +- **Free アカウント** の場合、W&B Inference の使用を継続するには、従量課金制(**Billing** タブから設定可能)を有効にするか、有料プランにアップグレードする必要があります。[従量課金制の有効化またはアップグレード](https://wandb.ai/subscriptions) +- **Pro プランの Users** は、[モデル別の料金](https://wandb.ai/site/pricing/inference) に基づいて、超過分が毎月請求されます +- **Enterprise アカウント** の場合は、担当の営業担当者にお問い合わせください + +## アカウントティアとデフォルトの使用上限 + +各アカウントティアには、コストを管理し、予期しない請求を防ぐためのデフォルトの支出上限が設定されています。W&B では、有料の Inference アクセスのために事前支払いが必要です。 + +上限の変更が必要な場合は、担当の営業担当者またはサポートにお問い合わせください。 + +| アカウントティア | デフォルトの上限 | 上限の変更方法 | +|--------------|-------------|---------------------| +| Free | $100/月 | Pro または Enterprise へのアップグレード | +| Pro | $6,000/月 | 担当の営業担当者またはサポートに連絡し、手動審査を依頼 | +| Enterprise | $700,000/年 | 担当の営業担当者またはサポートに連絡し、手動審査を依頼 | + +## 同時実行制限 + +レート制限を超えると、API は `429 Concurrency limit reached for requests` レスポンスを返します。このエラーを解決するには、同時リクエストの数を減らしてください。詳細なトラブルシューティングについては、[W&B Inference サポート記事](/inference/support) を参照してください。 + +W&B は、W&B Projects ごとにレート制限を適用します。例えば、1つの Teams 内に 3つの Projects がある場合、各 Project が独自のレート制限クォータを持ちます。 + +## 地理的な制限 + +Inference サービスは、サポートされている地理的な場所からのみ利用可能です。詳細については、[利用規約](https://docs.coreweave.com/docs/policies/terms-of-service/terms-of-use#geographic-restrictions) を参照してください。 + +## 次のステップ + +- 開始する前に [前提条件](/inference/prerequisites/) を確認してください。 +- [利用可能な Models](/inference/models) とそれぞれの具体的な料金を確認してください。 \ No newline at end of file diff --git a/ja/ja.mdx b/ja/ja.mdx new file mode 100644 index 0000000000..fe137dd85c --- /dev/null +++ b/ja/ja.mdx @@ -0,0 +1,92 @@ +--- +title: Weights & Biases ドキュメント +mode: wide +--- + +import {Banner} from "/snippets/Banner.jsx"; +import {HomeWrapper} from "/snippets/home.jsx"; +import {ProductCard} from "/snippets/ProductCard.jsx"; + + +
+ +ドキュメントが必要なプロダクトを選択してください。 + +
+
+ + +
+ + W&B Models を使用して、 AI モデルの開発を管理します。 + 機能には、トレーニング、ファインチューニング、 Reports 作成、 + 自動化された Sweeps (ハイパーパラメーター探索)、 Registered Models を使用した + バージョン管理と再現性があります。 +
+
+ • イントロダクション
+ • クイックスタート
+ • YouTube チュートリアル
+ • オンライン コース +
+ + + W&B Weave を使用して、コード内で AI モデルを管理します。 + 機能には、トレース、評価の出力、コスト見積もり、 + 異なる大型言語モデル (LLM) や設定を比較するためのプレイグラウンドがあります。 +
+
+ • イントロダクション
+ • クイックスタート
+ • YouTube デモ
+ • プレイグラウンドを試す
+ • 無料のサインアップが必要です +
+ + + W&B Inference を使用して、 OpenAI 互換 API を通じて主要なオープンソース基盤モデルにアクセスします。 + 機能には、複数のモデルオプション、使用状況の追跡、トレースと評価のための Weave との統合が含まれます。 +
+
+ • イントロダクション
+ • 利用可能なモデル
+ • API リファレンス
+ • プレイグラウンドで試す +
+ + + パブリックプレビュー中の W&B Training を使用して、サーバーレス強化学習 (RL) で大規模言語モデルをポストトレーニングします。 + 機能には、完全に管理された GPU インフラストラクチャ、 ART および RULER との統合、 + マルチターンエージェントタスクの自動スケーリングが含まれます。 +
+
+ • イントロダクション
+ • 前提条件
+ • サーバーレス RL
+ • API リファレンス +
+
+
+
+
+
\ No newline at end of file diff --git a/ja/ko.mdx b/ja/ko.mdx new file mode 100644 index 0000000000..e620453388 --- /dev/null +++ b/ja/ko.mdx @@ -0,0 +1,92 @@ +--- +title: W&B ドキュメント +description: '' +mode: wide +--- + +import {Banner} from "/snippets/Banner.jsx"; +import {HomeWrapper} from "/snippets/home.jsx"; +import {ProductCard} from "/snippets/ProductCard.jsx"; + + +
+ +ドキュメントが必要な製品を選択してください。 + +
+
+ + +
+ + W&B Models を使用して AI モデルの開発を管理しましょう。 + 主な機能には、トレーニング、ファインチューニング、 Reports の作成、ハイパーパラメーター探索( Sweeps )の自動化、 + そしてバージョン管理と再現性のための Model Registry の活用が含まれます。 +
+
+ • 概要
+ • クイックスタート
+ • YouTube チュートリアル
+ • オンラインコース +
+ + + W&B Weave を使用して、コード内での AI モデルの挙動を管理しましょう。 + 主な機能には、トレース、出力の評価、コスト見積もり、および様々な大規模言語モデル(LLM)や + 設定を比較するためのプレイグラウンドが含まれます。 +
+
+ • 概要
+ • クイックスタート
+ • YouTube デモ
+ • プレイグラウンドを試す
+ • W&B Runs で Weave を使用する +
+ + + W&B Inference を使用して、OpenAI 互換の API 経由で主要なオープンソース基盤モデルにアクセスしましょう。 + 主な機能には、複数のモデルオプション、使用状況の追跡、およびトレースと評価のための Weave との統合が含まれます。 +
+
+ • 概要
+ • 利用可能なモデル
+ • API リファレンス
+ • プレイグラウンドで試す +
+ + + 現在パブリックプレビュー中の W&B Training を使用して、サーバーレス強化学習(RL)で大規模言語モデルをポストトレーニングしましょう。 + 主な機能には、フルマネージドな GPU インフラストラクチャ、ART および RULER との統合、 + マルチターンエージェントタスクのためのオートスケーリングが含まれます。 +
+
+ • 概要
+ • 前提条件
+ • サーバーレス RL
+ • API リファレンス +
+
+
+
+
+
\ No newline at end of file diff --git a/ja/models.mdx b/ja/models.mdx index d799d754f3..79b28d4535 100644 --- a/ja/models.mdx +++ b/ja/models.mdx @@ -1,19 +1,21 @@ --- -title: W&B モデル -no_list: true +title: W&B Models +mode: wide --- -W&B Models は、モデルを整理し、生産性とコラボレーションを向上させ、プロダクション規模での機械学習を提供したい機械学習エンジニアのための SoR です。 +W&B Models は、モデルを整理し、生産性とコラボレーションを向上させ、大規模なプロダクション機械学習を実現したい機械学習エンジニアのための SoR(System of Record)です。 - - - +W&B Models architecture diagram -W&B Models を使用すると、次のことが可能です: +W&B Models を使用すると、以下のことが可能になります: -- 全ての[ML 実験](/ja/models/track/)をトラッキングして視覚化します。 -- [ハイパーパラメーター探索](/ja/models/sweeps/)で、モデルをスケールに合わせて最適化し、ファインチューンします。 -- devops とデプロイメントへのシームレスな引き渡しポイントを持つすべてのモデルの[集中ハブを維持する](/ja/models/core/registry/)。 -- [モデル CI/CD](/ja/models/core/automations/)のためのキーワークフローをトリガするカスタムオートメーションを設定します。 +- すべての [ML 実験(Experiments)](/models/track/) を追跡し、可視化します。 +- [ハイパーパラメーター探索(Sweeps)](/models/sweeps/) を使用して、モデルの最適化とファインチューンを大規模に行います。 +- [すべてのモデルを中央ハブで管理](/models/registry/) し、DevOps やデプロイメントへのシームレスなハンドオフを実現します。 +- [モデルの CI/CD](/models/automations/) に関する主要なワークフローをトリガーする、カスタムオートメーションを設定します。 -機械学習エンジニアは、実験をトラッキングして視覚化し、モデルのバージョンとリネージを管理し、ハイパーパラメーターを最適化するための ML SoR として W&B Models に依存しています。 \ No newline at end of file +機械学習エンジニアは、実験の追跡と可視化、モデルのバージョンとリネージの管理、そしてハイパーパラメーターの最適化を行うための機械学習 SoR として W&B Models を活用しています。 \ No newline at end of file diff --git a/ja/models/app/console-logs.mdx b/ja/models/app/console-logs.mdx new file mode 100644 index 0000000000..9d98943acd --- /dev/null +++ b/ja/models/app/console-logs.mdx @@ -0,0 +1,153 @@ +--- +title: コンソールログ +--- + +実験を run すると、コンソールにさまざまなメッセージが表示されることがあります。W&B はこれらのコンソールログをキャプチャし、W&B App に表示します。これらのメッセージを使用して、実験の 振る舞い のデバッグや監視を行ってください。 + +## コンソールログの表示 + +W&B App で Run のコンソールログにアクセスするには、以下の手順に従います: + +1. W&B App で対象の **Projects** に移動します。 +2. **Runs** テーブルから特定の Run を選択します。 +3. プロジェクトサイドバーにある **Logs** タブをクリックします。 + + +W&B は、1 つの Run に対して最大 100,000 行のログを保存します。W&B App では、一度に最大 10,000 行のログが表示されます。ログをスクロールして古い行を表示させることで、保存されているすべてのログを確認できます。 + + +{/* ## コンソールログのフィールド + +W&B App 内で、コンソールログテーブルに表示されるフィールドを変更できます。 */} + +## コンソールログの種類 + +W&B は、情報メッセージ、警告、エラーの数種類のコンソールログをキャプチャし、ログの重要度を示すプレフィックスを付与します。 + +### 情報メッセージ(Informational messages) +情報メッセージは、Run の進捗やステータスに関する更新情報を提供します。通常、`wandb:` というプレフィックスが付きます。 + +```text +wandb: Starting Run: abc123 +wandb: Run data is saved locally in ./wandb/run-20240125_120000-abc123 +``` + +### 警告メッセージ(Warning messages) +実行は停止しないものの、潜在的な問題に関する警告には `WARNING:` というプレフィックスが付きます。 + +```text +WARNING Found .wandb file, not streaming tensorboard metrics. +WARNING These runs were logged with a previous version of wandb. +``` + +### エラーメッセージ(Error messages) +重大な問題に関するエラーメッセージには `ERROR:` というプレフィックスが付きます。これらは、Run が正常に完了するのを妨げる可能性のある問題を示しています。 + +```text +ERROR Unable to save notebook session history. +ERROR Failed to save notebook. +``` + +## コンソールログの設定 + +コード内で `wandb.init()` に `wandb.Settings` オブジェクトを渡すことで、W&B がコンソールログをどのように処理するかを 設定 できます。`wandb.Settings` 内で以下の パラメータ を設定し、コンソールログの 振る舞い を制御できます: + +- `show_errors`: `True` に設定すると、エラーメッセージが W&B App に表示されます。`False` に設定すると、エラーメッセージは表示されません。 +- `silent`: `True` に設定すると、すべての W&B コンソール出力が抑制されます。これは、コンソールの ノイズ を最小限に抑えたい プロダクション 環境で役立ちます。 +- `show_warnings`: `True` に設定すると、警告メッセージが W&B App に表示されます。`False` に設定すると、警告メッセージは表示されません。 +- `show_info`: `True` に設定すると、情報メッセージが W&B App に表示されます。`False` に設定すると、情報メッセージは表示されません。 + +以下の例は、これらの 設定 を構成する方法を示しています: + +```python +import wandb + +settings = wandb.Settings( + show_errors=True, # エラーメッセージを W&B App に表示する + silent=False, # すべての W&B コンソール出力を無効にする + show_warnings=True # 警告メッセージを W&B App に表示する +) + +with wandb.init(settings=settings) as run: + # ここにトレーニングコードを記述 + run.log({"accuracy": 0.95}) +``` + +## カスタムロギング + +W&B は アプリケーション からのコンソールログをキャプチャしますが、独自のロギング設定を妨げることはありません。Python 組み込みの `print()` 関数や `logging` モジュールを使用してメッセージを記録できます。 + +```python +import wandb + +with wandb.init(project="my-project") as run: + for i in range(100, 1000, 100): + # これは W&B にログを記録し、コンソールにも出力します + run.log({"epoch": i, "loss": 0.1 * i}) + print(f"epoch: {i} loss: {0.1 * i}") +``` + +コンソールログは以下のようになります: + +```text +1 epoch: 100 loss: 1.3191105127334595 +2 epoch: 200 loss: 0.8664389848709106 +3 epoch: 300 loss: 0.6157898902893066 +4 epoch: 400 loss: 0.4961796700954437 +5 epoch: 500 loss: 0.42592573165893555 +6 epoch: 600 loss: 0.3771176040172577 +7 epoch: 700 loss: 0.3393910825252533 +8 epoch: 800 loss: 0.3082585036754608 +9 epoch: 900 loss: 0.28154927492141724 +``` + +## タイムスタンプ + +各コンソールログのエントリには、自動的にタイムスタンプが追加されます。これにより、各ログメッセージがいつ生成されたかを追跡できます。 + +コンソールログのタイムスタンプの表示/非表示を切り替えることができます。コンソールページの左上隅にある **Timestamp visible** ドロップダウンを選択してください。 + +## コンソールログの検索 + +コンソールログページの上部にある検索バーを使用して、キーワードでログをフィルタリングできます。特定の用語、ラベル、またはエラーメッセージを検索できます。 + +## カスタムラベルによるフィルタリング + + +`x_` で始まるパラメータ(`x_label` など)はパブリックプレビュー版です。フィードバックを提供するには、[W&B リポジトリで GitHub issue](https://github.com/wandb/wandb) を作成してください。 + + +`wandb.Settings` の `x_label` 引数 に渡したラベルに基づいて、コンソールログページの上部にある UI 検索バーからログをフィルタリングできます。 + +```python +import wandb + +# プライマリノードで Run を初期化 +with wandb.init( + entity="entity", + project="project", + settings=wandb.Settings( + x_label="custom_label" # (オプション) ログフィルタリング用のカスタムラベル + ) +) as run: + # ここにコードを記述 +``` + +## コンソールログのダウンロード + +W&B App で Run のコンソールログをダウンロードするには、以下の手順に従います: + +1. W&B App で対象の **Projects** に移動します。 +2. **Runs** テーブルから特定の Run を選択します。 +3. プロジェクトサイドバーにある **Logs** タブをクリックします。 +4. コンソールログページの右上隅にあるダウンロードボタンをクリックします。 + + +## コンソールログのコピー + +W&B App で Run のコンソールログをコピーするには、以下の手順に従います: + +1. W&B App で対象の **Projects** に移動します。 +2. **Runs** テーブルから特定の Run を選択します。 +3. プロジェクトサイドバーにある **Logs** タブをクリックします。 +4. コンソールログページの右上隅にあるコピーボタンをクリックします。 \ No newline at end of file diff --git a/ja/models/app/features/cascade-settings.mdx b/ja/models/app/features/cascade-settings.mdx index 2c665aa44e..5a7e24ec7e 100644 --- a/ja/models/app/features/cascade-settings.mdx +++ b/ja/models/app/features/cascade-settings.mdx @@ -1,126 +1,136 @@ --- -title: ワークスペース、セクション、パネル設定を管理する +title: Workspace 、セクション、パネルの 設定 を管理する --- -Within a given workspace page there are three different setting levels: workspaces, sections, and panels. [ワークスペース設定](#workspace-settings) は、ワークスペース全体に適用されます。[セクション設定](#section-settings) は、セクション内のすべてのパネルに適用されます。[パネル設定](#panel-settings) は、個々のパネルに適用されます。 +特定の Workspace ページ内には、Workspace、セクション、パネルの3つの異なる設定レベルがあります。[Workspace 設定](#workspace-settings) は Workspace 全体に適用されます。[セクション設定](#section-settings) はセクション内のすべてのパネルに適用されます。[パネル設定](#panel-settings) は個々のパネルに適用されます。 -## ワークスペース設定 +## Workspace 設定 -ワークスペース設定は、すべてのセクションとそれらのセクション内のすべてのパネルに適用されます。編集できるワークスペース設定は次の2種類です: [**Workspace layout**](#workspace-layout-options) と [**Line plots**](#line-plots-options)。**Workspace layouts** はワークスペースの構造を決定し、**Line plots** 設定はワークスペース内のラインプロットのデフォルト設定を制御します。 +Workspace 設定は、すべてのセクションとそれらのセクション内のすべてのパネルに適用されます。編集できる Workspace 設定には、[Workspace レイアウト](#workspace-layout-options) と [Line plots](#line-plots-options) の2つのタイプがあります。**Workspace layout** は Workspace の構造を決定し、**Line plots** 設定は Workspace 内の折れ線グラフのデフォルト設定を制御します。 -このワークスペースの全体的な構造に適用される設定を編集するには: +この Workspace の全体的な構造に適用される設定を編集するには: -1. プロジェクトワークスペースに移動します。 -2. **New report** ボタンの横にある歯車のアイコンをクリックして、ワークスペース設定を表示します。 -3. ワークスペースのレイアウトを変更するには **Workspace layout** を選択するか、ワークスペース内のラインプロットのデフォルト設定を設定するには **Line plots** を選択します。 +1. プロジェクトの Workspace に移動します。 +2. **New report** ボタンの隣にあるギアアイコンをクリックして、Workspace 設定を表示します。 +3. **Workspace layout** を選択して Workspace のレイアウトを変更するか、**Line plots** を選択して Workspace 内の折れ線グラフのデフォルト設定を 設定 します。 - + Workspace settings gear icon -### ワークスペースレイアウトオプション + +Workspace をカスタマイズした後、_workspace templates_ を使用して、同じ設定で新しい Workspace を素早く作成できます。詳細は [Workspace templates](/models/track/workspaces/#workspace-templates) を参照してください。 + + +### Workspace layout オプション -ワークスペースのレイアウトを設定して、ワークスペースの全体的な構造を定義します。これには、セクションのロジックとパネルの配置が含まれます。 +Workspace のレイアウトを 設定 して、Workspace の全体的な構造を定義します。これにはセクション分けのロジックやパネルの整理が含まれます。 - + Workspace layout options -ワークスペースレイアウトオプションページでは、ワークスペースがパネルを自動か手動で生成するかが表示されます。ワークスペースのパネル生成モードを調整するには、[Panels](/ja/models/app/features/panels/) を参照してください。 +Workspace layout オプションページには、Workspace がパネルを自動または手動のどちらで生成しているかが表示されます。Workspace のパネル生成モードを調整するには、[Panels](/models/app/features/panels/) を参照してください。 -この表は、各ワークスペースのレイアウトオプションについて説明しています。 +以下の表は、各 Workspace layout オプションの説明です。 -| ワークスペース設定 | 説明 | +| Workspace 設定 | 説明 | | ----- | ----- | -| **検索中に空のセクションを非表示** | パネルを検索するときにパネルを含まないセクションを非表示にします。 | -| **パネルをアルファベット順に並べ替え** | ワークスペース内のパネルをアルファベット順に並べ替えます。 | -| **セクションの組織化** | 既存のすべてのセクションとパネルを削除し、新しいセクション名で再配置します。また、新しく配置されたセクションを最初または最後のプレフィックスでグループ化します。 | +| **Hide empty sections during search** | パネルを検索する際、パネルを含まないセクションを非表示にします。| +| **Sort panels alphabetically** | Workspace 内のパネルをアルファベット順にソートします。 | +| **Section organization** | 既存のすべてのセクションとパネルを削除し、新しいセクション名で再配置します。新しく配置されたセクションを、最初のプレフィックスまたは最後のプレフィックスでグループ化します。 | -W&B は、最後のプレフィックスでグループ化するのではなく、最初のプレフィックスでセクションをグループ化することをお勧めします。最初のプレフィックスでグループ化することで、セクション数が少なくなり、パフォーマンスが向上します。 +W&B では、最後のプレフィックスでグループ化するよりも、最初のプレフィックスでグループ化してセクションを整理することをお勧めします。最初のプレフィックスでグループ化すると、セクション数が少なくなり、パフォーマンスが向上する可能性があります。 -### ラインプロットオプション - -ワークスペースの**Line plots**設定を変更して、ラインプロットのグローバルデフォルトとカスタムルールを設定します。 +### Line plots オプション +**Line plots** Workspace 設定を変更することで、Workspace 内の折れ線グラフのグローバルなデフォルト値とカスタムルールを設定できます。 - + Line plot settings -**Line plots** 設定内で編集できる主要な設定は2つあります: **Data** と **Display preferences**。**Data** タブには次の設定が含まれています: +**Line plots** 設定内では、**Data** と **Display preferences** の2つのメイン設定を編集できます。**Data** タブには以下の設定が含まれます: + -| ラインプロット設定 | 説明 | +| Line plot 設定 | 説明 | | ----- | ----- | -| **X軸** | ラインプロットのx軸のスケール。x軸はデフォルトで **Step** に設定されています。x軸オプションのリストは次の表を参照してください。 | -| **範囲** | x軸に表示する最小値と最大値の設定。 | -| **平滑化** | ラインプロットの平滑化を変更します。平滑化の詳細については、[Smooth line plots](/ja/models/app/features/panels/line-plot/smoothing/) を参照してください。 | -| **異常値** | 異常値を除外するためにプロットの最小スケールと最大スケールを再設定します。 | -| **ポイント集計方法** | Data Visualization の精度とパフォーマンスを向上させます。詳細については、[Point aggregation](/ja/models/app/features/panels/line-plot/sampling/) を参照してください。 | -| **最大の runs またはグループの数** | ラインプロットに表示する最大の runs またはグループ数を制限します。 | +| **X axis** | 折れ線グラフの x 軸のスケール。x 軸はデフォルトで **Step** に設定されています。x 軸のオプション一覧については後述の表を参照してください。 | +| **Range** | x 軸に表示する最小値と最大値の設定。 | +| **Smoothing** | 折れ線グラフの平滑化を変更します。平滑化の詳細については、[Smooth line plots](/models/app/features/panels/line-plot/smoothing/) を参照してください。 | +| **Outliers** | 外れ値を除外するようにリスケールし、デフォルトのグラフの最小・最大スケールを調整します。 | +| **Point aggregation method** | Data Visualization の精度とパフォーマンスを向上させます。詳細は [Point aggregation](/models/app/features/panels/line-plot/sampling/) を参照してください。 | +| **Max number of runs or groups** | 折れ線グラフに表示される run またはグループの数を制限します。 | -**Step** 以外にも、x軸には他のオプションがあります: +**Step** 以外にも、x 軸には以下のオプションがあります: -| X軸オプション | 説明 | +| X 軸オプション | 説明 | | ------------- | ----------- | -| **相対時間 (Wall)** | プロセスが開始してからのタイムスタンプ。例えば、run を開始して次の日にその run を再開したとします。その場合、記録されたポイントは24時間後です。| -| **相対時間 (Process)** | 実行中のプロセス内のタイムスタンプ。例えば、run を開始して10秒間続け、その後次の日に再開したとします。その場合、記録されたポイントは10秒です。| -| **ウォールタイム** | グラフで最初の run が開始してから経過した時間(分)。| -| **Step** | `wandb.log()` を呼び出すたびに増加します。| +| **Relative Time (Wall)**| プロセス開始からのタイムスタンプ。例えば、run を開始して翌日に再開したとします。その後何かを ログ した場合、記録されるポイントは 24 時間後となります。| +| **Relative Time (Process)** | 実行中のプロセス内部のタイムスタンプ。例えば、run を開始して 10 秒間継続させ、翌日にその run を再開したとします。ポイントは 10 秒として記録されます。 | +| **Wall Time** | グラフ上の最初の run の開始から経過した時間(分)。 | +| **Step** | `wandb.Run.log()` を呼び出すたびにインクリメントされます。| + + -個別のラインプロットを編集する方法については、ラインプロット内の[Edit line panel settings](/ja/models/app/features/panels/line-plot/#edit-line-panel-settings)を参照してください。 +個別の折れ線グラフを編集する方法については、Line plots の [Edit line panel settings](/models/app/features/panels/line-plot/#edit-line-panel-settings) を参照してください。 -**Display preferences** タブ内で、以下の設定を切り替えることができます: -| ディスプレイ設定 | 説明 | +**Display preferences** タブ内では、以下の設定を切り替えることができます: + +| 表示設定 | 説明 | | ----- | ----- | -| **すべてのパネルから凡例を削除** | パネルの凡例を削除します | -| **ツールチップ内でカラード run 名を表示** | ツールチップ内で run をカラードテキストとして表示します | -| **コンパニオンチャートツールチップで、ハイライトされた run のみを表示** | チャートツールチップ内でハイライトされた run のみを表示します | -| **ツールチップ内に表示される run の数** | ツールチップ内で表示される run の数を表示します | -| **プライマリチャートのツールチップにフル run 名を表示**| チャートツールチップで run のフルネームを表示します | +| **Remove legends from all panels** | パネルの凡例を削除します | +| **Display colored run names in tooltips** | ツールチップ内で run 名を色付きテキストで表示します | +| **Only show highlighted run in companion chart tooltip** | チャートのツールチップにハイライトされた run のみを表示します | +| **Number of runs shown in tooltips** | ツールチップに表示される run の数 | +| **Display full run names on the primary chart tooltip**| チャートのツールチップに run のフルネームを表示します | + + + ## セクション設定 -セクション設定は、そのセクション内のすべてのパネルに適用されます。ワークスペースセクション内では、パネルをソートしたり、並べ替えたり、セクション名を変更したりできます。 +セクション設定は、そのセクション内のすべてのパネルに適用されます。Workspace のセクション内では、パネルのソート、パネルの並べ替え、セクション名の変更が可能です。 -セクション設定を変更するには、セクションの右上隅にある3つの水平ドット (**...**) を選択します。 +セクション設定を変更するには、セクションの右上隅にある3つの横ドット(**...**)を選択します。 - + Section settings menu -ドロップダウンから、セクション全体に適用される次の設定を編集できます: +ドロップダウンから、セクション全体に適用される以下の設定を編集できます: | セクション設定 | 説明 | | ----- | ----- | -| **セクションの名前を変更** | セクションの名前を変更します | -| **パネルを A-Z に並べ替え** | セクション内のパネルをアルファベット順に並べ替えます | -| **パネルを並べ替え** | セクション内でパネルを手動で並べ替えるために、パネルを選択してドラッグします | +| **Rename a section** | セクション名を変更します | +| **Sort panels A-Z** | セクション内のパネルをアルファベット順にソートします | +| **Rearrange panels** | セクション内のパネルを選択してドラッグし、パネルを手動で並べ替えます | -以下のアニメーションは、セクション内でパネルを並べ替える方法を示しています: +以下のアニメーションは、セクション内でパネルを並べ替える方法を示しています: - + Rearranging panels -この表で説明されている設定に加えて、ワークスペースでのセクションの表示方法も編集できます。たとえば、**Add section below**、**Add section above**、**Delete section**、**Add section to report** などです。 +上記の表で説明した設定に加えて、**Add section below**(下にセクションを追加)、**Add section above**(上にセクションを追加)、**Delete section**(セクションを削除)、**Add section to report**(Reports にセクションを追加)など、Workspace 内でのセクションの表示方法も編集できます。 ## パネル設定 -個々のパネルの設定をカスタマイズして、同じプロットで複数のラインを比較したり、カスタム軸を計算したり、ラベルを変更したりすることができます。パネルの設定を編集するには: +個々のパネルの設定をカスタマイズして、同じプロット上で複数のラインを比較したり、カスタム軸を計算したり、ラベルの名前を変更したりできます。パネルの設定を編集するには: -1. 編集したいパネルにマウスを乗せます。 -2. 現れる鉛筆アイコンを選択します。 +1. 編集したいパネルの上にマウスを置きます。 +2. 表示される鉛筆アイコンを選択します。 - + Panel edit icon -3. 表示されたモーダル内で、パネルのデータ、ディスプレイの設定などに関連する設定を編集できます。 +3. 表示されるモーダル内で、パネルの データ、表示設定などに関する設定を編集できます。 - + Panel settings modal -パネルに適用できる設定の完全なリストについては、[Edit line panel settings](/ja/models/app/features/panels/line-plot/#edit-line-panel-settings) を参照してください。 \ No newline at end of file +パネルに適用できる設定の完全なリストについては、[Edit line panel settings](/models/app/features/panels/line-plot/#edit-line-panel-settings) を参照してください。 \ No newline at end of file diff --git a/ja/models/app/features/custom-charts.mdx b/ja/models/app/features/custom-charts.mdx index 515e534f01..ea7dbdc0d5 100644 --- a/ja/models/app/features/custom-charts.mdx +++ b/ja/models/app/features/custom-charts.mdx @@ -1,12 +1,13 @@ --- -title: カスタムチャート +title: カスタムチャートの概要 +description: Vega visualization を使用して W&B Projects でカスタムチャートを作成する --- -W&Bプロジェクトでカスタムチャートを作成しましょう。任意のデータテーブルをログし、自由に可視化できます。フォント、色、ツールチップの詳細を[Vega](https://vega.github.io/vega/)の力でコントロールしましょう。 +W&B プロジェクトでカスタムチャートを作成しましょう。任意のデータテーブルをログに記録し、思い通りの方法で可視化できます。 [Vega](https://vega.github.io/vega/) のパワーを活用して、フォント、色、ツールチップなどの詳細を制御できます。 -* コード: 例の[Colabノートブック](https://tiny.cc/custom-charts)を試してみてください。 -* ビデオ: [ウォークスルービデオ](https://www.youtube.com/watch?v=3-N9OV6bkSM)を視聴します。 -* 例: KerasとSklearnの[デモノートブック](https://colab.research.google.com/drive/1g-gNGokPWM2Qbc8p1Gofud0_5AoZdoSD?usp=sharing) +* コード: [Colabノートブック](https://tiny.cc/custom-charts) の例を試す。 +* 動画: [ウォークスルー動画](https://www.youtube.com/watch?v=3-N9OV6bkSM) を見る。 +* 例: Keras と Sklearn のクイック [デモノートブック](https://colab.research.google.com/drive/1g-gNGokPWM2Qbc8p1Gofud0_5AoZdoSD?usp=sharing) Supported charts from vega.github.io/vega @@ -14,172 +15,195 @@ W&Bプロジェクトでカスタムチャートを作成しましょう。任 ### 仕組み -1. **データをログする**: スクリプトから、[config](/ja/models/track/config/)とサマリーデータをログします。 -2. **チャートをカスタマイズする**: [GraphQL](https://graphql.org)クエリを使ってログされたデータを呼び出します。[Vega](https://vega.github.io/vega/)、強力な可視化文法でクエリの結果を可視化します。 -3. **チャートをログする**: あなた自身のプリセットをスクリプトから`wandb.plot_table()`で呼び出します。 +1. **データのログ記録**: スクリプトから [config](/models/track/config/) とサマリーデータをログに記録します。 +2. **チャートのカスタマイズ**: [GraphQL](https://graphql.org) クエリを使用して、ログに記録されたデータを抽出します。強力な可視化文法である [Vega](https://vega.github.io/vega/) を使用して、クエリの結果を可視化します。 +3. **チャートのログ記録**: スクリプトから `wandb.plot_table()` を使用して、独自のプリセットを呼び出します。 - + PR and ROC curves -期待したデータが表示されない場合、選択した Runs に求めている列がログされていない可能性があります。チャートを保存し、Runsテーブルに戻って、選択した Runs を**目のアイコン**で確認してください。 +期待されるデータが表示されない場合は、探している列が選択した Runs でログに記録されていない可能性があります。チャートを保存して Runs テーブルに戻り、**目** のアイコンを使用して選択された Runs を確認してください。 -## スクリプトからチャートをログする -### 組み込みプリセット +## スクリプトからチャートをログに記録する -W&Bにはスクリプトから直接ログできるいくつかの組み込みチャートプリセットがあります。これらには、ラインプロット、スキャッタープロット、バーチャート、ヒストグラム、PR曲線、ROC曲線が含まれます。 +### 組込みプリセット + +W&B には、スクリプトから直接ログに記録できる多数の組込みチャートプリセットがあります。これらには、折れ線グラフ、散布図、棒グラフ、ヒストグラム、PR曲線、ROC曲線が含まれます。 - + `wandb.plot.line()` - カスタムラインプロットをログします — 任意の軸xとy上の接続され順序付けされた点(x,y)のリストです。 + カスタムの折れ線グラフ(任意の軸 x と y 上の、連結され順序付けられた点 (x,y) のリスト)をログに記録します。 ```python - data = [[x, y] for (x, y) in zip(x_values, y_values)] - table = wandb.Table(data=data, columns=["x", "y"]) - wandb.log( - { - "my_custom_plot_id": wandb.plot.line( - table, "x", "y", title="Custom Y vs X Line Plot" - ) - } - ) + with wandb.init() as run: + # x_values と y_values からデータのリストを作成 + data = [[x, y] for (x, y) in zip(x_values, y_values)] + table = wandb.Table(data=data, columns=["x", "y"]) + run.log( + { + "my_custom_plot_id": wandb.plot.line( + table, "x", "y", title="Custom Y vs X Line Plot" + ) + } + ) ``` - ラインプロットは任意の2次元上に曲線をログします。もし2つのlistの値を互いにプロットする場合、listの値の数が完全に一致している必要があります(例えば、各点はxとyを持たなければなりません)。 + 折れ線グラフは、任意の2つの次元の曲線をログに記録します。2つの値のリストを互いにプロットする場合、リスト内の値の数は正確に一致している必要があります(例えば、各点に x と y が必要です)。 - + Custom line plot - [例のレポートを確認](https://wandb.ai/wandb/plots/reports/Custom-Line-Plots--VmlldzoyNjk5NTA)するか、[例のGoogle Colabノートブックを試す](https://tiny.cc/custom-charts)ことができます。 + [Reports の例を見る](https://wandb.ai/wandb/plots/reports/Custom-Line-Plots--VmlldzoyNjk5NTA) または [Google Colabノートブックの例を試す](https://tiny.cc/custom-charts)。 - + `wandb.plot.scatter()` - カスタムスキャッタープロットをログします — 任意の軸xとy上の点(x, y)のリストです。 + カスタムの散布図(任意の軸ペア x と y 上の点 (x, y) のリスト)をログに記録します。 ```python - data = [[x, y] for (x, y) in zip(class_x_prediction_scores, class_y_prediction_scores)] - table = wandb.Table(data=data, columns=["class_x", "class_y"]) - wandb.log({"my_custom_id": wandb.plot.scatter(table, "class_x", "class_y")}) + with wandb.init() as run: + # 予測スコアからデータのリストを作成 + data = [[x, y] for (x, y) in zip(class_x_prediction_scores, class_y_prediction_scores)] + table = wandb.Table(data=data, columns=["class_x", "class_y"]) + run.log({"my_custom_id": wandb.plot.scatter(table, "class_x", "class_y")}) ``` - 任意の2次元上にスキャッターポイントをログするためにこれを使うことができます。もし2つのlistの値を互いにプロットする場合、listの値の数が完全に一致している必要があります(例えば、各点はxとyを持たなければなりません)。 + これを使用して、任意の2つの次元の散布図をログに記録できます。2つの値のリストを互いにプロットする場合、リスト内の値の数は正確に一致している必要があることに注意してください(例えば、各点に x と y が必要です)。 - + Scatter plot - [例のレポートを確認](https://wandb.ai/wandb/plots/reports/Custom-Scatter-Plots--VmlldzoyNjk5NDQ)するか、[例のGoogle Colabノートブックを試す](https://tiny.cc/custom-charts)ことができます。 + [Reports の例を見る](https://wandb.ai/wandb/plots/reports/Custom-Scatter-Plots--VmlldzoyNjk5NDQ) または [Google Colabノートブックの例を試す](https://tiny.cc/custom-charts)。 - + `wandb.plot.bar()` - カスタムバーチャートをログします — ラベル付き値のリストをバーとして表示する — 数行でネイティブに: + カスタムの棒グラフ(ラベル付きの値のリストを棒として表示)を数行でネイティブにログに記録します: ```python - data = [[label, val] for (label, val) in zip(labels, values)] - table = wandb.Table(data=data, columns=["label", "value"]) - wandb.log( - { - "my_bar_chart_id": wandb.plot.bar( - table, "label", "value", title="Custom Bar Chart" - ) - } - ) + with wandb.init() as run: + # ラベルと値からデータのリストを作成 + data = [[label, val] for (label, val) in zip(labels, values)] + table = wandb.Table(data=data, columns=["label", "value"]) + run.log( + { + "my_bar_chart_id": wandb.plot.bar( + table, "label", "value", title="Custom Bar Chart" + ) + } + ) ``` - 任意のバーチャートをログするためにこれを使用することができます。list内のラベルと値の数は完全に一致している必要があります(例えば、各データポイントが両方を持つ必要があります)。 + これを使用して、任意の棒グラフをログに記録できます。リスト内のラベルと値の数は正確に一致している必要があることに注意してください(例えば、各データポイントに両方が必要です)。 + + + Demo bar plot + - [例のレポートを確認](https://wandb.ai/wandb/plots/reports/Custom-Bar-Charts--VmlldzoyNzExNzk)するか、[例のGoogle Colabノートブックを試す](https://tiny.cc/custom-charts)ことができます。 + [Reports の例を見る](https://wandb.ai/wandb/plots/reports/Custom-Bar-Charts--VmlldzoyNzExNzk) または [Google Colabノートブックの例を試す](https://tiny.cc/custom-charts)。 - + `wandb.plot.histogram()` - カスタムヒストグラムをログします — いくつかの行で値をカウントまたは出現頻度によってビンにソートします。予測信頼度スコア(`scores`)のリストがあるとしましょう。それらの分布を可視化したいとします。 + カスタムのヒストグラム(値のリストを出現回数/頻度によってビンに分類)を数行でネイティブにログに記録します。例えば、予測信頼度スコア (`scores`) のリストがあり、その分布を可視化したいとします: ```python - data = [[s] for s in scores] - table = wandb.Table(data=data, columns=["scores"]) - wandb.log({"my_histogram": wandb.plot.histogram(table, "scores", title=None)}) + with wandb.init() as run: + # スコアからデータのリストを作成 + data = [[s] for s in scores] + table = wandb.Table(data=data, columns=["scores"]) + run.log({"my_histogram": wandb.plot.histogram(table, "scores", title=None)}) ``` - 任意のヒストグラムをログするためにこれを使用することができます。注意として、 `data` は list of lists であり、2次元配列の行と列をサポートすることを意図しています。 + これを使用して、任意のヒストグラムをログに記録できます。 `data` は、行と列の2次元配列をサポートすることを目的としたリストのリストであることに注意してください。 - + Custom histogram - [例のレポートを確認](https://wandb.ai/wandb/plots/reports/Custom-Histograms--VmlldzoyNzE0NzM)するか、[例のGoogle Colabノートブックを試す](https://tiny.cc/custom-charts)ことができます。 + [Reports の例を見る](https://wandb.ai/wandb/plots/reports/Custom-Histograms--VmlldzoyNzE0NzM) または [Google Colabノートブックの例を試す](https://tiny.cc/custom-charts)。 - + `wandb.plot.pr_curve()` - [Precision-Recall curve](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_curve.html#sklearn.metrics.precision_recall_curve) を1行で作成します。 + 1行で [PR曲線](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_curve.html#sklearn.metrics.precision_recall_curve) を作成します: ```python - plot = wandb.plot.pr_curve(ground_truth, predictions, labels=None, classes_to_plot=None) + with wandb.init() as run: + # 正解ラベルと予測スコアからPR曲線を作成 + plot = wandb.plot.pr_curve(ground_truth, predictions, labels=None, classes_to_plot=None) - wandb.log({"pr": plot}) + run.log({"pr": plot}) ``` - コードが次にアクセス可能なときにこれをログできます: + コードが以下にアクセスできる場合に、これをログに記録できます: - * モデルの予測スコア (`predictions`) の一群の例 - * それらの例の対応する正解ラベル (`ground_truth`) - * (オプション)ラベルまたはクラス名のリスト (`labels=["cat", "dog", "bird"...]` ラベルインデックス0はcat、1番目はdog、2番目はbird...) - * (オプション)プロットに可視化するラベルのサブセット(リスト形式のまま) + * 一連の例に対するモデルの予測スコア (`predictions`) + * それらの例に対応する正解(ground truth)ラベル (`ground_truth`) + * (オプション) ラベル/クラス名のリスト (例: `labels=["cat", "dog", "bird"...]`) + * (オプション) プロットで可視化するラベルのサブセット (リスト形式) - + Precision-recall curves - [例のレポートを確認](https://wandb.ai/wandb/plots/reports/Plot-Precision-Recall-Curves--VmlldzoyNjk1ODY)するか、[例のGoogle Colabノートブックを試す](https://colab.research.google.com/drive/1mS8ogA3LcZWOXchfJoMrboW3opY1A8BY?usp=sharing)ことができます。 + + [Reports の例を見る](https://wandb.ai/wandb/plots/reports/Plot-Precision-Recall-Curves--VmlldzoyNjk1ODY) または [Google Colabノートブックの例を試す](https://colab.research.google.com/drive/1mS8ogA3LcZWOXchfJoMrboW3opY1A8BY?usp=sharing)。 - + `wandb.plot.roc_curve()` - [ROC curve](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html#sklearn.metrics.roc_curve) を1行で作成します。 + 1行で [ROC曲線](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html#sklearn.metrics.roc_curve) を作成します: ```python - plot = wandb.plot.roc_curve( - ground_truth, predictions, labels=None, classes_to_plot=None - ) - - wandb.log({"roc": plot}) + with wandb.init() as run: + # ground_truth は真のラベルのリスト、predictions は予測スコアのリスト + ground_truth = [0, 1, 0, 1, 0, 1] + predictions = [0.1, 0.4, 0.35, 0.8, 0.7, 0.9] + + # ROC曲線プロットを作成 + # labels はオプションのクラス名リスト、classes_to_plot は可視化するラベルのオプションのサブセット + plot = wandb.plot.roc_curve( + ground_truth, predictions, labels=None, classes_to_plot=None + ) + + run.log({"roc": plot}) ``` - コードが次にアクセス可能なときにこれをログできます: + コードが以下にアクセスできる場合に、これをログに記録できます: - * モデルの予測スコア (`predictions`) の一群の例 - * それらの例の対応する正解ラベル (`ground_truth`) - * (オプション)ラベルまたはクラス名のリスト (`labels=["cat", "dog", "bird"...]` ラベルインデックス0はcat、1番目はdog、2番目はbird...) - * (オプション)このプロットに可視化するラベルのサブセット(リスト形式のまま) + * 一連の例に対するモデルの予測スコア (`predictions`) + * それらの例に対応する正解(ground truth)ラベル (`ground_truth`) + * (オプション) ラベル/ クラス名のリスト (例: `labels=["cat", "dog", "bird"...]`) + * (オプション) プロットで可視化するこれらのラベルのサブセット (リスト形式) - + ROC curve - [例のレポートを確認](https://wandb.ai/wandb/plots/reports/Plot-ROC-Curves--VmlldzoyNjk3MDE)するか、[例のGoogle Colabノートブックを試す](https://colab.research.google.com/drive/1_RMppCqsA8XInV_jhJz32NCZG6Z5t1RO?usp=sharing)ことができます。 + [Reports の例を見る](https://wandb.ai/wandb/plots/reports/Plot-ROC-Curves--VmlldzoyNjk3MDE) または [Google Colabノートブックの例を試す](https://colab.research.google.com/drive/1_RMppCqsA8XInV_jhJz32NCZG6Z5t1RO?usp=sharing)。 ### カスタムプリセット -組み込みプリセットを調整するか新しいプリセットを作成し、チャートを保存します。チャートIDを使ってそのカスタムプリセットに直接スクリプトからデータをログします。[例のGoogle Colabノートブックを試す](https://tiny.cc/custom-charts)。 +組込みプリセットを微調整するか、新しいプリセットを作成してチャートを保存します。チャート ID を使用して、スクリプトから直接そのカスタムプリセットにデータをログ記録します。[Google Colabノートブックの例を試す](https://tiny.cc/custom-charts)。 ```python -# プロットする列を持つテーブルを作成します +# プロットする列を持つテーブルを作成 table = wandb.Table(data=data, columns=["step", "height"]) # テーブルの列からチャートのフィールドへのマッピング fields = {"x": "step", "value": "height"} -# 新しいカスタムチャートプリセットを埋めるためにテーブルを使用 -# 保存した自身のチャートプリセットを使用するには、vega_spec_nameを変更します +# テーブルを使用して新しいカスタムチャートプリセットを構築 +# 自分で保存したチャートプリセットを使用するには、vega_spec_name を変更します my_custom_chart = wandb.plot_table( vega_spec_name="carey/new_chart", data_table=table, @@ -187,63 +211,68 @@ my_custom_chart = wandb.plot_table( ) ``` + + - + Custom chart presets -## データをログする +## データのログ記録 + +スクリプトから以下のデータ型をログに記録し、カスタムチャートで使用できます: -スクリプトから次のデータタイプをログし、カスタムチャートで使用できます。 +* **Config**: 実験の初期設定(独立変数)。これには、トレーニングの開始時に `wandb.Run.config` のキーとしてログに記録した名前付きフィールドが含まれます。例: `wandb.Run.config.learning_rate = 0.0001` +* **Summary**: トレーニング中にログに記録された単一の値(結果または従属変数)。例: `wandb.Run.log({"val_acc" : 0.8})`。トレーニング中に `wandb.Run.log()` を介してこのキーに複数回書き込んだ場合、サマリーはそのキーの最終値に設定されます。 +* **History**: ログに記録されたスカラーの完全な時系列データは、`history` フィールドを介してクエリで利用可能です。 +* **summaryTable**: 複数の値のリストをログに記録する必要がある場合は、`wandb.Table()` を使用してそのデータを保存し、カスタムパネルでクエリします。 +* **historyTable**: 履歴データを確認する必要がある場合は、カスタムチャートパネルで `historyTable` をクエリします。`wandb.Table()` を呼び出すかカスタムチャートをログに記録するたびに、そのステップの履歴に新しいテーブルが作成されます。 -* **Config**: 実験の初期設定(独立変数)。これは実験の開始時に `wandb.config` にキーとしてログされた名前付きフィールドを含みます。例えば: `wandb.config.learning_rate = 0.0001` -* **Summary**: トレーニング中にログされた単一の値(結果や従属変数)。例えば、`wandb.log({"val_acc" : 0.8})`。トレーニング中に `wandb.log()` を使用してキーに複数回書き込んだ場合、サマリーはそのキーの最終的な値に設定されます。 -* **History**: ログされたスカラーの時系列全体は、`history` フィールドを通じてクエリに利用可能です。 -* **summaryTable**: 複数の値のリストをログする必要がある場合、`wandb.Table()` を使用してそのデータを保存し、それをカスタムパネルでクエリします。 -* **historyTable**: 履歴データを確認したい場合、カスタムチャートパネルで `historyTable` をクエリします。 `wandb.Table()` の呼び出しごとまたはカスタムチャートのログごとに、そのステップにおける履歴に新しいテーブルが作成されます。 +### カスタムテーブルのログ記録方法 + +`wandb.Table()` を使用して、データを2次元配列としてログに記録します。通常、このテーブルの各行は1つのデータポイントを表し、各列はプロットしたい各データポイントの関連フィールド/次元を表します。カスタムパネルを設定すると、`wandb.Run.log()` に渡された名前付きキー(下の例では `custom_data_table`)を介してテーブル全体にアクセスでき、列名(`x`, `y`, `z`)を介して個々のフィールドにアクセスできます。実験中の複数のタイムステップでテーブルをログに記録できます。各テーブルの最大サイズは10,000行です。[Google Colab の例を試す](https://tiny.cc/custom-charts)。 -### カスタムテーブルをログする方法 -`wandb.Table()` を使ってデータを2次元配列としてログします。一般的にこのテーブルの各行は一つのデータポイントを表し、各列はプロットしたい各データポイントの関連フィールド/次元を示しています。カスタムパネルを設定する際、 `wandb.log()` に渡された名前付きキー(以下の `custom_data_table`)を通じてテーブル全体にアクセスでき、個別のフィールドには列の名前(`x`, `y`, `z`)を通じてアクセスできます。実験のさまざまなタイムステップでテーブルをログすることができます。各テーブルの最大サイズは10,000行です。[例のGoogle Colabを試す](https://tiny.cc/custom-charts)。 ```python -# データのカスタムテーブルをログする -my_custom_data = [[x1, y1, z1], [x2, y2, z2]] -wandb.log( - {"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])} -) +with wandb.init() as run: + # データのカスタムテーブルをログに記録 + my_custom_data = [[x1, y1, z1], [x2, y2, z2]] + run.log( + {"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])} + ) ``` -## チャートをカスタマイズする +## チャートのカスタマイズ -新しいカスタムチャートを追加して開始し、次にクエリを編集して表示可能な Runs からデータを選択します。クエリは[GraphQL](https://graphql.org)を使用して、実行での設定、サマリー、履歴フィールドからデータを取得します。 +まず新しいカスタムチャートを追加し、クエリを編集して表示されている Runs からデータを選択します。クエリは [GraphQL](https://graphql.org) を使用して、Runs の config、summary、history フィールドからデータを取得します。 - Add a new custom chart, then edit the query + Custom chart creation ### カスタム可視化 -右上の**Chart**を選択してデフォルトプリセットから始めましょう。次に、**Chart fields**を選択してクエリから引き出したデータをチャートの対応するフィールドにマッピングします。 +右上隅の **Chart** を選択して、デフォルトのプリセットから開始します。次に、**Chart fields** を選択して、クエリから取得したデータをチャートの対応するフィールドにマッピングします。 -次の画像は、メトリックをどのように選択し、それを下のバーチャートフィールドにマッピングするかの一例を示しています。 +次の画像は、メトリクスを選択し、それを下の棒グラフのフィールドにマッピングする例を示しています。 - Creating a custom bar chart showing accuracy across runs in a project + Creating a custom bar chart -### Vegaを編集する方法 +### Vega の編集方法 -パネルの上部にある**Edit**をクリックして[Vega](https://vega.github.io/vega/)編集モードに入ります。ここでは、[Vega仕様](https://vega.github.io/vega/docs/specification/)を定義して、UIでインタラクティブなチャートを作成することができます。チャートの任意の面を変更できます。例えば、タイトルを変更したり、異なるカラー スキームを選択したり、曲線を接続された線ではなく一連の点として表示したりできます。また、Vega変換を使用して値の配列をヒストグラムにビン分けするなど、データ自体にも変更を加えることができます。パネルプレビューはインタラクティブに更新されるため、Vega仕様やクエリを編集している間に変更の効果を確認できます。[Vegaのドキュメントとチュートリアルを参照してください](https://vega.github.io/vega/)。 +パネル上部の **Edit** をクリックして、[Vega](https://vega.github.io/vega/) 編集モードに入ります。ここでは、UI でインタラクティブなチャートを作成する [Vega 仕様](https://vega.github.io/vega/docs/specification/) を定義できます。チャートのあらゆる側面を変更できます。例えば、タイトルを変更したり、別のカラースキームを選択したり、曲線を連結された線ではなく一連の点として表示したりできます。また、Vega トランスフォームを使用して値の配列をヒストグラムにビン化するなど、データ自体に変更を加えることもできます。パネルのプレビューはインタラクティブに更新されるため、Vega 仕様やクエリを編集しながら変更の影響を確認できます。[Vega のドキュメントとチュートリアル](https://vega.github.io/vega/) を参照してください。 **フィールド参照** -W&Bからチャートにデータを引き込むには、Vega仕様のどこにでも`"${field:}"` 形式のテンプレート文字列を追加します。これにより**Chart Fields**エリアにドロップダウンが作成され、ユーザーがクエリ結果の列を選択してVegaにマップできます。 +W&B からチャートにデータを取り込むには、Vega 仕様の任意の場所に `"${field:}"` 形式のテンプレート文字列を追加します。これにより、右側の **Chart Fields** エリアにドロップダウンが作成され、ユーザーは Vega にマッピングするクエリ結果の列を選択できるようになります。 -フィールドのデフォルト値を設定するには、この構文を使用します:`"${field::}"` +フィールドのデフォルト値を設定するには、この構文を使用します: `"${field::}"` ### チャートプリセットの保存 -モーダルの下部にあるボタンで、特定の可視化パネルに変更を適用します。または、プロジェクト内の他の場所で使用するためにVega仕様を保存できます。使い回しができるチャート定義を保存するには、Vegaエディタの上部にある**Save as**をクリックしてプリセットに名前を付けます。 +モーダル下部のボタンを使用して、特定の可視化パネルに変更を適用します。あるいは、Vega 仕様を保存してプロジェクトの他の場所で使用することもできます。再利用可能なチャート定義を保存するには、Vega エディタの上部にある **Save as** をクリックし、プリセットに名前を付けます。 ## 記事とガイド @@ -252,10 +281,11 @@ W&Bからチャートにデータを引き込むには、Vega仕様のどこに 3. [Visualizing The Effect of Attention on Gradient Flow](https://wandb.ai/kylegoyette/gradientsandtranslation/reports/Visualizing-The-Effect-of-Attention-on-Gradient-Flow-Using-Custom-Charts--VmlldzoyNjg1NDg) 4. [Logging arbitrary curves](https://wandb.ai/stacey/presets/reports/Logging-Arbitrary-Curves--VmlldzoyNzQyMzA) -## 共通のユースケース -* 誤差線のあるバープロットをカスタマイズする -* モデル検証メトリクスの表示(PR曲線のようにカスタムx-y座標が必要なもの) +## 一般的なユースケース + +* 誤差範囲付きの棒グラフのカスタマイズ +* カスタムの x-y 座標を必要とするモデル検証メトリクスの表示(PR曲線など) * 2つの異なるモデル/実験からのデータ分布をヒストグラムとして重ね合わせる -* トレーニング中のスナップショットで複数のポイントにわたるメトリックの変化を示す -* W&Bにまだないユニークな可視化を作成する(そして、できればそれを世界と共有する) \ No newline at end of file +* トレーニング中の複数のポイントでのスナップショットを介したメトリクスの変化の表示 +* W&B でまだ利用可能でない独自の可視化の作成(そして、それを世界と共有することを願っています) \ No newline at end of file diff --git a/ja/models/app/features/custom-charts/walkthrough.mdx b/ja/models/app/features/custom-charts/walkthrough.mdx index b205e355fc..0ad3f5ed76 100644 --- a/ja/models/app/features/custom-charts/walkthrough.mdx +++ b/ja/models/app/features/custom-charts/walkthrough.mdx @@ -1,94 +1,100 @@ --- -title: 'チュートリアル: カスタムチャートの使用' -description: W&B UI でのカスタムチャート機能の使用に関するチュートリアル +title: チュートリアル:カスタムチャートの使用方法 +description: W&B UI におけるカスタムチャート機能の使用方法に関するチュートリアル --- カスタムチャートを使用して、パネルに読み込むデータとその可視化を制御します。 -## 1. データを W&B にログする -まず、スクリプトにデータをログします。ハイパーパラメーターのようなトレーニングの開始時に設定される単一のポイントには [wandb.config](/ja/models/track/config/) を使用します。時間の経過に伴う複数のポイントには [wandb.log()](/ja/models/track/log/) を使用し、`wandb.Table()` でカスタムの2D配列をログします。ログされたキーごとに最大10,000データポイントのログを推奨します。 +## 1. W&B へのデータのログ記録 + +まず、スクリプトでデータをログに記録します。ハイパーパラメーターのように、トレーニングの開始時に設定される単一のポイントには [wandb.Run.config](/models/track/config/) を使用してください。時系列に沿った複数のポイントには [wandb.Run.log()](/models/track/log/) を使用し、カスタムの 2D 配列は `wandb.Table()` でログを記録します。ログを記録する キー (key) ごとに、最大 10,000 データポイントまでのログ記録を推奨しています。 ```python -# データのカスタムテーブルをログする -my_custom_data = [[x1, y1, z1], [x2, y2, z2]] -wandb.log( - {"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])} -) +with wandb.init() as run: + + # データのカスタムテーブルをログに記録する + my_custom_data = [[x1, y1, z1], [x2, y2, z2]] + run.log( + {"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])} + ) ``` -データテーブルをログするための[短い例のノートブック](https://bit.ly/custom-charts-colab) を試してみてください。次のステップでカスタムチャートを設定します。生成されたチャートが [ライブレポート](https://app.wandb.ai/demo-team/custom-charts/reports/Custom-Charts--VmlldzoyMTk5MDc) でどのように見えるか確認できます。 +[クイックサンプルのノートブックを試して](https://bit.ly/custom-charts-colab) データテーブルをログに記録してみましょう。次のステップでカスタムチャートを設定します。結果のチャートがどのように見えるかは、こちらの [ライブレポート](https://app.wandb.ai/demo-team/custom-charts/reports/Custom-Charts--VmlldzoyMTk5MDc) で確認できます。 + -## 2. クエリを作成する +## 2. クエリの作成 -データを視覚化するためにログしたら、プロジェクトページに移動し、新しいパネルを追加するために **`+`** ボタンをクリックし、**Custom Chart** を選びます。[このワークスペース](https://app.wandb.ai/demo-team/custom-charts) で案内に従うことができます。 +可視化するデータのログを記録したら、Projects ページに移動し、**`+`** ボタンをクリックして新しい パネル を追加し、**Custom Chart** を選択します。[カスタムチャート デモ Workspace](https://app.wandb.ai/demo-team/custom-charts) で手順を確認しながら進めることができます。 - 設定する準備が整った新しいカスタムチャート + Blank custom chart -### クエリを追加する +### クエリの追加 -1. `summary` をクリックして `historyTable` を選択し、run 履歴からデータを引き出す新しいクエリを設定します。 -2. `wandb.Table()` をログしたキーを入力します。上記のコードスニペットでは `my_custom_table` でした。[例のノートブック](https://bit.ly/custom-charts-colab) では、キーは `pr_curve` と `roc_curve` です。 +1. `summary` をクリックして `historyTable` を選択し、Run の履歴からデータを取得する新しいクエリを設定します。 +2. `wandb.Table()` をログに記録した際の キー (key) を入力します。上記のコードスニペットでは `my_custom_table` でした。[サンプルノートブック](https://bit.ly/custom-charts-colab) では、キーは `pr_curve` と `roc_curve` です。 -### Vega フィールドを設定する +### Vega フィールドの設定 -これらの列がクエリに読み込まれたので、Vega フィールドのドロップダウンメニューで選択オプションとして利用可能です: +クエリがこれらの列を読み込むようになると、Vega フィールドのドロップダウンメニューから選択可能なオプションとして表示されます。 - Vega フィールドを設定するためにクエリ結果から列を引き出す + Pulling in columns from the query results to set Vega fields -* **x-axis:** runSets_historyTable_r (recall) -* **y-axis:** runSets_historyTable_p (precision) -* **color:** runSets_historyTable_c (class label) +* **x-axis:** runSets_historyTable_r (再現率 / recall) +* **y-axis:** runSets_historyTable_p (適合率 / precision) +* **color:** runSets_historyTable_c (クラスラベル) -## 3. チャートをカスタマイズする -見た目はかなり良いですが、散布図から折れ線グラフに切り替えたいと思います。組み込みチャートの Vega スペックを変更するために **Edit** をクリックします。[このワークスペース](https://app.wandb.ai/demo-team/custom-charts) で案内に従うことができます。 +## 3. チャートのカスタマイズ + +これでかなり良くなりましたが、散布図から折れ線グラフに切り替えたいと思います。**Edit** をクリックして、この組み込みチャートの Vega spec を変更します。[カスタムチャート デモ Workspace](https://app.wandb.ai/demo-team/custom-charts) で一緒に進めてみましょう。 - + Custom chart selection -Vega スペックを更新して可視化をカスタマイズしました: +可視化をカスタマイズするために Vega spec を更新しました: -* プロット、凡例、x-axis、および y-axis のタイトルを追加 (各フィールドに「title」を設定) -* 「mark」の 値を「point」から「line」に変更 -* 使用されていない「size」フィールドを削除 +* プロット、凡例、x 軸、y 軸のタイトルを追加(各フィールドに "title" を設定) +* “mark” の値を “point” から “line” に変更 +* 未使用の “size” フィールドを削除 - + PR curve Vega spec -これを別の場所で使用できるプリセットとして保存するには、ページ上部の **Save as** をクリックします。結果は次の通り、ROC 曲線と共に次のようになります: +これをプリセットとして保存し、この プロジェクト の他の場所で使用できるようにするには、ページ上部の **Save as** をクリックします。結果は、ROC 曲線とともに以下のようになります。 - + PR curve chart -## ボーナス: コンポジットヒストグラム -ヒストグラムは、数値の分布を可視化し、大きなデータセットを理解するのに役立ちます。コンポジットヒストグラムは、同じビンにまたがる複数の分布を示し、異なるモデルまたはモデル内の異なるクラス間で2つ以上のメトリクスを比較することができます。ドライブシーンのオブジェクトを検出するセマンティックセグメンテーションモデルの場合、精度最適化と Intersection over union (IOU) の効果を比較したり、異なるモデルが車(データの大きく一般的な領域)と交通標識(より小さく一般的でない領域)をどれだけよく検出するかを知りたいかもしれません。[デモ Colab](https://bit.ly/custom-charts-colab) では、生命体の10クラスのうち2つのクラスの信頼スコアを比較できます。 +## ボーナス: 複合ヒストグラム (Composite Histograms) + +ヒストグラムは、数値の分布を可視化して、より大規模な データセット を理解するのに役立ちます。複合ヒストグラムは、同じビンを介して複数の分布を表示し、異なる モデル 間やモデル内の異なるクラス間で 2 つ以上の メトリクス を比較することを可能にします。走行シーンの物体を検出する セマンティックセグメンテーション モデルの場合、精度 (accuracy) の最適化と Intersection over union (IoU) の最適化の効果を比較したり、モデルが車(データ内で大きく一般的な領域)と交通標識(はるかに小さく、あまり一般的でない領域)をどの程度うまく検出できるかを知りたい場合があります。[デモ Colab](https://bit.ly/custom-charts-colab) では、10 種類の生物クラスのうち 2 つの信頼度スコアを比較できます。 - + Composite histogram -カスタム合成ヒストグラムパネルのバージョンを作成するには: +独自のカスタム複合ヒストグラムパネルを作成するには: -1. ワークスペース または レポート で新しい Custom Chart パネルを作成します(「Custom Chart」可視化を追加することによって)。右上の「Edit」ボタンを押して、組み込みパネルタイプから始めて Vega スペックを変更します。 -2. 組み込みの Vega スペックを私の [Vega におけるコンポジットヒストグラムの MVP コード](https://gist.github.com/staceysv/9bed36a2c0c2a427365991403611ce21) に置き換えます。メインタイトル、軸タイトル、入力ドメイン、および Vega syntax](https://vega.github.io/) を使用して、他の詳細を直接変更できます(色を変更したり、3番目のヒストグラムを追加したりできます :) -3. 正しいデータを wandb ログから読み込むために右側のクエリを修正します。 `summaryTable` フィールドを追加し、対応する 'tableKey' を `class_scores` に設定して、run でログした `wandb.Table` を取得します。これにより、 `wandb.Table` のクラススコアとしてログされた列を使用して、ドロップダウン メニューから2つのヒストグラムビンセット (`red_bins` と `blue_bins`) を埋めることができます。私の例では、`赤ビン` の動物クラスの予測スコアと`青ビン` の植物の予測スコアを選びました。 -4. プレビュー表示に表示されるプロットに満足するまで、Vega スペックとクエリを変更し続けることができます。完了したら、上部で **Save as** をクリックしてカスタムプロットに名前を付けて再利用できるようにします。 次に **Apply from panel library** をクリックしてプロットを終了します。 +1. Workspace または Reports 内で新しい Custom Chart パネルを作成します(「Custom Chart」可視化を追加)。右上の「Edit」ボタンを押して、任意の組み込みパネルタイプから Vega spec を変更します。 +2. その組み込み Vega spec を、こちらの [Vega での複合ヒストグラム用 MVP コード](https://gist.github.com/staceysv/9bed36a2c0c2a427365991403611ce21) に置き換えます。メインタイトル、軸タイトル、入力ドメイン、その他の詳細は、[Vega の構文を使用して](https://vega.github.io/) この Vega spec 内で直接変更できます(色を変えたり、3 つ目のヒストグラムを追加することも可能です)。 +3. 右側のクエリを修正して、W&B のログから正しいデータを読み込むようにします。`summaryTable` フィールドを追加し、対応する `tableKey` を `class_scores` に設定して、Run によってログに記録された `wandb.Table` を取得します。これにより、ドロップダウンメニューを使用して、`class_scores` としてログに記録された `wandb.Table` の列から、2 つのヒストグラムのビンセット(`red_bins` と `blue_bins`)にデータを入力できるようになります。私の例では、赤のビンに `animal` クラスの予測スコアを、青のビンに `plant` クラスの予測スコアを選択しました。 +4. プレビューに表示されるプロットに満足するまで、Vega spec とクエリの変更を続けることができます。完了したら、上部の **Save as** をクリックしてカスタムプロットに名前を付け、再利用できるようにします。その後、**Apply from panel library** をクリックしてプロットを完成させます。 -私の非常に短い実験の結果は次のようになりました:1,000エポックで1,000エグゼンプルだけでトレーニングすると、モデルはほとんどの画像が植物でないことに非常に自信を持ち、どの画像が動物かについては非常に不確かです。 +非常に短い 実験 から得られた結果は以下の通りです。わずか 1,000 個のサンプルで 1 エポック だけトレーニングした結果、ほとんどの画像が植物ではないと確信しており、どの画像が動物であるかについては非常に不確実なモデルが生成されました。 - + Chart configuration - + Chart result \ No newline at end of file diff --git a/ja/models/app/features/panels.mdx b/ja/models/app/features/panels.mdx index fa3440f07b..fafd3fedb5 100644 --- a/ja/models/app/features/panels.mdx +++ b/ja/models/app/features/panels.mdx @@ -1,216 +1,224 @@ --- title: パネル +description: Workspace パネルを使用して、ログ された データを可視化し、カスタマイズする +sidebartitle: Overview --- -ワークスペースパネルの可視化機能を使用して [ログされたデータ](/ja/models/ref/python/log) をキーごとに探り、ハイパーパラメーターと出力メトリクスの関係を可視化することなどができます。 + thought +Workspace パネルの可視化機能を使用して、[ログ記録されたデータ](/models/ref/python/experiments/run.md/#method-runlog) をキーごとに探索したり、ハイパーパラメーターと出力メトリクスの関係を可視化したりすることができます。 -## ワークスペースモード +## Workspace モード -W&B Projects は2つの異なるワークスペースモードをサポートしています。ワークスペース名の横のアイコンがそのモードを示しています。 +W&B の Projects は、2つの異なる Workspace モードをサポートしています。Workspace 名の横にあるアイコンがそのモードを示しています。 -| アイコン | ワークスペースモード | +| アイコン | Workspace モード | | --- | --- | -| automated workspace icon | **Automated workspaces** はプロジェクト内でログされたすべてのキーに対して自動的にパネルを生成します。自動ワークスペースを選ぶ理由:
  • プロジェクトのすべての利用可能なデータを可視化してすぐに始めたい場合。
  • 少数のキーをログする小規模プロジェクトの場合。
  • より広範な分析のため。
自動ワークスペースからパネルを削除した場合、[Quick add](#quick-add) を使って再作成できます。 | -| manual workspace icon | **Manual workspaces** は最初は空白で、ユーザーによって意図的に追加されたパネルのみが表示されます。手動ワークスペースを選ぶ理由:
  • プロジェクトのログされたキーの一部だけを主に気にかけている場合。
  • より焦点を絞った分析が必要な場合。
  • ワークスペースのパフォーマンスを向上させるため、あまり役に立たないパネルを読み込まないようにする場合。
[Quick add](#quick-add) を使用して、手動ワークスペースとそのセクションを有用な可視化で迅速に埋めることができます。 | +| automated workspace icon | **Automated workspaces** は、プロジェクトでログ記録されたすべてのキーに対してパネルを自動的に生成します。次のような場合に自動 Workspace を選択してください:
  • プロジェクトで利用可能なすべてのデータを可視化して、すぐに使い始めたい場合。
  • ログ記録するキーが少ない小規模なプロジェクトの場合。
  • より広範な分析を行いたい場合。
自動 Workspace からパネルを削除した場合は、[Quick add](#quick-add) を使用して再作成できます。 | +| manual workspace icon | **Manual workspaces** は白紙の状態から始まり、ユーザーが意図的に追加したパネルのみを表示します。次のような場合に手動 Workspace を選択してください:
  • プロジェクトでログ記録されたキーのほんの一部に主に関心がある場合。
  • より焦点を絞った分析を行いたい場合。
  • あまり役に立たないパネルの読み込みを避け、Workspace のパフォーマンスを向上させたい場合。
[Quick add](#quick-add) を使用すると、便利な可視化パネルを Workspace や各セクションに素早く配置できます。 | - -ワークスペースがパネルを生成する方法を変更するには、[ワークスペースをリセットする](#reset-a-workspace)を行います。 +Workspace がパネルを生成する方法を変更するには、[Workspace をリセット](#reset-a-workspace) してください。 -**ワークスペースの変更を元に戻す** +**Workspace への変更を元に戻す** -ワークスペースの変更を元に戻すには、Undo ボタン(左向きの矢印)をクリックするか、**CMD + Z** (macOS) または **CTRL + Z** (Windows / Linux) を入力します。 +Workspace への変更を元に戻すには、元に戻すボタン(左向きの矢印)をクリックするか、**CMD + Z** (macOS) または **CTRL + Z** (Windows / Linux) を入力します。 -## ワークスペースをリセットする方法 +## Workspace をリセットする -ワークスペースのリセット手順: +Workspace をリセットするには: -1. ワークスペースの上部でアクションメニュー `...` をクリックします。 +1. Workspace の上部にあるアクションメニュー `...` をクリックします。 1. **Reset workspace** をクリックします。 -## ワークスペースレイアウトの設定 +## Workspace のレイアウトを設定する -ワークスペースレイアウトを設定するには、ワークスペースの上部近くにある **Settings** をクリックし、次に **Workspace layout** をクリックします。 +Workspace のレイアウトを設定するには、Workspace 上部付近の **Settings** をクリックし、次に **Workspace layout** をクリックします。 -- **検索時に空のセクションを隠す**(デフォルトではオン) -- **パネルをアルファベット順に並べ替え**(デフォルトではオフ) -- **セクションの編成**(デフォルトでは最初のプレフィックスでグループ化)。この設定を変更するには: - 1. 鍵アイコンをクリックします。 - 1. セクション内のパネルをどのようにグループ化するか選択します。 +- **Hide empty sections during search** (デフォルトでオン): 検索中に空のセクションを非表示にします。 +- **Sort panels alphabetically** (デフォルトでオフ): パネルをアルファベット順に並べ替えます。 +- **Section organization** (デフォルトで最初のプレフィックスによってグループ化): この設定を変更するには: + 1. 南京錠のアイコンをクリックします。 + 2. セクション内でのパネルのグループ化方法を選択します。 -ワークスペース内のラインプロットのデフォルトを設定するには、[Line plots](/ja/models/app/features/panels/line-plot/#all-line-plots-in-a-workspace) を参照してください。 +Workspace のラインプロットのデフォルト設定については、[Line plots](/models/app/features/panels/line-plot/) を参照してください。 ### セクションのレイアウトを設定する -セクションのレイアウトを設定するには、その歯車アイコンをクリックし、次に **Display preferences** をクリックします。 -- **ツールチップ内での色付き run 名前のオン/オフ**(デフォルトではオン) -- **仲間のチャートツールチップでハイライトされた run のみを表示**(デフォルトではオフ) -- **ツールチップに表示される run の数**(単一の run、すべての run、または **Default**) -- **プライマリチャートツールチップでの run 名前の完全な表示**(デフォルトではオフ) +セクションのレイアウトを設定するには、そのセクションの歯車アイコンをクリックし、次に **Display preferences** をクリックします。 +- **ツールチップ内での色付きの run 名の表示/非表示** (デフォルトでオン) +- **コンパニオンチャートのツールチップにハイライトされた run のみを表示** (デフォルトでオフ) +- **ツールチップに表示される run の数** (単一の run、すべての run、または **Default**) +- **プライマリチャートのツールチップにフルネームの run を表示** (デフォルトでオフ) -## パネルを全画面表示する +## パネルをフルスクリーンモードで表示する -全画面表示モードでは、run 選択が表示され、パネルは通常の1000バケツではなく、10,000バケツでの完全な精度のサンプリングモードプロットを使用します。 +フルスクリーンモードでは、run セレクターが表示され、パネルは通常の 1,000 バケットではなく、10,000 バケットを使用した高精度サンプリングモードのプロットを使用します。 -全画面表示モードでパネルを表示するには: +パネルをフルスクリーンモードで表示するには: -1. パネルの上にカーソルを合わせます。 -1. パネルのアクションメニュー `...` をクリックし、次に全画面ボタンをクリックします。これはビューファインダーまたは四角の四隅を示すアウトラインのように見えます。 +1. パネルの上にカーソルを置きます。 +1. パネルのアクションメニュー `...` をクリックし、ファインダーまたは正方形の四隅を示す輪郭のような形のフルスクリーンボタンをクリックします。 - View panel full-screen + Full-screen panel -1. 全画面表示モードでパネルを表示している間に [パネルを共有する](#share-a-panel) と、生成されたリンクは自動的に全画面表示モードで開きます。 +1. フルスクリーンモードで表示中に [パネルを共有](#share-a-panel) すると、生成されたリンクは自動的にフルスクリーンモードで開きます。 -全画面表示モードからパネルのワークスペースに戻るには、ページ上部の左向き矢印をクリックします。 +フルスクリーンモードからパネルの Workspace に戻るには、ページ上部の左向き矢印をクリックします。フルスクリーンモードを終了せずにセクション内のパネル間を移動するには、パネルの下にある **Previous** および **Next** ボタン、または左右の矢印キーを使用します。 ## パネルを追加する -このセクションでは、ワークスペースにパネルを追加するさまざまな方法を示します。 +このセクションでは、Workspace にパネルを追加するさまざまな方法を説明します。 -### パネルを手動で追加する +### 手動でパネルを追加する -パネルをワークスペースに一度に1つずつ、グローバルまたはセクションレベルで追加できます。 +パネルを一つずつ、Workspace 全体またはセクション単位で追加します。 -1. グローバルにパネルを追加するには、パネル検索フィールドの近くにあるコントロールバーで **Add panels** をクリックします。 -1. セクションに直接パネルを追加するには、セクションのアクション `...` メニューをクリックし、次に **+ Add panels** をクリックします。 -1. 追加するパネルの種類を選択します。例えばチャート。パネルの設定詳細が表示され、デフォルトが選択されます。 -1. 必要に応じて、パネルとその表示設定をカスタマイズします。設定オプションは選択したパネルのタイプに依存します。各パネルタイプのオプションについてもっと知るには、以下の関連セクションを参照してください。[Line plots](/ja/models/app/features/panels/line-plot/#all-line-plots-in-a-workspace) や [Bar plots](/ja/models/app/features/panels/bar-plot/) など。 -1. **Apply** をクリックします。 +1. Workspace 全体に追加するには、パネル検索フィールド付近のコントロールバーにある **Add panels** をクリックします。 +2. セクションに直接追加するには、セクションのアクションメニュー `...` をクリックし、**+ Add panels** をクリックします。 +3. 追加するパネルのタイプ(チャートなど)を選択します。パネルの設定詳細が表示され、デフォルト値が選択されています。 +4. 必要に応じて、パネルとその表示設定をカスタマイズします。設定オプションは選択したパネルのタイプによって異なります。各パネルタイプのオプションの詳細については、[Line plots](/models/app/features/panels/line-plot/) や [Bar plots](/models/app/features/panels/bar-plot/) などの関連セクションを参照してください。 +5. **Apply** をクリックします。 Demo of adding a panel -### クイック追加でパネルを追加する +### パネルを Quick add する -**Quick add** を使用して、選択した各キーに対して自動的にパネルを追加できます。これをグローバルまたはセクションレベルで行うことができます。 +**Quick add** を使用すると、選択した各キーに対して自動的にパネルを Workspace 全体またはセクション単位で追加できます。 -削除されたパネルのない自動ワークスペースでは、**Quick add** オプションは表示されません。これは、ワークスペースがすでにログされたすべてのキー向けにパネルを含んでいるためです。削除したパネルを再追加するために**Quick add** を使用できます。 +削除されたパネルがない自動 Workspace では、Workspace にはすでにログ記録されたすべてのキーのパネルが含まれているため、**Quick add** オプションは表示されません。削除したパネルを再度追加するために **Quick add** を使用できます。 -1. グローバルに **Quick add** を使用してパネルを追加するには、パネル検索フィールド近くのコントロールバーで **Add panels** をクリックし、それから **Quick add** をクリックします。 -1. セクションに直接 **Quick add** を使用してパネルを追加するには、セクションのアクション `...` メニューをクリック、**Add panels** をクリックし、それから **Quick add** をクリックします。 -1. パネルのリストが表示されます。チェックマークのある各パネルはすでにワークスペースに含まれています。 - - 利用可能なすべてのパネルを追加するには、リストの上の **Add `` panels** ボタンをクリックします。**Quick Add** リストが閉じられ、新しいパネルがワークスペースに表示されます。 - - リストから個別にパネルを追加するには、そのパネルの行にカーソルを合わせ、それから **Add** をクリックします。追加したい各パネルについてこのステップを繰り返し、**Quick Add** リストの右上にある **X** をクリックして閉じます。新しいパネルがワークスペースに表示されます。 +1. **Quick add** を使用して Workspace 全体にパネルを追加するには、パネル検索フィールド付近のコントロールバーにある **Add panels** をクリックし、次に **Quick add** をクリックします。 +1. **Quick add** を使用してセクションに直接パネルを追加するには、セクションのアクションメニュー `...` をクリックし、**Add panels** をクリックしてから **Quick add** をクリックします。 +1. パネルのリストが表示されます。チェックマークが付いているパネルは、すでに Workspace に含まれています。 + - 利用可能なすべてのパネルを追加するには、リストの上部にある **Add `` panels** ボタンをクリックします。**Quick Add** リストが閉じ、新しいパネルが Workspace に表示されます。 + - リストから個別のパネルを追加するには、パネルの行にカーソルを合わせ、**Add** をクリックします。追加したい各パネルに対してこのステップを繰り返し、右上の **X** をクリックして **Quick Add** リストを閉じます。新しいパネルが Workspace に表示されます。 1. 必要に応じて、パネルの設定をカスタマイズします。 ## パネルを共有する -このセクションでは、リンクを使ってパネルを共有する方法を示します。 +このセクションでは、リンクを使用してパネルを共有する方法を説明します。 -リンクを使ってパネルを共有するには、次のどちらかを行います: +リンクを使用してパネルを共有するには、次のいずれかを行います: -- パネルを全画面表示モードで表示している間、ブラウザからURLをコピーします。 +- パネルをフルスクリーンモードで表示しているときに、ブラウザから URL をコピーします。 - アクションメニュー `...` をクリックし、**Copy panel URL** を選択します。 -ユーザーまたはチームにリンクを共有します。リンクにアクセスすると、そのパネルは [全画面モード](#view-a-panel-in-full-screen-mode) で開きます。 +そのリンクを User または Team と共有してください。リンクにアクセスすると、パネルが [フルスクリーンモード](#view-a-panel-in-full-screen-mode) で開きます。 -全画面表示モードからパネルのワークスペースに戻るには、ページ上部の左向き矢印をクリックします。 +フルスクリーンモードからパネルの Workspace に戻るには、ページ上部の左向き矢印をクリックします。 -### プログラムでパネルの全画面リンクを構成する -特定の状況、たとえば [オートメーションを作成する](/ja/models/core/automations/)場合などに、パネルの全画面URLを含めると便利です。このセクションでは、パネルの全画面URLの形式を示します。以下の例では、ブラケット内の entity, project, panel, section 名を置き換えてください。 +### パネルのフルスクリーンリンクをプログラムで構成する +[Automations の作成](/models/automations/) など、特定の状況では、パネルのフルスクリーン URL を含めると便利な場合があります。このセクションでは、パネルのフルスクリーン URL の形式を示します。以下の例では、ブラケット内の entity、project、panel、section 名を置き換えてください。 - `https://wandb.ai//?panelDisplayName=&panelSectionName=` +```text +https://wandb.ai//?panelDisplayName=&panelSectionName= +``` -同じセクション内の複数のパネルが同じ名前を持つ場合、このURLはその名前を持つ最初のパネルを開きます。 +同じセクション内に同名のパネルが複数ある場合、この URL はその名前を持つ最初のパネルを開きます。 -### パネルを埋め込んでソーシャルメディアで共有する -ウェブサイトにパネルを埋め込んだり、ソーシャルメディアで共有するには、そのパネルがリンクを持つ誰でも閲覧できる状態でなければなりません。プロジェクトがプライベートであれば、そのプロジェクトのメンバーのみがパネルを閲覧できます。プロジェクトが公開されていれば、リンクを持つ誰でもそのパネルを閲覧できます。 +### ソーシャルメディアでパネルを埋め込む、または共有する +ウェブサイトにパネルを埋め込んだり、ソーシャルメディアで共有したりするには、そのパネルがリンクを知っている全員に表示可能である必要があります。Project がプライベートの場合、Project のメンバーのみがパネルを表示できます。Project が公開されている場合、リンクを知っている全員がパネルを表示できます。 -ソーシャルメディアでパネルを埋め込んで共有するコードを取得する手順: +ソーシャルメディアで共有したり、埋め込みコードを取得したりするには: -1. ワークスペースからパネルの上にカーソルを合わせ、そのアクションメニュー `...` をクリックします。 +1. Workspace からパネルの上にカーソルを置き、アクションメニュー `...` をクリックします。 1. **Share** タブをクリックします。 -1. **招待した人だけにアクセス権** を **リンクを持つ全員が閲覧可能** に変更します。そうしないと次のステップのオプションは使用できません。 -1. **Twitterで共有**, **Redditで共有**, **LinkedInで共有**, または **埋め込みリンクをコピー** を選択します。 +1. **Only those who are invited have access** を **Anyone with the link can view** に変更します。そうしないと、次のステップの選択肢が利用できません。 +1. **Share on Twitter**、**Share on Reddit**、**Share on LinkedIn**、または **Copy embed link** を選択します。 ### パネルレポートをメールで送信する -単一のパネルをスタンドアロンのレポートとしてメールする手順: -1. パネルの上にカーソルを合わせ、パネルのアクションメニュー `...` をクリックします。 +単一のパネルをスタンドアロンの Report としてメールで送信するには: +1. パネルの上にカーソルを置き、パネルのアクションメニュー `...` をクリックします。 1. **Share panel in report** をクリックします。 1. **Invite** タブを選択します。 1. メールアドレスまたはユーザー名を入力します。 -1. 必要に応じて、** can view** を **can edit** に変更します。 -1. **Invite** をクリックします。W&B はユーザーに対し、共有するパネルのみを含むレポートのクリック可能なリンクをメールで送信します。 +1. 必要に応じて、**can view** を **can edit** に変更します。 +1. **Invite** をクリックします。W&B は、共有しているパネルのみを含む Report へのクリック可能なリンクが含まれたメールをユーザーに送信します。 -[パネルを共有する](#share-a-panel)場合とは異なり、受信者はこのレポートからワークスペースにアクセスできません。 +[パネルを共有する](#share-a-panel) 場合とは異なり、受信者はこの Report から Workspace に移動することはできません。 ## パネルを管理する ### パネルを編集する -パネルを編集する手順: +パネルを編集するには: 1. 鉛筆アイコンをクリックします。 1. パネルの設定を変更します。 -1. パネルを別のタイプに変更するには、タイプを選択し、設定を構成します。 +1. パネルを別のタイプに変更するには、タイプを選択してから設定を構成します。 1. **Apply** をクリックします。 ### パネルを移動する -異なるセクションにパネルを移動するには、パネルのドラッグハンドルを使用します。リストから新しいセクションを選択するには: +パネルを別のセクションに移動するには、パネル上のドラッグハンドルを使用できます。リストから新しいセクションを選択するには: 1. 必要に応じて、最後のセクションの後に **Add section** をクリックして新しいセクションを作成します。 -1. パネルのアクション `...` メニューをクリックします。 +1. パネルのアクションメニュー `...` をクリックします。 1. **Move** をクリックし、新しいセクションを選択します。 -また、ドラッグハンドルを使用して、セクション内のパネルを並べ替えることもできます。 +ドラッグハンドルを使用して、セクション内でパネルを並べ替えることもできます。 ### パネルを複製する -パネルを複製する手順: +パネルを複製するには: -1. パネルの上部でアクション `...` メニューをクリックします。 +1. パネルの上部にあるアクションメニュー `...` をクリックします。 1. **Duplicate** をクリックします。 -必要に応じて、複製したパネルを [カスタマイズ](#edit-a-panel) または [移動](#move-a-panel) することができます。 +必要に応じて、複製されたパネルを [カスタマイズ](#edit-a-panel) したり [移動](#move-a-panel) したりできます。 ### パネルを削除する -パネルを削除する手順: +パネルを削除するには: -1. パネルの上にマウスを移動します。 -1. アクション `...` メニューを選択します。 +1. パネルの上にマウスを置きます。 +1. アクションメニュー `...` を選択します。 1. **Delete** をクリックします。 -手動ワークスペースからすべてのパネルを削除するには、そのアクション `...` メニューをクリックし、**Clear all panels** をクリックします。 +手動 Workspace からすべてのパネルを削除するには、そのアクションメニュー `...` をクリックし、**Clear all panels** をクリックします。 -自動または手動ワークスペースからすべてのパネルを削除するには、[ワークスペースをリセット](#reset-a-workspace)します。**Automatic** を選択すると、デフォルトのパネルセットから開始します。**Manual** を選択すると、パネルのない空のワークスペースから開始します。 +自動または手動 Workspace からすべてのパネルを削除するには、[Workspace をリセット](#reset-a-workspace) することもできます。デフォルトのパネルセットから始めるには **Automatic** を選択し、パネルのない空の Workspace から始めるには **Manual** を選択します。 ## セクションを管理する -デフォルトでは、ワークスペース内のセクションはキーのログ階層を反映しています。ただし、手動ワークスペースでは、一度パネルを追加し始めるとセクションが表示されます。 +デフォルトでは、Workspace のセクションはキーのログ記録階層を反映します。ただし、手動 Workspace では、パネルの追加を開始した後にのみセクションが表示されます。 ### セクションを追加する セクションを追加するには、最後のセクションの後に **Add section** をクリックします。 -既存のセクションの前または後に新しいセクションを追加するには、セクションのアクション `...` メニューをクリックし、**New section below** または **New section above** をクリックします。 +既存のセクションの前後に新しいセクションを追加するには、そのセクションのアクションメニュー `...` をクリックし、**New section below** または **New section above** をクリックします。 + + +セクションに "Section" という名前を付けないでください。既知の制限により、セクション名が変更されるまで、そのセクション内のパネルはレンダリングされません。 + ### セクションのパネルを管理する -多くのパネルを持つセクションは、**Standard grid** レイアウトを使用している場合デフォルトでページ分割されます。ページに表示されるパネルの数は、パネルの設定とセクション内のパネルのサイズによります。 - -1. セクションが使用しているレイアウトを確認するには、セクションのアクション `...` メニューをクリックします。セクションのレイアウトを変更するには、**Layout grid** セクションで **Standard grid** または **Custom grid** を選択します。 -1. パネルのサイズを変更するには、パネルの上にカーソルを合わせて、ドラッグハンドルをクリックし、パネルのサイズを調整します。 - - セクションが **Standard grid** を使用している場合、1つのパネルのサイズを変更すると、そのセクション内のすべてのパネルのサイズが変更されます。 - - セクションが **Custom grid** を使用している場合、それぞれのパネルのサイズを個別にカスタマイズできます。 -1. ページに表示するパネルの数をカスタマイズするには: - 1. セクションの上部で **1 to `` of ``** をクリックします。ここで `` は表示中のパネル数、`` はパネルの合計数です。 - 1. 1ページに表示するパネルの数を最大100まで選択します。 -1. 多くのパネルがある場合にすべてのパネルを表示するには、パネルを **Custom grid** レイアウトを使用するように構成します。セクションのアクション `...` メニューをクリックし、**Layout grid** セクションで **Custom grid** を選択します。 -1. セクションからパネルを削除するには: - 1. パネルにカーソルを合わせ、そのアクション `...` メニューをクリックします。 - 1. **Delete** をクリックします。 - -ワークスペースを自動ワークスペースにリセットすると、削除されたすべてのパネルが再び表示されます。 +パネル数が多いセクションは、デフォルトでページ分割されます。1ページあたりのデフォルトのパネル数は、パネルの設定やセクション内のパネルのサイズによって異なります。 + +1. パネルのサイズを変更するには、パネルの上にカーソルを置き、ドラッグハンドルをクリックしてドラッグし、パネルのサイズを調整します。1つのパネルのサイズを変更すると、セクション内のすべてのパネルのサイズが変更されます。 +2. セクションがページ分割されている場合は、1ページに表示するパネルの数をカスタマイズできます: + 1. セクションの上部にある **1 to `` of ``** (`` は表示されているパネル数、`` はパネルの総数)をクリックします。 + 2. 1ページあたりに表示するパネルの数を最大100まで選択します。 +3. セクションからパネルを削除するには: + 1. パネルの上にカーソルを置き、そのアクションメニュー `...` をクリックします。 + 2. **Delete** をクリックします。 + +Workspace を自動 Workspace にリセットすると、削除されたすべてのパネルが再び表示されます。 ### セクション名を変更する -セクション名を変更するには、そのアクション `...` メニューから **Rename section** をクリックします。 +セクション名を変更するには、そのアクションメニュー `...` をクリックし、**Rename section** をクリックします。 + + +セクションに "Section" という名前を付けないでください。既知の制限により、セクション名が変更されるまで、そのセクション内のパネルはレンダリングされません。 + ### セクションを削除する -セクションを削除するには、その `...` メニューをクリックして **Delete section** をクリックします。これにより、セクションとそのパネルも削除されます。 \ No newline at end of file +セクションを削除するには、その `...` メニューをクリックし、**Delete section** をクリックします。これにより、セクションとその中のパネルが削除されます。 \ No newline at end of file diff --git a/ja/models/app/features/panels/bar-plot.mdx b/ja/models/app/features/panels/bar-plot.mdx index 71e92e3071..f82a5e8130 100644 --- a/ja/models/app/features/panels/bar-plot.mdx +++ b/ja/models/app/features/panels/bar-plot.mdx @@ -1,28 +1,28 @@ --- title: 棒グラフ -description: メトリクスを可視化し、軸をカスタマイズし、カテゴリー データをバーとして比較します。 +description: メトリクス の可視化、軸のカスタマイズ、およびカテゴリカルな データの棒グラフによる比較を行います。 --- -棒グラフは、矩形のバーでカテゴリカルデータを表示し、縦または横にプロットできます。全てのログされた値が長さ1の場合、**wandb.log()** を使用するとデフォルトで棒グラフが表示されます。 +バーチャート(棒グラフ)は、カテゴリーデータを垂直または水平の長方形の棒で表現します。ログ記録されたすべての 値 の長さが1である場合、`wandb.Run.log()` を使用するとデフォルトでバーチャートが表示されます。 Plotting Box and horizontal Bar plots in W&B -チャートの設定をカスタマイズして、表示する run の最大数を制限したり、任意の設定で run をグループ化したり、ラベルの名前を変更したりできます。 +チャートの 設定 をカスタマイズすることで、表示する最大 Runs 数を制限したり、任意の config で Runs をグループ化したり、ラベル名を変更したりできます。 - + Customized bar plot -## 棒グラフのカスタマイズ +## バーチャートのカスタマイズ -**Box** または **Violin** プロットを作成して、多くの要約統計量を1つのチャートタイプに組み合わせることもできます。 +**Box**(箱ひげ図)や **Violin**(バイオリン図)プロットを作成して、多くの要約統計量を1つのチャートタイプにまとめることもできます。 -1. run テーブルで run をグループ化します。 -2. ワークスペースで 'Add panel' をクリックします。 -3. 標準の 'Bar Chart' を追加し、プロットする指標を選択します。 -4. 'Grouping' タブの下で 'box plot' や 'Violin' などを選択して、これらのスタイルのいずれかをプロットします。 +1. Runs テーブルを介して Runs をグループ化します。 +2. Workspace で「Add panel」をクリックします。 +3. 標準の「Bar Chart」を追加し、プロットするメトリクスを選択します。 +4. 「Grouping」タブで「box plot」や「Violin」などを選択し、これらのスタイルでプロットします。 Customize Bar Plots diff --git a/ja/models/app/features/panels/code.mdx b/ja/models/app/features/panels/code.mdx index cad242213d..89ced6b3f3 100644 --- a/ja/models/app/features/panels/code.mdx +++ b/ja/models/app/features/panels/code.mdx @@ -1,70 +1,73 @@ --- -title: コードを保存して差分を取る +title: コード の保存と差分表示 --- -デフォルトでは、W&Bは最新のgitコミットハッシュのみを保存します。UIで実験間のコードを動的に比較するためのより多くのコード機能を有効にできます。 +デフォルトでは、W&B は最新の git コミットハッシュのみを保存します。追加のコード機能を有効にすると、UI 上で動的に Experiments 間のコードを比較できるようになります。 -`wandb` バージョン 0.8.28 から、W&Bは `wandb.init()` を呼び出すメインのトレーニングファイルからコードを保存することができます。 +`wandb` バージョン 0.8.28 以降、W&B は `wandb.init()` を呼び出したメインのトレーニングファイルのコードを保存できます。 -## ライブラリコードを保存する +## ライブラリコードの保存 -コード保存を有効にすると、W&Bは `wandb.init()` を呼び出したファイルからコードを保存します。追加のライブラリコードを保存するには、以下の3つのオプションがあります: +コード保存を有効にすると、W&B は `wandb.init()` を呼び出したファイルのコードを保存します。追加のライブラリコードを保存するには、次の 3 つのオプションがあります。 -### `wandb.init` を呼び出した後に `wandb.run.log_code(".")` を呼び出す +### `wandb.init()` の呼び出し後に `wandb.Run.log_code(".")` を呼び出す ```python import wandb -wandb.init() -wandb.run.log_code(".") +# wandb.init() を実行し、run オブジェクトを取得 +with wandb.init() as run: + # カレントディレクトリのコードをログに記録 + run.log_code(".") ``` -### `code_dir` を設定して `wandb.init` に設定オブジェクトを渡す +### `code_dir` を設定した settings オブジェクトを `wandb.init()` に渡す ```python import wandb +# settings 引数に code_dir を指定して初期化 wandb.init(settings=wandb.Settings(code_dir=".")) ``` -これにより、現在のディレクトリーおよびすべてのサブディレクトリー内のPythonソースコードファイルが[アーティファクト](/ja/models/ref/python/artifact)としてキャプチャされます。保存されるソースコードファイルの種類と場所をより詳細に制御するには、[リファレンスドキュメント](/ja/models/ref/python/run#log_code)を参照してください。 +これにより、カレントディレクトリおよびすべてのサブディレクトリ内にあるすべての Python ソースコードファイルが [Artifacts](/models/ref/python/experiments/artifact) としてキャプチャされます。保存するソースコードファイルの種類や場所をより細かく制御するには、[リファレンスドキュメント](/models/ref/python/experiments/run#log_code) を参照してください。 -### UIでコード保存を設定する +### UI でコード保存を設定する -コード保存をプログラム的に設定する以外に、W&Bアカウントの設定でこの機能を切り替えることもできます。これを有効にすると、アカウントに関連付けられているすべてのチームでコード保存が有効になります。 +プログラムでコード保存を設定するだけでなく、W&B アカウントの Settings でこの機能を切り替えることもできます。これにより、アカウントに関連付けられているすべての Teams でコード保存が有効になることに注意してください。 -> デフォルトでは、W&Bはすべてのチームでコード保存を無効にします。 +> デフォルトでは、W&B はすべての Teams に対してコード保存を無効にしています。 -1. W&Bアカウントにログインします。 -2. **設定** > **プライバシー** に移動します。 -3. **プロジェクトとコンテンツのセキュリティ** の下で、**デフォルトのコード保存を無効にする** をオンにします。 +1. W&B アカウントにログインします。 +2. **Settings** > **Privacy** に移動します。 +3. **Project and content security** の下にある **Disable default code saving** をオフに切り替えます。 -## コードコンペアラー +## Code comparer -異なるW&B runで使用されたコードを比較する: +異なる W&B Runs で使用されたコードを比較します: -1. ページの右上隅にある **パネルを追加** ボタンを選択します。 -2. **TEXT AND CODE** ドロップダウンを展開し、**コード** を選択します。 +1. ページ右上の **Add panels** ボタンを選択します。 +2. **TEXT AND CODE** ドロップダウンを展開し、**Code** を選択します。 - + Code comparer panel -## Jupyterセッション履歴 +## Jupyter セッション履歴 -W&BはJupyterノートブックセッションで実行されたコードの履歴を保存します。Jupyter内で**wandb.init()** を呼び出すと、W&Bは現在のセッションで実行されたコードの履歴を含むJupyterノートブックを自動的に保存するフックを追加します。 +W&B は、Jupyter Notebook セッションで実行されたコードの履歴を保存します。Jupyter 内で **wandb.init()** を呼び出すと、W&B はフックを追加して、現在のセッションで実行されたコードの履歴を含む Jupyter Notebook を自動的に保存します。 -1. コードが含まれているプロジェクトワークスペースに移動します。 -2. 左ナビゲーションバーの**Artifacts** タブを選択します。 -3. **コード**アーティファクトを展開します。 -4. **ファイル**タブを選択します。 +1. コードが含まれているプロジェクトの Workspace に移動します。 +2. 左側のナビゲーションバーにある **Artifacts** タブを選択します。 +3. **code** アーティファクトを展開します。 +4. **Files** タブを選択します。 - + Jupyter session history -これは、セッションで実行されたセルと、iPythonの表示メソッドを呼び出して作成された出力を表示します。これにより、指定されたrunのJupyter内でどのコードが実行されたかを正確に確認することができます。可能な場合、W&Bはノートブックの最新バージョンも保存し、コードディレクトリー内で見つけることができます。 +これにより、セッションで実行されたセルと、iPython の display メソッドを呼び出すことによって作成された出力が表示されます。これにより、特定の run において Jupyter 内でどのようなコードが実行されたかを正確に確認できます。可能な場合は、W&B はノートブックの最新バージョンも保存し、それも code ディレクトリーに保存されます。 - + Jupyter session output \ No newline at end of file diff --git a/ja/models/app/features/panels/line-plot.mdx b/ja/models/app/features/panels/line-plot.mdx index 14090cbe98..ccba4857ec 100644 --- a/ja/models/app/features/panels/line-plot.mdx +++ b/ja/models/app/features/panels/line-plot.mdx @@ -1,172 +1,165 @@ --- -title: 折れ線グラフ -description: メトリクスを可視化し、軸をカスタマイズし、プロット上で複数のラインを比較します +title: 折れ線グラフの概要 +description: メトリクス の可視化、軸のカスタマイズ、プロット上での複数ラインの比較 --- -ラインプロットは、**wandb.log()** でメトリクスを時間経過とともにプロットするとデフォルトで表示されます。複数のラインを同じプロットで比較したり、カスタム軸を計算したり、ラベルをリネームしたりするために、チャート設定をカスタマイズできます。 +デフォルトでは、 `wandb.Run.log()` で記録されたメトリクスに対して折れ線グラフ(Line plots)が表示されます。折れ線グラフをカスタマイズして、複数のラインを比較したり、カスタム軸を計算したり、ラベル名を変更したりすることができます。 - + Line plot example -## ラインプロット設定を編集する + + [CoreWeave](https://coreweave.com) インフラストラクチャー上で実行される [Runs](/models/runs) については、 [CoreWeave Mission Control](https://www.coreweave.com/mission-control) が計算インフラを監視します。エラーが発生した場合、W&B はプロジェクトの Workspace 内の Run のプロットにインフラストラクチャー情報を反映します。詳細は [Visualize CoreWeave infrastructure alerts](/models/runs#visualize-coreweave-infrastructure-alerts) を参照してください。 + -このセクションでは、個々のラインプロットパネル、セクション内のすべてのラインプロットパネル、またはワークスペース内のすべてのラインプロットパネルの設定を編集する方法を紹介します。 +## 折れ線グラフの設定を編集する - -カスタムの x 軸を使用したい場合は、同じ `wandb.log()` の呼び出しで y 軸と一緒にログを取るようにしてください。 - +このセクションでは、個別の折れ線グラフパネル、セクション内のすべての折れ線グラフパネル、または Workspace 内のすべての折れ線グラフパネルの設定を編集する方法を説明します。折れ線グラフの設定に関する包括的な詳細は、 [Line plot reference](/models/app/features/panels/line-plot/reference) を参照してください。 -### 個別のラインプロット +### 個別の折れ線グラフ +個別の折れ線グラフの設定は、セクションや Workspace の折れ線グラフ設定よりも優先されます。折れ線グラフをカスタマイズするには: -個々のラインプロットの設定は、セクションまたはワークスペースのラインプロット設定を上書きします。ラインプロットをカスタマイズするには: +1. パネルにマウスを合わせ、ギアアイコンをクリックします。 +1. 表示されるドロワー内で、タブを選択して設定を編集します。 +1. **Apply** をクリックします。 -1. パネルの上にマウスをホバーさせ、ギアアイコンをクリックします。 -2. 表示されるモーダル内で、[設定](#line-plot-settings) を編集するタブを選択します。 -3. **適用** をクリックします。 +折れ線グラフの設定は以下のタブに分かれています: +* **Data**: X軸、Y軸、サンプリング方法、スムージング、外れ値、チャートタイプを設定します。 +* **Grouping**: プロット内で Runs をグループ化および集計するかどうか、およびその方法を設定します。 +* **Chart**: パネルと軸のタイトルを指定し、凡例の表示・非表示と位置を設定します。 +* **Legend**: パネルの凡例の外観と内容をカスタマイズします。 +* **Expressions**: 軸に対してカスタム計算式を追加します。 -#### ラインプロット設定 +各設定の詳細については、 [Line plot reference](/models/app/features/panels/line-plot/reference) を参照してください。 -次の設定をラインプロットに設定できます: +### セクション内のすべての折れ線グラフ -**データ**: プロットのデータ表示の詳細を設定します。 -* **X**: X 軸に使用する値を選択します (デフォルトは **Step** です)。X 軸を **相対時間** に変更したり、W&B でログを取った値に基づいてカスタム軸を選択したりできます。 - * **相対時間 (Wall)** はプロセス開始以降の時計時間で、もし 1 日後に run を再開して何かをログした場合、それは 24 時間にプロットされます。 - * **相対時間 (プロセス)** は実行中のプロセス内の時間で、もし 10 秒間 run を実行し、1 日後に再開した場合、そのポイントは 10 秒にプロットされます。 - * **ウォール時間** はグラフ上の最初の run 開始からの経過時間を示します。 - * **Step** はデフォルトで `wandb.log()` が呼び出されるたびに増加し、モデルからログされたトレーニングステップの数を反映することになっています。 -* **Y**: メトリクスや時間経過とともに変化するハイパーパラメーターなど、ログに取られた値から1つ以上の y 軸を選択します。 -* **X軸** および **Y軸** の最小値と最大値 (オプション)。 -* **ポイント集計メソッド**. **ランダムサンプリング** (デフォルト) または **フルフェデリティ**。詳細は [サンプリング](/ja/models/app/features/panels/line-plot/sampling/) を参照。 -* **スムージング**: ラインプロットのスムージングを変更します。デフォルトは **時間加重EMA** です。その他の値には **スムージングなし**, **ランニング平均**, および **ガウシアン** があります。 -* **外れ値**: 外れ値を除外して、デフォルトのプロット最小値および最大値スケールを再設定します。 -* **最大 run またはグループ数**: この数値を増やすことで、ラインプロットに一度により多くのラインを表示します。デフォルトは 10 run です。チャートの一番上に "最初の 10 run を表示中" というメッセージが表示され、利用可能な run が 10 個を超える場合、チャートが表示できる数を制約していることが分かります。 -* **チャートタイプ**: ラインプロット、エリアプロット、および パーセンテージエリアプロットの中で切り替えます。 - -**グルーピング**: プロット内で run をどのようにグループ化し集計するかを設定します。 -* **グループ化基準**: 列を選択し、その列に同じ値を持つすべての run がグループ化されます。 -* **Agg**: 集計— グラフ上のラインの値です。オプションはグループの平均、中央値、最小、最大です。 - -**チャート**: パネル、X軸、Y軸のタイトルを指定し、凡例を表示または非表示に設定し、その位置を設定します。 - -**凡例**: パネルの凡例の外観をカスタマイズします、もし有効化されている場合。 -* **凡例**: プロットの各ラインに対する凡例のフィールド、それぞれのラインのプロット内の凡例。 -* **凡例テンプレート**: テンプレートの上部に表示される凡例およびマウスオーバー時にプロットに表示される伝説で, 表示したい具体的なテキストおよび変数を定義します。 - -**式**: パネルにカスタム計算式を追加します。 -* **Y軸式**: グラフに計算されたメトリクスを追加。ログされたメトリクスやハイパーパラメーターのような設定値を使用してカスタムラインを計算することができます。 -* **X軸式**: 計算された値を使用して x 軸を再スケーリングします。有用な変数には、デフォルトの x 軸の **_step_** などが含まれ、サマリー値を参照するための構文は `${summary:value}` です。 - -### セクション内のすべてのラインプロット - -ワークスペースの設定を上書きして、セクション内のすべてのラインプロットのデフォルトの設定をカスタマイズするには: +セクション内のすべての折れ線グラフのデフォルト設定をカスタマイズし、Workspace の設定を上書きするには: 1. セクションのギアアイコンをクリックして設定を開きます。 -2. 表示されるモーダル内で、**データ** または **表示設定** タブを選択して、セクションのデフォルトの設定を構成します。各 **データ** 設定の詳細については、前述のセクション [個別のラインプロット](#line-plot-settings) を参照してください。各表示設定の詳細については、[セクションレイアウトの構成](/#configure-section-layout) を参照してください。 +1. 表示されるドロワー内で、 **Data** または **Display preferences** タブを選択して、セクションのデフォルト設定を構成します。各 **Data** 設定の詳細については、 [Line plot reference](/models/app/features/panels/line-plot/reference) を参照してください。表示設定の詳細については、 [Configure section layout](../#configure-section-layout) を参照してください。 -### ワークスペース内のすべてのラインプロット -ワークスペース内のすべてのラインプロットのデフォルト設定をカスタマイズするには: -1. **設定** というラベルの付いたギアがあるワークスペースの設定をクリックします。 -2. **ラインプロット** をクリックします。 -3. 表示されるモーダル内で、**データ** または **表示設定** タブを選択して、ワークスペースのデフォルト設定を構成します。 - - 各 **データ** 設定の詳細については、前述のセクション [個別のラインプロット](#line-plot-settings) を参照してください。 +### Workspace 内のすべての折れ線グラフ +Workspace 内のすべての折れ線グラフのデフォルト設定をカスタマイズするには: +1. **Settings** というラベルの付いたギアアイコンがある Workspace の設定をクリックします。 +1. **Line plots** をクリックします。 +1. 表示されるドロワー内で、 **Data** または **Display preferences** タブを選択して、 Workspace のデフォルト設定を構成します。 + - 各 **Data** 設定の詳細については、 [Line plot reference](/models/app/features/panels/line-plot/reference) を参照してください。 + - 各 **Display preferences** セクションの詳細については、 [Workspace display preferences](../#configure-workspace-layout) を参照してください。 Workspace レベルでは、折れ線グラフのデフォルトの **Zooming** (ズーム)の振る舞いを設定できます。この設定は、一致する X軸キーを持つ折れ線グラフ間でズームを同期させるかどうかを制御します。デフォルトでは無効になっています。 - - 各 **表示設定** セクションの詳細については、[ワークスペース表示設定](/#configure-workspace-layout) を参照してください。ワークスペースレベルで、ラインプロットのデフォルト **ズーム** 振る舞いを構成できます。この設定は、x 軸キーが一致するラインプロット間でズームの同期を制御します。デフォルトでは無効です。 -## プロット上で平均値を可視化する +## プロットで平均値を可視化する -複数の異なる実験があり、その値の平均をプロットで見たい場合は、テーブルのグルーピング機能を使用できます。runテーブルの上部で "グループ化" をクリックし、"すべて" を選択してグラフに平均値を表示します。 +複数の異なる Experiments があり、それらの値の平均をプロットで確認したい場合は、テーブルの Grouping 機能を使用できます。 Run テーブルの上にある "Group" をクリックし、 "All" を選択すると、グラフに平均値が表示されます。 -以下は平均化する前のグラフの例です: +平均化する前のグラフは以下のようになります: - + Individual precision lines -次の画像は、グループ化されたラインを使用して run における平均値を示すグラフです。 +次の画像は、グループ化されたラインを使用して、 Runs 全体の平均値を表すグラフを示しています。 - + Averaged precision lines -## プロット上で NaN 値を可視化する +## プロットで NaN 値を可視化する -`wandb.log` を使用して、PyTorch テンソルを含む `NaN` 値をラインプロットでプロットすることもできます。例えば: +`wandb.Run.log()` を使用して、 PyTorch テンソルを含む `NaN` 値を折れ線グラフにプロットすることもできます。例: ```python -wandb.log({"test": [..., float("nan"), ...]}) +with wandb.init() as run: + # NaN値をログに記録 + run.log({"test": float("nan")}) ``` - + NaN value handling -## 2 つのメトリクスを 1 つのチャートで比較する +## 1つのチャートで複数のメトリクスを比較する - + Adding visualization panels -1. ページの右上隅にある **パネルを追加** ボタンを選択します。 -2. 表示される左側のパネルで評価のドロップダウンを展開します。 +1. ページの右上隅にある **Add panels** ボタンを選択します。 +2. 表示される左パネルから、 Evaluation ドロップダウンを展開します。 3. **Run comparer** を選択します。 -## ラインプロットの色を変更する -時々、run のデフォルトの色が比較には適していないことがあります。この問題を解決するために、wandb は手動で色を変更できる2つの方法を提供しています。 +## 折れ線グラフの色を変更する + +デフォルトの Runs の色が比較に役立たない場合があります。これを解決するために、 wandb では手動で色を変更できる2つの方法を提供しています。 - -各 run は初期化時にデフォルトでランダムな色が割り当てられます。 + +各 Run には、初期化時にデフォルトでランダムな色が割り当てられます。 Random colors given to runs - どの色をクリックすると、手動で選択できるカラーパレットが表示されます。 + いずれかの色をクリックすると、カラーパレットが表示され、そこから希望の色を手動で選択できます。 The color palette -1. 設定を編集したいパネルにマウスをホバーさせます。 +1. 設定を編集したいパネルの上にマウスを置きます。 2. 表示される鉛筆アイコンを選択します。 -3. **凡例** タブを選択します。 +3. **Legend** タブを選択します。 - + Line plot legend settings -## 異なる x 軸で可視化する +## 異なる X軸で可視化する -実験がかかった絶対時間を見たい場合や、実験が実行された日を見たい場合は、x 軸を切り替えることができます。ここでは、ステップから相対時間、そして壁時間に切り替える例を示します。 +実験にかかった絶対時間を確認したい場合や、実験が実行された日付を確認したい場合は、 X軸を切り替えることができます。以下は、ステップから相対時間、そして実時間(wall time)に切り替える例です。 - + X-axis time options -## エリアプロット +カスタム X軸を使用するには、 Y軸をログに記録するのと同じ `wandb.Run.log()` の呼び出しでメトリクスを記録します。例: + +```python +with wandb.init() as run: + for i in range(100): + run.log({"accuracy": acc, "custom_x": i * 10}) +``` + +詳細については、 [Customize log axes](/models/track/log/customize-logging-axes#customize-log-axes) を参照してください。 + + +## ズーム -詳細設定タブでさまざまなプロットスタイルをクリックすると、エリアプロットまたはパーセンテージエリアプロットを取得できます。 +長方形をクリックしてドラッグすると、垂直方向と水平方向を同時にズームできます。これにより、 X軸と Y軸のズームが変更されます。 - + Plot zoom functionality -## ズーム +## チャートの凡例を非表示にする -直線をクリックしてドラッグすると垂直および水平方向に同時にズームします。これにより、x軸とy軸のズームが変更されます。 +このシンプルな切り替えスイッチで、折れ線グラフの凡例をオフにできます。 - + Hide legend toggle -## チャートの凡例の非表示 +## Run メトリクス通知を作成する -この簡単なトグルでラインプロットの凡例をオフにできます: +[Automations](/models/automations/) を使用して、 Run メトリクスが指定した条件を満たしたときにチームに通知します。オートメーションは Slack チャンネルへの投稿や Webhook の実行が可能です。 - - - \ No newline at end of file +折れ線グラフから、表示されているメトリクスに対して [run metrics notification](/models/automations/automation-events/#run-events) を素早く作成できます。 + +1. パネルの上にマウスを置き、ベルのアイコンをクリックします。 +1. 基本設定または詳細設定コントロールを使用してオートメーションを構成します。例えば、オートメーションの範囲を制限するために Run フィルターを適用したり、絶対的な閾値を設定したりします。 + +[Automations](/models/automations/) について詳しくはこちら。 \ No newline at end of file diff --git a/ja/models/app/features/panels/line-plot/reference.mdx b/ja/models/app/features/panels/line-plot/reference.mdx index 93fd85a726..80444e3928 100644 --- a/ja/models/app/features/panels/line-plot/reference.mdx +++ b/ja/models/app/features/panels/line-plot/reference.mdx @@ -1,95 +1,159 @@ --- -title: 折れ線グラフのリファレンス +title: Line plot リファレンス --- -## X軸 +このページでは、折れ線グラフの設定に関する詳細な情報を説明します。折れ線グラフの使い方の詳細については、[折れ線グラフの概要](/models/app/features/panels/line-plot) を参照してください。 + +## データ設定 + +### X軸 Selecting X-Axis -折れ線グラフのX軸を、W&B.logで記録した任意の値に設定できます。ただし、それが常に数値として記録されている必要があります。 +X軸の範囲を、 `wandb.Run.log()` で ログ した任意の整数または浮動小数点数の 値 に設定します。 + +利用可能な時間ベースのX軸オプション: +* **Step**: `wandb.Run.log()` が呼び出されるたびにインクリメントされます。 モデル から ログ されたトレーニングステップ数を反映します。(デフォルト) +* **Relative Time (Wall)**: プロセス が開始されてからの実時間。 Run を開始して1日中断し、その後再開して ログ した場合、そのポイントは24時間後に表示されます。 +* **Relative Time (Process)**: 実行中の プロセス 内の時間。 Run を開始して10秒間実行し、1日中断してから再開した場合、そのポイントは10秒後に表示されます。 +* **Wall Time**: グラフ上の最初の Run が開始されてからの経過時間(分)。 +* **X range**: デフォルトではX軸の最小値から最大値までです。最小値と最大値をカスタマイズできます。 -## Y軸の変数 +### Y軸 -Y軸の変数は、wandb.logで記録した任意の値に設定できます。ただし、数値、数値の配列、または数値のヒストグラムを記録している必要があります。変数に対して1500点以上を記録した場合、W&Bは1500点にサンプリングします。 +Y軸の変数を、 `wandb.Run.log()` で ログ した任意の整数または浮動小数点数の 値 に設定します。単一の 値 、 値 の配列、または 値 のヒストグラムを指定します。1つの変数に対して1500ポイント以上 ログ した場合、W&Bは1500ポイントにダウンサンプリングします。 -Y軸のラインの色は、runsテーブルでrunの色を変更することで変更できます。 +Runs テーブルの Run の色を変更することで、Y軸の線の色をカスタマイズできます。 -## X範囲とY範囲 +利用可能なY軸オプション: +* **Y range**: デフォルトは、 メトリクス の最小正数値(0を含む)から最大値までです。最小値と最大値をカスタマイズできます。 -プロットのXとYの最大値と最小値を変更できます。 +### ポイント集計メソッド -X範囲のデフォルトは、X軸の最小値から最大値までです。 +データポイントを表示するためのサンプリングモードを選択します: +* **Random sampling**(デフォルト): [Random sampling](/models/app/features/panels/line-plot/sampling/#random-sampling) を参照してください。 +* **Full fidelity**: [Full fidelity](/models/app/features/panels/line-plot/sampling/#full-fidelity) を参照してください。 -Y範囲のデフォルトは、メトリクスの最小値と0からメトリクスの最大値までです。 +### スムージング -## 最大run/グループ数 +[スムージング係数](/models/support/formula_smoothing_algorithm/) を0から1の間で設定します。0はスムージングなし、1は最大のスムージングを意味します。 -デフォルトでは、10 runまたはrunのグループのみがプロットされます。runは、runsテーブルまたはrunセットの上位から取得されるため、runsテーブルやrunセットを並べ替えると、表示されるrunを変更できます。 +利用可能なスムージング メソッド : +* **Time weighted EMA**(デフォルト): 以前のポイントの重みを指数関数的に減衰させることで、 時系列 データを滑らかにする手法です。 +* **Running average**: 特定のx値の前後にあるウィンドウ内のポイントの平均値でポイントを置き換えます。 +* **Gaussian**: ポイントの重み付き平均を計算します。重みは、スムージング パラメータ として指定された標準偏差を持つガウス分布に対応します。 +* **No smoothing** -## 凡例 +詳細については、 [折れ線グラフのスムージング](/models/app/features/panels/line-plot/smoothing) を参照してください。 -チャートの凡例を制御して、任意のrunに対して記録した任意のconfig値やrunのメタデータ、例えば作成日時やrunを作成したユーザーを表示できます。 +### 外れ値を無視 -例: +デフォルトのグラフの最小・最大スケールから外れ値を除外するようにグラフを再スケーリングします。この設定の影響は、グラフのサンプリングモードによって異なります: -`${run:displayName} - ${config:dropout}` は、各runの凡例名を `royal-sweep - 0.5` のようにします。ここで `royal-sweep` はrun名で、`0.5` は `dropout` という名前のconfigパラメータです。 +- **Random sampling モード**: 外れ値を無視すると、グラフから下位5%と上位95%のポイントが除外されます。 +- **Full fidelity モード**: 外れ値を無視すると、すべてのポイントが表示されますが、各 バケット の最後の 値 に凝縮され、下位5%と上位95%の領域が網掛け表示されます。 -グラフにカーソルを合わせたときにクロスヘアで特定の点の値を表示するために、`[[ ]]` 内に値を設定できます。例えば `\[\[ $x: $y ($original) ]]` は "2: 3 (2.9)" のように表示されます。 +### 最大 Runs またはグループ -`[[ ]]` 内でサポートされる値は以下の通りです: +デフォルトでは、グラフには Run リストまたは Run セット内の最初の10個の Runs またはグループのみが含まれます。表示する Runs やグループを制御するには、ソート順を変更してください。 -| 値 | 意味 | -| ------------ | ---------------------------------------- | -| `${x}` | X値 | -| `${y}` | Y値(平滑化調整を含む) | -| `${original}`| 平滑化調整を含まないY値 | -| `${mean}` | グループ化されたrunの平均 | -| `${stddev}` | グループ化されたrunの標準偏差 | -| `${min}` | グループ化されたrunの最小値 | -| `${max}` | グループ化されたrunの最大値 | -| `${percent}` | 全体のパーセント(積み上げ面チャート用)| + +Workspace は、 設定 に関わらず、最大1000個の Runs を表示することに制限されています。 + -## グループ化 +### チャートタイプ -全てのrunをグループ化するか、個々の変数でグループをすることができます。また、テーブル内部でグループ化することによってグループを有効にすると、そのグループは自動的にグラフに反映されます。 +グラフのスタイルを選択します: +- **Line plot** + + Line plot style + +- **Area plot** + + Area plot style + +- **Percentage area plot:** + + Percentage plot style + -## スムージング +チャートタイプは **Data** タブで 設定 します。[](/models/app/features/panels/line-plot#individual-line-plot) を参照してください。 -スムージング係数を0から1の間で設定できます。0はスムージングなし、1は最大スムージングを意味します。詳細は[スムージング係数の設定について](/ja/models/support/formula_smoothing_algorithm/)を参照してください。 +## グルーピング設定 +グルーピングをオンにしてすべての Runs を集計するか、個別の変数でグループ化します。 Runs テーブルでグルーピングをオンにすると、グループが自動的にグラフに反映されます。 -## 外れ値を無視 +- **Group by**: カラムを選択します。そのカラムで同じ 値 を持つすべての Runs がグループ化されます。 +- **Aggregation**: グラフ上の線の 値 。オプションは、グループの mean (平均)、median (中央値)、min (最小)、max (最大) です。 -デフォルトのプロットの最小値と最大値のスケールから外れ値を除外するようにプロットをリスケールします。この設定がプロットに与える影響は、プロットのサンプリングモードに依存します。 +## チャート設定 +タイトルと凡例の表示を 設定 します: -- [ランダムサンプリングモード](/ja/models/app/features/panels/line-plot/sampling/#random-sampling)を使用するプロットでは、**外れ値を無視**を有効にすると、5%から95%の点のみが表示されます。外れ値が表示される場合、それらは他の点と異なるフォーマットでは表示されません。 -- [完全な忠実度モード](/ja/models/app/features/panels/line-plot/sampling/#full-fidelity)を使用するプロットでは、全ての点が常に表示され、各バケットの最後の値まで凝縮されます。**外れ値を無視**が有効になっている場合、各バケットの最小値と最大値の境界がシェーディングされます。それ以外の場合は、領域はシェーディングされません。 +- **Panel title**: パネル の上部に表示されるタイトル。 +- **X-axis title**: X軸のラベル。 +- **Y-axis title**: Y軸のラベル。 +- **Legend**: 凡例の表示/非表示、および位置を 設定 します。 -## 式の表現 +## 凡例設定 -式の表現を使用して、1-accuracyのようにメトリクスから派生した値をプロットできます。現在、単一のメトリクスをプロットしている場合にのみ機能します。+、-、\*、/、%といった簡単な算術式、および**を使用してべき乗を行うことができます。 +凡例をカスタマイズして、 ログ された任意の 設定値 や、作成時間、 Run を作成した User などの Runs の メタデータ を表示できます。 -## プロットスタイル +### 凡例テンプレート -折れ線グラフのスタイルを選択します。 +凡例名のテンプレートを定義します。 -**折れ線プロット:** +1. 歯車アイコンをクリックしてグラフ設定を開きます。 +1. **Display preferences** タブに移動します。 +1. **Advanced legend** を展開し、凡例テンプレートを指定します。 +1. **Apply** をクリックします。 - - - +例: -**面プロット:** +`${run:displayName} - ${config:dropout}` は、 `royal-sweep - 0.5` のような凡例名を生成します。ここで `royal-sweep` は Run 名、 `0.5` は `dropout` という名前の 設定 パラメータ です。 - - - +### ポイント固有の値 -**パーセンテージエリアプロット:** +`[[ ]]` 内に 値 を設定すると、チャートをホバーしたときに十字線にポイント固有の 値 を表示できます。 - - - \ No newline at end of file +1. 歯車アイコンをクリックしてグラフ設定を開きます。 +1. **Display preferences** タブに移動します。 +1. タブの下部で、1つ以上のグラフの メトリクス に対してポイント固有の 値 を 設定 します。 +1. **Apply** をクリックします。 + +例: `[[ $x: $y ($original) ]]` は "2: 3 (2.9)" のように表示されます。 + +`[[ ]]` 内でサポートされている 値 : + +| 値 | 意味 | +| ------------ | ------------------------------------------ | +| `${x}` | Xの値 | +| `${y}` | Yの値(スムージング調整を含む) | +| `${original}` | スムージング調整を含まないYの値 | +| `${mean}` | グループ化された Runs の平均 | +| `${stddev}` | グループ化された Runs の標準偏差 | +| `${min}` | グループ化された Runs の最小値 | +| `${max}` | グループ化された Runs の最大値 | +| `${percent}` | 合計に対する割合(積み上げ面グラフ用) | + +## 式 (Expressions) + +カスタム計算式を追加して、派生 メトリクス を作成します。 + +### Y軸の式 + +メトリクス から派生した 値 をプロットします。例えば、 `1-accuracy` やその他の算術式を計算します。現在は単一の メトリクス をプロットする場合にのみ機能します。 + +サポートされている演算子: `+`, `-`, `*`, `/`, `%`, `**` (指数)。 + +ログ された メトリクス と、 ハイパーパラメーター などの 設定値 の両方を使用して、カスタムの線を計算できます。 + +### X軸の式 + +カスタム式を使用した計算値を用いて、X軸を再スケーリングします。 + +便利な変数: +* `_step`: デフォルトのX軸の 値 。 +* `${summary:value}`: サマリーの 値 を参照します。 \ No newline at end of file diff --git a/ja/models/app/features/panels/line-plot/sampling.mdx b/ja/models/app/features/panels/line-plot/sampling.mdx index 8097e520c2..5e786f492b 100644 --- a/ja/models/app/features/panels/line-plot/sampling.mdx +++ b/ja/models/app/features/panels/line-plot/sampling.mdx @@ -1,124 +1,124 @@ --- -title: ポイント集約 +title: ポイント集計 --- -Use point aggregation methods within your line plots for improved data visualization accuracy and performance. There are two types of point aggregation modes: [full fidelity](#full-fidelity) and [random sampling](#random-sampling). W&B uses full fidelity mode by default. +折れ線グラフ内で point aggregation(ポイント集計)メソッドを使用することで、 Data Visualization の精度とパフォーマンスを向上させることができます。 point aggregation モードには、 [full fidelity](#full-fidelity) と [random sampling](#random-sampling) の 2 種類があります。 W&B ではデフォルトで full fidelity モードが使用されます。 ## Full fidelity -Full fidelity modeを使用すると、W&Bはデータポイントの数に基づいてx軸を動的なバケットに分割します。そして、それぞれのバケット内の最小、最大、平均値を計算し、線プロットのポイント集約をレンダリングします。 +full fidelity モードを使用すると、 W&B はデータポイントの数に基づいて x 軸を動的なバケットに分割します。次に、折れ線グラフの point aggregation をレンダリングする際に、各バケット内の最小値、最大値、平均値を算出します。 -フルフィデリティモードを使用する際のポイント集約の3つの主な利点は次のとおりです: +point aggregation に full fidelity モードを使用することには、主に 3 つの利点があります。 -* 極値とスパイクを保持する: データ内の極値とスパイクを保持します。 -* 最小値と最大値のレンダリングを設定する: W&Bアプリを使用して、極値(最小/最大)を影付きエリアとして表示するかどうかをインタラクティブに決定できます。 -* データの忠実度を失わずにデータを探索する: W&Bは特定のデータポイントにズームインするとx軸のバケットサイズを再計算します。これにより、正確さを失うことなくデータを探索できることを保証します。キャッシュを使用して以前に計算された集計を保存することで、ロード時間を短縮するのに役立ちます。これは、特に大規模なデータセットをナビゲートしている場合に便利です。 +* 極端な値やスパイクを保持:データ内の極端な値やスパイクを維持します。 +* 最小値と最大値の描画設定: W&B App を使用して、極端な値(最小値/最大値)をシェーディング領域として表示するかどうかをインタラクティブに決定できます。 +* データの忠実度を損なわずに探索:特定のデータポイントにズームインすると、 W&B は x 軸のバケットサイズを再計算します。これにより、精度を落とさずにデータを探索できるようになります。以前に計算された集計を保存するためにキャッシングが使用され、読み込み時間を短縮します。これは特に大きな Datasets をナビゲートする場合に有効です。 -### 最小値と最大値のレンダリングの設定 +### 最小値と最大値の描画設定 -線プロットの周囲に影付きのエリアを使って最小値と最大値を表示または非表示にします。 +折れ線グラフの周囲にシェーディング領域を表示して、最小値と最大値を表示または非表示にします。 -次の画像は、青い線プロットを示しています。薄い青の影付きエリアは各バケットの最小値と最大値を表しています。 +以下の画像は青い折れ線グラフを示しています。水色のシェーディング領域は、各バケットの最小値と最大値を表しています。 - + Shaded confidence areas -線プロットで最小値と最大値をレンダリングする方法は3通りあります: +折れ線グラフで最小値と最大値をレンダリングする方法は 3 つあります。 -* **Never**: 最小/最大値は影付きエリアとして表示されません。x軸のバケット全体に渡る集約された線だけを表示します。 -* **On hover**: グラフにカーソルを合わせると、最小/最大値の影付きエリアが動的に表示されます。このオプションは、ビューをシンプルに保ちながら、範囲をインタラクティブに検査することを可能にします。 -* **Always**: 最小/最大の影付きエリアは常にグラフのすべてのバケットで一貫して表示され、常に全範囲の値を視覚化するのに役立ちます。これにより、グラフに多くのrunsが視覚化されている場合、視覚的なノイズが発生する可能性があります。 +* **Never**: 最小値/最大値はシェーディング領域として表示されません。 x 軸のバケット全体の集計ラインのみが表示されます。 +* **On hover**: チャート上にホバーしたときに、最小値/最大値のシェーディング領域が動的に表示されます。このオプションは、インタラクティブに範囲を確認できるようにしつつ、ビューをすっきりと保ちます。 +* **Always**: チャート内のすべてのバケットに対して最小値/最大値のシェーディング領域が常に表示され、常に全範囲の値を可視化するのに役立ちます。チャート内で多くの Runs が可視化されている場合、視覚的な ノイズ になる可能性があります。 -デフォルトでは、最小値と最大値は影付きエリアとして表示されません。影付きエリアオプションの1つを表示するには、以下の手順に従ってください: +デフォルトでは、最小値と最大値はシェーディング領域として表示されません。シェーディング領域のオプションを表示するには、以下の手順に従ってください。 - -1. W&Bプロジェクトに移動します。 -2. 左のタブで**Workspace**アイコンを選択します。 -3. 画面の右上隅にある歯車アイコンを、**Add panels**ボタンの左側に選択します。 -4. 表示されるUIスライダーから**Line plots**を選択します。 -5. **Point aggregation**セクション内で、**Show min/max values as a shaded area**ドロップダウンメニューから**On hover**または**Always**を選択します。 + +1. W&B の Projects に移動します +2. 左タブの **Workspace** アイコンを選択します +3. 画面右上の **Add panels** ボタンの左隣にある歯車アイコンを選択します。 +4. 表示される UI スライダーから、 **Line plots** を選択します +5. **Point aggregation** セクション内の **Show min/max values as a shaded area** ドロップダウンメニューから、 **On hover** または **Always** を選択します。 - -1. W&Bプロジェクトに移動します。 -2. 左のタブで**Workspace**アイコンを選択します。 -3. フルフィデリティモードを有効にしたい線プロットパネルを選択します。 -4. 表示されるモーダル内で、**Show min/max values as a shaded area**ドロップダウンメニューから**On hover**または**Always**を選択します。 + +1. W&B の Projects に移動します +2. 左タブの **Workspace** アイコンを選択します +3. full fidelity モードを有効にしたい折れ線グラフ パネルを選択します +4. 表示されるモーダル内で、 **Show min/max values as a shaded area** ドロップダウンメニューから **On hover** または **Always** を選択します。 -### データの忠実度を失わずにデータを探索する +### データの忠実度を損なわずに探索 -データセットの特定の領域を分析し、極値やスパイクなどの重要なポイントを見逃さないようにします。線プロットをズームインすると、W&Bは各バケット内の最小、最大、および平均値を計算するために使用されるバケットサイズを調整します。 +極端な値やスパイクなどの重要なポイントを見逃すことなく、 Dataset の特定の領域を分析できます。折れ線グラフをズームインすると、 W&B は各バケット内の最小値、最大値、平均値を計算するために使用されるバケットサイズを調整します。 - + Plot zoom functionality -W&Bはデフォルトでx軸を1000のバケットに動的に分割します。各バケットに対し、W&Bは以下の値を計算します: +W&B はデフォルトで x 軸を動的に 1000 個のバケットに分割します。各バケットについて、 W&B は以下の 値 を計算します。 - **Minimum**: そのバケット内の最小値。 - **Maximum**: そのバケット内の最大値。 - **Average**: そのバケット内のすべてのポイントの平均値。 -W&Bは、すべてのプロットでデータの完全な表現を保持し、極値を含める方法でバケット内の値をプロットします。1,000ポイント以下にズームインすると、フルフィデリティモードは追加の集約なしにすべてのデータポイントをレンダリングします。 +W&B は、完全なデータ表現を維持し、すべてのプロットに極端な値が含まれるようにバケット内の値をプロットします。 1,000 ポイント以下にズームインすると、 full fidelity モードは追加の集計を行わずにすべてのデータポイントをレンダリングします。 -線プロットをズームインするには、次の手順に従います: +折れ線グラフをズームインするには、以下の手順に従ってください。 -1. W&Bプロジェクトに移動します。 -2. 左のタブで**Workspace**アイコンを選択します。 -3. 必要に応じて、ワークスペースに線プロットパネルを追加するか、既存の線プロットパネルに移動します。 -4. ズームインしたい特定の領域を選択するためにクリックしてドラッグします。 +1. W&B の Projects に移動します +2. 左タブの **Workspace** アイコンを選択します +3. 必要に応じて Workspace に折れ線グラフ パネルを追加するか、既存の折れ線グラフ パネルに移動します。 +4. クリックしてドラッグし、ズームインしたい特定の領域を選択します。 -**Line plot grouping and expressions** +**折れ線グラフのグルーピングと式** -Line Plot Groupingを使用すると、W&Bは選択されたモードに基づいて以下を適用します: +折れ線グラフのグルーピングを使用する場合、 W&B は選択されたモードに基づいて以下を適用します。 -- **Non-windowed sampling (grouping)**: x軸でrunsを超えてポイントを整列させます。複数のポイントが同じx値を共有する場合、平均が取られ、そうでない場合は離散的なポイントとして表示されます。 -- **Windowed sampling (grouping and expressions)**: x軸を250のバケットまたは最も長い線のポイント数に分割します(いずれか小さい方)。W&Bは各バケット内のポイントの平均を取ります。 -- **Full fidelity (grouping and expressions)**: 非ウィンドウ化サンプリングに似ていますが、パフォーマンスと詳細のバランスを取るためにrunごとに最大500ポイントを取得します。 +- **Non-windowed sampling (grouping)**: x 軸上の Runs 間でポイントを整列させます。複数のポイントが同じ x 値を共有している場合は平均が取られ、そうでない場合は個別のポイントとして表示されます。 +- **Windowed sampling (grouping and expressions)**: x 軸を 250 個のバケット、または最も長いラインのポイント数(のいずれか小さい方)に分割します。 W&B は各バケット内のポイントの平均を取ります。 +- **Full fidelity (grouping and expressions)**: non-windowed sampling と同様ですが、パフォーマンスと詳細のバランスをとるために、 Run あたり最大 500 ポイントを取得します。 ## Random sampling -Random samplingはラインプロットをレンダリングするために1,500のランダムにサンプリングされたポイントを使用します。大量のデータポイントがある場合、パフォーマンスの理由でランダムサンプリングが有用です。 +Random sampling は、折れ線グラフをレンダリングするためにランダムにサンプリングされた 1500 個のポイントを使用します。 Random sampling は、データポイントの数が多い場合にパフォーマンス上の理由で役立ちます。 -Random samplingは非決定的にサンプリングします。これは、ランダムサンプリングが時々データ内の重要なアウトライヤーやスパイクを除外し、したがってデータの正確性を低下させることを意味します。 +Random sampling は非決定論的にサンプリングを行います。つまり、 Random sampling ではデータ内の重要な外れ値やスパイクが除外されることがあり、その結果、データの精度が低下する可能性があります。 -### ランダムサンプリングを有効にする -デフォルトでは、W&Bはフルフィデリティモードを使用します。ランダムサンプリングを有効にするには、次の手順に従います: +### Random sampling を有効にする +デフォルトでは、 W&B は full fidelity モードを使用します。 Random sampling を有効にするには、以下の手順に従ってください。 - -1. W&Bプロジェクトに移動します。 -2. 左のタブで**Workspace**アイコンを選択します。 -3. 画面の右上隅にある歯車アイコンを、**Add panels**ボタンの左側に選択します。 -4. 表示されるUIスライダーから**Line plots**を選択します。 -5. **Point aggregation**セクションから**Random sampling**を選択します。 + +1. W&B の Projects に移動します +2. 左タブの **Workspace** アイコンを選択します +3. 画面右上の **Add panels** ボタンの左隣にある歯車アイコンを選択します。 +4. 表示される UI スライダーから、 **Line plots** を選択します +5. **Point aggregation** セクションから **Random sampling** を選択します - -1. W&Bプロジェクトに移動します。 -2. 左のタブで**Workspace**アイコンを選択します。 -3. ランダムサンプリングを有効にしたい線プロットパネルを選択します。 -4. 表示されるモーダル内で、**Point aggregation method**セクションから**Random sampling**を選択します。 + +1. W&B の Projects に移動します +2. 左タブの **Workspace** アイコンを選択します +3. Random sampling を有効にしたい折れ線グラフ パネルを選択します +4. 表示されるモーダル内で、 **Point aggregation method** セクションから **Random sampling** を選択します ### サンプリングされていないデータへのアクセス -[W&B Run API](/ja/models/ref/python/public-api/run)を使用して、run中にログされたメトリクスの完全な履歴にアクセスできます。次の例は、特定のrunから損失値を取得し処理する方法を示しています: +[W&B Run API](/models/ref/python/public-api/runs) を使用して、 Run 中にログ記録されたメトリクスの完全な履歴にアクセスできます。次の例は、特定の Run から loss の値を取得して処理する方法を示しています。 ```python -# W&B APIを初期化 +# W&B API を初期化 run = api.run("l2k2/examples-numpy-boston/i0wt6xua") -# 'Loss'メトリクスの履歴を取得 +# 'Loss' メトリクスの履歴を取得 history = run.scan_history(keys=["Loss"]) -# 履歴から損失値を抽出 +# 履歴から loss の値を抽出 losses = [row["Loss"] for row in history] ``` \ No newline at end of file diff --git a/ja/models/app/features/panels/line-plot/smoothing.mdx b/ja/models/app/features/panels/line-plot/smoothing.mdx index 4546586b09..1424455539 100644 --- a/ja/models/app/features/panels/line-plot/smoothing.mdx +++ b/ja/models/app/features/panels/line-plot/smoothing.mdx @@ -1,28 +1,28 @@ --- -title: スムーズなラインプロット -description: ノイズの多いデータにおけるトレンドを見るために、線グラフでスムージングを使用します。 +title: 平滑化ラインプロット +description: 折れ線グラフでは、平滑化(smoothing)を使用して、ノイズの多い データ の中からトレンドを確認できます。 --- -W&B は 3 つのタイプの平滑化をサポートしています: +W&B はいくつかの種類のスムージングをサポートしています: -- [指数移動平均](/ja/models/app/features/panels/line-plot/smoothing/#exponential-moving-average-default) (デフォルト) -- [ガウス平滑化](/ja/models/app/features/panels/line-plot/smoothing/#%E3%82%AC%E3%82%A6%E3%82%B9%E5%B9%B3%E6%BB%91%E5%8C%96) -- [移動平均](/ja/models/app/features/panels/line-plot/smoothing/#%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87) -- [指数移動平均 - Tensorboard](/ja/models/app/features/panels/line-plot/smoothing/#exponential-moving-average-deprecated) (非推奨) +- [Time weighted exponential moving average (TWEMA) スムージング](#time-weighted-exponential-moving-average-twema-smoothing-default) +- [Gaussian スムージング](#gaussian-smoothing) +- [Running average](#running-average-smoothing) +- [Exponential moving average (EMA) スムージング](#exponential-moving-average-ema-smoothing) -これらが [インタラクティブな W&B レポート](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc)でどのように動作するかをご覧ください。 +これらが実際に動作している様子は、[インタラクティブな W&B レポート](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc) で確認できます。 - + Demo of various smoothing algorithms -## 指数移動平均 (デフォルト) +## Time Weighted Exponential Moving Average (TWEMA) スムージング (デフォルト) -指数平滑化は、時系列データを指数的に減衰させることで、過去のデータポイントの重みを滑らかにする手法です。範囲は 0 から 1 です。背景については [指数平滑化](https://www.wikiwand.com/en/Exponential_smoothing) をご覧ください。時系列の初期値がゼロに偏らないようにするためのデバイアス項が追加されています。 +Time Weighted Exponential Moving Average (TWEMA) スムージングアルゴリズムは、以前のデータポイントの重みを指数関数的に減衰させることで、時系列 データをスムージングする手法です。この手法の詳細については、[指数平滑法](https://www.wikiwand.com/en/Exponential_smoothing) を参照してください。範囲は 0 から 1 です。時系列 の初期値が 0 に偏らないよう、バイアス 除去項が追加されています。 -EMA アルゴリズムは、線上の点の密度(x 軸範囲の単位当たりの `y` 値の数)を考慮に入れます。これにより、異なる特性を持つ複数の線を同時に表示する際に、一貫した平滑化が可能になります。 +TWEMA アルゴリズムは、ライン上のポイントの密度(x軸の単位範囲あたりの `y` 値の数)を考慮します。これにより、異なる特性を持つ複数のラインを同時に表示する場合でも、一貫したスムージングが可能になります。 -これが内部でどのように動作するかのサンプルコードです: +以下は、内部でどのように動作するかを示すサンプル コード です: ```javascript const smoothingWeight = Math.min(Math.sqrt(smoothingParam || 0), 0.999); @@ -31,7 +31,7 @@ let debiasWeight = 0; return yValues.map((yPoint, index) => { const prevX = index > 0 ? index - 1 : 0; - // VIEWPORT_SCALE は結果をチャートの x 軸範囲にスケーリングします + // VIEWPORT_SCALE は結果をチャートの x 軸範囲に合わせてスケーリングします const changeInX = ((xValues[index] - xValues[prevX]) / rangeOfX) * VIEWPORT_SCALE; const smoothingWeightAdj = Math.pow(smoothingWeight, changeInX); @@ -42,43 +42,48 @@ return yValues.map((yPoint, index) => { }); ``` -これがアプリ内でどのように見えるかはこちらをご覧ください [in the app](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc): +[アプリ内](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc) での表示は以下のようになります: - + Demo of TWEMA smoothing -## ガウス平滑化 +## Gaussian スムージング -ガウス平滑化(またはガウスカーネル平滑化)は、標準偏差が平滑化パラメータとして指定されるガウス分布に対応する重みを用いてポイントの加重平均を計算します。入力 x 値ごとに平滑化された値が計算されます。 +Gaussian スムージング(またはガウスカーネルスムージング)は、ポイントの加重平均を計算します。重みは、スムージング パラメータ として指定された標準偏差を持つガウス分布に対応します。スムージングされた 値 は、各入力 x 値に対して、その前後に発生するポイントに基づいて計算されます。 -ガウス平滑化は、TensorBoard の振る舞いと一致させる必要がない場合の標準的な選択肢です。指数移動平均とは異なり、ポイントは前後の値に基づいて平滑化されます。 - -これがアプリ内でどのように見えるかはこちらをご覧ください [in the app](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc#3.-gaussian-smoothing): +[アプリ内](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc#3.-gaussian-smoothing) での表示は以下のようになります: - + Demo of gaussian smoothing -## 移動平均 +## Running average スムージング -移動平均は、与えられた x 値の前後のウィンドウ内のポイントの平均でそのポイントを置き換える平滑化アルゴリズムです。詳細は "Boxcar Filter" を参照してください [https://en.wikipedia.org/wiki/Moving_average](https://en.wikipedia.org/wiki/Moving_average)。移動平均のために選択されたパラメータは、Weights and Biases に移動平均で考慮するポイントの数を伝えます。 +Running average(移動平均)は、あるポイントを、指定された x 値の前後にあるウィンドウ内のポイントの平均値で置き換えるスムージングアルゴリズムです。詳細は [Wikipedia の「Boxcar Filter」](https://en.wikipedia.org/wiki/Moving_average) を参照してください。Running average で選択された パラメータ は、移動平均で考慮するポイントの数を Weights and Biases に伝えます。 -ポイントが x 軸上で不均一に配置されている場合は、ガウス平滑化を検討してください。 +x 軸上のポイントの間隔が不均等な場合は、代わりに Gaussian スムージングの使用を検討してください。 -次の画像は、アプリ内での移動アプリの表示例を示しています [in the app](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc#4.-running-average): +[アプリ内](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc#4.-running-average) での表示は以下のようになります: - + Demo of running average smoothing -## 指数移動平均 (非推奨) +## Exponential Moving Average (EMA) スムージング + +Exponential Moving Average (EMA) スムージングアルゴリズムは、指数ウィンドウ関数を使用して 時系列 データをスムージングする経験則的な手法です。この手法の詳細については、[指数平滑法](https://www.wikiwand.com/en/Exponential_smoothing) を参照してください。範囲は 0 から 1 です。時系列 の初期値が 0 に バイアス されないよう、デバイアス項が追加されています。 -> TensorBoard EMA アルゴリズムは、同じチャート上で一貫したポイント密度を持たない複数の線を正確に平滑化することができないため、非推奨とされました。 +多くの場合、EMA スムージングはスムージング前に バケット 化するのではなく、履歴のフルスキャンに適用されます。これにより、より正確なスムージングが得られることがよくあります。 -指数移動平均は、TensorBoard の平滑化アルゴリズムと一致するように実装されています。範囲は 0 から 1 です。背景については [指数平滑化](https://www.wikiwand.com/en/Exponential_smoothing) をご覧ください。時系列の初期値がゼロに偏らないようにするためのデバイアス項が追加されています。 +以下のような状況では、代わりに バケット 化の後に EMA スムージングが適用されます: +- サンプリング +- グルーピング +- 式(Expressions) +- 非単調な x 軸 +- 時間ベースの x 軸 -これが内部でどのように動作するかのサンプルコードです: +以下は、内部でどのように動作するかを示すサンプル コード です: ```javascript data.forEach(d => { @@ -89,20 +94,16 @@ return yValues.map((yPoint, index) => { smoothedData.push(last / debiasWeight); ``` -これがアプリ内でどのように見えるかはこちらをご覧ください [in the app](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc): +[アプリ内](https://wandb.ai/carey/smoothing-example/reports/W-B-Smoothing-Features--Vmlldzo1MzY3OTc) での表示は以下のようになります: - + Demo of EMA smoothing -## 実装の詳細 - -すべての平滑化アルゴリズムはサンプリングされたデータで実行されます。つまり、1500 ポイント以上をログに記録した場合、平滑化アルゴリズムはサーバーからポイントがダウンロードされた後に実行されます。平滑化アルゴリズムの目的は、データ内のパターンを迅速に見つけることです。多くのログを持つメトリクスに対して正確な平滑化された値が必要な場合は、API を介してメトリクスをダウンロードし、自分自身の平滑化メソッドを実行する方が良いかもしれません。 - ## 元のデータを非表示にする -デフォルトでは、オリジナルの非平滑化データを背景として薄い線で表示します。この表示をオフにするには、**Show Original** トグルをクリックしてください。 +デフォルトでは、スムージングされていない元の データ がプロットの背景に薄い線として表示されます。これをオフにするには、**Show Original** をクリックします。 - + Turn on or off original data \ No newline at end of file diff --git a/ja/models/app/features/panels/media.mdx b/ja/models/app/features/panels/media.mdx new file mode 100644 index 0000000000..f66a37382e --- /dev/null +++ b/ja/models/app/features/panels/media.mdx @@ -0,0 +1,99 @@ +--- +title: メディアパネル +--- + +メディアパネルは、3D オブジェクト、オーディオ、画像、ビデオ、または点群を含む [メディアオブジェクトとしてログ記録されたキー](/models/track/log/media/) を可視化します。このページでは、 Workspace でメディアパネルを追加および管理する方法について説明します。 + + + メディアパネルのデモ + + +## メディアパネルの追加 +デフォルトの 設定 を使用してログ記録されたキーのメディアパネルを追加するには、 Quick Add を使用します。メディアパネルはグローバルに追加することも、特定のセクションに追加することもできます。 + +1. **グローバル**: パネル検索フィールドの近くにあるコントロールバーの **Add panels** をクリックします。 +1. **セクション**: セクションのアクションメニュー `...` をクリックし、次に **Add panels** をクリックします。 +1. 利用可能なパネルのリストから、パネルのキーを見つけて **Add** をクリックします。追加したい各メディアパネルに対してこの手順を繰り返し、右上の **X** をクリックして **Quick Add** リストを閉じます。 +1. 必要に応じて [パネルの設定](#configure-a-media-panel) を行います。 + +メディアパネルをグローバルまたは特定のセクションに手動で追加することもできます: +1. **グローバル**: パネル検索フィールドの近くにあるコントロールバーの **Add panels** をクリックします。 +1. **セクション**: セクションのアクションメニュー `...` をクリックし、次に **Add panels** をクリックします。 +1. **Media** セクションをクリックして展開します。 +1. パネルで可視化するメディアのタイプ(3D オブジェクト、画像、ビデオ、またはオーディオ)を選択します。パネル設定画面が表示されます。パネルを 設定 し、**Apply** をクリックします。詳細は [メディアパネルの設定](#configure-a-media-panel) を参照してください。 + +## メディアパネルの設定 +すべてのメディアタイプのパネルには、共通のオプションがあります。 + +メディアパネルを手動で追加すると、メディアのタイプを選択した後に設定ページが開きます。既存のパネルの設定を更新するには、パネルにホバーし、右上に表示される歯車アイコンをクリックします。このセクションでは、各タブで使用可能な設定について説明します。 + +### Overlays +このタブは、セグメンテーションマスクまたはバウンディングボックスとともにログ記録された画像および点群に対して表示されます。 +- オーバーレイを名前で検索およびフィルタリングします。 +- オーバーレイの色をカスタマイズします。 + +### Sync +このタブは、 Workspace およびセクションの 設定 に表示されます。 +- **Sync slider by key**: セクション内のビデオのステップスライダーを同期して動かすかどうかを 設定 します。 +- **Autoplay videos**: ページが読み込まれたときにビデオを自動再生するかどうかを 設定 します。 +- **Loop videos**: セクション内のビデオを自動的に再開し、停止するまで連続再生するかどうかを 設定 します。セクションレベルではカスタマイズできません。 Workspace にビデオメディアパネルがある場合にのみ表示されます。 + +### Display +パネル全体の見た目と 振る舞い をカスタマイズします。 +- パネルのタイトルを 設定 します。 +- 可視化するメディアキーを選択します。 +- パネルのスライダーと再生動作をカスタマイズします。 + - スライダーキーを 設定 します。デフォルトは **Step** です。 + - **Stride length** を、スライダーをクリックするごとに進むステップ数に設定します。 + - **Snap to existing step** のオン/オフを切り替えます。オンの場合、ステッパーは **Stride length** 分進んだ後、次に存在するステップに移動します。オフの場合、存在するステップと一致しなくても **Stride length** 分だけ進みます。 +- **Images**: スムージングのオン/オフを切り替えます。 +- **3d objects**: 背景色とポイントの色を 設定 します。 + +### Layout +パネルの個々のアイテムの表示をカスタマイズします。 +- **Grid mode** のオン/オフを切り替えます。 + - オンにすると、各アイテムの上にプロットするカスタムの X 軸と Y 軸を選択できます。各行に複数のアイテムが表示され、表示する行数を制限できます。 + - オフにすると、パネルのコンテンツに使用する列数をカスタマイズでき、パネルのコンテンツ(デフォルトは **Run**)を 設定 できます。 +- 必要に応じて、パネルに含める **Max runs to include**(含める最大 Runs 数)を制限します。 +- 必要に応じて、1つの Run あたりに含めるメディアアイテム数を制限する **Media display limit** を指定します。 +- **Images and videos**: フルサイズメディア表示のオン/オフを切り替えます。 +- **Images**: **Fit media** がオンの場合、パネルのサイズに合わせてメディアのサイズを調整します。 +- **Point clouds**: デフォルトの左手系ではなく、ポイントをプロットするための右手系をオプションで有効にします。 + +### セクション内のすべてのメディアパネル +セクション内のすべてのメディアパネルのデフォルト 設定 をカスタマイズし、メディアパネルに関する Workspace の 設定 を上書きするには: +1. セクションの歯車アイコンをクリックして 設定 を開きます。 +1. **Media settings** をクリックします。 +1. 表示されたドロワー内で、**Display**、**Layout**、または **Sync** タブをクリックして、セクションのデフォルトメディア 設定 を行います。画像、ビデオ、オーディオ、および 3D オブジェクトの 設定 が可能です。表示される 設定 は、セクション内の現在のメディアパネルによって異なります。 + +特定の **Display** または **Layout** メディア 設定 の詳細については、[メディアパネルの設定](#configure-a-media-panel) を参照してください。**Sync** タブはセクションまたは Workspace レベルでのみ利用可能であり、個別のメディアパネルでは利用できません。 + +**Step slider syncing** がオンの場合、同じステップスライダーを持つセクション内のメディアパネルは同期が保たれます。ステップスライダーの同期をオンにするには: + + 1. **Sync** タブをクリックします。 + 2. **Sync slider by key (Step)** をオンにします。 + +### Workspace 内のすべてのメディアパネル +Workspace 内のすべてのメディアパネルのデフォルト 設定 をカスタマイズするには: +1. **Settings** というラベルの付いた歯車アイコンがある Workspace の 設定 をクリックします。 +1. **Media settings** をクリックします。 +1. 表示されたドロワー内で、**Display** または **Layout** タブをクリックして、 Workspace のデフォルトメディア 設定 を行います。画像、ビデオ、オーディオ、および 3D オブジェクトの 設定 が可能です。表示される 設定 は、 Workspace 内の現在のメディアパネルによって異なります。 + +**Sync** タブを除き、各 設定 の詳細については [メディアパネルの設定](#configure-a-media-panel) を参照してください。**Sync** タブはセクションまたは Workspace レベルでのみ利用可能であり、個別のメディアパネルでは利用できません。 + +**Step slider syncing** がオンの場合、同じステップスライダーを持つセクション内のメディアパネルは同期が保たれます。ステップスライダーの同期をオンにするには: + +1. **Sync** タブをクリックします。 +1. **Sync slider by key (Step)** をオンにします。 + +各 設定 の詳細については、[メディアパネルの設定](#configure-a-media-panel) を参照してください。 + +## メディアパネルの操作 +- メディアパネルをクリックすると、フルスクリーンモードで表示されます。パネル上部にある矢印ボタンをクリックすると、フルスクリーンモードが終了します。 +- フルスクリーンモードを終了せずにセクションのパネル間を移動するには、パネルの下にある **Previous** および **Next** ボタン、または左右の矢印キーを使用します。 +- メディアパネルのステップスライダーを動かすには、**CMD + 左右の矢印キー** (macOS) または **Ctrl + 左右の矢印キー** (Windows / Linux) を使用します。セクションまたは Workspace で **Sync slider by key** がオンになっている場合、1つのメディアパネルでステップスライダーを動かすと、同じステップスライダーキーを持つ他のメディアパネルのステップスライダーも連動して動きます。 +- メディアパネルの上部にあるステッパーを使用して、メディア Runs をステップ実行します。ステップスライダーを動かすには、UI コントロールを使用します。 +- メディアコントロールを使用して、ビデオ再生の再生、一時停止、または停止を行います。**Sync video playback** がオンの場合、セクション内のすべてのビデオが同期して再生されます。**Loop videos** がオンの場合、セクション内のビデオは自動的に再開し、停止するまで連続再生されます。 +- メディアパネルを 設定 するには、パネルにホバーして上部の歯車アイコンをクリックします。 +- セグメンテーションマスクとともにログ記録された画像の場合、その外観をカスタマイズしたり、それぞれのオン/オフを切り替えたりできます。パネルにホバーし、下側の歯車アイコンをクリックします。 +- バウンディングボックスとともにログ記録された画像または点群の場合、その外観をカスタマイズしたり、それぞれのオン/オフを切り替えたりできます。パネルにホバーし、下側の歯車アイコンをクリックします。 \ No newline at end of file diff --git a/ja/models/app/features/panels/parallel-coordinates.mdx b/ja/models/app/features/panels/parallel-coordinates.mdx index b49e5694d0..f5b4b8b200 100644 --- a/ja/models/app/features/panels/parallel-coordinates.mdx +++ b/ja/models/app/features/panels/parallel-coordinates.mdx @@ -1,31 +1,31 @@ --- -title: 並列座標 -description: 機械学習実験間で結果を比較する +title: パラレル座標プロット +description: 機械学習の Experiments 間で結果を比較する --- -大規模なハイパーパラメーターとモデルメトリクスの関係を一目で要約できるのがパラレル座標チャートです。 +Parallel coordinates (並列座標)チャートは、多数の ハイパーパラメーター と モデル メトリクス の関係を一目で要約します。 - + Parallel coordinates plot -* **軸**: [`wandb.config`](/ja/models/track/config/) からのさまざまなハイパーパラメーターと [`wandb.log`](/ja/models/track/log/) からのメトリクス。 -* **ライン**: 各ラインは単一の run を表します。ラインにマウスを合わせると、その run の詳細がツールチップで表示されます。現在のフィルターに一致するすべてのラインが表示されますが、目をオフにすると、ラインはグレー表示されます。 +* **Axes(軸)**: [`wandb.Run.config`](/models/evaluate-models/) からの異なる ハイパーパラメーター や、[`wandb.Run.log()`](/models/evaluate-models/) からの メトリクス を表します。 +* **Lines(線)**: 各線は単一の Run を表します。線の上にマウスを置くと、その Run の詳細を示すツールチップが表示されます。現在のフィルターに一致するすべての線が表示されますが、目のアイコンをオフにすると、それらの線はグレーアウトされます。 -## パラレル座標パネルを作成する +## parallel coordinates パネルの作成 -1. ワークスペースのランディングページへ移動 -2. **Add Panels** をクリック -3. **Parallel coordinates** を選択 +1. Workspace のランディングページに移動します +2. **Add Panels** をクリックします +3. **Parallel coordinates** を選択します -## パネル設定 +## パネル 設定 -パネルを設定するには、パネルの右上にある編集ボタンをクリックします。 +パネルを 設定 するには、パネルの右上隅にある編集ボタンをクリックします。 -* **ツールチップ**: ホバーすると、各 run の情報が表示されます -* **タイトル**: 軸のタイトルを編集して、より読みやすくします -* **勾配**: グラデーションを好きな色の範囲にカスタマイズ -* **ログスケール**: 各軸は個別にログスケールで表示するように設定できます -* **軸の反転**: 軸の方向を切り替え—正確性と損失を両方持つカラムがあるときに便利です +* **Tooltip**: ホバー時に、各 Run に関する 情報 を含む凡例が表示されます +* **Titles**: 軸のタイトルを読みやすく編集できます +* **Gradient**: 勾配 をお好みの色範囲にカスタマイズできます +* **Log scale**: 各軸を個別にログスケールで表示するように設定できます +* **Flip axis**: 軸の方向を切り替えます。これは、精度(accuracy)と損失(loss)の両方の列がある場合に便利です -[ライブのパラレル座標パネルと対話する](https://app.wandb.ai/example-team/sweep-demo/reports/Zoom-in-on-Parallel-Coordinates-Charts--Vmlldzo5MTQ4Nw) \ No newline at end of file +[ライブ状態の parallel coordinates パネルを操作する](https://app.wandb.ai/example-team/sweep-demo/reports/Zoom-in-on-Parallel-Coordinates-Charts--Vmlldzo5MTQ4Nw) \ No newline at end of file diff --git a/ja/models/app/features/panels/parameter-importance.mdx b/ja/models/app/features/panels/parameter-importance.mdx index 0cd66d075a..94476ebbfc 100644 --- a/ja/models/app/features/panels/parameter-importance.mdx +++ b/ja/models/app/features/panels/parameter-importance.mdx @@ -1,37 +1,40 @@ --- title: パラメータの重要度 -description: モデルのハイパーパラメーターと出力メトリクスの関係を視覚化する +description: モデルの ハイパーパラメーター と出力 メトリクス の間の関係を可視化します --- -ハイパーパラメーターがどのようにメトリクスの望ましい値の予測に役立ったか、また高い相関があったかを発見しましょう。 +どのハイパーパラメーターがメトリクスの望ましい値を最もよく予測し、高い相関関係にあるかを見つけ出します。 + - + Parameter importance panel -**相関** とは、ハイパーパラメーターと選択されたメトリクスの線形相関を意味します(この場合は val_loss)。したがって、高い相関はハイパーパラメーターの値が高いとき、メトリクスの値も高くなり、その逆もまた然りであることを示します。相関は注目すべき素晴らしいメトリクスですが、入力間の二次の相互作用を捉えることはできず、非常に異なる範囲の入力を比較することが煩雑になる可能性があります。 +**Correlation(相関)** は、ハイパーパラメーターと選択したメトリクス(この場合は val_loss)の間の線形相関です。高い相関があるということは、ハイパーパラメーターの値が高いときにメトリクスの値も高くなる(またはその逆)ことを意味します。相関は注目すべき優れた指標ですが、入力間の二次的な相互作用を捉えることはできず、範囲が大きく異なる入力を比較する場合には煩雑になることがあります。 -そのため、W&Bは **重要度** メトリクスも計算します。W&Bはハイパーパラメーターを入力として、ランダムフォレストをトレーニングし、メトリクスをターゲット出力として、ランダムフォレストの特徴重要度値をレポートします。 +そのため、W&B は **importance(重要度)** メトリクスも算出します。W&B はハイパーパラメーターを入力、メトリクスをターゲット出力としてランダムフォレストをトレーニングし、そのランダムフォレストの機能重要度の値を報告します。 -この手法のアイデアは、[Jeremy Howard](https://twitter.com/jeremyphoward) との会話からインスピレーションを受け、Fast.aiにおいてハイパーパラメータースペースを探るためのランダムフォレストの特徴重要度の使用を推進してきたことから生まれました。W&Bはこの分析の背後にある動機を学ぶために、[この講義](http://course18.fast.ai/lessonsml1/lesson4.html) (および[これらのノート](https://forums.fast.ai/t/wiki-lesson-thread-lesson-4/7540))をチェックすることを強くお勧めします。 +この手法のアイデアは、[Fast.ai](https://fast.ai) でハイパーパラメーター空間を探索するためにランダムフォレストの機能重要度を使用する先駆者である [Jeremy Howard](https://twitter.com/jeremyphoward) 氏との会話から着想を得ました。W&B は、この分析の背景にある動機について詳しく学ぶために、この [レッスン](https://course18.fast.ai/lessonsml1/lesson4.html) (およびこちらの [ノート](https://forums.fast.ai/t/wiki-lesson-thread-lesson-4/7540))をチェックすることを強くお勧めします。 -ハイパーパラメーター重要度パネルは、高い相関のハイパーパラメーター間の複雑な相互作用を解きほぐします。そして、モデルのパフォーマンスを予測する上で、どのハイパーパラメーターが最も重要であるかを示すことによって、ハイパーパラメーターの探索を調整するのに役立ちます。 +ハイパーパラメーターの重要度パネルは、高い相関関係にあるハイパーパラメーター間の複雑な相互作用を解きほぐします。そうすることで、どのハイパーパラメーターがモデルのパフォーマンス予測において最も重要であるかを示し、ハイパーパラメーター探索の微調整を支援します。 ## ハイパーパラメーター重要度パネルの作成 -1. W&B プロジェクトに移動します。 +1. W&B の **Projects** に移動します。 2. **Add panels** ボタンを選択します。 3. **CHARTS** ドロップダウンを展開し、ドロップダウンから **Parallel coordinates** を選択します。 + -空のパネルが表示される場合、run がグループ化されていないことを確認してください +パネルが空で表示される場合は、Runs がグループ化解除されていることを確認してください。 + - Using automatic parameter visualization + Automatic parameter visualization -パラメーターマネージャーを使用して、表示および非表示のパラメーターを手動で設定できます。 +パラメーターマネージャーを使用すると、表示・非表示にするパラメーターを手動で設定できます。 Manually setting the visible and hidden fields @@ -40,33 +43,34 @@ description: モデルのハイパーパラメーターと出力メトリクス ## ハイパーパラメーター重要度パネルの解釈 - + Feature importance analysis -このパネルは、トレーニングスクリプト内で [wandb.config](/ja/models/track/config/) オブジェクトに渡されたすべてのパラメーターを表示します。次に、これらのconfigパラメーターの特徴重要度と、それが選択されたモデルメトリクス(この場合は `val_loss`)との相関を示します。 +このパネルには、トレーニングスクリプト内の [wandb.Run.config](/models/track/config/) オブジェクトに渡されたすべてのパラメータが表示されます。次に、選択したモデルメトリクス(この場合は `val_loss`)に対する、これらの config パラメータの機能重要度と相関が表示されます。 -### 重要度 +### 重要度 (Importance) -重要度列は、選択したメトリクスを予測する際に、各ハイパーパラメーターがどの程度役立ったかを示します。多数のハイパーパラメーターを調整し始めて、それらの中からさらなる探索の価値があるものを特定するためにこのプロットを使用するシナリオを想像してみてください。その後の Sweeps は、最も重要なハイパーパラメーターに限定し、より良いモデルをより速く、安価に見つけることができます。 +重要度の列は、各ハイパーパラメーターが選択したメトリクスの予測にどの程度役立ったかを示します。膨大な数のハイパーパラメーターのチューニングを開始し、このプロットを使用してさらなる探索に値するものを絞り込むシナリオを想像してください。その後の Sweeps を最も重要なハイパーパラメーターのみに限定することで、より良いモデルをより速く、より安価に見つけることができます。 -W&Bは、木構造モデルを使用して重要度を計算します。木構造モデルは、線形モデルと比べてカテゴリカルデータや正規化されていないデータに対してより寛容です。 +W&B は、線形モデルではなくツリーベースのモデルを使用して重要度を算出します。これは、ツリーベースのモデルの方がカテゴリデータや正規化されていないデータに対して寛容であるためです。 -上記の画像では、`epochs, learning_rate, batch_size` と `weight_decay` がかなり重要であることがわかります。 +上の画像では、`epochs, learning_rate, batch_size`、および `weight_decay` がかなり重要であったことがわかります。 + +### 相関 (Correlations) -### 相関 +相関は、個々のハイパーパラメーターとメトリクス値の間の線形関係を捉えます。これは、SGD オプティマイザーなどのハイパーパラメーターの使用と `val_loss` の間に有意な関係があるかどうかという問いに答えます(この場合、答えは「はい」です)。相関値の範囲は -1 から 1 で、正の値は正の線形相関、負の値は負の線形相関を表し、0 は相関がないことを表します。一般に、いずれかの方向で 0.7 を超える値は強い相関を示します。 -相関は、個々のハイパーパラメーターとメトリクスの値との間の線形関係を捉えます。これにより、SGDオプティマイザーなどのハイパーパラメーターの使用と `val_loss` 間に有意な関係があるかどうかという問題に答えます(この場合、答えは「はい」です)。相関値は-1から1の範囲であり、正の値は正の線形相関を、負の値は負の線形相関を示し、0の値は相関がないことを示します。一般的に、どちらの方向でも0.7を超える値は強い相関を示します。 +このグラフを使用して、メトリクスに対してより高い相関を持つ値をさらに探索したり(この場合、rmsprop や nadam よりも stochastic gradient descent や adam を選択するなど)、より多くのエポックでトレーニングしたりすることができます。 -このグラフを使用して、メトリクスと高い相関のある値(この場合は確率的勾配降下法やadamを選択し、rmspropやnadamよりも優先することがあります)をさらに調査したり、より多くのエポックでトレーニングしたりすることができます。 -* 相関は関連の証拠を示しますが、必ずしも因果関係を示すわけではありません。 -* 相関は外れ値に敏感であり、特に試されたハイパーパラメーターのサンプルサイズが小さい場合は、強い関係を中程度のものに変える可能性があります。 -* 最後に、相関はハイパーパラメーターとメトリクス間の線形関係のみを捉えます。強い多項式関係がある場合、相関ではそれを捉えられません。 +* 相関は関連性の証拠を示すものであり、必ずしも因果関係を示すものではありません。 +* 相関は外れ値に敏感であり、特に試行したハイパーパラメーターのサンプルサイズが小さい場合、強い関係を中程度の関係に変えてしまう可能性があります。 +* 最後に、相関はハイパーパラメーターとメトリクスの間の線形関係のみを捉えます。強い多項式関係がある場合、それは相関では捉えられません。 -重要度と相関の違いは、重要度がハイパーパラメーター間の相互作用を考慮に入れる一方で、相関は個々のハイパーパラメーターがメトリクスに与える影響のみを測定するという事実から生じます。第二に、相関は線形関係のみを捉えるのに対し、重要度はより複雑な関係を捉えることができます。 +重要度と相関の間の乖離は、重要度がハイパーパラメーター間の相互作用を考慮するのに対し、相関は個々のハイパーパラメーターがメトリクス値に与える影響のみを測定するという事実に起因します。第二に、相関は線形関係のみを捉えるのに対し、重要度はより複雑な関係を捉えることができます。 -見てわかるように、重要度と相関はどちらもハイパーパラメーターがモデルのパフォーマンスにどのように影響するかを理解するための強力なツールです。 \ No newline at end of file +このように、重要度と相関の両方は、ハイパーパラメーターがモデルのパフォーマンスにどのように影響するかを理解するための強力なツールです。 \ No newline at end of file diff --git a/ja/models/app/features/panels/query-panels/embedding-projector.mdx b/ja/models/app/features/panels/query-panels/embedding-projector.mdx index ab0c72efb5..b0dae09e27 100644 --- a/ja/models/app/features/panels/query-panels/embedding-projector.mdx +++ b/ja/models/app/features/panels/query-panels/embedding-projector.mdx @@ -1,115 +1,115 @@ --- title: オブジェクトを埋め込む -description: W&B の Embedding Projector を使用すると、ユーザー は PCA、UMAP、t-SNE などの一般的な次元削減アルゴリズムを用いて多次元埋め込みを - 2D 平面上にプロットできます。 +description: W&B の Embedding Projector を使用すると、PCA、UMAP、t-SNE などの一般的な次元削減アルゴリズムを使用して、多次元の埋め込み(embeddings)を + 2D 平面にプロットできます。 --- - + Embedding projector -[Embeddings](https://developers.google.com/machine-learning/crash-course/embeddings/video-lecture) はオブジェクト(人物、画像、投稿、単語など)を数字のリストで表現するために使用されます。これを _ベクトル_ と呼ぶこともあります。機械学習やデータサイエンスのユースケースでは、Embeddings は様々な手法を用いて生成でき、幅広いアプリケーションで利用されます。このページでは、読者が Embeddings に精通しており、W&B 内でそれらを視覚的に分析することに関心があることを前提としています。 +[Embeddings](https://developers.google.com/machine-learning/crash-course/embeddings/video-lecture) は、オブジェクト(人、画像、投稿、単語など)を数値のリスト( _ベクトル_ と呼ばれることもあります)で表現するために使用されます。機械学習やデータサイエンスのユースケースでは、さまざまなアプリケーションにわたって多様なアプローチで embeddings を生成できます。このページでは、読者が embeddings に精通しており、W&B 内でそれらを視覚的に分析することに関心があることを前提としています。 ## Embedding の例 -- [ライブインタラクティブデモレポート](https://wandb.ai/timssweeney/toy_datasets/reports/Feature-Report-W-B-Embeddings-Projector--VmlldzoxMjg2MjY4?accessToken=bo36zrgl0gref1th5nj59nrft9rc4r71s53zr2qvqlz68jwn8d8yyjdz73cqfyhq) -- [Colab の例](https://colab.research.google.com/drive/1DaKL4lZVh3ETyYEM1oJ46ffjpGs8glXA#scrollTo=D--9i6-gXBm_). +- [ライブ・インタラクティブ・デモ・レポート](https://wandb.ai/timssweeney/toy_datasets/reports/Feature-Report-W-B-Embeddings-Projector--VmlldzoxMjg2MjY4?accessToken=bo36zrgl0gref1th5nj59nrft9rc4r71s53zr2qvqlz68jwn8d8yyjdz73cqfyhq) +- [Example Colab](https://colab.research.google.com/drive/1DaKL4lZVh3ETyYEM1oJ46ffjpGs8glXA#scrollTo=D--9i6-gXBm_) -### ハローワールド +### Hello World -W&B を使用すると、`wandb.Table` クラスを使用して Embeddings をログできます。以下は、5 次元からなる 3 つの Embeddings の例です。 +W&B では、 `wandb.Table` クラスを使用して embeddings を ログ に記録できます。それぞれ 5 つの次元を持つ 3 つの embeddings の次の例を考えてみましょう。 ```python import wandb -wandb.init(project="embedding_tutorial") -embeddings = [ - # D1 D2 D3 D4 D5 - [0.2, 0.4, 0.1, 0.7, 0.5], # embedding 1 - [0.3, 0.1, 0.9, 0.2, 0.7], # embedding 2 - [0.4, 0.5, 0.2, 0.2, 0.1], # embedding 3 -] -wandb.log( - {"embeddings": wandb.Table(columns=["D1", "D2", "D3", "D4", "D5"], data=embeddings)} -) -wandb.finish() +# プロジェクト "embedding_tutorial" で run を初期化 +with wandb.init(project="embedding_tutorial") as run: + embeddings = [ + # D1 D2 D3 D4 D5 + [0.2, 0.4, 0.1, 0.7, 0.5], # embedding 1 + [0.3, 0.1, 0.9, 0.2, 0.7], # embedding 2 + [0.4, 0.5, 0.2, 0.2, 0.1], # embedding 3 + ] + run.log( + {"embeddings": wandb.Table(columns=["D1", "D2", "D3", "D4", "D5"], data=embeddings)} + ) + run.finish() ``` -上記のコードを実行すると、W&B ダッシュボードにデータを含む新しいテーブルが作成されます。右上のパネルセレクタから `2D Projection` を選択して Embeddings を 2 次元でプロットすることができます。デフォルトで賢明な設定が自動的に選択されますが、設定メニューから簡単に上書きできます。この例では、利用可能な 5 つの数値次元をすべて自動的に使用しています。 +上記のコードを実行すると、W&B の ダッシュボード に データ を含む新しい テーブル が表示されます。右上の パネル セレクターから `2D Projection` を選択すると、embeddings を 2 次元でプロットできます。最適なデフォルト設定が自動的に選択されますが、ギアアイコンをクリックしてアクセスできる設定メニューで簡単に変更できます。この例では、利用可能な 5 つの数値次元すべてが自動的に使用されます。 - + 2D projection example -### 数字のMNIST +### Digits MNIST -上記の例では Embeddings の基本的なログ方法を示しましたが、通常はもっと多くの次元とサンプルを扱います。UCI の手書き数字データセット [UCI ML hand-written digits dataset](https://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits)を使って、[SciKit-Learn](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) を通じて提供される MNIST 数字データセットを考えてみましょう。このデータセットには 64 次元を持つ 1797 のレコードが含まれています。この問題は10クラスの分類ユースケースです。また、可視化のために入力データを画像に変換することもできます。 +上記の例は embeddings を ログ に記録する基本的な仕組みを示していますが、通常はより多くの次元とサンプルを扱います。 [SciKit-Learn](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) 経由で利用可能な MNIST Digits データセット( [UCI ML 手書き数字データセット](https://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits) )を例に考えてみましょう。この データセット には 1797 件のレコードがあり、それぞれ 64 の次元を持っています。この問題は 10 クラスの分類ユースケースです。入力データを可視化のために画像に変換することもできます。 ```python import wandb from sklearn.datasets import load_digits -wandb.init(project="embedding_tutorial") +with wandb.init(project="embedding_tutorial") as run: -# データセットをロードする -ds = load_digits(as_frame=True) -df = ds.data + # データセットのロード + ds = load_digits(as_frame=True) + df = ds.data -# "target" カラムを作成する -df["target"] = ds.target.astype(str) -cols = df.columns.tolist() -df = df[cols[-1:] + cols[:-1]] + # "target" 列の作成 + df["target"] = ds.target.astype(str) + cols = df.columns.tolist() + df = df[cols[-1:] + cols[:-1]] -# "image" カラムを作成する -df["image"] = df.apply( - lambda row: wandb.Image(row[1:].values.reshape(8, 8) / 16.0), axis=1 -) -cols = df.columns.tolist() -df = df[cols[-1:] + cols[:-1]] + # "image" 列の作成 + df["image"] = df.apply( + lambda row: wandb.Image(row[1:].values.reshape(8, 8) / 16.0), axis=1 + ) + cols = df.columns.tolist() + df = df[cols[-1:] + cols[:-1]] -wandb.log({"digits": df}) -wandb.finish() + run.log({"digits": df}) ``` -上記のコードを実行した後、再び UI にテーブルが表示されます。 `2D Projection` を選択することで、Embedding の定義、色付け、アルゴリズム(PCA, UMAP, t-SNE)、アルゴリズムのパラメータ、さらにはオーバーレイ(この場合、点の上にマウスを置くと画像が表示されます)の設定を行うことができます。この特定のケースでは、すべて「スマートデフォルト」が設定されており、`2D Projection` をクリックするだけで非常に類似したものが見えるはずです。([この例を試してみてください](https://wandb.ai/timssweeney/embedding_tutorial/runs/k6guxhum?workspace=user-timssweeney))。 +上記のコードを実行すると、再び UI に テーブル が表示されます。 `2D Projection` を選択することで、embedding の定義、色付け、アルゴリズム(PCA、UMAP、t-SNE)、アルゴリズム パラメータ 、さらにはオーバーレイ(この例ではポイントをホバーしたときに画像を表示する)を 設定 できます。この特定のケースでは、これらはすべて「スマートなデフォルト設定」になっており、 `2D Projection` を 1 回クリックするだけで、これに近いものが表示されるはずです。( [この embedding チュートリアルの例を操作する](https://wandb.ai/timssweeney/embedding_tutorial/runs/k6guxhum?workspace=user-timssweeney) )。 - + MNIST digits projection -## ログオプション +## ログ記録のオプション -Embeddings はさまざまなフォーマットでログすることができます: +embeddings はいくつかの異なる形式で ログ に記録できます。 -1. **単一の埋め込みカラム:** データがすでに「行列」形式になっていることが多いです。この場合、カラムのデータ型は `list[int]`, `list[float]`, または `np.ndarray` にすることができます。 -2. **複数の数値カラム:** 上記の2つの例では、各次元に対してカラムを作成するこの方法を使用します。現在、セルには Python の `int` または `float` が受け入れられます。 +1. **単一の Embedding 列:** データがすでに「行列」のような形式になっている場合が多いです。この場合、単一の embedding 列を作成できます。セルのデータの型は `list[int]` 、 `list[float]` 、または `np.ndarray` になります。 +2. **複数の数値列:** 上記の 2 つの例では、このアプローチを使用して、各次元に対して列を作成しました。現在、セルの値として python の `int` または `float` を受け付けています。 - Single Embedding Column + Single embedding column - Many Numeric Columns + Multiple numeric columns -さらに、他のすべてのテーブルと同様に、テーブルを構築する方法について多くのオプションがあります: +さらに、すべての テーブル と同様に、テーブル を構築する方法には多くのオプションがあります。 -1. **データフレーム** から直接 `wandb.Table(dataframe=df)` を使用して -2. **データのリスト** から直接 `wandb.Table(data=[...], columns=[...])` を使用して -3. **行単位で段階的に** テーブルを構築する(コード内にループがある場合に最適)。`table.add_data(...)` を使ってテーブルに行を追加します。 -4. テーブルに **埋め込みカラム** を追加する(Embedding の形式で予測のリストがある場合に最適): `table.add_col("col_name", ...)` -5. **計算済みカラム** を追加する(関数やモデルをテーブル全体に適用したい場合に最適): `table.add_computed_columns(lambda row, ndx: {"embedding": model.predict(row)})` +1. `wandb.Table(dataframe=df)` を使用して **dataframe** から直接作成する +2. `wandb.Table(data=[...], columns=[...])` を使用して **データリスト** から直接作成する +3. **1行ずつ増分的に** テーブルを構築する(コード内にループがある場合に最適)。 `table.add_data(...)` を使用してテーブルに行を追加します。 +4. テーブルに **embedding 列** を追加する(embeddings 形式の予測リストがある場合に最適): `table.add_col("col_name", ...)` +5. **計算列** を追加する(テーブル全体にマップしたい関数や モデル がある場合に最適): `table.add_computed_columns(lambda row, ndx: {"embedding": model.predict(row)})` -## プロットオプション +## プロットのオプション -`2D Projection` を選択した後、ギアアイコンをクリックしてレンダリング設定を編集できます。上記のカラムの選択に加えて、興味のあるアルゴリズム(および必要なパラメータ)を選ぶことができます。以下に、UMAP と t-SNE の各パラメータが表示されています。 +`2D Projection` を選択した後、ギアアイコンをクリックしてレンダリング設定を編集できます。対象の列を選択する(上記参照)ことに加え、目的のアルゴリズム(および必要な パラメータ )を選択できます。以下に、それぞれ UMAP と t-SNE の パラメータ を示します。 - + UMAP parameters - + t-SNE parameters -注: 現在、すべての 3 つのアルゴリズムに対して、ランダムなサブセット 1000 行と 50 次元にダウンサンプリングされます。 +注:現在、3つのアルゴリズムすべてにおいて、ランダムな 1000 行、50 次元の サブセット にダウンサンプリングされます。 \ No newline at end of file diff --git a/ja/models/app/features/panels/run-comparer.mdx b/ja/models/app/features/panels/run-comparer.mdx index 979473d3b4..27f9c803fb 100644 --- a/ja/models/app/features/panels/run-comparer.mdx +++ b/ja/models/app/features/panels/run-comparer.mdx @@ -1,16 +1,26 @@ --- -title: run メトリクスを比較する +title: Run メトリクスを比較する description: 複数の run 間でメトリクスを比較する --- -Run Comparer を使用して、異なる run 間でメトリクスがどのように異なるかを確認します。 +Run Comparer を使用すると、Project 内の Runs 間の違いや共通点を簡単に確認できます。 - - - +## Run Comparer パネルの追加 -1. ページの右上にある **Add panels** ボタンを選択します。 -2. 表示される左側のパネルから Evaluation ドロップダウンを展開します。 -3. **Run comparer** を選択します。 +1. ページ右上の **Add panels** ボタンを選択します。 +2. **Evaluation** セクションから、**Run comparer** を選択します。 -**diff only** オプションを切り替えて、 run 間で値が同じ行を非表示にします。 \ No newline at end of file +## Run Comparer の使い方 +Run Comparer は、Project 内で表示されている最初の 10 個の Runs について、設定やログに記録された メトリクス を 1 列に 1 Run ずつ表示します。 + +- 比較する Runs を変更するには、左側の Runs リストで検索、フィルタリング、グループ化、またはソートを行います。Run Comparer は自動的に更新されます。 +- Run Comparer 上部の検索フィールドを使用して、設定の キー や、Python の バージョン、Run の作成時間などの メタデータ の キー をフィルタリングまたは検索できます。 +- 違いを素早く確認し、同一の値を非表示にするには、パネル上部の **Diff only** を切り替えます。 +- 列の幅や行の高さを調整するには、パネル上部のフォーマットボタンを使用します。 +- 設定や メトリクス の値をコピーするには、値の上にマウスを置き、コピーボタンをクリックします。画面に表示しきれないほど長い値であっても、値全体がコピーされます。 + + +デフォルトでは、Run Comparer は [`job_type`](/models/ref/python/functions/init) の値が異なる Runs を区別しません。つまり、Project 内で本来比較対象にならない Runs 同士を比較してしまう可能性があります。例えば、トレーニングの Run と モデルの評価 の Run を比較することができてしまいます。トレーニングの Run には Run の ログ、ハイパーパラメーター、トレーニングの損失 メトリクス、そして モデル 自体が含まれる場合があります。一方で評価の Run は、その モデル を使用して新しい トレーニングデータ に対する モデル のパフォーマンスをチェックします。 + +Runs Table で Runs のリストを検索、フィルタリング、グループ化、またはソートすると、Run Comparer は自動的に更新され、最初の 10 個の Runs を比較します。`job_type` でリストをフィルタリングやソートするなど、Runs Table 内でフィルタリングや検索を行い、同種の Runs を比較するようにしてください。詳細は [Runs のフィルタリング](/models/runs/filter-runs/) を参照してください。 + \ No newline at end of file diff --git a/ja/models/app/features/panels/scatter-plot.mdx b/ja/models/app/features/panels/scatter-plot.mdx index 991bce1365..dfc63f272f 100644 --- a/ja/models/app/features/panels/scatter-plot.mdx +++ b/ja/models/app/features/panels/scatter-plot.mdx @@ -2,36 +2,36 @@ title: 散布図 --- -このページでは、W&B で散布図を使用する方法を示します。 +このページでは、W&B で散布図(scatter plots)を使用する方法を説明します。 ## ユースケース -散布図を使用して、複数の runs を比較し、実験のパフォーマンスを視覚化します。 +散布図を使用して、複数の Runs を比較し、実験のパフォーマンスを可視化します: -- 最小値、最大値、および平均値のプロットラインを表示する。 +- 最小値、最大値、平均値のラインをプロットする。 - メタデータのツールチップをカスタマイズする。 - ポイントの色を制御する。 - 軸の範囲を調整する。 -- 軸に対して対数スケールを使用する。 +- 軸にログスケール(対数スケール)を使用する。 ## 例 -次の例では、異なるモデルの数週間にわたる実験による検証精度を表示する散布図を示しています。ツールチップには、バッチサイズ、ドロップアウト、および軸の値が含まれています。また、検証精度のランニング平均を示す線も表示されます。 +以下の例は、数週間にわたる実験における異なるモデルの検証精度(validation accuracy)を表示する散布図です。ツールチップには バッチサイズ 、ドロップアウト、および軸の値が含まれています。また、ラインは検証精度の移動平均を示しています。 -[ライブ例を見る →](https://app.wandb.ai/l2k2/l2k/reports?view=carey%2FScatter%20Plot) +[ライブサンプルを見る →](https://app.wandb.ai/l2k2/l2k/reports?view=carey%2FScatter%20Plot) - 数週間にわたる実験による異なるモデルの検証精度の例 + Validation accuracy scatter plot ## 散布図を作成する -W&B UI で散布図を作成するには: +W&B の UI で散布図を作成するには: 1. **Workspaces** タブに移動します。 2. **Charts** パネルで、アクションメニュー `...` をクリックします。 -3. ポップアップメニューから、**Add panels** を選択します。 -4. **Add panels** メニューで、**Scatter plot** を選択します。 -5. プロットしたいデータを表示するために `x` および `y` 軸を設定します。必要に応じて、軸の最大および最小範囲を設定するか、`z` 軸を追加してください。 +3. ポップアップメニューから **Add panels** を選択します。 +4. **Add panels** メニューで **Scatter plot** を選択します。 +5. 表示したいデータをプロットするために `x` 軸と `y` 軸を設定します。オプションで、軸の最大・最小範囲を設定したり、 `z` 軸を追加したりできます。 6. **Apply** をクリックして散布図を作成します。 -7. 新しい散布図を Charts パネルで確認します。 \ No newline at end of file +7. Charts パネルで新しい散布図を確認します。 \ No newline at end of file diff --git a/ja/models/app/keyboard-shortcuts.mdx b/ja/models/app/keyboard-shortcuts.mdx new file mode 100644 index 0000000000..00fda56b39 --- /dev/null +++ b/ja/models/app/keyboard-shortcuts.mdx @@ -0,0 +1,62 @@ +--- +title: キーボードショートカット +description: thoughtful philosophy dispensing... W&B で利用可能なキーボードショートカットについて説明します。 +--- + +import LEETShortcuts from "/snippets/en/_includes/leet-keyboard-shortcuts.mdx"; + +W&B では、Experiments 、 Workspace 、 data をより効率的に操作・ナビゲートするためのキーボードショートカットをサポートしています。このリファレンスガイドでは、 W&B App および W&B LEET (Lightweight Experiment Exploration Tool) ターミナル UI のキーボードショートカットについて説明します。 + + + + +これらのキーボードショートカットは W&B App 内で機能します。 + +## Workspace Management + +| ショートカット | 説明 | +|----------|-------------| +| **Cmd+Z** (macOS) / **Ctrl+Z** (Windows/Linux) | Workspace やパネルの変更など、 UI で行った操作を元に戻します。 | +| **Cmd+Shift+Z** (macOS) / **Ctrl+Y** (Windows/Linux) | Workspace で元に戻した操作をやり直します。 | + +## Navigation + +| ショートカット | 説明 | +|----------|-------------| +| **Tab** | インタラクティブな要素間を移動します。 | +| **Cmd+J** (macOS) / **Ctrl+J** (Windows/Linux) | サイドバーの Workspaces タブと Runs タブを切り替えます。 | +| **Cmd+K** (macOS) / **Ctrl+K** (Windows/Linux) | クイック検索ダイアログを開き、 Projects 、 Runs 、その他のリソースを検索します。 | +| **Esc** | W&B App 全体で、パネルのフルスクリーン表示の終了、設定ドロワーの閉じる、クイック検索ダイアログの破棄、エディタの終了、またはその他のオーバーレイの破棄を行います。 | + +## Panel Navigation + +| ショートカット | 説明 | +|----------|-------------| +| **左矢印 / 右矢印** | フルスクリーンモード時に、セクション内のパネルを順に移動します。 | +| **Esc** | パネルのフルスクリーン表示を終了し、 Workspace に戻ります。 | +| **Cmd+左矢印 / Cmd+右矢印** (macOS)
**Ctrl+左矢印 / Ctrl+右矢印** (Windows/Linux) | メディアパネルをフルスクリーンで表示している際、ステップスライダーを移動させます。 | + +## Reports + +| ショートカット | 説明 | +|----------|-------------| +| **Delete / Backspace** | 選択したパネルグリッドを Report から削除します。 | +| **Enter** | Report 内で "/mark" と入力した後、 Markdown ブロックを挿入します。 | +| **Esc** | Report エディタを終了します。 | +| **Tab** | Report 内のインタラクティブな要素間を移動します。 | + +## Notes + +- ほとんどのキーボードショートカットは、 macOS では **Cmd** 、 Windows/Linux では **Ctrl** を使用します。 +- W&B App は、一部のブラウザのデフォルトショートカットに対してカスタムハンドリングを実装しています。 +- 一部のショートカットはコンテキスト依存であり、アプリケーションの特定の領域でのみ機能します。 + +
+ + +これらのキーボードショートカットは W&B LEET (Lightweight Experiment Exploration Tool) ターミナル UI で機能します。 LEET を起動するには、ターミナルで `wandb beta leet` を実行してください。詳細については、 [`wandb beta leet`](/models/ref/cli/wandb-beta/wandb-beta-leet/) を参照してください。 + + + + +
\ No newline at end of file diff --git a/ja/models/artifacts.mdx b/ja/models/artifacts.mdx index 6a87b497d6..b2c436febd 100644 --- a/ja/models/artifacts.mdx +++ b/ja/models/artifacts.mdx @@ -1,85 +1,87 @@ --- -title: Artifacts -description: W&B アーティファクトの概要、仕組み、および開始方法。 +title: Artifacts の概要 +description: W&B Artifacts の概要、その仕組み、および使用の 開始方法 について説明します。 --- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; +import { TryProductLink } from '/snippets/en/_includes/try-product-link.mdx'; - - - + + + -W&B Artifacts を使用して、[W&B Runs](/ja/models/runs/) の入力と出力としてデータをトラッキングし、バージョン管理します。たとえば、モデルトレーニングの run では、データセットを入力として受け取り、トレーニングされたモデルを出力として生成することがあります。ハイパーパラメーター、メタデータ、メトリクスを run にログし、アーティファクトを使用してモデルをトレーニングするために使用されるデータセットを入力としてログ、トラッキング、およびバージョン管理し、生成されたモデルのチェックポイントを出力として管理できます。 +W&B Artifacts を使用して、 [W&B Runs](/models/runs/) の入力および出力となるデータの追跡とバージョン管理を行います。例えば、モデルトレーニングの run では、データセットを入力として受け取り、トレーニング済みモデルを出力として生成します。ハイパーパラメーター、メタデータ、メトリクスを run にログ記録できるほか、 Artifacts を使用して、モデルのトレーニングに使用したデータセットを入力としてログ、追跡、バージョン管理し、別の Artifacts を出力としてのモデルチェックポイントに使用できます。 ## ユースケース -あなたの ML ワークフロー全体で、[runs](/ja/models/runs/) の入力と出力としてアーティファクトを使用することができます。データセット、モデル、または他のアーティファクトをプロセシングの入力として使用することができます。 +ML ワークフロー全体を通して、 [runs](/models/runs/) の入力および出力として Artifacts を使用できます。データセット、モデル、あるいは他の Artifacts をプロセッシングの入力として使用することが可能です。 -| ユースケース | 入力 | 出力 | +| ユースケース | 入力 | 出力 | |------------------------|-----------------------------|------------------------------| -| モデルトレーニング | データセット (トレーニングおよび検証データ) | トレーニングされたモデル | -| データセットの前処理 | データセット (生データ) | データセット (前処理済みデータ) | -| モデルの評価 | モデル + データセット (テストデータ) | [W&B Table](/ja/models/tables/) | -| モデルの最適化 | モデル | 最適化されたモデル | +| モデルトレーニング (Model Training) | データセット (トレーニングおよび検証データ) | トレーニング済みモデル (Trained Model) | +| データセットの前処理 (Dataset Pre-Processing) | データセット (生データ) | データセット (前処理済みデータ) | +| モデルの評価 (Model Evaluation) | モデル + データセット (テストデータ) | [W&B Table](/models/tables/) | +| モデルの最適化 (Model Optimization) | モデル | 最適化されたモデル (Optimized Model) | -続くコードスニペットは順番に実行されることを意図しています。 +以下のコードスニペットは、順番に実行することを想定しています。 -## アーティファクトを作成する +## Artifacts を作成する -4行のコードでアーティファクトを作成します: -1. [W&B run](/ja/models/runs/) を作成する。 -2. [`wandb.Artifact`](/ja/models/ref/python/artifact) API を使用してアーティファクトオブジェクトを作成する。 -3. モデルファイルやデータセットなど、一つ以上のファイルをアーティファクトオブジェクトに追加する。 -4. あなたのアーティファクトを W&B にログする。 +4 行のコードで Artifacts を作成できます。 +1. [W&B run](/models/runs/) を作成します。 +2. [`wandb.Artifact`](/models/ref/python/experiments/artifact) で Artifacts オブジェクトを作成します。 +3. `wandb.Artifact.add_file()` を使用して、モデルファイルやデータセットなどの 1 つ以上のファイルを Artifacts オブジェクトに追加します。 +4. `wandb.Run.log_artifact()` を使用して、Artifacts を W&B にログ記録します。 -例として、続くコードスニペットは `example_artifact` という名前のアーティファクトに `dataset.h5` というファイルをログする方法を示しています: +例えば、以下のコードスニペットは、 `dataset.h5` という名前のファイルを `example_artifact` という名前の Artifacts にログ記録する方法を示しています。 ```python import wandb -run = wandb.init(project="artifacts-example", job_type="add-dataset") -artifact = wandb.Artifact(name="example_artifact", type="dataset") -artifact.add_file(local_path="./dataset.h5", name="training_dataset") -artifact.save() - -# アーティファクトのバージョン "my_data" を dataset.h5 のデータを持つデータセットとしてログします +# プロジェクトを作成し、データセットを追加するジョブタイプを指定して run を初期化 +with wandb.init(project="artifacts-example", job_type="add-dataset") as run: + artifact = wandb.Artifact(name="example_artifact", type="dataset") + artifact.add_file(local_path="./dataset.h5", name="training_dataset") + run.log_artifact(artifact) ``` +- Artifacts の `type` は、W&B プラットフォーム上での表示方法に影響します。 `type` を指定しない場合、デフォルトで `unspecified` になります。 +- ドロップダウンの各ラベルは、異なる `type` パラメータ値を表します。上記のコードスニペットでは、 Artifacts の `type` は `dataset` です。 + -外部オブジェクトストレージに保存されているファイルやディレクトリーへの参照の追加方法については、[外部ファイルのトラッキング](/ja/models/artifacts/track-external-files/)ページを参照してください。 +Amazon S3 バケットなどの外部オブジェクトストレージに保存されているファイルやディレクトリーへの参照を追加する方法については、 [外部ファイルの追跡](/models/artifacts/track-external-files/) ページを参照してください。 -## アーティファクトをダウンロードする -[`use_artifact`](/ja/models/ref/python/run#use_artifact) メソッドを使用して、あなたの run に入力としてマークしたいアーティファクトを指定します。 +## Artifacts をダウンロードする +[`wandb.Run.use_artifact()`](/models/ref/python/experiments/run#use_artifact) メソッドを使用して、 run の入力としてマークしたい Artifacts を指定します。 -続くコードスニペットに続けて、この次のコードブロックは `training_dataset` アーティファクトの使用方法を示しています: +前のコードスニペットの続きとして、以下のコード例は、先ほど作成した `example_artifact` という名前の Artifacts を使用する方法を示しています。 ```python -artifact = run.use_artifact( - "training_dataset:latest" -) # "my_data" アーティファクトを使用する run オブジェクトを返します +with wandb.init(project="artifacts-example", job_type="add-dataset") as run: + # "training_dataset" Artifacts を使用する run オブジェクトを返します + artifact = run.use_artifact("training_dataset:latest") ``` +これにより、 Artifacts オブジェクトが返されます。 -これはアーティファクトオブジェクトを返します。 - -次に、返されたオブジェクトを使用して、アーティファクトのすべての内容をダウンロードします: +次に、返されたオブジェクトを使用して Artifacts の全コンテンツをダウンロードします。 ```python -datadir = ( - artifact.download() -) # `my_data` アーティファクト全体をデフォルトのディレクトリにダウンロードします。 +# デフォルトのディレクトリーに `my_data` Artifacts 全体をダウンロードします +datadir = artifact.download() ``` -アーティファクトを特定のディレクトリにダウンロードするために、`root` [parameter](/ja/models/ref/python/artifact) にカスタムパスを渡すことができます。アーティファクトをダウンロードする別の方法や追加のパラメータについては、[アーティファクトをダウンロードして使用するガイド](/ja/models/artifacts/download-and-use-an-artifact/)を参照してください。 +`root` [パラメータ](/models/ref/python/experiments/artifact) にカスタムパスを渡すことで、特定のディレクトリーに Artifacts をダウンロードできます。 Artifacts をダウンロードするその他の方法や追加のパラメータについては、 [Artifacts のダウンロードと使用](/models/artifacts/download-and-use-an-artifact/) ガイドを参照してください。 ## 次のステップ -* アーティファクトを[バージョン管理](/ja/models/artifacts/create-a-new-artifact-version/)し、[更新](/ja/models/artifacts/update-an-artifact/)する方法を学びます。 -* [オートメーション](/ja/models/core/automations/)を使用して、あなたのアーティファクトに対する変更に反応して下流のワークフローをトリガーしたり、Slack チャンネルに通知する方法を学びます。 -* トレーニングされたモデルを収容するスペースである[レジストリ](/ja/models/core/registry/)について学びます。 -* [Python SDK](/ja/models/ref/python/artifact) と [CLI](/ja/models/ref/cli/wandb-artifact/) リファレンスガイドを探索します。 \ No newline at end of file +* Artifacts の [バージョン管理](/models/artifacts/create-a-new-artifact-version/) と [更新](/models/artifacts/update-an-artifact/) 方法について学びます。 +* [オートメーション](/models/automations/) を使用して、 Artifacts の変更に応じてダウンストリームのワークフローをトリガーしたり、 Slack チャンネルに通知したりする方法を学びます。 +* トレーニング済みモデルを収容するスペースである [registry](/models/registry/) について学びます。 +* [Python SDK](/models/ref/python/experiments/artifact) および [CLI](/models/ref/cli/wandb-artifact/) のリファレンスガイドを確認します。 \ No newline at end of file diff --git a/ja/models/artifacts/artifacts-walkthrough.mdx b/ja/models/artifacts/artifacts-walkthrough.mdx index 51a7e1efae..bbdf1977bd 100644 --- a/ja/models/artifacts/artifacts-walkthrough.mdx +++ b/ja/models/artifacts/artifacts-walkthrough.mdx @@ -1,14 +1,13 @@ --- -title: 'チュートリアル: データセットアーティファクトを作成、追跡、利用する方法' -description: アーティファクト クイックスタートでは、W&B でデータセット アーティファクトを作成、追跡、使用する方法を示します。 -displayed_sidebar: default +title: チュートリアル: Dataset アーティファクトの作成、トラッキング、および使用 +description: W&B で Dataset アーティファクトを作成、追跡、使用します。 --- -このウォークスルーでは、[W&B Runs](/ja/models/runs/)からデータセットアーティファクトを作成、追跡、使用する方法を示します。 +このチュートリアルでは、データセットの Artifacts を作成、追跡、および使用する方法について説明します。 -## 1. W&B にログイン +## 1. W&B にログインする -W&B ライブラリをインポートし、W&B にログインします。まだアカウントをお持ちでない場合は、無料の W&B アカウントにサインアップする必要があります。 +W&B ライブラリをインポートし、W&B にログインします。まだアカウントをお持ちでない場合は、無料の W&B アカウントに登録する必要があります。 ```python import wandb @@ -16,69 +15,86 @@ import wandb wandb.login() ``` -## 2. Run を初期化 +## 2. run を初期化する -[`wandb.init()`](/ja/models/ref/python/init) API を使用して、バックグラウンドプロセスを生成し、データを W&B Run として同期してログします。プロジェクト名とジョブタイプを指定してください。 +[`wandb.init()`](/models/ref/python/functions/init) を使用して run を初期化します。これにより、データを同期してログに記録するためのバックグラウンドプロセスが生成されます。プロジェクト名とジョブタイプを指定します。 ```python -# W&B Run を作成します。この例ではデータセットアーティファクトを作成する方法を示しているので、 -# ジョブタイプとして 'dataset' を指定します。 -run = wandb.init(project="artifacts-example", job_type="upload-dataset") +# W&B Run を作成します。この例ではデータセットの Artifacts を作成する方法を +# 示すため、job_type に 'dataset' を指定します。 +with wandb.init(project="artifacts-example", job_type="upload-dataset") as run: + # ここにコードを記述します ``` -## 3. アーティファクト オブジェクトを作成 +## 3. Artifact オブジェクトを作成する -[`wandb.Artifact()`](/ja/models/ref/python/artifact) API を使用してアーティファクトオブジェクトを作成します。アーティファクトの名前とファイルタイプの説明を、それぞれ `name` と `type` パラメータとして指定します。 +[`wandb.Artifact()`](/models/ref/python/experiments/artifact) を使用して Artifact オブジェクトを作成します。`name` パラメータにアーティファクトの名前を、`type` パラメータにファイルタイプの説明をそれぞれ指定します。 -例えば、次のコードスニペットは `‘bicycle-dataset’` という名前で、`‘dataset’` というラベルのアーティファクトを作成する方法を示しています。 +例えば、次のコードスニペットは、`‘bicycle-dataset’` という名前で `‘dataset’` というラベル(タイプ)を持つアーティファクトを作成する方法を示しています。 ```python artifact = wandb.Artifact(name="bicycle-dataset", type="dataset") ``` -アーティファクトの構築方法の詳細については、[Construct artifacts](/ja/models/artifacts/construct-an-artifact/)を参照してください。 +アーティファクトの構築方法に関する詳細は、[Artifacts の構築](./construct-an-artifact) を参照してください。 -## データセットをアーティファクトに追加 +## 4. アーティファクトにデータセットを追加する -ファイルをアーティファクトに追加します。一般的なファイルタイプには Models や Datasets が含まれます。次の例では、ローカルマシンに保存されている `dataset.h5` というデータセットをアーティファクトに追加します。 +アーティファクトにファイルを追加します。一般的なファイルタイプには、Models や Datasets が含まれます。次の例では、マシンにローカルに保存されている `dataset.h5` という名前のデータセットをアーティファクトに追加しています。 ```python -# ファイルをアーティファクトのコンテンツに追加 +# アーティファクトのコンテンツにファイルを追加します artifact.add_file(local_path="dataset.h5") ``` -上記のコードスニペットのファイル名 `dataset.h5` は、アーティファクトに追加したいファイルのパスに置き換えてください。 +上記のコードスニペットのファイル名 `dataset.h5` を、アーティファクトに追加したいファイルへのパスに置き換えてください。 -## 4. データセットをログ -W&B Run オブジェクトの `log_artifact()` メソッドを使用して、アーティファクトバージョンを保存し、アーティファクトを run の出力として宣言します。 +## 5. データセットをログに記録する + +W&B の run オブジェクトの `wandb.Run.log_artifact()` メソッドを使用して、アーティファクトのバージョンを保存し、そのアーティファクトを [run の出力](/models/artifacts/explore-and-traverse-an-artifact-graph) として宣言します。 ```python -# アーティファクトバージョンを W&B に保存し、 +# アーティファクトのバージョンを W&B に保存し、 # この run の出力としてマークします run.log_artifact(artifact) ``` -アーティファクトをログする際、'latest' エイリアスがデフォルトで作成されます。アーティファクトのエイリアスとバージョンに関する詳細については、[Create a custom alias](/ja/models/artifacts/create-a-custom-alias/) および [Create new artifact versions](/ja/models/artifacts/create-a-new-artifact-version/) をそれぞれ参照してください。 +アーティファクトをログに記録すると、デフォルトで `'latest'` [エイリアス](/models/artifacts/create-a-custom-alias) が作成されます。アーティファクトのエイリアスとバージョンに関する詳細は、それぞれ [カスタムエイリアスの作成](./create-a-custom-alias) および [新しいアーティファクトバージョンの作成](./create-a-new-artifact-version) を参照してください。 + + +これらをまとめると、ここまでのスクリプトは次のようになります。 + +```python +import wandb + +wandb.login() + +with wandb.init(project="artifacts-example", job_type="upload-dataset") as run: + artifact = wandb.Artifact(name="bicycle-dataset", type="dataset") + artifact.add_file(local_path="dataset.h5") + run.log_artifact(artifact) +``` + -## 5. アーティファクトをダウンロードして使用 +## 6. アーティファクトをダウンロードして使用する -次のコード例では、ログされ保存されたアーティファクトを W&B サーバーで使用する手順を示します。 +以下のコード例は、W&B サーバーにログを記録して保存したアーティファクトを使用するための手順を示しています。 -1. まず、**`wandb.init()`.** を使用して新しい run オブジェクトを初期化します。 -2. 次に、run オブジェクトの [`use_artifact()`](/ja/models/ref/python/run#use_artifact) メソッドを使用して、W&B に使用するアーティファクトを指定します。これにより、アーティファクトオブジェクトが返されます。 -3. 最後に、アーティファクトの [`download()`](/ja/models/ref/python/artifact#download) メソッドを使用してアーティファクトの内容をダウンロードします。 +1. まず、**`wandb.init()`** で新しい run オブジェクトを初期化します。 +2. 次に、run オブジェクトの [`wandb.Run.use_artifact()`](/models/ref/python/experiments/run#use_artifact) メソッドを使用して、使用するアーティファクトを W&B に伝えます。これによりアーティファクトオブジェクトが返されます。 +3. 第三に、アーティファクトの [`wandb.Artifact.download()`](/models/ref/python/experiments/artifact#download) メソッドを使用して、アーティファクトの内容をダウンロードします。 ```python -# W&B Run を作成します。ここでは 'training' を 'type' として指定します -# この run をトレーニングの追跡に使用するためです。 -run = wandb.init(project="artifacts-example", job_type="training") +# W&B Run を作成します。ここではトレーニングの追跡にこの run を +# 使用するため、'type' に 'training' を指定します。 +with wandb.init(project="artifacts-example", job_type="training") as run: -# W&B にアーティファクトを検索させ、この run の入力としてマークします -artifact = run.use_artifact("bicycle-dataset:latest") + # W&B にアーティファクトを照会し、この run の入力としてマークします + artifact = run.use_artifact("bicycle-dataset:latest") -# アーティファクトの内容をダウンロードします -artifact_dir = artifact.download() + # アーティファクトのコンテンツをダウンロードします + artifact_dir = artifact.download() ``` -または、Public API (`wandb.Api`) を使用して、Run の外で W&B に既に保存されたデータをエクスポート(または更新)できます。詳細は [Track external files](/ja/models/artifacts/track-external-files/) を参照してください。 \ No newline at end of file +あるいは、Public API (`wandb.Api`) を使用して、Run の外部で既に W&B に保存されているデータをエクスポート(または更新)することもできます。詳細は [外部ファイルの追跡](./track-external-files) を参照してください。 \ No newline at end of file diff --git a/ja/models/artifacts/construct-an-artifact.mdx b/ja/models/artifacts/construct-an-artifact.mdx index a45b5dc30d..48f77fe1f2 100644 --- a/ja/models/artifacts/construct-an-artifact.mdx +++ b/ja/models/artifacts/construct-an-artifact.mdx @@ -1,71 +1,93 @@ --- title: アーティファクトを作成する -description: W&B アーティファクトを作成し、構築します。ファイルや URI リファレンスをアーティファクトに追加する方法を学びましょう。 +description: W&B Artifact の作成とログ記録。1つまたは複数のファイル、あるいは URI 参照を Artifact に追加する方法について学びます。 --- -W&B Python SDK を使用して、[W&B Runs](/ja/models/ref/python/run) から artifacts を構築します。[ファイル、ディレクトリ、URI、並行実行からのファイルを artifacts に追加](#add-files-to-an-artifact)できます。ファイルをアーティファクトに追加した後、W&B サーバーまたは[自分のプライベートサーバー](/ja/platform/hosting/hosting-options/self-managed)に保存します。 +W&B Python SDKを使用して、 [W&B Runs](/models/ref/python/experiments/run) から Artifacts を構築します。 [ファイル、ディレクトリー、URI、および並列実行された run からのファイルを Artifacts に追加](#add-files-to-an-artifact) することができます。ファイルを Artifacts に追加した後、その Artifacts を W&B サーバーまたは [独自のプライベートサーバー](/platform/hosting/hosting-options/self-managed) に保存します。各 Artifacts はひとつの run に関連付けられます。 -Amazon S3 に保存されているファイルなど、外部ファイルのトラッキング方法については、[外部ファイルのトラッキング](/ja/models/artifacts/track-external-files/)ページをご覧ください。 +Amazon S3 に保存されているファイルなどの外部ファイルを追跡する方法については、 [外部ファイルの追跡](./track-external-files) ページを参照してください。 -## アーティファクトの構築方法 +## Artifacts の構築方法 -3 つのステップで [W&B Artifact](/ja/models/ref/python/artifact) を構築します。 +[W&B Artifact](/models/ref/python/experiments/artifact) は以下の3つのステップで構築します: -### 1. `wandb.Artifact()` でアーティファクト Python オブジェクトを作成する +### 1. `wandb.Artifact()` で Artifacts の Python オブジェクトを作成する -[`wandb.Artifact()`](/ja/models/ref/python/artifact) クラスを初期化して、アーティファクトオブジェクトを作成します。以下のパラメータを指定します。 +[`wandb.Artifact()`](/models/ref/python/experiments/artifact) クラスを初期化して Artifacts オブジェクトを作成します。以下のパラメータを指定してください: -* **Name**: アーティファクトの名前を指定します。名前は一意で説明的、かつ記憶しやすいものにしてください。Artifacts の名前は、W&B アプリ UI でアーティファクトを識別するとき、またそのアーティファクトを使用したいときに使用します。 -* **Type**: タイプを指定します。タイプはシンプルで説明的で、機械学習パイプラインの単一ステップに対応するものでなければなりません。一般的なアーティファクトタイプには `'dataset'` や `'model'` があります。 +* **Name**: Artifacts の名前を指定します。名前は一意で、説明的、かつ覚えやすいものである必要があります。Artifacts 名は、W&B App UI で Artifacts を特定するため、およびその Artifacts を使用したい時の両方で使われます。 +* **Type**: タイプを指定します。タイプはシンプルで説明的であり、機械学習パイプラインの単一のステップに対応している必要があります。一般的な Artifacts タイプには `'dataset'` や `'model'` が含まれます。 -指定した「name」と「type」は、有向非循環グラフを作成するために使用されます。これは、W&B アプリでアーティファクトのリネージを見ることができることを意味します。 - -詳細については、[アーティファクトグラフの探索とトラバース](/ja/models/artifacts/explore-and-traverse-an-artifact-graph/)をご覧ください。 +W&B は指定された "name" と "type" を使用して、有向非巡回グラフ(DAG)を作成します。W&B App 上で Artifacts のリネージを確認できます。詳細については、 [Artifacts グラフの探索とトラバース](./explore-and-traverse-an-artifact-graph) を参照してください。 - -Artifacts は、たとえ異なる types パラメータを指定しても、同じ名前を持つことはできません。つまり、`cats` という名前のタイプ `dataset` のアーティファクトを作成し、同じ名前のタイプ `model` のアーティファクトを作成することはできません。 +Artifacts は、`type` パラメータに異なるタイプを指定したとしても、同じ名前を持つことはできません。言い換えれば、`dataset` タイプの `cats` という名前の Artifacts と、`model` タイプの同名の Artifacts を作成することはできません。 -アーティファクトオブジェクトを初期化する際に、オプションで説明とメタデータを提供できます。利用可能な属性とパラメータの詳細については、Python SDK Reference Guide の [`wandb.Artifact`](/ja/models/ref/python/artifact) クラス定義をご覧ください。 +Artifacts オブジェクトを初期化する際に、オプションで説明(description)とメタデータを指定できます。利用可能な属性やパラメータの詳細については、Python SDK リファレンスガイドの [`wandb.Artifact`](/models/ref/python/experiments/artifact) クラス定義を参照してください。 -次の例は、データセットアーティファクトを作成する方法を示しています。 +以下のコードスニペットをコピー&ペーストして、Artifacts オブジェクトを作成します。 `` と `` プレースホルダーを自身の値に置き換えてください。: ```python import wandb -artifact = wandb.Artifact(name="", type="") +# Artifacts オブジェクトを作成 +artifact = wandb.Artifact(name="", type="") ``` -先行のコードスニペット内の文字列の引数を、自分の 固有の名前とタイプで置き換えてください。 +### 2. Artifacts にファイルを追加する + +ファイル、ディレクトリー、外部 URI 参照(Amazon S3 など)などを Artifacts オブジェクトに追加します。 + +単一のファイルを追加するには、Artifacts オブジェクトの [`Artifact.add_file()`](/models/ref/python/experiments/artifact#add_file) メソッドを使用します: + +```python +artifact.add_file(local_path="path/to/file.txt", name="") +``` -### 2. アーティファクトに 1 つ以上のファイルを追加する +Artifacts への異なるファイルタイプの追加に関する詳細は、次のセクション [単一ファイルの追加](/models/artifacts/construct-an-artifact#add-a-single-file) を参照してください。 -ファイル、ディレクトリ、外部 URI リファレンス(例: Amazon S3)などをアーティファクトメソッドで追加します。たとえば、単一のテキストファイルを追加するには、[`add_file`](/ja/models/ref/python/artifact#add_file) メソッドを使用します。 +ディレクトリーを追加するには、 [`Artifact.add_dir()`](/models/ref/python/experiments/artifact#add_dir) メソッドを使用します: ```python -artifact.add_file(local_path="hello_world.txt", name="optional-name") +artifact.add_dir(local_path="path/to/directory", name="") ``` -また、複数のファイルを [`add_dir`](/ja/models/ref/python/artifact#add_dir) メソッドで追加することもできます。ファイルを追加する方法の詳細については、[アーティファクトの更新](/ja/models/artifacts/update-an-artifact/)をご覧ください。 +Artifacts への異なるファイルタイプの追加に関する詳細は、次のセクション [複数ファイルの追加](/models/artifacts/construct-an-artifact#add-multiple-files) を参照してください。 -### 3. アーティファクトを W&B サーバーに保存する +### 3. Artifacts を W&B サーバーに保存する -最後に、アーティファクトを W&B サーバーに保存します。Artifacts は run に関連付けられます。したがって、run オブジェクトの [`log_artifact()`](/ja/models/ref/python/run#log_artifact) メソッドを使用してアーティファクトを保存します。 +最後に、Artifacts を W&B サーバーに保存します。 run オブジェクトの [`wandb.Run.log_artifact()`](/models/ref/python/experiments/run#log_artifact) メソッドを使用して Artifacts を保存します。 ```python -# W&B Run を作成します。'job-type' を置き換えます。 -run = wandb.init(project="artifacts-example", job_type="job-type") +with wandb.init(project="", job_type="") as run: + run.log_artifact(artifact) +``` + +これらをまとめると、以下のコードスニペットは、データセットの Artifacts を作成し、ファイルを追加して、W&B に保存する方法を示しています: + +```python +import wandb + +artifact = wandb.Artifact(name="", type="") +artifact.add_file(local_path="path/to/file.txt", name="") +artifact.add_dir(local_path="path/to/directory", name="") -run.log_artifact(artifact) +with wandb.init(project="", job_type="") as run: + run.log_artifact(artifact) ``` -W&B Run の外でアーティファクトを作成することもできます。詳細については、[外部ファイルのトラッキング](/ja/models/artifacts/track-external-files/)をご覧ください。 + +**`Artifact.save()` と `wandb.Run.log_artifact()` の使い分け** + +- `Artifact.save()` は、新しい run を作成せずに既存の Artifacts を更新する場合に使用します。 +- `wandb.Run.log_artifact()` は、新しい Artifacts を作成し、それを特定の run に関連付ける場合に使用します。 + -`log_artifact` の呼び出しは、パフォーマンスを向上させるために非同期で行われます。これにより、ループ内でアーティファクトをログする際に予期しない挙動が生じることがあります。たとえば、 +`log_artifact` の呼び出しは、アップロードのパフォーマンス向上のため非同期で行われます。これにより、ループ内で Artifacts をログに記録する場合に予期しない振る舞いが発生することがあります。例えば: ```python for i in range(10): @@ -76,18 +98,18 @@ for i in range(10): "index": i, }, ) - # ... アーティファクト a にファイルを追加 ... + # ... artifact a にファイルを追加 ... run.log_artifact(a) ``` -アーティファクトバージョン **v0** は、そのメタデータにインデックス 0 があることを保証しません。アーティファクトは任意の順序でログされる可能性があるためです。 +Artifacts は任意の順序でログに記録される可能性があるため、Artifacts バージョン **v0** のメタデータ内の index が 0 であることは保証されません。 -## アーティファクトにファイルを追加 +## Artifacts へのファイルの追加 -以下のセクションでは、異なるファイルタイプおよび並行実行からのアーティファクトを構築する方法を説明します。 +以下のセクションでは、さまざまなファイルタイプを使用して、または並列 run から Artifacts を構築する方法を説明します。 -以下の例では、複数のファイルとディレクトリ構造を持つプロジェクトディレクトリを前提とします。 +以下の例では、複数のファイルとディレクトリー構造を持つプロジェクトディレクトリーがあることを想定しています。 ``` project-directory @@ -99,99 +121,99 @@ project-directory +-- model.h5 ``` -### 単一ファイルを追加 +### 単一ファイルの追加 -以下のコードスニペットは、ローカルの単一ファイルをアーティファクトに追加する方法を示しています。 +以下のコードスニペットは、単一のローカルファイルを Artifacts に追加する方法を示しています: ```python # 単一のファイルを追加 artifact.add_file(local_path="path/file.format") ``` -たとえば、作業中のローカルディレクトリに `'file.txt'` というファイルがあるとします。 +例えば、ローカルのワーキングディレクトリーに `'file.txt'` というファイルがあるとします。 ```python -artifact.add_file("path/file.txt") # `file.txt` として追加されました +artifact.add_file("path/file.txt") # `file.txt` として追加 ``` -アーティファクトは次の内容を持つようになります。 +Artifacts の内容は以下のようになります: ``` file.txt ``` -オプションで、アーティファクト内の `name` パラメータの希望するパスを渡して下さい。 +オプションで、 `name` パラメータを使用して Artifacts 内の希望するパスを指定できます。 ```python artifact.add_file(local_path="path/file.format", name="new/path/file.format") ``` -アーティファクトは次のように保存されます。 +Artifacts は次のように保存されます: ``` new/path/file.txt ``` -| API Call | Resulting artifact | -| --------------------------------------------------------- | ------------------ | -| `artifact.add_file('model.h5')` | model.h5 | -| `artifact.add_file('checkpoints/model.h5')` | model.h5 | -| `artifact.add_file('model.h5', name='models/mymodel.h5')` | models/mymodel.h5 | +| API 呼び出し | 結果の Artifacts | +| :--- | :--- | +| `artifact.add_file('model.h5')` | model.h5 | +| `artifact.add_file('checkpoints/model.h5')` | model.h5 | +| `artifact.add_file('model.h5', name='models/mymodel.h5')` | models/mymodel.h5 | -### 複数ファイルを追加 +### 複数ファイルの追加 -以下のコードスニペットは、ローカルのディレクトリ全体をアーティファクトに追加する方法を示しています。 +以下のコードスニペットは、ローカルのディレクトリー全体を Artifacts に追加する方法を示しています: ```python -# ディレクトリを再帰的に追加 +# ディレクトリーを再帰的に追加 artifact.add_dir(local_path="path/file.format", name="optional-prefix") ``` -以下の API 呼び出しは、以下のアーティファクトコンテンツを生成します。 +上記の API 呼び出しにより、以下の Artifacts コンテンツが生成されます: -| API Call | Resulting artifact | -| ------------------------------------------- | ------------------------------------------------------ | -| `artifact.add_dir('images')` |

cat.png

dog.png

| +| API 呼び出し | 結果の Artifacts | +| :--- | :--- | +| `artifact.add_dir('images')` |

cat.png

dog.png

| | `artifact.add_dir('images', name='images')` |

images/cat.png

images/dog.png

| -| `artifact.new_file('hello.txt')` | `hello.txt` | +| `artifact.new_file('hello.txt')` | `hello.txt` | -### URI リファレンスを追加 +### URI 参照の追加 -アーティファクトは、URI が W&B ライブラリが扱えるスキームを持つ場合、再現性のためにチェックサムやその他の情報をトラッキングします。 +W&B ライブラリが処理可能なスキームを持つ URI の場合、Artifacts は再現性のためにチェックサムやその他の情報を追跡します。 -[`add_reference`](/ja/models/ref/python/artifact#add_reference) メソッドを使用して、アーティファクトに外部 URI リファレンスを追加します。 `'uri'` 文字列を自分の URI で置き換えてください。オプションで、アーティファクト内の `name` パラメータの希望するパスを渡して下さい。 +[`add_reference`](/models/ref/python/experiments/artifact#add_reference) メソッドを使用して、外部 URI 参照を Artifacts に追加します。 `'uri'` 文字列を自身の URI に置き換えてください。オプションで、 `name` パラメータに Artifacts 内の希望するパスを指定できます。 ```python -# URI リファレンスを追加 +# URI 参照を追加 artifact.add_reference(uri="uri", name="optional-name") ``` -現在、アーティファクトは以下の URI スキームをサポートしています。 +Artifacts は現在、以下の URI スキームをサポートしています: -* `http(s)://`: HTTP 上でアクセス可能なファイルへのパス。HTTP サーバーが `ETag` や `Content-Length` レスポンスヘッダーをサポートしている場合、アーティファクトはエタグとサイズメタデータの形でチェックサムをトラッキングします。 -* `s3://`: S3 内のオブジェクトまたはオブジェクトプレフィックスへのパス。アーティファクトは、参照されたオブジェクトのためのチェックサムとバージョン管理情報(バケットにオブジェクトバージョン管理が有効になっている場合)をトラッキングします。オブジェクトプレフィックスは、プレフィックスの下にあるオブジェクトを最大 10,000 個まで含むように展開されます。 -* `gs://`: GCS 内のオブジェクトまたはオブジェクトプレフィックスへのパス。アーティファクトは、参照されたオブジェクトのためのチェックサムとバージョン管理情報(バケットにオブジェクトバージョン管理が有効になっている場合)をトラッキングします。オブジェクトプレフィックスは、プレフィックスの下にあるオブジェクトを最大 10,000 個まで含むように展開されます。 +* `http(s)://`: HTTP 経由でアクセス可能なファイルへのパス。HTTP サーバーが `ETag` および `Content-Length` レスポンスヘッダーをサポートしている場合、Artifacts は etag 形式のチェックサムとサイズメタデータを追跡します。 +* `s3://`: S3 内のオブジェクトまたはオブジェクトプレフィックスへのパス。Artifacts は、参照されたオブジェクトのチェックサムと(バケットでオブジェクトのバージョン管理が有効な場合は)バージョン情報を追跡します。オブジェクトプレフィックスは、そのプレフィックス下のオブジェクト(最大10,000オブジェクトまで)を含むように拡張されます。 +* `gs://`: GCS 内のオブジェクトまたはオブジェクトプレフィックスへのパス。Artifacts は、参照されたオブジェクトのチェックサムと(バケットでオブジェクトのバージョン管理が有効な場合は)バージョン情報を追跡します。オブジェクトプレフィックスは、そのプレフィックス下のオブジェクト(最大10,000オブジェクトまで)を含むように拡張されます。 -以下の API 呼び出しは、以下のアーティファクトを生成します。 +上記の API 呼び出しにより、以下の Artifacts が生成されます: -| API call | Resulting artifact contents | -| ----------------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `artifact.add_reference('s3://my-bucket/model.h5')` | `model.h5` | -| `artifact.add_reference('s3://my-bucket/checkpoints/model.h5')` | `model.h5` | -| `artifact.add_reference('s3://my-bucket/model.h5', name='models/mymodel.h5')` | `models/mymodel.h5` | -| `artifact.add_reference('s3://my-bucket/images')` |

cat.png

dog.png

| -| `artifact.add_reference('s3://my-bucket/images', name='images')` |

images/cat.png

images/dog.png

| +| API 呼び出し | 結果の Artifacts コンテンツ | +| :--- | :--- | +| `artifact.add_reference('s3://my-bucket/model.h5')` | `model.h5` | +| `artifact.add_reference('s3://my-bucket/checkpoints/model.h5')` | `model.h5` | +| `artifact.add_reference('s3://my-bucket/model.h5', name='models/mymodel.h5')` | `models/mymodel.h5` | +| `artifact.add_reference('s3://my-bucket/images')` |

cat.png

dog.png

| +| `artifact.add_reference('s3://my-bucket/images', name='images')` |

images/cat.png

images/dog.png

| -### 並行実行からアーティファクトにファイルを追加 +### 並列 run から Artifacts へファイルを追加する -大規模な datasets または分散トレーニングの場合、複数の並行 run が単一のアーティファクトに貢献する必要があるかもしれません。 +大規模なデータセットや分散トレーニングでは、複数の並列 run が単一の Artifacts に寄与する必要がある場合があります。 ```python import wandb import time -# デモンストレーションのために、run を並行して起動するために ray を使用します。 -# 並行 run は任意の方法で調整できます。 +# デモ目的で、run を並列に起動するために ray を使用します。 +# 並列 run のオーケストレーションは任意の方法で行えます。 import ray ray.init() @@ -202,46 +224,69 @@ table_name = "distributed_table" parts_path = "parts" num_parallel = 5 -# 並行ライターの各バッチは、その独自の -# グループ名を持つ必要があります。 +# 並列ライターの各バッチには、それぞれ一意の +# グループ名が必要です。 group_name = "writer-group-{}".format(round(time.time())) @ray.remote def train(i): """ - 各ライターは、アーティファクトに 1 つの画像を追加します。 + ライター・ジョブ。各ライターは Artifacts に1つの画像を追加します。 """ with wandb.init(group=group_name) as run: artifact = wandb.Artifact(name=artifact_name, type=artifact_type) - # wandb テーブルにデータを追加します。この場合、例としてデータを使用します。 + # W&B テーブルにデータを追加。この例ではサンプルデータを使用 table = wandb.Table(columns=["a", "b", "c"], data=[[i, i * 2, 2**i]]) - # アーティファクト内のフォルダーにテーブルを追加します。 + # Artifacts 内のフォルダーにテーブルを追加 artifact.add(table, "{}/table_{}".format(parts_path, i)) - # アーティファクトをアップサーティングすることで、アーティファクトにデータを作成または追加します。 + # Artifacts の upsert は、Artifacts へのデータの作成または追加を行います run.upsert_artifact(artifact) -# 並行して run を起動 +# run を並列に起動 result_ids = [train.remote(i) for i in range(num_parallel)] -# ファイルがアーティファクトに追加されたことを確認するために -# すべてのライターを待機します。 +# 全てのライターが終了し、ファイルが追加されたことを +# 確認してから Artifacts を完成させます。 ray.get(result_ids) -# すべてのライターが終了したら、アーティファクトを終了して -# 使用可能であることをマークします。 +# 全てのライターが終了したら、Artifacts を完成させて +# 準備完了の状態にします。 with wandb.init(group=group_name) as run: artifact = wandb.Artifact(artifact_name, type=artifact_type) - # "PartitionTable" を作成し、フォルダーのテーブルを指すようにして - # アーティファクトに追加します。 + # テーブルのフォルダーを指す "PartitionTable" を作成し + # Artifacts に追加します。 artifact.add(wandb.data_types.PartitionedTable(parts_path), table_name) - # アーティファクトを終了することで、このバージョンへの - # 将来の"upserts"を禁止します。 + # Finish artifact は Artifacts を確定させ、このバージョンへの + # 今後の "upserts" を禁止します。 run.finish_artifact(artifact) -``` \ No newline at end of file +``` + +## ログに記録された Artifacts やその他のメタデータのパスを確認する + +以下のコードスニペットは、 [W&B Public API](/models/ref/python/public-api/) を使用して、ファイル名や URL を含む run 内のファイルをリスト化する方法を示しています。 `` プレースホルダーを自身の値に置き換えてください: + +```python +from wandb.apis.public.files import Files +from wandb.apis.public.api import Api + +# run オブジェクトの例 +run = Api().run("") + +# run 内のファイルを反復処理するための Files オブジェクトを作成 +files = Files(api.client, run) + +# ファイルを反復処理 +for file in files: + print(f"File Name: {file.name}") + print(f"File URL: {file.url}") + print(f"Path to file in the bucket: {file.direct_url}") +``` + +利用可能な属性やメソッドの詳細については、 [File](/models/ref/python/public-api/file) クラスを参照してください。 \ No newline at end of file diff --git a/ja/models/artifacts/create-a-custom-alias.mdx b/ja/models/artifacts/create-a-custom-alias.mdx index 926cb6cb14..cb3e5ea15a 100644 --- a/ja/models/artifacts/create-a-custom-alias.mdx +++ b/ja/models/artifacts/create-a-custom-alias.mdx @@ -1,28 +1,29 @@ --- -title: アーティファクトのエイリアスを作成する -description: W&B アーティファクトのカスタムエイリアスを作成します。 +title: Artifact のエイリアスを作成する +description: W&B Artifacts に対してカスタム エイリアス を作成します。 --- -エイリアスを特定のバージョンへのポインターとして使用します。デフォルトでは、`Run.log_artifact` はログされたバージョンに `latest` エイリアスを追加します。 +エイリアスは、特定のバージョンを指し示すポインタとして使用します。デフォルトでは、 `wandb.Run.log_artifact()` はログに記録されたバージョンに `latest` エイリアスを追加します。 -アーティファクトバージョン `v0` は、アーティファクトを初めてログする際に作成され、アーティファクトに付随します。W&B は、同じアーティファクトに再度ログを行うときにコンテンツのチェックサムを行います。アーティファクトが変更された場合、W&B は新しいバージョン `v1` を保存します。 +初めて Artifact をログに記録すると、W&B は Artifact バージョン `v0` を作成して紐付けます。同じ Artifact に対して再度ログを記録すると、W&B はコンテンツのチェックサムを確認します。Artifact が変更されている場合、W&B は新しいバージョン `v1` を保存します。 -例えば、トレーニングスクリプトがデータセットの最新バージョンを取得する場合、そのアーティファクトを使用するときに `latest` を指定します。次のコード例は、エイリアス `latest` を持つデータセットアーティファクト `bike-dataset` をダウンロードする方法を示しています。 +例えば、トレーニングスクリプトでデータセットの最新バージョンを取得したい場合は、その Artifact を使用する際に `latest` を指定します。以下のコード例は、 `latest` エイリアスを持つ `bike-dataset` という名前の最新のデータセット Artifact をダウンロードする方法を示しています。 ```python import wandb -run = wandb.init(project="") - -artifact = run.use_artifact("bike-dataset:latest") - -artifact.download() +with wandb.init(project="") as run: + # "bike-dataset:latest" という名前の Artifact を使用 + artifact = run.use_artifact("bike-dataset:latest") + artifact.download() ``` -アーティファクトバージョンにカスタムエイリアスを適用することもできます。例えば、モデルのチェックポイントがメトリック AP-50 で最高であることを示すために、文字列 `'best-ap50'` をエイリアスとしてモデルアーティファクトにログを記録する際に追加できます。 +また、 Artifact バージョンにカスタムエイリアスを適用することもできます。例えば、あるモデルのチェックポイントがメトリクス AP-50 で最高値であったことをマークしたい場合、モデルの Artifact をログに記録する際に `'best-ap50'` という文字列をエイリアスとして追加できます。 ```python -artifact = wandb.Artifact("run-3nq3ctyy-bike-model", type="model") -artifact.add_file("model.h5") -run.log_artifact(artifact, aliases=["latest", "best-ap50"]) +with wandb.init(project="") as run: + artifact = wandb.Artifact("run-3nq3ctyy-bike-model", type="model") + artifact.add_file("model.h5") + # ログ記録時に "latest" と "best-ap50" エイリアスを付与 + run.log_artifact(artifact, aliases=["latest", "best-ap50"]) ``` \ No newline at end of file diff --git a/ja/models/artifacts/create-a-new-artifact-version.mdx b/ja/models/artifacts/create-a-new-artifact-version.mdx index e4b713eb5b..9bb5d6345f 100644 --- a/ja/models/artifacts/create-a-new-artifact-version.mdx +++ b/ja/models/artifacts/create-a-new-artifact-version.mdx @@ -1,147 +1,147 @@ --- -title: アーティファクト バージョンを作成する -description: 新しいアーティファクト バージョンを単一の run または分散プロセスから作成します。 +title: Artifact の バージョン を作成する +description: 単一の run または分散プロセスから、新しい Artifacts バージョンを作成します。 --- -新しいアーティファクトバージョンをシングル [run](/ja/models/runs/) で作成するか、分散 run を使って共同で作成します。以前のバージョンから新しいアーティファクトバージョンを作成することもできます。これを [インクリメンタルアーティファクト](#create-a-new-artifact-version-from-an-existing-version) と呼びます。 +単一の [run](/models/runs/) または分散された複数の run を通じて、新しい Artifacts バージョンを作成します。オプションで、以前のバージョンから新しい Artifacts バージョンを作成することもできます。これは [インクリメンタルアーティファクト](#create-a-new-artifact-version-from-an-existing-version) と呼ばれます。 -アーティファクト内のファイルの一部に変更を加える必要がある場合、元のアーティファクトのサイズがかなり大きい場合は、インクリメンタルアーティファクトを作成することをお勧めします。 +元の Artifacts のサイズが非常に大きく、その中のファイルのサブセットのみに変更を適用する必要がある場合は、インクリメンタルアーティファクトを作成することをお勧めします。 -## 新しいアーティファクトバージョンをゼロから作成する -新しいアーティファクトバージョンを作成する方法は、シングル run と分散 run による2つがあります。それぞれ次のように定義されています: +## ゼロからの新しい Artifacts バージョンの作成 +新しい Artifacts バージョンを作成する方法には、単一の run から作成する方法と、分散された複数の run から作成する方法の2つがあります。それぞれの定義は以下の通りです。 -* **シングル run**: シングル run が新しいバージョンのすべてのデータを提供します。これは最も一般的なケースで、run が必要なデータを完全に再現する場合に最適です。例: 保存されたモデルやモデル予測を分析用のテーブルに出力する。 -* **分散 run**: 複数の run のセットが共同して新しいバージョンのすべてのデータを提供します。これは、複数の run が並行してデータを生成する分散ジョブに最適です。例: モデルを分散的に評価し、予測を出力する。 +* **Single run (単一の run)**: 1つの run が新しいバージョンのすべてのデータを提供します。これは最も一般的なケースであり、run が必要なデータを完全に再作成する場合に最適です。例えば、保存された Models や分析用のテーブル内のモデル予測を出力する場合などが挙げられます。 +* **Distributed runs (分散 run)**: 一連の run が集合的に新しいバージョンのすべてのデータを提供します。これは、多くの場合並列でデータを生成する複数の run を持つ分散ジョブに最適です。例えば、分散環境でモデルを評価し、その予測結果を出力する場合などが挙げられます。 -W&B は、プロジェクト内に存在しない名前を `wandb.Artifact` API に渡すと、新しいアーティファクトを作成し、それに `v0` エイリアスを割り当てます。同じアーティファクトに再度ログを記録する際に内容をチェックサムします。アーティファクトが変更されている場合、W&B は新しいバージョン `v1` を保存します。 +`wandb.Artifact` API に、プロジェクト内に存在しない名前を渡すと、W&B は新しい Artifacts を作成し、`v0` エイリアスを割り当てます。同じ Artifacts に再度ログを記録すると、W&B は内容のチェックサムを確認します。Artifacts が変更されている場合、W&B は新しいバージョン `v1` を保存します。 -プロジェクト内に既存のアーティファクトと一致する名前とアーティファクトタイプを `wandb.Artifact` API に渡すと、W&B は既存のアーティファクトを取得します。取得されたアーティファクトはバージョンが 1 より大きくなります。 +`wandb.Artifact` API に、プロジェクト内の既存の Artifacts と一致する名前と Artifacts タイプを渡すと、W&B は既存の Artifacts を取得します。取得された Artifacts のバージョンは1より大きくなります。 - + Artifact workflow comparison -### シングル run -アーティファクト内のすべてのファイルを生成するシングル run によって、新しいバージョンのアーティファクトをログします。このケースは、シングル run がアーティファクト内のすべてのファイルを生成する場合に発生します。 +### Single run +Artifacts 内のすべてのファイルを生成する単一の run で、Artifacts の新しいバージョンをログに記録します。このケースは、1つの run が Artifacts に含まれるすべてのファイルを生成する場合に発生します。 -ユースケースに基づいて、以下のタブのいずれかを選択して、run 内または run 外で新しいアーティファクトバージョンを作成してください: +ユースケースに合わせて、以下のタブから run の内部または外部で新しい Artifacts バージョンを作成する方法を選択してください。 - -W&B run 内でアーティファクトバージョンを作成します: + +W&B run の内部で Artifacts バージョンを作成します。 -1. `wandb.init` を使って run を作成。 -2. `wandb.Artifact` で新しいアーティファクトを作成するか、既存のアーティファクトを取得。 -3. `.add_file` を使用してファイルをアーティファクトに追加。 -4. `.log_artifact` を使ってアーティファクトを run にログ。 +1. `wandb.init` で run を作成します。 +2. `wandb.Artifact` で新しい Artifacts を作成するか、既存のものを取得します。 +3. `.add_file` で Artifacts にファイルを追加します。 +4. `.log_artifact` で Artifacts を run にログ記録します。 ```python with wandb.init() as run: artifact = wandb.Artifact("artifact_name", "artifact_type") - # Add Files and Assets to the artifact using - # `.add`, `.add_file`, `.add_dir`, and `.add_reference` + # `.add`、`.add_file`、`.add_dir`、`.add_reference` を使用して + # ファイルやアセットをアーティファクトに追加します artifact.add_file("image1.png") run.log_artifact(artifact) ``` - -W&B run の外でアーティファクトバージョンを作成します: + +W&B run の外部で Artifacts バージョンを作成します。 -1. `wanb.Artifact` で新しいアーティファクトを作成するか、既存のアーティファクトを取得。 -2. `.add_file` を使用してファイルをアーティファクトに追加。 -3. `.save` でアーティファクトを保存。 +1. `wandb.Artifact` で新しい Artifacts を作成するか、既存のものを取得します。 +2. `.add_file` で Artifacts にファイルを追加します。 +3. `.save` で Artifacts を保存します。 ```python artifact = wandb.Artifact("artifact_name", "artifact_type") -# Add Files and Assets to the artifact using -# `.add`, `.add_file`, `.add_dir`, and `.add_reference` +# `.add`、`.add_file`、`.add_dir`、`.add_reference` を使用して +# ファイルやアセットをアーティファクトに追加します artifact.add_file("image1.png") artifact.save() ``` -### 分散 run +### Distributed runs -バージョンをコミットする前に、複数の run が共同で作業します。これは、上記のシングル run モードとは対照的です。こちらは1つの run が新しいバージョンのすべてのデータを提供します。 +一連の run が、コミットする前に共同で1つのバージョンを作成できるようにします。これは、1つの run が新しいバージョンのすべてのデータを提供する上述の Single run モードとは対照的です。 -1. コレクション内の各 run は、同じバージョンで共同作業をするために、同じユニークな ID ( `distributed_id` と呼ばれる) を認識している必要があります。デフォルトでは、存在する場合、W&B は run の `group` を、`wandb.init(group=GROUP)` によって設定された `distributed_id` として使用します。 -2. バージョンを「コミット」し、その状態を永続的にロックする最終 run が必要です。 -3. 協調的なアーティファクトに追加するには `upsert_artifact` を使用し、コミットを最終的にするには `finish_artifact` を使用します。 +1. 同じバージョンで共同作業を行うために、コレクション内の各 run は同じユニーク ID(`distributed_id` と呼ばれます)を認識している必要があります。デフォルトでは、`wandb.init(group=GROUP)` で設定された run の `group` が存在する場合、W&B はそれを `distributed_id` として使用します。 +2. バージョンを「コミット」し、その状態を永続的にロックする最終的な run が必要です。 +3. 共同 Artifacts に追加するには `upsert_artifact` を使用し、コミットを完了するには `finish_artifact` を使用します。 -以下の例を考えてみてください。異なる run (以下で **Run 1**、**Run 2**、**Run 3** とラベル付けされている) が `upsert_artifact` を使って同じアーティファクトに異なる画像ファイルを追加します。 +次の例を考えてみましょう。異なる run(以下、**Run 1**、**Run 2**、**Run 3** と表記)が、`upsert_artifact` を使用して同じ Artifacts に異なる画像ファイルを追加します。 -#### Run 1 +#### Run 1: ```python with wandb.init() as run: artifact = wandb.Artifact("artifact_name", "artifact_type") - # Add Files and Assets to the artifact using - # `.add`, `.add_file`, `.add_dir`, and `.add_reference` + # `.add`、`.add_file`、`.add_dir`、`.add_reference` を使用して + # ファイルやアセットをアーティファクトに追加します artifact.add_file("image1.png") run.upsert_artifact(artifact, distributed_id="my_dist_artifact") ``` -#### Run 2 +#### Run 2: ```python with wandb.init() as run: artifact = wandb.Artifact("artifact_name", "artifact_type") - # Add Files and Assets to the artifact using - # `.add`, `.add_file`, `.add_dir`, and `.add_reference` + # `.add`、`.add_file`、`.add_dir`、`.add_reference` を使用して + # ファイルやアセットをアーティファクトに追加します artifact.add_file("image2.png") run.upsert_artifact(artifact, distributed_id="my_dist_artifact") ``` #### Run 3 -Run 1 と Run 2 が完了した後に実行する必要があります。`finish_artifact` を呼び出す Run は、アーティファクトにファイルを含めることができますが、必須ではありません。 +Run 1 と Run 2 が完了した後に実行する必要があります。`finish_artifact` を呼び出す run は、Artifacts にファイルを含めることができますが、必須ではありません。 ```python with wandb.init() as run: artifact = wandb.Artifact("artifact_name", "artifact_type") - # Add Files and Assets to the artifact - # `.add`, `.add_file`, `.add_dir`, and `.add_reference` + # ファイルやアセットをアーティファクトに追加します + # `.add`、`.add_file`、`.add_dir`、`.add_reference` artifact.add_file("image3.png") run.finish_artifact(artifact, distributed_id="my_dist_artifact") ``` -## 既存のバージョンから新しいアーティファクトバージョンを作成する +## 既存のバージョンから新しい Artifacts バージョンを作成する -前のアーティファクトバージョンからファイルのサブセットを追加、変更、または削除して、変更されていないファイルを再インデックスする必要はありません。前のアーティファクトバージョンからファイルのサブセットを追加、変更、または削除すると、新しいアーティファクトバージョンが作成され、これを*インクリメンタルアーティファクト*と呼びます。 +変更されていないファイルを再インデックス化することなく、以前の Artifacts バージョンからファイルのサブセットを追加、修正、または削除します。以前の Artifacts バージョンからファイルのサブセットを追加、修正、または削除して作成された新しい Artifacts バージョンは、*incremental artifact (インクリメンタルアーティファクト)* と呼ばれます。 - + Incremental artifact versioning -以下は、遭遇する可能性のあるインクリメンタルな変更の各タイプに対するシナリオです: +以下は、発生する可能性のある各タイプの増分変更のシナリオです。 -- add: 新しいバッチを収集した後、定期的にデータセットに新しいファイルのサブセットを追加します。 -- remove: 重複ファイルをいくつか発見し、アーティファクトからそれらを削除することを希望します。 -- update: ファイルのサブセットに対する注釈を修正し、古いファイルを正しいものと置き換えます。 +- **add (追加)**: 新しいバッチを収集した後、データセットに新しいファイルのサブセットを定期的につぎ足す。 +- **remove (削除)**: 重複したファイルがいくつか見つかったため、Artifacts からそれらを削除したい。 +- **update (更新)**: 一部のファイルの注釈を修正したため、古いファイルを正しいものに置き換えたい。 -インクリメンタルアーティファクトとしての同じ機能を実行するためにアーティファクトをゼロから作成することもできます。しかし、アーティファクトをゼロから作成する場合、アーティファクトのすべての内容をローカルディスクに持っている必要があります。インクリメンタルな変更を行う場合、前のアーティファクトバージョンのファイルを変更せずに、個々のファイルを追加、削除、または変更できます。 +インクリメンタルアーティファクトと同じ機能を実行するために、ゼロから Artifacts を作成することも可能です。しかし、ゼロから作成する場合は、Artifacts の全内容をローカルディスクに用意する必要があります。増分変更を行う場合は、以前の Artifacts バージョンのファイルを変更することなく、単一のファイルを追加、削除、または修正できます。 -単一の run で、または複数の run (分散モード) でインクリメンタルアーティファクトを作成できます。 +インクリメンタルアーティファクトは、単一の run 内、または一連の run(分散モード)で作成できます。 -以下の手順に従って、アーティファクトをインクリメンタルに変更します: +Artifacts を段階的に変更するには、以下の手順に従ってください。 -1. インクリメンタル変更を行いたいアーティファクトバージョンを取得します: +1. 増分変更を行いたい Artifacts バージョンを取得します。 - + ```python saved_artifact = run.use_artifact("my_artifact:latest") ``` - + ```python client = wandb.Api() saved_artifact = client.artifact("my_artifact:latest") @@ -149,30 +149,30 @@ saved_artifact = client.artifact("my_artifact:latest") -2. 以下の方法でドラフトを作成します: +2. 次のコマンドでドラフトを作成します。 ```python draft_artifact = saved_artifact.new_draft() ``` -3. 次のバージョンで見たいインクリメンタルな変更を行います。既存のエントリーを追加、削除、または変更することができます。 +3. 次のバージョンに反映させたい増分変更を実行します。既存のエントリを追加、削除、または修正できます。 -各変更を行うための例については、以下のいずれかのタブを選択してください: +これらの各変更を実行する方法の例については、タブのいずれかを選択してください。 - -`add_file` メソッドで既存のアーティファクトバージョンにファイルを追加します: + +`add_file` メソッドを使用して、既存の Artifacts バージョンにファイルを追加します。 ```python draft_artifact.add_file("file_to_add.txt") ``` -`add_dir` メソッドを使用してディレクトリを追加することで、複数のファイルを追加することもできます。 +`add_dir` メソッドを使用してディレクトリを追加することで、複数のファイルを一度に追加することもできます。 - -`remove` メソッドで既存のアーティファクトバージョンからファイルを削除します: + +`remove` メソッドを使用して、既存の Artifacts バージョンからファイルを削除します。 ```python draft_artifact.remove("file_to_remove.txt") @@ -182,8 +182,8 @@ draft_artifact.remove("file_to_remove.txt") `remove` メソッドにディレクトリパスを渡すことで、複数のファイルを削除することもできます。 - -ドラフトから古い内容を削除し、新しい内容を追加することで、内容を変更または置き換えます: + +ドラフトから古い内容を削除し、新しい内容を再度追加することで、内容を修正または置換します。 ```python draft_artifact.remove("modified_file.txt") @@ -192,50 +192,50 @@ draft_artifact.add_file("modified_file.txt") -4. 最後に、変更をログまたは保存します。以下のタブは、W&B run の内外で変更を保存する方法を示しています。適切なユースケースに応じてタブを選択してください: +4. 最後に、変更をログに記録するか保存します。以下のタブでは、W&B run の内部および外部で変更を保存する方法を示しています。ユースケースに適したタブを選択してください。 - + ```python run.log_artifact(draft_artifact) ``` - + ```python draft_artifact.save() ``` -以上のコード例をまとめると、以下のようになります: +これらをすべてまとめると、上記のコード例は以下のようになります。 - + ```python with wandb.init(job_type="modify dataset") as run: saved_artifact = run.use_artifact( "my_artifact:latest" - ) # fetch artifact and input it into your run - draft_artifact = saved_artifact.new_draft() # create a draft version + ) # アーティファクトを取得して run に入力します + draft_artifact = saved_artifact.new_draft() # ドラフトバージョンを作成します - # modify a subset of files in the draft version + # ドラフトバージョンのファイルのサブセットを修正します draft_artifact.add_file("file_to_add.txt") draft_artifact.remove("dir_to_remove/") run.log_artifact( - artifact - ) # log your changes to create a new version and mark it as output to your run + draft_artifact + ) # 変更をログに記録して新しいバージョンを作成し、run の出力としてマークします ``` - + ```python client = wandb.Api() -saved_artifact = client.artifact("my_artifact:latest") # load your artifact -draft_artifact = saved_artifact.new_draft() # create a draft version +saved_artifact = client.artifact("my_artifact:latest") # アーティファクトをロードします +draft_artifact = saved_artifact.new_draft() # ドラフトバージョンを作成します -# modify a subset of files in the draft version +# ドラフトバージョンのファイルのサブセットを修正します draft_artifact.remove("deleted_file.txt") draft_artifact.add_file("modified_file.txt") -draft_artifact.save() # commit changes to the draft +draft_artifact.save() # ドラフトへの変更をコミットします ``` \ No newline at end of file diff --git a/ja/models/artifacts/data-privacy-and-compliance.mdx b/ja/models/artifacts/data-privacy-and-compliance.mdx index eb4e329179..dcd6a62f07 100644 --- a/ja/models/artifacts/data-privacy-and-compliance.mdx +++ b/ja/models/artifacts/data-privacy-and-compliance.mdx @@ -1,30 +1,22 @@ --- -title: アーティファクトのデータプライバシーとコンプライアンス -description: デフォルトで W&B ファイルが保存される場所を学びましょう。機密情報の保存方法について探索します。 +title: Artifact データのプライバシーとコンプライアンス +description: W&B ファイルがデフォルトでどこに保存されるかを確認しましょう。情報の保存方法や、機密情報の保管方法についても説明します。 --- -ファイルは、Artifacts をログするときに W&B が管理する Google Cloud バケットにアップロードされます。バケットの内容は、保存中および転送中の両方で暗号化されます。Artifact ファイルは、対応するプロジェクトへのアクセス権を持つユーザーにのみ表示されます。 +Artifacts をログに記録すると、ファイルは W&B が管理する Google Cloud バケットにアップロードされます。バケットの内容は、保存時および転送時の両方で暗号化されます。 Artifacts のファイルは、対応する Project への access 権限を持つ Users のみに表示されます。 - GCS W&B クライアントサーバー図 + GCS W&B Client Server diagram -アーティファクトのバージョンを削除すると、そのバージョンはデータベースでソフト削除としてマークされ、ストレージコストからも除外されます。アーティファクト全体を削除すると、それは完全削除のためにキューに入れられ、その内容はすべて W&B バケットから削除されます。ファイル削除に関する特定のニーズがある場合は、[Customer Support](mailto:support@wandb.com) にお問い合わせください。 +Artifact の バージョン を削除すると、データベース内でソフトデリート(一時削除)としてマークされ、ストレージコストから除外されます。 Artifact 全体を削除すると、永久削除のキューに入れられ、そのすべての内容は W&B バケットから削除されます。ファイルの削除に関して特定のニーズがある場合は、 [Customer Support](mailto:support@wandb.com) までお問い合わせください。 -マルチテナント環境に存在できない機密データセットには、クラウドバケットに接続されたプライベート W&B サーバーまたは _reference artifacts_ を使用することができます。Reference artifacts は、ファイル内容を W&B に送信せずに、プライベートバケットへの参照を追跡します。Reference artifacts は、バケットやサーバー上のファイルへのリンクを維持します。つまり、W&B はファイルそのものではなく、ファイルに関連するメタデータのみを追跡します。 +デフォルトでは、削除された Artifacts は 7 日間保持され、この期間内であれば復元可能です。この期間は 専用クラウド では設定変更が可能です。データ保持の詳細については、 [Multi-tenant Cloud](/platform/hosting/hosting-options/multi_tenant_cloud#data-retention-policy) または [Dedicated Cloud](/platform/hosting/hosting-options/dedicated_cloud#data-retention-policy) を参照してください。 + +マルチテナント 環境 に置くことができない機密性の高い Datasets については、 [W&B Dedicated Cloud](/platform/hosting/hosting-options/dedicated_cloud) または [reference artifacts](/models/artifacts/track-external-files) を使用できます。 Reference artifacts は、ファイルの内容を W&B に送信することなく、プライベートな バケット への参照を追跡します。 Reference artifacts は、お客様の バケット や サーバー 上のファイルへのリンクを維持します。 W&B はファイルに関連付けられた metadata のみを追跡し、ファイル自体は保持しません。 - W&B クライアントサーバークラウド図 + W&B Client Server Cloud diagram -リファレンスアーティファクトは、通常のアーティファクトを作成する方法と似ています。 - -```python -import wandb - -run = wandb.init() -artifact = wandb.Artifact("animals", type="dataset") -artifact.add_reference("s3://my-bucket/animals") -``` - -代替案については、[contact@wandb.com](mailto:contact@wandb.com) にお問い合わせいただき、プライベートクラウドおよびオンプレミスのインストールについてご相談ください。 \ No newline at end of file +デプロイメント オプションの詳細については、 [Dedicated Cloud](/platform/hosting/hosting-options/dedicated_cloud) または [Self-Managed](/platform/hosting/hosting-options/self-managed) を参照してください。特定の要件について相談したい場合は、 [contact@wandb.com](mailto:contact@wandb.com) までご連絡ください。 \ No newline at end of file diff --git a/ja/models/artifacts/delete-artifacts.mdx b/ja/models/artifacts/delete-artifacts.mdx index 160de12008..1ac702f23a 100644 --- a/ja/models/artifacts/delete-artifacts.mdx +++ b/ja/models/artifacts/delete-artifacts.mdx @@ -1,32 +1,72 @@ --- title: アーティファクトを削除する -description: アプリ UI を使って対話的に、または W&B SDK を使用してプログラムでアーティファクトを削除します。 +description: Artifacts の削除は、App UI を使用して対話的に行うか、W&B SDK を使用してプログラムで行うことができます。 --- -アーティファクトは、App UI でインタラクティブに削除するか、W&B SDK でプログラム的に削除できます。アーティファクトを削除すると、W&B はそのアーティファクトを*ソフト削除*としてマークします。つまり、そのアーティファクトは削除予定としてマークされますが、ファイルはすぐにはストレージから削除されません。 +Artifacts の削除は、App UI を使ってインタラクティブに行うことも、W&B SDK を使ってプログラムで行うこともできます。Artifacts を削除すると、W&B はその Artifacts を *soft-delete*(論理削除)としてマークします。言い換えれば、Artifacts は削除対象としてマークされますが、ストレージからファイルがすぐに削除されるわけではありません。 + +Artifacts の内容は、定期的に実行されるガベージコレクションプロセスが削除対象としてマークされたすべての Artifacts を確認するまで、論理削除(削除保留)状態として残ります。ガベージコレクションプロセスは、その Artifacts とそれに関連するファイルが、以前または以降の Artifacts バージョンで使用されていない場合に、関連するファイルをストレージから削除します。 + +## Artifact ガベージコレクションのワークフロー + +以下の図は、Artifact ガベージコレクションの全プロセスを示しています。 + +```mermaid +graph TB + Start([Artifact 削除の開始]) --> DeleteMethod{削除方法} + + DeleteMethod -->|UI| UIDelete[W&B App UI から削除] + DeleteMethod -->|SDK| SDKDelete[W&B SDK から削除] + DeleteMethod -->|TTL| TTLDelete[TTL ポリシーの期限切れ] + + UIDelete --> SoftDelete[Artifact が
'論理削除' としてマークされる] + SDKDelete --> SoftDelete + TTLDelete --> SoftDelete + + SoftDelete --> GCWait[(ガベージコレクション
プロセスの
待機)] + + GCWait --> GCRun[ガベージコレクション
プロセスの実行

- すべての論理削除済み Artifacts を確認
- ファイルの依存関係をチェック] + + GCRun --> CheckUsage{ファイルは他の Artifact
バージョンで使用されていますか?} + + CheckUsage -->|Yes| KeepFiles[ファイルはストレージに保持

- Artifact は削除済みとしてマーク
- 他のバージョンのためにファイルは残る] + CheckUsage -->|No| DeleteFiles[ファイルをストレージから削除

- Artifact は完全に削除
- ストレージ容量を回収] + + KeepFiles --> End([終了]) + DeleteFiles --> End + + style Start fill:#e1f5fe,stroke:#333,stroke-width:2px,color:#000 + style SoftDelete fill:#fff3e0,stroke:#333,stroke-width:2px,color:#000 + style GCRun fill:#f3e5f5,stroke:#333,stroke-width:2px,color:#000 + style KeepFiles fill:#e8f5e9,stroke:#333,stroke-width:2px,color:#000 + style DeleteFiles fill:#ffebee,stroke:#333,stroke-width:2px,color:#000 + style End fill:#e0e0e0,stroke:#333,stroke-width:2px,color:#000 +``` + +このページの各セクションでは、特定の Artifact バージョンの削除方法、Artifact コレクションの削除方法、エイリアスの有無に応じた Artifacts の削除方法などを説明します。TTL ポリシーを使用すると、W&B から Artifacts が削除されるタイミングをスケジュールできます。詳細については、[Artifact TTL ポリシーによるデータ保持の管理](./ttl) を参照してください。 -アーティファクトの内容は、定期的に実行されるガベージコレクション プロセスが削除対象としてマークされたすべてのアーティファクトをレビューするまで、ソフト削除または削除保留状態のままです。ガベージコレクションプロセスは、アーティファクトおよびその関連ファイルが以前または後のアーティファクトバージョンで使用されていない場合、関連ファイルをストレージから削除します。 - -このページのセクションでは、特定のアーティファクトバージョンの削除方法、アーティファクトコレクションの削除方法、エイリアスを持つアーティファクトの削除方法、エイリアスがないアーティファクトの削除方法などについて説明します。アーティファクトが W&B から削除される時間を TTL ポリシーでスケジュールできます。詳細については、[Artifact TTL ポリシーによるデータ保持の管理](/ja/models/artifacts/ttl/)を参照してください。 + +TTL ポリシーによって削除がスケジュールされた、W&B SDK で削除された、または W&B App UI で削除された Artifacts は、まず論理削除(soft-delete)されます。論理削除された Artifacts は、物理削除(hard-delete)される前にガベージコレクションが行われます。 + -TTL ポリシーで削除予定のアーティファクト、W&B SDK で削除されたアーティファクト、または W&B App UI で削除されたアーティファクトは、最初にソフト削除されます。ソフト削除されたアーティファクトは、最終的にハード削除される前にガベージコレクションを受けます。 +Entity、Project、または Artifact コレクションを削除すると、このページで説明されている Artifact 削除プロセスもトリガーされます。Run を削除する際に、関連する Artifacts を削除することを選択した場合、それらの Artifacts も同じ論理削除とガベージコレクションのワークフローに従います。 -### アーティファクトバージョンの削除 +### Artifact バージョンの削除 -アーティファクトバージョンを削除するには: +Artifact バージョンを削除するには: -1. アーティファクトの名前を選択します。これにより、アーティファクトビューが拡張され、そのアーティファクトに関連付けられたすべてのアーティファクトバージョンが一覧表示されます。 -2. アーティファクトのリストから、削除したいアーティファクトバージョンを選択します。 -3. ワークスペースの右側にあるケバブドロップダウンを選択します。 -4. 「Delete」を選択します。 +1. Artifact の名前を選択します。これにより Artifact ビューが展開され、その Artifact に関連付けられたすべての Artifact バージョンが表示されます。 +2. Artifact のリストから、削除したい Artifact バージョンを選択します。 +3. ワークスペースの右側にあるケバブメニュー(三点リーダー)を選択します。 +4. **Delete** を選択します。 -アーティファクトバージョンは、[delete()](/ja/models/ref/python/artifact#delete) メソッドを使用してプログラム的にも削除できます。以下の例を参照してください。 +Artifact バージョンは、[delete()](/models/ref/python/experiments/artifact#delete) メソッドを使用してプログラムで削除することもできます。以下の例を参照してください。 -### エイリアスを持つ複数のアーティファクトバージョンの削除 +### エイリアスを持つ複数の Artifact バージョンの削除 -次のコード例は、エイリアスを持つアーティファクトを削除する方法を示しています。アーティファクトを作成したエンティティ、プロジェクト名、および run ID を指定してください。 +以下のコード例は、エイリアスが関連付けられている Artifacts を削除する方法を示しています。Artifacts を作成した Entity、Project 名、Run ID を指定してください。 ```python import wandb @@ -37,7 +77,7 @@ for artifact in run.logged_artifacts(): artifact.delete() ``` -アーティファクトに 1 つ以上のエイリアスがある場合、`delete_aliases` パラメータをブール値 `True` に設定してエイリアスを削除します。 +Artifact が 1 つ以上のエイリアスを持っている場合にそれらを削除するには、`delete_aliases` パラメータを boolean 値の `True` に設定します。 ```python import wandb @@ -45,59 +85,73 @@ import wandb run = api.run("entity/project/run_id") for artifact in run.logged_artifacts(): - # delete_aliases=True を設定して、 - # エイリアスを 1 つ以上持つアーティファクトを削除します + # 1つ以上のエイリアスを持つArtifactを削除するために、 + # delete_aliases=True を設定します。 artifact.delete(delete_aliases=True) ``` -### 特定のエイリアスを持つ複数のアーティファクトバージョンを削除 +### 特定のエイリアスを持つ複数の Artifact バージョンの削除 -以下のコードは、特定のエイリアスを持つ複数のアーティファクトバージョンを削除する方法を示しています。アーティファクトを作成したエンティティ、プロジェクト名、および run ID を指定します。削除ロジックは独自のものに置き換えてください: +以下のコードは、特定のエイリアスを持つ複数の Artifact バージョンを削除する方法を示しています。Artifacts を作成した Entity、Project 名、Run ID を指定してください。削除ロジックは必要に応じて書き換えてください。 ```python import wandb runs = api.run("entity/project_name/run_id") -# 'v3' および 'v4' のエイリアスを持つアーティファクトを削除 +# エイリアス 'v3' と 'v4' を持つ artifact を削除します for artifact_version in runs.logged_artifacts(): - # 独自の削除ロジックに置き換えます。 + # 独自の削除ロジックに置き換えてください。 if artifact_version.name[-2:] == "v3" or artifact_version.name[-2:] == "v4": artifact.delete(delete_aliases=True) ``` -### エイリアスを持たないアーティファクトのすべてのバージョンを削除 +### 保護されたエイリアスと削除権限 + +保護されたエイリアス(protected aliases)を持つ Artifacts には、特別な削除制限があります。[保護されたエイリアス](/models/registry/aliases#protected-aliases) は、無許可の削除を防ぐために Registry 管理者が設定できる W&B Registry 内のエイリアスです。 + + +**保護されたエイリアスに関する重要な考慮事項:** +- 保護されたエイリアスを持つ Artifacts は、Registry 管理者以外は削除できません。 +- Registry 内では、Registry 管理者は保護された Artifact バージョンのリンク解除や、保護されたエイリアスを含むコレクション/Registry の削除を行うことができます。 +- ソース Artifact について:ソース Artifact が保護されたエイリアスを持つ Registry にリンクされている場合、いかなるユーザーも削除することはできません。 +- Registry 管理者は、ソース Artifact から保護されたエイリアスを削除してから、Artifact 自体を削除することができます。 + + +### エイリアスのないすべての Artifact バージョンの削除 -次のコードスニペットは、エイリアスを持たないアーティファクトのすべてのバージョンを削除する方法を示しています。`wandb.Api` の `project` および `entity` キーにプロジェクト名とエンティティの名前をそれぞれ指定してください。`<>` をアーティファクトの名前に置き換えてください: +以下のコードスニペットは、エイリアスを持たない Artifact のすべてのバージョンを削除する方法を示しています。`wandb.Api` の `project` キーと `entity` キーに、それぞれ Project 名と Entity 名を指定してください。`<>` は対象の Artifact の名前に置き換えてください。 ```python import wandb -# wandb.Api メソッドを使用する際に、エンティティとプロジェクト名を指定してください。 +# wandb.Api メソッドを使用する際は、 +# entity と project 名を指定します。 api = wandb.Api(overrides={"project": "project", "entity": "entity"}) -artifact_type, artifact_name = "<>" # タイプと名前を指定 +artifact_type, artifact_name = "<>" # type と name を指定 for v in api.artifact_versions(artifact_type, artifact_name): # 'latest' などのエイリアスを持たないバージョンをクリーンアップします。 - # 注意: ここには任意の削除ロジックを置くことができます。 + # 注意: ここには任意の削除ロジックを記述できます。 if len(v.aliases) == 0: v.delete() ``` -### アーティファクトコレクションの削除 +### Artifact コレクションの削除 -アーティファクトコレクションを削除するには: +Artifact コレクションを削除するには: -1. 削除したいアーティファクトコレクションに移動し、その上にカーソルを合わせます。 -2. アーティファクトコレクション名の横にあるケバブドロップダウンを選択します。 -4. 「Delete」を選択します。 +1. 削除したい Artifact コレクションに移動し、その上にホバーします。 +2. Artifact コレクション名の横にあるケバブメニューを選択します。 +3. **Delete** を選択します。 -アーティファクトコレクションは、[delete()](/ja/models/ref/python/artifact#delete) メソッドを使用してプログラムで削除することもできます。`wandb.Api` の `project` および `entity` キーにプロジェクト名とエンティティの名前を指定してください: +[delete()](/models/ref/python/experiments/artifact#delete) メソッドを使用して、プログラムで Artifact コレクションを削除することもできます。`wandb.Api` の `project` キーと `entity` キーに、それぞれ Project 名と Entity 名を指定してください。 ```python import wandb -# wandb.Api メソッドを使用する際に、エンティティとプロジェクト名を指定してください。 +# wandb.Api メソッドを使用する際は、 +# entity と project 名を指定します。 api = wandb.Api(overrides={"project": "project", "entity": "entity"}) collection = api.artifact_collection( "", "entity/project/artifact_collection_name" @@ -105,30 +159,29 @@ collection = api.artifact_collection( collection.delete() ``` -## W&B がホストされている方法に基づいたガベージコレクションの有効化方法 +## W&B のホスト方法に基づいたガベージコレクションの有効化 -W&B の共有クラウドを使用している場合、ガベージコレクションはデフォルトで有効です。W&B をホストする方法に基づいて、ガベージコレクションを有効にするために追加の手順が必要な場合があります。これには以下が含まれます: +W&B の共有クラウド(Shared cloud)を使用している場合、ガベージコレクションはデフォルトで有効になっています。W&B のホスト方法によっては、ガベージコレクションを有効にするために追加の手順が必要になる場合があります。これには以下が含まれます。 -* `GORILLA_ARTIFACT_GC_ENABLED` 環境変数を true に設定: `GORILLA_ARTIFACT_GC_ENABLED=true` -* [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)、[GCP](https://cloud.google.com/storage/docs/object-versioning) または [Minio](https://min.io/docs/minio/linux/administration/object-management/object-versioning.html#enable-bucket-versioning) などのストレージプロバイダーを使用している場合は、バケットバージョン管理を有効にします。Azure を使用している場合は、[ソフト削除を有効](https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview)にします。 +* 環境変数 `GORILLA_ARTIFACT_GC_ENABLED` を true に設定する:`GORILLA_ARTIFACT_GC_ENABLED=true` +* [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)、[Google Cloud](https://cloud.google.com/storage/docs/object-versioning)、または [Minio](https://min.io/docs/minio/linux/administration/object-management/object-versioning.html#enable-bucket-versioning) などのストレージプロバイダーを使用している場合は、バケットのバージョニングを有効にする。Azure を使用している場合は、[論理削除(soft delete)を有効にする](https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview)。 - Azure のソフト削除は、他のストレージプロバイダーでのバケットバージョン管理に相当します。 + Azure の論理削除は、他のストレージプロバイダーにおけるバケットのバージョニングに相当します。 -以下の表は、デプロイメントタイプに基づいてガベージコレクションを有効にするための要件を満たす方法を説明しています。 +以下の表は、デプロイメントタイプに基づいてガベージコレクションを有効にするための要件を示しています。 -`X` は要件を満たす必要があることを示します: +`X` は、その要件を満たす必要があることを示します。 -| | 環境変数 | バージョン管理の有効化 | +| | 環境変数 | バージョニングの有効化 | | -----------------------------------------------| ------------------------| ----------------- | -| 共有クラウド | | | -| [セキュアストレージコネクタ](/ja/platform/hosting/data-security/secure-storage-connector) を使用した共有クラウド | | X | -| 専用クラウド | | | -| [セキュアストレージコネクタ](/ja/platform/hosting/data-security/secure-storage-connector) を使用した専用クラウド | | X | -| カスタマーマネージドクラウド | X | X | -| カスタマーマネージドオンプレミス | X | X | +| 共有クラウド (Shared cloud) | | | +| [Secure Storage Connector](/platform/hosting/data-security/secure-storage-connector) を利用した共有クラウド | | X | +| 専用クラウド (Dedicated Cloud) | | | +| [Secure Storage Connector](/platform/hosting/data-security/secure-storage-connector) を利用した専用クラウド | | X | +| セルフマネージド・クラウド (Self-Managed cloud) | X | X | +| セルフマネージド・オンプレミス (Self-Managed on-prem) | X | X | -注意 -セキュアストレージコネクタは現在、Google Cloud Platform および Amazon Web Services のみで利用可能です。 +Secure Storage Connector は現在、Google Cloud Platform と Amazon Web Services でのみ利用可能です。 \ No newline at end of file diff --git a/ja/models/artifacts/download-and-use-an-artifact.mdx b/ja/models/artifacts/download-and-use-an-artifact.mdx index 7385293747..1db6ed8cbc 100644 --- a/ja/models/artifacts/download-and-use-an-artifact.mdx +++ b/ja/models/artifacts/download-and-use-an-artifact.mdx @@ -1,57 +1,78 @@ --- -title: アーティファクトをダウンロードして使用する -description: 複数の Projects から Artifacts をダウンロードして使用する。 +title: Artifacts のダウンロードと使用 +description: 複数の Projects から Artifacts をダウンロードして使用します。 --- -すでに W&B サーバーに保存されているアーティファクトをダウンロードして使用するか、アーティファクト オブジェクトを構築して、必要に応じて重複排除のためにそれを渡します。 +W&B サーバーにすでに保存されている Artifacts をダウンロードして使用するか、必要に応じて Artifact オブジェクトを作成し、重複排除のためにそれを渡します。 -閲覧専用シートのチームメンバーは、アーティファクトをダウンロードできません。 +閲覧専用シートの チームメンバー は Artifacts をダウンロードできません。 -### W&B に保存されているアーティファクトをダウンロードして使用する +### W&B に保存されている Artifacts のダウンロードと使用 -W&B に保存されているアーティファクトを W&B Run の内外でダウンロードして使用します。Public API([`wandb.Api`](/ja/models/ref/python/public-api/api))を使用して、W&B にすでに保存されているデータをエクスポート(または更新)します。詳細については、W&B [Public API Reference guide](/ja/models/ref/python/public-api/) を参照してください。 +W&B Run の内部または外部のどちらからでも、W&B に保存されている Artifacts をダウンロードして使用できます。W&B にすでに保存されているデータをエクスポート(または更新)するには、Public API ([`wandb.Api`](/models/ref/python/public-api/api)) を使用します。 - -まず、W&B Python SDK をインポートします。次に、W&B [Run](/ja/models/ref/python/run) を作成します。 + +まず、W&B Python SDK をインポートします。次に、W&B [Run](/models/ref/python/experiments/run) を作成します。 ```python import wandb -run = wandb.init(project="", job_type="") +with wandb.init(project="", job_type="") as run: + # 次のステップを参照 ``` -使用したいアーティファクトを [`use_artifact`](/ja/models/ref/python/run#use_artifact) メソッドで指定します。これにより run オブジェクトが返されます。次のコードスニペットでは、`'bike-dataset'` というアーティファクトを `'latest'` というエイリアスで指定しています。 +[`wandb.Run.use_artifact()`](/models/ref/python/experiments/run#use_artifact) メソッドを使用して、使用したい Artifact を指定します。これにより Run オブジェクトが返されます。以下のコードスニペットでは、`'bike-dataset'` という名前で エイリアス が `'latest'` の Artifact を指定しています。 ```python +# 使用する Artifact を指定します。形式は "name:alias" です。 artifact = run.use_artifact("bike-dataset:latest") ``` -戻されたオブジェクトを使って、アーティファクトの内容をすべてダウンロードします。 +返されたオブジェクトを使用して、Artifact の全コンテンツをダウンロードします。 ```python +# Artifact 全体をダウンロードします datadir = artifact.download() ``` -アーティファクトの内容を特定のディレクトリーにダウンロードするには、`root` パラメータにパスをオプションで渡すことができます。詳細については、[Python SDK Reference Guide](/ja/models/ref/python/artifact#download) を参照してください。 +オプションで `root` パラメータにパスを渡すことで、Artifact のコンテンツを特定の ディレクトリー にダウンロードできます。 -[`get_path`](/ja/models/ref/python/artifact#get_path) メソッドを使用して、ファイルのサブセットのみをダウンロードできます。 +ファイルの サブセット のみをダウンロードするには、[`wandb.Artifact.get_entry()`](/models/ref/python/experiments/artifact#get_entry) メソッドを使用します。 ```python -path = artifact.get_path(name) +# 特定のファイルをダウンロードします +entry = artifact.get_entry(name) ``` -これにより、パス `name` のファイルのみが取得されます。次のメソッドを持つ `Entry` オブジェクトが返されます。 +これらをまとめると、完全なコード例は以下のようになります。 -* `Entry.download`: パス `name` のアーティファクトからファイルをダウンロード -* `Entry.ref`: `add_reference` がエントリーを参照として保存している場合、URI を返します。 +```python +import wandb + +with wandb.init(project="", job_type="") as run: + # 使用する Artifact を指定します。形式は "name:alias" です。 + artifact = run.use_artifact("bike-dataset:latest") + + # Artifact 全体をダウンロードします + datadir = artifact.download() + + # 特定のファイルをダウンロードします + entry = artifact.get_entry("bike.png") +``` + +これにより、パス `name` にあるファイルのみが取得されます。これは以下のメソッドを持つ `Entry` オブジェクトを返します。 + +* `Entry.download`: パス `name` にある Artifact からファイルをダウンロードします。 +* `Entry.ref`: `add_reference` がエントリをリファレンスとして保存していた場合、その URI を返します。 + +{/* W&B が処理方法を認識しているスキームを持つリファレンスは、Artifact ファイルと同じようにダウンロードされます。詳細については、[外部ファイルの追跡](/models/artifacts/track-external-files/) を参照してください。 */} -W&B が処理方法を知っているスキームを持つ参照は、アーティファクトファイルと同様にダウンロードされます。詳細については、[Track external files](/ja/models/artifacts/track-external-files/) を参照してください。 - -まず、W&B SDK をインポートします。次に、Public API クラスからアーティファクトを作成します。エンティティ、プロジェクト、アーティファクト、およびエイリアスをそのアーティファクトに関連付けます。 + +まず、W&B SDK をインポートします。次に、Public API クラスから Artifact オブジェクトを作成します。その Artifact に関連付けられた Entity、Project、Artifact 名、および エイリアス を指定します。 ```python import wandb @@ -60,16 +81,16 @@ api = wandb.Api() artifact = api.artifact("entity/project/artifact:alias") ``` -戻されたオブジェクトを使って、アーティファクトの内容をダウンロードします。 +返されたオブジェクトを使用して、Artifact のコンテンツをダウンロードします。 ```python artifact.download() ``` -アーティファクトの内容を特定のディレクトリーにダウンロードするために `root` パラメータにパスをオプションで渡すことができます。詳細については、[API Reference Guide](/ja/models/ref/python/artifact#download) を参照してください。 +オプションで `root` パラメータにパスを渡すことで、Artifact のコンテンツを特定の ディレクトリー にダウンロードできます。詳細については、[Python SDK リファレンスガイド](/models/ref/python/experiments/artifact#download) を参照してください。 -`wandb artifact get` コマンドを使用して、W&B サーバーからアーティファクトをダウンロードします。 +W&B サーバーから Artifact をダウンロードするには、`wandb artifact get` コマンド を使用します。 ``` $ wandb artifact get project/artifact:alias --root mnist/ @@ -77,51 +98,54 @@ $ wandb artifact get project/artifact:alias --root mnist/ -### アーティファクトの一部をダウンロード +### Artifact の部分的なダウンロード -プレフィックスを基にアーティファクトの一部をダウンロードすることができます。`path_prefix` パラメータを使用して、単一のファイルまたはサブフォルダーの内容をダウンロードします。 +プレフィックスに基づいて Artifact の一部をオプションでダウンロードできます。単一のファイルやサブフォルダの内容をダウンロードするには、`path_prefix=` ([`wandb.Artifact.download(path_prefix=)`](/models/ref/python/experiments/artifact#download)) パラメータを使用します。 ```python -artifact = run.use_artifact("bike-dataset:latest") +with wandb.init(project="", job_type="") as run: + # 使用する Artifact を指定します。形式は "name:alias" です。 + artifact = run.use_artifact("bike-dataset:latest") -artifact.download(path_prefix="bike.png") # bike.png のみをダウンロード + # 特定のファイルまたはサブフォルダをダウンロードします + artifact.download(path_prefix="bike.png") # bike.png のみをダウンロードします ``` -または、特定のディレクトリーからファイルをダウンロードすることもできます。 +あるいは、特定の ディレクトリー からファイルをダウンロードすることもできます。そのためには、`path_prefix=` パラメータ内で ディレクトリー を指定します。前の コードスニペット からの続きです。 ```python -artifact.download(path_prefix="images/bikes/") # images/bikes ディレクトリー内のファイルをダウンロード +# images/bikes ディレクトリー内のファイルをダウンロードします +artifact.download(path_prefix="images/bikes/") ``` -### 別のプロジェクトからアーティファクトを使用する +### 別の Project の Artifact を使用する -アーティファクトの名前とともにそのプロジェクト名を指定して、アーティファクトを参照します。また、エンティティ名でアーティファクトの名前を指定して、エンティティを超えてアーティファクトを参照することもできます。 +Artifact を参照するには、Artifact の名前とその プロジェクト 名を一緒に指定します。また、Entity 名と一緒に Artifact 名を指定することで、Entities を跨いで Artifacts を参照することもできます。 -次のコード例は、現在の W&B run に他のプロジェクトからのアーティファクトを入力としてクエリする方法を示しています。 +以下のコード例は、現在の W&B Run の入力として、別の プロジェクト から Artifact をクエリする方法を示しています。 ```python -import wandb - -run = wandb.init(project="", job_type="") -# 他のプロジェクトからアーティファクトを W&B でクエリして、それを入力として -# この run にマークします。 -artifact = run.use_artifact("my-project/artifact:alias") - -# 別のエンティティからアーティファクトを使用し、それを入力として -# この run にマークします。 -artifact = run.use_artifact("my-entity/my-project/artifact:alias") +with wandb.init(project="", job_type="") as run: + # 別のプロジェクトから Artifact を W&B に照会し、 + # この Run の入力としてマークします。 + artifact = run.use_artifact("my-project/artifact:alias") + + # 別の Entity から Artifact を使用し、この Run の入力として + # マークします。 + artifact = run.use_artifact("my-entity/my-project/artifact:alias") ``` -### アーティファクトを同時に構築して使用する +### Artifact の構築と使用を同時に行う -アーティファクトを同時に構築して使用します。アーティファクト オブジェクトを作成して、それを use_artifact に渡します。これにより、W&B にアーティファクトが存在しない場合は作成されます。[`use_artifact`](/ja/models/ref/python/run#use_artifact) API は冪等性があり、あなたが好きなだけ何度も呼び出すことができます。 +Artifact の構築と使用を同時に行います。Artifact オブジェクトを作成し、それを `use_artifact` に渡します。これにより、W&B にまだ存在しない場合は Artifact が作成されます。[`wandb.Run.use_artifact()`](/models/ref/python/experiments/run#use_artifact) API はべき等であるため、何度でも呼び出すことができます。 ```python import wandb -artifact = wandb.Artifact("reference model") -artifact.add_file("model.h5") -run.use_artifact(artifact) +with wandb.init(project="", job_type="") as run: + artifact = wandb.Artifact("reference model") + artifact.add_file("model.h5") + run.use_artifact(artifact) ``` -アーティファクトの構築に関する詳細については、[Construct an artifact](/ja/models/artifacts/construct-an-artifact/) を参照してください。 \ No newline at end of file +Artifact の構築に関する詳細については、[Artifact の構築](/models/artifacts/construct-an-artifact/) を参照してください。 \ No newline at end of file diff --git a/ja/models/artifacts/explore-and-traverse-an-artifact-graph.mdx b/ja/models/artifacts/explore-and-traverse-an-artifact-graph.mdx index e069c6d0cf..d525986749 100644 --- a/ja/models/artifacts/explore-and-traverse-an-artifact-graph.mdx +++ b/ja/models/artifacts/explore-and-traverse-an-artifact-graph.mdx @@ -1,89 +1,113 @@ --- -title: アーティファクトグラフの探索 -description: W&B アーティファクト の自動生成された有向非巡回グラフを トラバース します。 +title: Artifact のリネージグラフを探索する +description: 直接非巡回な W&B Artifact グラフを トラバース します。 --- -W&B は、特定の run がログしたアーティファクトや、その run が利用したアーティファクトを自動で追跡します。これらのアーティファクトには、データセットやモデル、評価結果、その他が含まれることがあります。機械学習ライフサイクル全体で生成されたさまざまなアーティファクトを追跡および管理するために、アーティファクトのリネージを探索できます。 +W&B は、有向非巡回グラフ(DAG)である _リネージグラフ_ を使用して、 Runs の入力と出力を追跡します。リネージグラフは、 ML 実験における Artifacts と Runs の関係を視覚的に表現したものです。これらは、生データの取り込みから モデルトレーニング 、評価に至るまで、 ML ライフサイクルのさまざまな段階を通じて データ と モデル がどのように流れるかを示します。 -## リネージ -アーティファクトのリネージを追跡することには、いくつかの主要な利点があります: +Artifacts の リネージ を追跡することには、いくつかの大きな利点があります。 -- 再現性: すべてのアーティファクトのリネージを追跡することで、チームは実験やモデル、結果を再現でき、デバッグ、実験、および機械学習モデルの検証に不可欠です。 +* **再現性**: デバッグ、実験、検証のために、チームが実験、 モデル 、 結果 を再現することを可能にします。 +* **バージョン管理**: 時間の経過に伴う Artifacts の変更を追跡し、必要に応じてチームが以前の データ や モデル の バージョン に戻れるようにします。 +* **監査**: コンプライアンスとガバナンスをサポートするために、 Artifacts と変換の際の詳細な記録を保持します。 +* **コラボレーション**: 実験履歴を透明化し、作業の重複を減らし、開発を加速させることで、チームワークの向上に役立ちます。 -- バージョン管理: アーティファクトのリネージには、アーティファクトのバージョン管理とその変更の追跡が含まれます。必要に応じて、チームはデータやモデルの以前のバージョンに戻すことができます。 -- 監査: アーティファクトとその変換の詳細な履歴を持つことで、組織は規制やガバナンスの要件に準拠できます。 +## Artifacts のリネージグラフを表示する -- コラボレーションと知識共有: アーティファクトのリネージは、試行された記録が明確に示されており、何がうまくいって何がうまくいかなかったかを提供することで、チームメンバー間のより良いコラボレーションを促進します。これにより、努力の重複を避け、開発プロセスを加速させます。 +Artifacts のリネージグラフを表示するには: -### アーティファクトのリネージを見つける -**Artifacts** タブでアーティファクトを選択すると、アーティファクトのリネージを見ることができます。このグラフビューは、パイプラインの全体的な概要を示します。 - -アーティファクトグラフを見るには: - -1. W&B App UI でプロジェクトに移動します。 -2. 左のパネルでアーティファクトアイコンを選びます。 -3. **Lineage** を選択します。 +1. W&B App に移動します。 +2. 探索したい Run または Artifact が含まれる Project を選択します。 +3. 左サイドバーの **Artifacts** タブをクリックします。 +4. **Lineage** タブを選択します。 Getting to the Lineage tab -### リネージグラフのナビゲート -指定したアーティファクトやジョブタイプは、その名前の前に表示され、アーティファクトは青のアイコン、Runs は緑のアイコンで表されます。矢印は、グラフ上での run またはアーティファクトの入力と出力を示します。 +## リネージグラフのトラッキングを有効にする + +リネージグラフのトラッキングを有効にするには、 W&B Python SDK を使用して、 Artifacts を Run の [入力](/models/artifacts/explore-and-traverse-an-artifact-graph) または [出力](/models/artifacts/explore-and-traverse-an-artifact-graph#track-the-output-of-a-run) としてマークする必要があります。 + +### Run の入力を追跡する + +[`wandb.Run.use_artifact()`](/ref/python/experiments/run/#method-runuse_artifact) メソッドを使用して、 Artifact を Run の入力(または依存関係)としてマークします。 Artifact の名前と、その Artifact の特定の バージョン を参照するためのオプションの エイリアス を指定します。 Artifact の名前は `:` または `:` の形式です。 + +山括弧( `< >` )で囲まれた 値 を自分の 値 に置き換えてください: + +```python +import wandb + +# run を初期化 +with wandb.init(entity="", project="") as run: + # アーティファクトを取得し、依存関係としてマーク + artifact = run.use_artifact(artifact_or_name="", aliases="") +``` + + +### Run の出力を追跡する + +[`wandb.Run.log_artifact()`](/ref/python/experiments/run#log_artifact) を使用して、 Artifact を Run の出力として宣言します。まず、 [`wandb.Artifact()`](/ref/python/experiments/artifact/#wandb.Artifact) コンストラクタで Artifact を作成します。次に、 `wandb.Run.log_artifact()` を使用して、その Artifact を Run の出力として ログ 記録します。 + +山括弧( `< >` )で囲まれた 値 を自分の 値 に置き換えてください: + +```python +import wandb + +# run を初期化 +with wandb.init(entity="", project="") as run: + + # アーティファクトを作成 + artifact = wandb.Artifact(name = "", type = "") + artifact.add_file(local_path = "", name="") + + # アーティファクトを run の出力としてログ記録 + run.log_artifact(artifact_or_path = artifact) +``` + + +## リネージグラフを操作する + +指定した Artifact または ジョブタイプ が名前の前に表示され、 Artifacts は青いアイコンで、 Runs は緑のアイコンで表されます。矢印は、グラフ上の Run または Artifact の入力と出力の詳細を示します。 Run and artifact nodes -アーティファクトのタイプと名前は、左のサイドバーと **Lineage** タブの両方で確認できます。 +Artifact のタイプと名前は、左サイドバーと **Lineage** タブの両方で確認できます。 Inputs and outputs -より詳細なビューを得るために、個別のアーティファクトまたは run をクリックして、特定のオブジェクトに関する詳細情報を取得します。 +より詳細なビューを表示するには、個々の Artifact または Run をクリックして、特定の オブジェクト に関する詳細情報を取得します。 Previewing a run -### アーティファクトクラスター +## Artifact クラスター -グラフのあるレベルに run またはアーティファクトが5つ以上ある場合、クラスターが作成されます。クラスターには、特定のバージョンの run またはアーティファクトを見つけるための検索バーがあり、クラスター内のノードを個別にプルしてそのリネージを調査することができます。 +グラフの特定のレベルに 5 つ以上の Runs または Artifacts がある場合、 クラスター が作成されます。 クラスター には特定の バージョン の Runs または Artifacts を見つけるための検索バーがあり、 クラスター 内の特定の ノード を引き出して、その ノード の リネージ の調査を続けることができます。 -ノードをクリックすると、そのノードのプレビューが表示され、概要が示されます。矢印をクリックすると、個別の run またはアーティファクトが抽出され、抽出されたノードのリネージを調べることができます。 +ノード をクリックすると、その ノード の概要を示すプレビューが開きます。矢印をクリックすると、個々の Run または Artifact が抽出され、抽出された ノード の リネージ を詳細に調べることができます。 Searching a run cluster -## API を使用してリネージを追跡する -[W&B API](/ja/models/ref/python/public-api/api) を使用してグラフをナビゲートすることもできます。 - -まず run を `wandb.init` で作成します。次に、`wandb.Artifact` で新しいアーティファクトを作成するか、既存のアーティファクトを取得します。次に、`.add_file` を使用してアーティファクトにファイルを追加します。最後に、`.log_artifact` でアーティファクトを run にログします。完成したコードは次のようになります: +## プログラムによる Artifact グラフの操作 +W&B Python SDK を使用してプログラムでグラフを トラバース します。 Artifact オブジェクト の [`logged_by()`](/models/ref/python/experiments/artifact#method-artifact-logged-by) および [`used_by()`](/models/ref/python/experiments/artifact#method-artifact-used-by) メソッドを使用して、グラフを辿ります。 ```python with wandb.init() as run: - artifact = wandb.Artifact("artifact_name", "artifact_type") - - # `.add`, `.add_file`, `.add_dir`, `.add_reference` を使用して - # アーティファクトにファイルやアセットを追加します - artifact.add_file("image1.png") - run.log_artifact(artifact) -``` + artifact = run.use_artifact("artifact_name:latest") -アーティファクトオブジェクトの [`logged_by`](/ja/models/ref/python/artifact#logged_by) と [`used_by`](/ja/models/ref/python/artifact#used_by) メソッドを使用して、アーティファクトからグラフをたどります: - -```python -# アーティファクトからグラフを上下にたどります: -producer_run = artifact.logged_by() -consumer_runs = artifact.used_by() -``` -## 次のステップ -- [アーティファクトをさらに詳しく探索する](/ja/models/artifacts/artifacts-walkthrough/) -- [アーティファクトストレージを管理する](/ja/models/artifacts/delete-artifacts/) -- [アーティファクトプロジェクトを探索する](https://wandb.ai/wandb-smle/artifact_workflow/artifacts/raw_dataset/raw_data/v0/lineage) \ No newline at end of file + # アーティファクトからグラフを上下に辿る: + producer_run = artifact.logged_by() + consumer_runs = artifact.used_by() +``` \ No newline at end of file diff --git a/ja/models/artifacts/storage.mdx b/ja/models/artifacts/storage.mdx index a1c405e1df..24e74efc6d 100644 --- a/ja/models/artifacts/storage.mdx +++ b/ja/models/artifacts/storage.mdx @@ -1,34 +1,35 @@ --- -title: アーティファクトのストレージとメモリの割り当てを管理する -description: W&B アーティファクトのストレージやメモリ割り当てを管理します。 +title: Artifact のストレージ管理とメモリ割り当て +description: W&B Artifacts のストレージ管理、およびメモリ割り当てを管理します。 --- -W&B は、アーティファクトファイルを米国にある Google Cloud Storage のプライベートバケットにデフォルトで保存します。すべてのファイルは、静止時および転送中に暗号化されています。 +W&B は、デフォルトで米国にあるプライベートな Google Cloud Storage バケットに Artifacts ファイルを保存します。すべてのファイルは、保存時および転送時に暗号化されます。 -機密性の高いファイルには、[プライベートホスティング](/ja/platform/hosting/)の設定や[参照アーティファクト](/ja/models/artifacts/track-external-files/)の使用をお勧めします。 +機密性の高いファイルについては、[Private Hosting](/platform/hosting/) を設定するか、[reference artifacts](/models/artifacts/track-external-files/) を使用することをお勧めします。 -トレーニング中、W&B はログ、アーティファクト、および設定ファイルを以下のローカルディレクトリーにローカル保存します: +トレーニング中、W&B は以下のローカル ディレクトリー に ログ、Artifacts、設定ファイルをローカルに保存します。 -| File | Default location | To change default location set: | +| ファイル | デフォルトの場所 | デフォルトの場所を変更するための設定: | | ---- | ---------------- | ------------------------------- | -| logs | `./wandb` | `wandb.init` の `dir` または `WANDB_DIR` 環境変数を設定 | -| artifacts | `~/.cache/wandb` | `WANDB_CACHE_DIR` 環境変数を設定 | -| configs | `~/.config/wandb` | `WANDB_CONFIG_DIR` 環境変数を設定 | -| ステージング用アーティファクトのアップロード | `~/.cache/wandb-data/` | `WANDB_DATA_DIR` 環境変数を設定 | -| ダウンロードされたアーティファクト | `./artifacts` | `WANDB_ARTIFACT_DIR` 環境変数を設定 | +| logs | `./wandb` | `wandb.init` の `dir` 引数、または `WANDB_DIR` 環境変数 | +| artifacts | `~/.cache/wandb` | `WANDB_CACHE_DIR` 環境変数 | +| configs | `~/.config/wandb` | `WANDB_CONFIG_DIR` 環境変数 | +| アップロード用ステージング artifacts | `~/.cache/wandb-data/` | `WANDB_DATA_DIR` 環境変数 | +| ダウンロード済み artifacts | `./artifacts` | `WANDB_ARTIFACT_DIR` 環境変数 | -W&B を設定するための環境変数の完全なガイドについては、[環境変数リファレンス](/ja/models/track/environment-variables/)を参照してください。 +環境変数を使用して W&B を設定するための完全な ガイド については、[環境変数リファレンス](/models/track/environment-variables/) を参照してください。 -`wandb` が初期化されたマシンによっては、これらのデフォルトフォルダーがファイルシステムの書き込み可能な部分にない場合があります。これによりエラーが発生する可能性があります。 +`wandb` が初期化されるマシンによっては、これらのデフォルトフォルダーがファイルシステムの書き込み可能な場所に配置されない場合があります。これによりエラーが発生する可能性があります。 -### ローカルのアーティファクトキャッシュをクリーンアップする +### ローカルの Artifacts キャッシュのクリーンアップ -W&B は、共通ファイルを共有するバージョン間でダウンロードを高速化するためにアーティファクトファイルをキャッシュします。時間の経過とともに、このキャッシュディレクトリーは大きくなる可能性があります。キャッシュを整理し、最近使用されていないファイルを削除するために、[`wandb artifact cache cleanup`](/ja/models/ref/cli/wandb-artifact/wandb-artifact-cache/) コマンドを実行してください。 +W&B は、ファイルを共有する バージョン 間のダウンロードを高速化するために Artifacts ファイルをキャッシュします。時間の経過とともに、このキャッシュ ディレクトリー は大容量になる可能性があります。[`wandb artifact cache cleanup`](/models/ref/cli/wandb-artifact/wandb-artifact-cache/) コマンドを実行して、キャッシュを整理し、最近使用されていないファイルを削除してください。 -以下のコードスニペットは、キャッシュサイズを1GBに制限する方法を示しています。コードスニペットをコピーしてターミナルに貼り付けてください: +以下の コードスニペット は、キャッシュのサイズを 1GB に制限する方法を示しています。コードスニペット をコピーして ターミナル に貼り付けてください。 ```bash +# キャッシュサイズを 1GB に制限してクリーンアップ $ wandb artifact cache cleanup 1GB ``` \ No newline at end of file diff --git a/ja/models/artifacts/track-external-files.mdx b/ja/models/artifacts/track-external-files.mdx index 3e731ce895..d0704735dc 100644 --- a/ja/models/artifacts/track-external-files.mdx +++ b/ja/models/artifacts/track-external-files.mdx @@ -1,227 +1,259 @@ --- -title: 外部ファイルをトラックする -description: W&B の外部に保存されたファイルも、Amazon S3 バケット、GCS バケット、HTTP ファイルサーバー、または NFS 共有内のファイルとしてトラックできます。 +title: 外部ファイルのトラッキング +description: 外部 バケット 、HTTP ファイル サーバー 、または NFS シェアに保存されたファイルを追跡します。 --- -**リファレンスアーティファクト**を使用して、Amazon S3 バケット、GCS バケット、Azure blob、HTTP ファイルサーバー、または NFS シェアなど、W&B システムの外部に保存されたファイルをトラッキングします。 W&B [CLI](/ja/models/ref/cli)を使用して、[W&B Run](/ja/models/ref/python/run)の外部でアーティファクトをログします。 +W&B サーバーの外に保存されているファイルを追跡・利用するには、**リファレンス Artifacts** を使用します。一般的な外部ストレージソリューションには、CoreWeave AI Object Storage、Amazon Simple Storage Service (Amazon S3) バケット、GCS バケット、Azure blob、HTTP ファイルサーバー、NFS シェアなどがあります。 -### Run の外部でアーティファクトをログする +リファレンス Artifacts は、通常(非リファレンス)の Artifacts と同様に動作します。主な違いは、リファレンス Artifacts にはファイルサイズや MD5 チェックサムなどのファイルに関する メタデータ のみが含まれる点です。ファイル自体がお客様のシステムから外に出ることはありません。 -W&B は、run の外部でアーティファクトをログするときに run を作成します。各アーティファクトは run に属し、run はプロジェクトに属します。アーティファクト (バージョン) もコレクションに属し、タイプを持ちます。 +リファレンス Artifacts は、通常の Artifacts と同じように操作できます。W&B App では、ファイルブラウザを使用してリファレンス Artifact の内容を閲覧したり、完全な依存関係グラフを探索したり、Artifact のバージョン履歴をスキャンしたりできます。ただし、データ自体が Artifact 内に含まれていないため、UI 上で画像や音声などのリッチメディアをレンダリングすることはできません。 -[`wandb artifact put`](/ja/models/ref/cli/wandb-artifact/wandb-artifact-put) コマンドを使用して、W&B の run の外部でアーティファクトを W&B サーバーにアップロードします。アーティファクトを属させたいプロジェクトの名前とアーティファクトの名前 (`project/artifact_name`) を指定します。必要に応じて、タイプ (`TYPE`) を指定します。以下のコードスニペットでは、アップロードしたいアーティファクトのファイルパスに `PATH` を置き換えてください。 - -```bash -$ wandb artifact put --name project/artifact_name --type TYPE PATH -``` + +外部ファイルを追跡しない Artifact を ログ に記録する場合、W&B は Artifact のファイルを W&B サーバーに保存します。これは、W&B Python SDK で Artifacts を ログ に記録する際のデフォルトの 振る舞い です。 -指定したプロジェクトが存在しない場合、W&B は新しいプロジェクトを作成します。アーティファクトのダウンロード方法については、[アーティファクトのダウンロードと使用](/ja/models/artifacts/download-and-use-an-artifact/)を参照してください。 +外部ファイルを追跡する Artifact を ログ に記録する場合、W&B はオブジェクトの ETag やサイズなどの メタデータ を ログ に記録します。バケットでオブジェクトの バージョン管理 が有効になっている場合は、バージョン ID も ログ に記録されます。 + -## W&B の外部でアーティファクトをトラッキングする +以下のセクションでは、外部リファレンス Artifacts を追跡する方法について説明します。 -W&B Artifacts をデータセットのバージョン管理やモデルのリネージに使用し、**リファレンスアーティファクト**を使用して W&B サーバーの外部に保存されたファイルをトラッキングします。このモードでは、アーティファクトはファイルに関するメタデータ (例えば、URL、サイズ、チェックサム) のみを保存します。基礎データはシステムから離れることはありません。ファイルとディレクトリーを W&B サーバーに保存する方法については、[クイックスタート](/ja/models/artifacts/artifacts-walkthrough/)を参照してください。 +## 外部バケット内の Artifact を追跡する -以下は、リファレンスアーティファクトを作成し、それをワークフローに最適に組み込む方法を説明します。 +W&B Python SDK を使用して、W&B の外部に保存されているファイルへの参照を追跡します。 -### Amazon S3 / GCS / Azure Blob Storage リファレンス +1. `wandb.init()` で run を初期化します。 +2. `wandb.Artifact()` で Artifact オブジェクトを作成します。 +3. Artifact オブジェクトの `wandb.Artifact.add_reference()` メソッドを使用して、バケットパスへの参照を指定します。 +4. `run.log_artifact()` で Artifact の メタデータ を ログ に記録します。 -W&B Artifacts をデータセットとモデルのバージョン管理に使用して、クラウドストレージバケットでのリファレンスをトラッキングします。アーティファクトリファレンスを使用すると、既存のストレージレイアウトに変更を加えることなく、バケットの上にシームレスにトラッキングをレイヤリングできます。 +```python +import wandb -Artifacts は基礎となるクラウドストレージベンダー (AWS、GCP、Azure など) を抽象化します。次のセクションで説明される情報は、Amazon S3、Google Cloud Storage、Azure Blob Storage に共通して適用されます。 +# W&B runを初期化 +with wandb.init(project="my-project") as run: - -W&B Artifacts は、MinIO を含む任意の Amazon S3 互換インターフェースをサポートしています。 `AWS_S3_ENDPOINT_URL` 環境変数を MinIO サーバーを指すように設定すれば、以下のスクリプトはそのまま動作します。 - + # Artifactオブジェクトを作成 + artifact = wandb.Artifact(name="name", type="type") -次の構造を持つバケットがあると仮定します: + # バケットパスへの参照を追加 + artifact.add_reference(uri = "uri/to/your/bucket/path") -```bash -s3://my-bucket -+-- datasets/ -| +-- mnist/ -+-- models/ - +-- cnn/ + # Artifactのメタデータをログに記録 + run.log_artifact(artifact) ``` -`mnist/` の下には、私たちのデータセットである画像のコレクションがあります。アーティファクトでそれをトラッキングしましょう: +例として、バケットが以下の ディレクトリー 構造を持っていると仮定します。 -```python -import wandb +```text +s3://my-bucket -run = wandb.init() -artifact = wandb.Artifact("mnist", type="dataset") -artifact.add_reference("s3://my-bucket/datasets/mnist") -run.log_artifact(artifact) +|datasets/ + |-- mnist/ +|models/ + |-- cnn/ ``` - -デフォルトでは、W&B はオブジェクトプリフィックスを追加する際に 10,000 オブジェクトの制限を課しています。この制限は、`add_reference` の呼び出しで `max_objects=` を指定することによって調整できます。 - +`datasets/mnist/` ディレクトリー には画像のコレクションが含まれています。この `datasets/mnist/` ディレクトリー を Datasets Artifact として追跡するには、以下のように指定します。 -新しいリファレンスアーティファクト `mnist:latest` は、通常のアーティファクトと非常に似た外観と挙動を持っています。唯一の違いは、アーティファクトが S3/GCS/Azure オブジェクトに関するメタデータ (例えば、ETag、サイズ、バージョン ID) のみを含んでいることです (バケットにオブジェクトのバージョン管理が有効になっている場合)。 +1. Artifact に `"mnist"` などの名前を付けます。 +2. Artifact オブジェクトを構築する際、`type` パラメータ を `"dataset"` に設定します (`wandb.Artifact(type="dataset")`)。 +3. `wandb.Artifact.add_reference()` を呼び出す際に、`datasets/mnist/` ディレクトリー へのパスを Amazon S3 URI (`s3://my-bucket/datasets/mnist/`) として提供します。 +4. `run.log_artifact()` で Artifact を ログ に記録します。 -W&B は、使用するクラウドプロバイダーに基づいてクレデンシャルを探すデフォルトのメカニズムを使用します。クラウドプロバイダーからのドキュメントを読み、使用されるクレデンシャルについて詳しく学びましょう。 +以下の コードスニペット は、リファレンス Artifact `mnist:latest` を作成します。 -| クラウドプロバイダー | クレデンシャルドキュメント | -| -------------- | ------------------------- | -| AWS | [Boto3 ドキュメント](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials) | -| GCP | [Google Cloud ドキュメント](https://cloud.google.com/docs/authentication/provide-credentials-adc) | -| Azure | [Azure ドキュメント](https://learn.microsoft.com/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python) | +```python +import wandb -AWS では、バケットが設定されたユーザーのデフォルトリージョンに位置していない場合、`AWS_REGION` 環境変数をバケットリージョンに一致させる必要があります。 +with wandb.init(project="my-project") as run: + artifact = wandb.Artifact(name="mnist", type="dataset") + artifact.add_reference(uri="s3://my-bucket/datasets/mnist") + run.log_artifact(artifact) +``` -このアーティファクトを通常のアーティファクトのように扱うことができます。アプリ UI では、ファイルブラウザを使用してリファレンスアーティファクトの内容を閲覧したり、完全な依存関係グラフを探索したり、アーティファクトのバージョン履歴をスキャンしたりできます。 +W&B App 内では、ファイルブラウザを使用してリファレンス Artifact の内容を確認したり、[完全な依存関係グラフを探索](/models/artifacts/explore-and-traverse-an-artifact-graph/)したり、Artifact のバージョン履歴をスキャンしたりできます。データ自体が Artifact 内に含まれていないため、W&B App は画像や音声などのリッチメディアをレンダリングしません。 - -画像、オーディオ、ビデオ、ポイントクラウドといったリッチメディアは、バケットの CORS 設定によってアプリ UI で適切にレンダリングされない可能性があります。バケットの CORS 設定で **app.wandb.ai** を許可リストに追加することで、アプリ UI でこれらのリッチメディアが正しくレンダリングされるようになります。 + +W&B Artifacts は、CoreWeave Storage や MinIO を含む、あらゆる Amazon S3 互換インターフェースをサポートしています。以下のスクリプトは、環境変数 `AWS_S3_ENDPOINT_URL` を CoreWeave Storage または MinIO サーバーを指すように設定することで、両方のプロバイダーでそのまま動作します。 + -パネルは、プライベートバケットの場合アプリ UI でレンダリングされないかもしれません。もし会社が VPN を使用している場合は、VPN 内の IP をホワイトリストに追加するようにバケットのアクセスポリシーを更新できます。 + +デフォルトでは、W&B はオブジェクトプレフィックスを追加する際に 10,000 オブジェクトの制限を設けています。この制限を調整するには、`wandb.Artifact.add_reference()` を呼び出す際に `max_objects=` を指定します。 -### リファレンスアーティファクトをダウンロードする +## 外部バケットから Artifact をダウンロードする + +リファレンス Artifact をダウンロードする際、W&B は Artifact が ログ に記録されたときに記録された メタデータ を使用して、基盤となるバケットからファイルを取得します。バケットでオブジェクトの バージョン管理 が有効になっている場合、W&B は Artifact が ログ に記録された時点のファイルの状態に対応するオブジェクト バージョン を取得します。バケットの内容が変化しても、Artifact が トレーニング run 中のバケットの スナップショット として機能するため、特定の モデル が トレーニング された際の正確な バージョン の データ を常に参照できます。 + +以下の コードスニペット は、リファレンス Artifact をダウンロードする方法を示しています。Artifact をダウンロードするための API は、リファレンス Artifact と非リファレンス Artifact の両方で共通です。 ```python import wandb -run = wandb.init() -artifact = run.use_artifact("mnist:latest", type="dataset") -artifact_dir = artifact.download() +with wandb.init(project="my-project") as run: + artifact = run.use_artifact("mnist:latest", type="dataset") + artifact_dir = artifact.download() ``` -W&B は、リファレンスアーティファクトをダウンロードする際に、アーティファクトがログされたときに記録されたメタデータを使用して、基となるバケットからファイルを取得します。バケットにオブジェクトのバージョン管理が有効になっている場合、W&B はアーティファクトがログされた時点のファイルの状態に対応するオブジェクトバージョンを取得します。これは、バケットの内容が進化しても、アーティファクトがトレーニングされた特定の反復にあなたのデータを指し示すことができることを意味します。アーティファクトはトレーニング時点でのバケットのスナップショットとして機能します。 - -ワークフローの一環としてファイルを上書きする場合は、W&B はストレージバケットの「オブジェクトバージョン管理」を有効にすることを推奨します。バケットにバージョン管理が有効になっている場合、上書きされたファイルへのリファレンスを持つアーティファクトも依然として無傷であることになります。なぜなら、古いバージョンのオブジェクトが保持されるからです。 +ワークフローの一部としてファイルを上書きする場合は、ストレージバケットで「オブジェクトの バージョン管理 (Object Versioning)」を有効にすることをお勧めします。 + +バージョン管理 が有効であれば、Artifact が ログ に記録された後にファイルが上書きされたとしても、Artifact をダウンロードする際に W&B は常に正しい バージョン のファイルを取得できます。 -ユースケースに基づいて、オブジェクトバージョン管理を有効にする手順をお読みください。[AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)、[GCP](https://cloud.google.com/storage/docs/using-object-versioning#set)、[Azure](https://learn.microsoft.com/azure/storage/blobs/versioning-enable)。 +ユースケース に応じて、オブジェクトの バージョン管理 を有効にするための手順を確認してください: [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html), [Google Cloud](https://cloud.google.com/storage/docs/using-object-versioning#set), [Azure](https://learn.microsoft.com/azure/storage/blobs/versioning-enable) -### すべてを結び付ける +## 外部バケットからの追加とダウンロード -次のコード例は、トレーニングジョブに供給される Amazon S3、GCS、または Azure 上のデータセットをトラッキングするために使用できる単純なワークフローを示しています: +以下の コードスニペット は、データセット を Amazon S3 バケットにアップロードし、それをリファレンス Artifact で追跡してからダウンロードする例です。 ```python +import boto3 import wandb -run = wandb.init() - -artifact = wandb.Artifact("mnist", type="dataset") -artifact.add_reference("s3://my-bucket/datasets/mnist") - -# アーティファクトをトラッキングし、それを -# この run の入力としてマークします。 -# バケット内のファイルが変更された場合にのみ、新しい -# アーティファクトバージョンがログされます。 -run.use_artifact(artifact) +with wandb.init() as run: + # ここでトレーニングを行う... -artifact_dir = artifact.download() + s3_client = boto3.client("s3") + s3_client.upload_file(file_name="my_model.h5", bucket="my-bucket", object_name="models/cnn/my_model.h5") -# トレーニングをここで実行... + # モデルArtifactをログに記録 + model_artifact = wandb.Artifact("cnn", type="model") + model_artifact.add_reference("s3://my-bucket/models/cnn/") + run.log_artifact(model_artifact) ``` -モデルをトラッキングするために、トレーニングスクリプトがモデルファイルをバケットにアップロードした後に、モデルアーティファクトをログできます: +後ほど、モデル Artifact をダウンロードできます。Artifact の名前とタイプを指定します。 ```python -import boto3 import wandb -run = wandb.init() - -# トレーニングをここで実行... - -s3_client = boto3.client("s3") -s3_client.upload_file("my_model.h5", "my-bucket", "models/cnn/my_model.h5") - -model_artifact = wandb.Artifact("cnn", type="model") -model_artifact.add_reference("s3://my-bucket/models/cnn/") -run.log_artifact(model_artifact) +with wandb.init() as run: + artifact = run.use_artifact(artifact_or_name = "cnn", type="model") + datadir = artifact.download() ``` -GCP または Azure のリファレンスでのアーティファクトのトラッキング方法についてのエンドツーエンドのガイドを読むには、次のレポートをご覧ください: +Google Cloud または Azure でリファレンスによって Artifacts を追跡する方法のエンドツーエンドのチュートリアルについては、以下の レポート を参照してください。 -* [リファレンスでのアーティファクトトラッキングガイド](https://wandb.ai/stacey/artifacts/reports/Tracking-Artifacts-by-Reference--Vmlldzo1NDMwOTE) -* [Microsoft Azure でのリファレンスアーティファクトの作業](https://wandb.ai/andrea0/azure-2023/reports/Efficiently-Harnessing-Microsoft-Azure-Blob-Storage-with-Weights-Biases--Vmlldzo0NDA2NDgw) +* [Guide to Tracking Artifacts by Reference with Google Cloud](https://wandb.ai/stacey/artifacts/reports/Tracking-Artifacts-by-Reference--Vmlldzo1NDMwOTE) +* [Working with Reference Artifacts in Microsoft Azure](https://wandb.ai/andrea0/azure-2023/reports/Efficiently-Harnessing-Microsoft-Azure-Blob-Storage-with-Weights-Biases--Vmlldzo0NDA2NDgw) -### ファイルシステムリファレンス +## クラウドストレージの認証情報 -データセットへの高速アクセスのためのもう一つの一般的なパターンは、NFS マウントポイントをトレーニングジョブを実行するすべてのマシンでリモートファイルシステムに公開することです。これは、クラウドストレージバケットよりもさらに簡単なソリューションになる可能性があります。トレーニングスクリプトの視点からは、ファイルはちょうどローカルファイルシステムに置かれているかのように見えるからです。幸運にも、その使いやすさは、ファイルシステムへのリファレンスをトラッキングするために Artifacts を使用する場合にも当てはまります。ファイルシステムがマウントされているかどうかに関係なくです。 +W&B は、使用しているクラウドプロバイダーに基づいたデフォルトの認証情報検索メカニズムを使用します。使用される認証情報の詳細については、各クラウドプロバイダーの ドキュメント を参照してください。 -次の構造を持つファイルシステムが `/mount` にマウントされていると仮定します: +| クラウドプロバイダー | 認証情報ドキュメント | +| -------------- | ------------------------- | +| CoreWeave AI Object Storage | [CoreWeave AI Object Storage documentation](https://docs.coreweave.com/docs/products/storage/object-storage/how-to/manage-access-keys/cloud-console-tokens) | +| AWS | [Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials) | +| Google Cloud | [Google Cloud documentation](https://cloud.google.com/docs/authentication/provide-credentials-adc) | +| Azure | [Azure documentation](https://learn.microsoft.com/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python) | -```bash -mount -+-- datasets/ -| +-- mnist/ -+-- models/ - +-- cnn/ -``` +AWS の場合、バケットが設定済みの ユーザー のデフォルトリージョンにない場合は、バケットのリージョンに合わせて `AWS_REGION` 環境変数を設定する必要があります。 + + +画像、音声、ビデオ、ポイントクラウドなどのリッチメディアは、バケットの CORS 設定によっては App UI でのレンダリングに失敗する場合があります。バケットの CORS 設定で **app.wandb.ai** を許可リストに追加することで、W&B App がこれらのリッチメディアを適切に表示できるようになります。 + +リッチメディアが App UI でレンダリングされない場合は、バケットの CORS ポリシーで `app.wandb.ai` が許可されていることを確認してください。 + + +## ファイルシステム内の Artifact を追跡する + +データセット への アクセス における一般的なパターンは、トレーニング ジョブを実行するすべてのマシンに対して、リモートファイルシステムへの NFS マウントポイントを公開することです。トレーニングスクリプト の観点からはファイルがローカルの ファイルシステム にあるように見えるため、これはクラウドストレージバケットの代替ソリューションとなります。 + +ファイルシステム 内の Artifact を追跡するには: + +1. `wandb.init()` で run を初期化します。 +2. `wandb.Artifact()` で Artifact オブジェクトを作成します。 +3. Artifact オブジェクトの `wandb.Artifact.add_reference()` メソッドを使用して、ファイルシステムパスへの参照を指定します。 +4. `run.log_artifact()` で Artifact の メタデータ を ログ に記録します。 -`mnist/` の下には、私たちのデータセットである画像のコレクションがあります。アーティファクトでそれをトラッキングしましょう: +マウントされた ファイルシステム 内のファイルを追跡するには、以下の コードスニペット をコピー&ペーストしてください。山括弧 (`< >`) で囲まれた 値 は、ご自身のものに置き換えてください。 ```python import wandb -run = wandb.init() -artifact = wandb.Artifact("mnist", type="dataset") -artifact.add_reference("file:///mount/datasets/mnist/") -run.log_artifact(artifact) -``` +# runを初期化 +with wandb.init(entity="", project="") as run: -デフォルトでは、W&B はディレクトリへのリファレンスを追加する際に 10,000 ファイルの制限を課しています。この制限は、`add_reference` の呼び出しで `max_objects=` を指定することによって調整できます。 + # Artifactオブジェクトを作成 + artifact = wandb.Artifact(name="", type="") -URL のトリプルスラッシュに注目してください。最初のコンポーネントは、ファイルシステムリファレンスの使用を示す `file://` プレフィックスです。二番目は、データセットのパス `/mount/datasets/mnist/` です。 + # ファイルシステムパスへの参照を追加 + artifact.add_reference("file:///path/to/dataset/") -結果として得られるアーティファクト `mnist:latest` は通常のアーティファクトのように見え、機能します。唯一の違いは、アーティファクトがファイルに関するメタデータ (サイズや MD5 チェックサムなど) のみを含んでいることです。ファイル自体はシステムから離れることはありません。 + # Artifactをログに記録(メタデータのみ) + run.log_artifact(artifact) +``` -このアーティファクトを通常のアーティファクトのように操作できます。UI では、ファイルブラウザを使用してリファレンスアーティファクトの内容を閲覧したり、完全な依存関係グラフを探索したり、アーティファクトのバージョン履歴をスキャンしたりできます。ただし、アーティファクト自体にデータが含まれていないため、UI では画像、オーディオなどのリッチメディアをレンダリングできません。 +URL 内のトリプルスラッシュに注意してください。最初のコンポーネントは ファイルシステム 参照の使用を示す `file://` プレフィックスです。2 番目のコンポーネントは ファイルシステム のルート `/` です。残りのコンポーネントは、追跡したい ディレクトリー またはファイルへのパスです。 -リファレンスアーティファクトをダウンロードするのは簡単です: +例として、`/mount` にマウントされた ファイルシステム が以下の構造を持っているとします。 + +```text +mount +|datasets/ + |-- mnist/ +|models/ + |-- cnn/ +``` + +`datasets/mnist/` ディレクトリー を Datasets Artifact として追跡したい場合、以下の コードスニペット を使用できます。 ```python import wandb -run = wandb.init() -artifact = run.use_artifact("entity/project/mnist:latest", type="dataset") -artifact_dir = artifact.download() +with wandb.init() as run: + artifact = wandb.Artifact("mnist", type="dataset") + artifact.add_reference("file:///mount/datasets/mnist/") + run.log_artifact(artifact) ``` -ファイルシステムリファレンスの場合、`download()` 操作は参照されたパスからファイルをコピーして、アーティファクトディレクトリを構築します。上記の例では、`/mount/datasets/mnist` の内容がディレクトリ `artifacts/mnist:v0/` にコピーされます。アーティファクトが上書きされたファイルへのリファレンスを含む場合、`download()` はエラーを投げます。アーティファクトがもはや再構築できないからです。 +これにより、`/mount/datasets/mnist/` の下に保存されているファイルを指すリファレンス Artifact `mnist:latest` が作成されます。 + + +デフォルトでは、W&B は ディレクトリー への参照を追加する際に 10,000 ファイルの制限を設けています。この制限を調整するには、`wandb.Artifact.add_reference()` を呼び出す際に `max_objects=` を指定します。 + -すべてをまとめると、ここにマウントされたファイルシステムの下のデータセットをトラッキングして、トレーニングジョブに供給するために使用できる簡単なワークフローがあります: +同様に、`models/cnn/my_model.h5` に保存されている モデル を追跡するには、以下の コードスニペット を使用できます。 ```python import wandb -run = wandb.init() +with wandb.init() as run: -artifact = wandb.Artifact("mnist", type="dataset") -artifact.add_reference("file:///mount/datasets/mnist/") + # ここでトレーニングを行う... -# アーティファクトをトラッキングし、それを -# この run の入力としてマークします。ディレクトリ下の -# ファイルが変更された場合にのみ、新しいアーティファクト -# バージョンがログされます。 -run.use_artifact(artifact) + # モデルをディスクに書き込む -artifact_dir = artifact.download() + # Artifactオブジェクトを作成 + model_artifact = wandb.Artifact("cnn", type="model") -# トレーニングをここで実行... + # モデルファイルパスへの参照を追加 + model_artifact.add_reference("file:///mount/cnn/my_model.h5") + + # W&BにArtifactをログとして記録 + run.log_artifact(model_artifact) ``` -モデルをトラッキングするために、トレーニングスクリプトがモデルファイルをマウントポイントに書き込んだ後に、モデルアーティファクトをログできます: +## 外部ファイルシステムから Artifact をダウンロードする -```python -import wandb +リファレンスされた ファイルシステム からファイルをダウンロードするには、非リファレンス Artifact と同じ API を使用します。 -run = wandb.init() +1. `wandb.init()` で run を初期化します。 +2. `wandb.Run.use_artifact()` メソッドを使用して、ダウンロードしたい Artifact を指定します。 +3. Artifact の `wandb.Artifact.download()` メソッドを呼び出して、参照先の ファイルシステム からファイルをダウンロードします。 -# トレーニングをここで実行... +```python +with wandb.init() as run: + artifact = run.use_artifact("entity/project/mnist:latest", type="dataset") + artifact_dir = artifact.download() +``` -# モデルをディスクに書き込む +W&B は `/mount/datasets/mnist` の内容を `artifacts/mnist:v0/` ディレクトリー にコピーします。 -model_artifact = wandb.Artifact("cnn", type="model") -model_artifact.add_reference("file:///mount/cnn/my_model.h5") -run.log_artifact(model_artifact) -``` \ No newline at end of file + +`Artifact.download()` は、Artifact を再構成できない場合にエラーをスローします。例えば、上書きされたファイルへの参照が Artifact に含まれている場合、Artifact を再構成できなくなるため、`Artifact.download()` はエラーをスローします。 + \ No newline at end of file diff --git a/ja/models/artifacts/ttl.mdx b/ja/models/artifacts/ttl.mdx index 5644b20cf0..4e79131f45 100644 --- a/ja/models/artifacts/ttl.mdx +++ b/ja/models/artifacts/ttl.mdx @@ -1,134 +1,146 @@ --- -title: アーティファクトデータ保持の管理 -description: 存続期間 (TTL) ポリシー +title: Artifact のデータ保持の管理 +description: Time to live (TTL) ポリシー --- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; - + -W&B の Artifacts のタイム・トゥ・リブ(TTL)ポリシーを使用して、Artifacts が W&B から削除されるスケジュールを設定します。Artifact を削除すると、W&B はそのアーティファクトを *ソフト削除* としてマークします。つまり、アーティファクトは削除対象としてマークされますが、ファイルはすぐにストレージから削除されるわけではありません。W&B がアーティファクトを削除する方法の詳細については、[アーティファクトを削除](./delete-artifacts)ページを参照してください。 +W&B Artifact タイムトゥライブ(TTL)ポリシーを使用すると、W&B から Artifacts が削除されるタイミングをスケジュールできます。Artifact を削除すると、W&B はその Artifact を *ソフト削除* としてマークします。つまり、Artifact は削除対象としてマークされますが、ストレージからファイルが即座に削除されるわけではありません。W&B が Artifacts を削除する方法の詳細については、[Artifacts の削除](./delete-artifacts) ページを参照してください。 -W&B アプリで Artifacts TTL を使って データ保持を管理する方法を学ぶには、[この](https://www.youtube.com/watch?v=hQ9J6BoVmnc) ビデオチュートリアルをご覧ください。 +W&B アプリで Artifacts TTL を使用してデータ保持を管理する方法については、ビデオチュートリアル [Managing data retention with Artifacts TTL](https://www.youtube.com/watch?v=hQ9J6BoVmnc) をご覧ください。 -W&B は、モデルレジストリにリンクされたモデルアーティファクトの TTL ポリシーを設定するオプションを非アクティブ化します。これは、生産ワークフローで使用されるリンクされたモデルが誤って期限切れにならないようにするためです。 +W&B は、Registry にリンクされた Artifacts に対して TTL ポリシーを設定するオプションを無効にします。これは、プロダクションワークフローで使用されるリンクされた Artifacts が誤って期限切れにならないようにするためです。 -* チームの設定](/ja/platform/app/settings-page/teams)と、(1) TTL ポリシーを設定または編集できる人を許可するか、(2) チームのデフォルト TTL を設定するかなどのチームレベルの TTL 設定は、チーム管理者のみが表示およびアクセスできます。 -* W&B アプリ UI のアーティファクトの詳細に TTL ポリシーを設定または編集するオプションが表示されない場合、またはプログラムで TTL を設定してもアーティファクトの TTL プロパティが正常に変更されない場合は、チーム管理者が権限を付与していません。 +* チーム管理者のみが [チームの設定](/platform/app/settings-page/teams) を表示し、(1)TTL ポリシーを設定または編集できる人の許可、または(2)チームのデフォルト TTL の設定といった、チームレベルの TTL 設定にアクセスできます。 +* W&B アプリ UI の Artifact の詳細に TTL ポリシーを設定または編集するオプションが表示されない場合、またはプログラムで TTL を設定しても Artifact の TTL プロパティが正常に変更されない場合は、チーム管理者がその権限を付与していない可能性があります。 ## 自動生成された Artifacts -ユーザー生成のアーティファクトのみが TTL ポリシーを使用できます。W&B によって自動生成されたアーティファクトには TTL ポリシーを設定することはできません。 +TTL ポリシーを使用できるのは、ユーザーが生成した Artifacts のみです。W&B によって自動生成された Artifacts に TTL ポリシーを設定することはできません。 -自動生成されたアーティファクトを示すアーティファクトタイプは次のとおりです: +以下の Artifact タイプは、自動生成された Artifact であることを示します: - `run_table` - `code` - `job` -- `wandb-*` で始まる種類のアーティファクト +- `wandb-*` で始まるすべての Artifact タイプ -アーティファクトの種類は、[W&B プラットフォーム](/ja/platform/hosting/)またはプログラムで確認できます: +Artifact のタイプは、[W&B プラットフォーム](/models/artifacts/explore-and-traverse-an-artifact-graph/) またはプログラムで確認できます: ```python import wandb -run = wandb.init(project="") -artifact = run.use_artifact(artifact_or_name="") -print(artifact.type) +# プロジェクト名を指定して run を初期化 +with wandb.init(project="") as run: + # Artifact を取得 + artifact = run.use_artifact(artifact_or_name="") + # Artifact のタイプを表示 + print(artifact.type) ``` -含まれる `<>` で囲まれた値をあなたのものに置き換えてください。 +`<>` で囲まれた値は、ご自身の環境の値に置き換えてください。 -## TTL ポリシーを編集および設定できる人を定義する -チーム内で TTL ポリシーを設定および編集できる人を定義します。TTL 許可をチーム管理者のみに与えることもできますし、チーム管理者とチームメンバーの両方に TTL 許可を与えることもできます。 +## TTL ポリシーを編集および設定できるユーザーの定義 +チーム内で TTL ポリシーを設定および編集できるユーザーを定義します。TTL 権限をチーム管理者のみに付与するか、チーム管理者とチームメンバーの両方に付与するかを選択できます。 -TTL ポリシーを設定または編集できる人を定義できるのはチーム管理者だけです。 +TTL ポリシーを設定または編集できるユーザーを定義できるのは、チーム管理者のみです。 1. チームのプロフィールページに移動します。 -2. **設定** タブを選択します。 -3. **Artifacts のタイム・トゥ・リブ (TTL) セクション**に移動します。 -4. **TTL 許可のドロップダウン**から、TTL ポリシーを設定および編集できる人を選択します。 -5. **設定をレビューして保存**をクリックします。 -6. 変更を確認し、**設定を保存**を選択します。 +2. **Settings** タブを選択します。 +3. **Artifacts time-to-live (TTL)** セクションに移動します。 +4. **TTL permissions** ドロップダウンから、TTL ポリシーを設定および編集できるユーザーを選択します。 +5. **Review and save settings** をクリックします。 +6. 変更内容を確認し、**Save settings** を選択します。 - + Setting TTL permissions -## TTL ポリシーを作成する -アーティファクトを作成するとき、または作成後に TTL ポリシーを設定します。 +## TTL ポリシーの作成 +TTL ポリシーは、Artifact の作成時、または作成後に遡って設定できます。 -以下のコードスニペットすべてにおいて、 `<>` で包まれた内容をあなたの情報に置き換えてコードスニペットを使用してください。 +以下のすべてのコードスニペットにおいて、`<>` で囲まれた内容はご自身の情報に置き換えて使用してください。 -### アーティファクト作成時に TTL ポリシーを設定する -W&B Python SDK を使用してアーティファクトを作成する際に TTL ポリシーを定義します。TTL ポリシーは通常日数で定義されます。 +### Artifact 作成時に TTL ポリシーを設定する +W&B Python SDK を使用して、Artifact 作成時に TTL ポリシーを定義します。TTL ポリシーは通常「日単位」で定義されます。 -アーティファクト作成時に TTL ポリシーを定義することは、通常の[アーティファクトを作成](/ja/models/artifacts/construct-an-artifact)する方法に似ています。例外は、アーティファクトの `ttl` 属性に時間差を渡す点です。 +Artifact 作成時に TTL ポリシーを定義する方法は、通常の [Artifact の作成](/models/artifacts/construct-an-artifact/) 方法と似ていますが、Artifact の `ttl` 属性に time delta を渡す点が異なります。 -手順は次のとおりです: +手順は以下の通りです: -1. [アーティファクトを作成](/ja/models/artifacts/construct-an-artifact)します。 -2. ファイル、ディレクトリ、または参照など、アーティファクトにコンテンツを[追加](/ja/models/artifacts/construct-an-artifact/#add-files-to-an-artifact)します。 -3. Python の標準ライブラリの一部である [`datetime.timedelta`](https://docs.python.org/3/library/datetime.html) データ型で TTL の期限を定義します。 -4. [アーティファクトをログ](/ja/models/artifacts/construct-an-artifact/#3-save-your-artifact-to-the-wb-server)します。 +1. [Artifact を作成](/models/artifacts/construct-an-artifact/) します。 +2. ファイル、ディレクトリー、またはリファレンスなどの [コンテンツを Artifact に追加](/models/artifacts/construct-an-artifact/#add-files-to-an-artifact) します。 +3. Python 標準ライブラリの [`datetime.timedelta`](https://docs.python.org/3/library/datetime.html) データ型を使用して TTL 時間制限を定義します。 +4. [Artifact をログ](/models/artifacts/construct-an-artifact/#3-save-your-artifact-to-the-wb-server) します。 -以下のコードスニペットはアーティファクトを作成し、TTL ポリシーを設定する方法を示しています。 +以下のコードスニペットは、Artifact を作成し、TTL ポリシーを設定する方法を示しています。 ```python import wandb from datetime import timedelta -run = wandb.init(project="", entity="") -artifact = wandb.Artifact(name="", type="") -artifact.add_file("") - -artifact.ttl = timedelta(days=30) # TTL ポリシーを設定 -run.log_artifact(artifact) +# プロジェクト名とエンティティを指定して run を初期化 +with wandb.init(project="", entity="") as run: + # Artifact オブジェクトを作成 + artifact = wandb.Artifact(name="", type="") + # ファイルを追加 + artifact.add_file("") + + # TTL ポリシーを設定(例:30日間) + artifact.ttl = timedelta(days=30) + # Artifact をログ + run.log_artifact(artifact) ``` -上記のコードスニペットは、アーティファクトの TTL ポリシーを 30 日間に設定します。つまり、W&B は 30 日後にアーティファクトを削除します。 +上記のコードスニペットでは、Artifact の TTL ポリシーを 30 日間に設定しています。つまり、W&B は 30 日後にこの Artifact を削除します。 -### アーティファクト作成後に TTL ポリシーを設定または編集する -存在するアーティファクトに対して W&B アプリの UI または W&B Python SDK を使用して TTL ポリシーを定義します。 +### Artifact 作成後に TTL ポリシーを設定または編集する +W&B アプリ UI または W&B Python SDK を使用して、既存の Artifact に TTL ポリシーを定義します。 -アーティファクトの TTL を変更する場合、アーティファクトの期限切れまでの時間は、アーティファクトの作成時刻 (`createdAt` タイムスタンプ) を基に計算されます。 +Artifact の TTL を変更しても、Artifact が期限切れになるまでの時間は、その Artifact の `createdAt` タイムスタンプを基準に計算されます。 -1. [あなたのアーティファクトを取得](/ja/models/artifacts/download-and-use-an-artifact/)します。 -2. アーティファクトの `ttl` 属性に時間差を渡します。 -3. [`save`](/ja/models/ref/python/run#save) メソッドでアーティファクトを更新します。 +1. [Artifact を取得](/models/artifacts/download-and-use-an-artifact/) します。 +2. Artifact の `ttl` 属性に time delta を渡します。 +3. [`save`](/models/ref/python/experiments/run#save) メソッドを使用して Artifact を更新します。 -以下のコードスニペットは、アーティファクトに TTL ポリシーを設定する方法を示しています: +以下のコードスニペットは、Artifact に TTL ポリシーを設定する方法を示しています: ```python import wandb from datetime import timedelta +# 既存の Artifact を取得 artifact = run.use_artifact("") -artifact.ttl = timedelta(days=365 * 2) # 2年後に削除 +# TTL ポリシーを設定(例:2年後に削除) +artifact.ttl = timedelta(days=365 * 2) +# 変更を保存 artifact.save() ``` -上記のコード例では、TTL ポリシーを2年間に設定します。 +上記のコード例では、TTL ポリシーを 2 年間に設定しています。 -1. W&B アプリ UI の W&B プロジェクトに移動します。 -2. 左のパネルでアーティファクトアイコンを選択します。 -3. アーティファクトの一覧からアーティファクトタイプを展開します。 -4. TTL ポリシーを編集したいアーティファクトバージョンを選択します。 -5. **バージョン** タブをクリックします。 -6. ドロップダウンから **TTL ポリシー編集** を選択します。 -7. 表示されるモーダル内で、TTL ポリシードロップダウンから **カスタム** を選択します。 -8. **TTL 期間**フィールドで、日数単位で TTL ポリシーを設定します。 -9. **TTL 更新** ボタンを選択して変更を保存します。 +1. W&B アプリ UI で W&B プロジェクトに移動します。 +2. 左パネルの Artifact アイコンを選択します。 +3. Artifacts のリストから、対象の Artifact タイプを展開します。 +4. TTL ポリシーを編集したい Artifact バージョンを選択します。 +5. **Version** タブをクリックします。 +6. ドロップダウンから **Edit TTL policy** を選択します。 +7. 表示されたモーダルで、TTL policy ドロップダウンから **Custom** を選択します。 +8. **TTL duration** フィールドに、TTL ポリシーを日単位で設定します。 +9. **Update TTL** ボタンを選択して変更を保存します。 - + Editing TTL policy @@ -136,96 +148,104 @@ artifact.save() ### チームのデフォルト TTL ポリシーを設定する -チームのデフォルト TTL ポリシーを設定できるのはチーム管理者だけです。 +チームのデフォルト TTL ポリシーを設定できるのは、チーム管理者のみです。 -チームのデフォルト TTL ポリシーを設定します。デフォルトの TTL ポリシーは、既存と今後のアーティファクトすべてに、その作成日を基に適用されます。バージョンレベルで既に TTL ポリシーが存在するアーティファクトは、チームのデフォルト TTL に影響を受けません。 +チームのデフォルト TTL ポリシーを設定します。デフォルト TTL ポリシーは、それぞれの作成日に基づいて、既存および将来のすべての Artifacts に適用されます。すでにバージョンレベルで TTL ポリシーが設定されている Artifacts は、チームのデフォルト TTL の影響を受けません。 1. チームのプロフィールページに移動します。 -2. **設定** タブを選択します。 -3. **Artifacts のタイム・トゥ・リブ (TTL) セクション**に移動します。 -4. **チームのデフォルト TTL ポリシー設定** をクリックします。 -5. **期間**フィールドにおいて、日数単位で TTL ポリシーを設定します。 -6. **設定をレビューして保存** をクリックします。 -7. 変更を確認し、**設定を保存** を選択します。 +2. **Settings** タブを選択します。 +3. **Artifacts time-to-live (TTL)** セクションに移動します。 +4. **Set team's default TTL policy** をクリックします。 +5. **Duration** フィールドに、TTL ポリシーを日単位で設定します。 +6. **Review and save settings** をクリックします。 +7. 変更内容を確認し、**Save settings** を選択します。 - + Setting default TTL policy -### run 外で TTL ポリシーを設定する +### Run の外部で TTL ポリシーを設定する -公開 API を使って run を取得せずにアーティファクトを取得し、TTL ポリシーを設定します。TTL ポリシーは通常日数単位で定義されます。 +Public API を使用して、Run を取得せずに Artifact を取得し、TTL ポリシーを設定します。TTL ポリシーは通常「日単位」で定義されます。 -以下のコードサンプルは、公開 API を使用してアーティファクトを取得し、TTL ポリシーを設定する方法を示しています。 +以下のコードサンプルは、Public API を使用して Artifact を取得し、TTL ポリシーを設定する方法を示しています。 ```python api = wandb.Api() +# Artifact を取得 artifact = api.artifact("entity/project/artifact:alias") -artifact.ttl = timedelta(days=365) # 1年後削除 +# TTL ポリシーを設定(例:1年後に削除) +artifact.ttl = timedelta(days=365) +# 変更を保存 artifact.save() ``` -## TTL ポリシーを非アクティブにする -W&B Python SDK または W&B アプリ UI を使用して、特定のアーティファクトバージョンの TTL ポリシーを非アクティブにします。 +## TTL ポリシーの無効化 +W&B Python SDK または W&B アプリ UI を使用して、特定の Artifact バージョンの TTL ポリシーを無効にします。 -1. [あなたのアーティファクトを取得](/ja/models/artifacts/download-and-use-an-artifact/)します。 -2. アーティファクトの `ttl` 属性を `None` に設定します。 -3. [`save`](/ja/models/ref/python/run#save) メソッドでアーティファクトを更新します。 +1. [Artifact を取得](/models/artifacts/download-and-use-an-artifact/) します。 +2. Artifact の `ttl` 属性を `None` に設定します。 +3. [`save`](/models/ref/python/experiments/run#save) メソッドを使用して Artifact を更新します。 -以下のコードスニペットは、アーティファクトに対する TTL ポリシーをオフにする方法を示しています: +以下のコードスニペットは、Artifact の TTL ポリシーをオフにする方法を示しています: ```python +# Artifact を取得 artifact = run.use_artifact("") +# TTL を None に設定して無効化 artifact.ttl = None +# 変更を保存 artifact.save() ``` -1. W&B アプリ UI の W&B プロジェクトに移動します。 -2. 左パネルでアーティファクトアイコンを選択します。 -3. アーティファクトのリストからアーティファクトタイプを展開します。 -4. TTL ポリシーを編集したいアーティファクトバージョンを選択します。 -5. バージョンタブをクリックします。 -6. **リンク先レジストリ** ボタンの隣にある肉球 UI アイコンをクリックします。 -7. ドロップダウンから **TTL ポリシー編集** を選択します。 -8. 表示されるモーダル内で、TTL ポリシードロップダウンから **非アクティブ** を選択します。 -9. 変更を保存するために **TTL 更新** ボタンを選択します。 +1. W&B アプリ UI で W&B プロジェクトに移動します。 +2. 左パネルの Artifact アイコンを選択します。 +3. Artifacts のリストから、対象の Artifact タイプを展開します。 +4. TTL ポリシーを編集したい Artifact バージョンを選択します。 +5. **Version** タブをクリックします。 +6. **Link to registry** ボタンの隣にある「三点リーダー(...)」アイコンをクリックします。 +7. ドロップダウンから **Edit TTL policy** を選択します。 +8. 表示されたモーダルで、TTL policy ドロップダウンから **Deactivate** を選択します。 +9. **Update TTL** ボタンを選択して変更を保存します。 - + Removing TTL policy -## TTL ポリシーを確認する -W&B Python SDK または W&B アプリ UI を使用して、アーティファクトの TTL ポリシーを確認します。 +## TTL ポリシーの表示 +Python SDK または W&B アプリ UI を使用して、Artifacts の TTL ポリシーを表示します。 -print 文を使用してアーティファクトの TTL ポリシーを表示します。以下の例では、アーティファクトを取得してその TTL ポリシーを表示する方法を示しています: +print 文を使用して Artifact の TTL ポリシーを表示します。以下の例は、Artifact を取得してその TTL ポリシーを表示する方法を示しています: ```python +# Artifact を取得 artifact = run.use_artifact("") +# TTL ポリシーを表示 print(artifact.ttl) ``` -W&B アプリ UI を使用してアーティファクトの TTL ポリシーを表示します。 +W&B アプリ UI で Artifact の TTL ポリシーを表示します。 -1. W&B アプリの [https://wandb.ai](https://wandb.ai) に移動します。 -2. あなたの W&B プロジェクトに移動します。 -3. プロジェクト内で、左のサイドバーの Artifacts タブを選択します。 +1. [W&B App](https://wandb.ai) に移動します。 +2. W&B プロジェクトに移動します。 +3. プロジェクト内で、左サイドバーの Artifacts タブを選択します。 4. コレクションをクリックします。 -選択されたコレクション内のすべてのアーティファクトが表示されます。`Time to Live` 列にそのアーティファクトに割り当てられた TTL ポリシーが表示されます。 +コレクションビュー内では、選択したコレクション内のすべての Artifacts を確認できます。`Time to Live` 列に、その Artifact に割り当てられた TTL ポリシーが表示されます。 - + TTL collection view \ No newline at end of file diff --git a/ja/models/artifacts/update-an-artifact.mdx b/ja/models/artifacts/update-an-artifact.mdx index 03f459080e..3aa4119416 100644 --- a/ja/models/artifacts/update-an-artifact.mdx +++ b/ja/models/artifacts/update-an-artifact.mdx @@ -1,75 +1,91 @@ --- title: アーティファクトを更新する -description: 既存のアーティファクトを W&B run の内外で更新します。 +description: W&B Run の内部および外部から既存の Artifact を更新します。 --- -アーティファクトの `description`、`metadata`、および `alias` に希望する値を渡します。W&B サーバー上でアーティファクトを更新するには、`save()` メソッドを呼び出してください。W&B Run の間または Run の外でアーティファクトを更新することができます。 +Artifacts の `description` 、 `metadata` 、および `alias` を更新するには、希望する値を渡します。次に `save()` メソッドを呼び出して、 W&B サーバー上の Artifacts を更新します。 Artifacts の更新は、 W&B Run の実行中、または Run の外から行うことができます。 -W&B Public API ([`wandb.Api`](/ja/models/ref/python/public-api/api)) を使用して、Run の外でアーティファクトを更新します。Artifact API ([`wandb.Artifact`](/ja/models/ref/python/artifact)) を使用して、Run の間にアーティファクトを更新します。 + +**Artifact.save() と wandb.Run.log_artifact() の使い分け** + +- 既存の Artifacts を新しい Run を作成せずに更新する場合は、 `Artifact.save()` を使用してください。 +- 新しい Artifacts を作成し、それを特定の Run に関連付ける場合は、 `wandb.Run.log_artifact()` を使用してください。 + + +Run の外で Artifacts を更新するには、 W&B Public API ([`wandb.Api`](/models/ref/python/public-api/api)) を使用します。 Run の実行中に Artifacts を更新するには、 Artifact API ([`wandb.Artifact`](/models/ref/python/experiments/artifact)) を使用します。 -Model Registry にリンクされたアーティファクトのエイリアスを更新することはできません。 +Model Registry 内のモデルにリンクされている Artifacts の エイリアス を更新することはできません。 - -次のコード例は、[`wandb.Artifact`](/ja/models/ref/python/artifact) API を使用してアーティファクトの説明を更新する方法を示しています。 + +次のコード例は、 [`wandb.Artifact`](/models/ref/python/experiments/artifact) API を使用して Artifacts の説明(description)を更新する方法を示しています。 ```python import wandb -run = wandb.init(project="") -artifact = run.use_artifact(":") -artifact.description = "" -artifact.save() +# プロジェクト名を指定して Run を開始 +with wandb.init(project="") as run: + # 使用する Artifacts を取得 + artifact = run.use_artifact(":") + # 説明を更新 + artifact.description = "" + # 変更を保存 + artifact.save() ``` - -次のコード例は、`wandb.Api` API を使用してアーティファクトの説明を更新する方法を示しています。 + +次のコード例は、 `wandb.Api` API を使用して Artifacts の説明を更新する方法を示しています。 ```python import wandb api = wandb.Api() +# アーティファクトを取得 artifact = api.artifact("entity/project/artifact:alias") -# 説明を更新する +# 説明(description)を更新 artifact.description = "My new description" -# メタデータキーを選択的に更新する +# メタデータの特定のキーを更新 artifact.metadata["oldKey"] = "new value" -# メタデータを完全に置き換える +# メタデータを完全に置き換え artifact.metadata = {"newKey": "new value"} -# エイリアスを追加する +# エイリアスを追加 artifact.aliases.append("best") -# エイリアスを削除する +# エイリアスを削除 artifact.aliases.remove("latest") -# エイリアスを完全に置き換える +# エイリアスを完全に置き換え artifact.aliases = ["replaced"] -# すべてのアーティファクトの変更を保存する +# すべてのアーティファクトの変更を永続化 artifact.save() ``` -詳細は、Weights and Biases [Artifact API](/ja/models/ref/python/artifact) を参照してください。 +詳細については、 Weights & Biases の [Artifact API](/models/ref/python/experiments/artifact) を参照してください。 - -コレクションも単一のアーティファクトと同様に更新することができます。 + +Artifact コレクションも、単体の Artifacts と同様の方法で更新できます。 ```python import wandb -run = wandb.init(project="") -api = wandb.Api() -artifact = api.artifact_collection(type="", collection="") -artifact.name = "" -artifact.description = "" -artifact.save() +with wandb.init(project="") as run: + api = wandb.Api() + # アーティファクトコレクションを取得 + artifact = api.artifact_collection(type="", collection="") + # コレクション名を更新 + artifact.name = "" + # コレクションの説明を更新 + artifact.description = "" + # 変更を保存 + artifact.save() ``` -詳細は [Artifacts Collection](/ja/models/ref/python/public-api/api) リファレンスを参照してください。 +詳細については、 [Artifacts Collection](/models/ref/python/public-api/api) のリファレンスを参照してください。 \ No newline at end of file diff --git a/ja/models/automations.mdx b/ja/models/automations.mdx new file mode 100644 index 0000000000..9d4c65de17 --- /dev/null +++ b/ja/models/automations.mdx @@ -0,0 +1,62 @@ +--- +title: オートメーション の概要 +description: W&B 内のイベントに基づいて ワークフロー をトリガーするには、W&B オートメーション を使用します。 +--- +import EnterpriseCloudOnly from "/snippets/en/_includes/enterprise-cloud-only.mdx"; + + + + + +このページでは、W&B における オートメーション について説明します。 [オートメーションを作成](/models/automations/create-automations/) することで、W&B 内のイベントをトリガーとして、モデルの自動テストやデプロイメントなどのワークフローのステップを実行できます。 + +例えば、オートメーションを使用すると、新しい バージョン が作成されたときに Slack チャンネルに通知したり、アーティファクト に `production` エイリアス が追加されたときに自動テストの Webhook を実行したり、Run の `loss`(損失)が許容範囲内に収まったときにのみ検証ジョブを開始したりすることができます。 + + +オートメーションのチュートリアルをお探しですか? +- [モデルの評価とデプロイメントのために Github Action を自動的にトリガーする方法を学ぶ](https://wandb.ai/wandb/wandb-model-cicd/reports/Model-CI-CD-with-W-B--Vmlldzo0OTcwNDQw) +- [Sagemaker エンドポイントへのモデルの自動デプロイを実演するビデオを見る](https://www.youtube.com/watch?v=s5CMj_w3DaQ) +- [オートメーションを紹介するビデオシリーズを見る](https://youtube.com/playlist?list=PLD80i8An1OEGECFPgY-HPCNjXgGu-qGO6&feature=shared) + + +## オートメーションイベント + +オートメーションは、コレクション、プロジェクト、またはレジストリ内の Runs または アーティファクト に関連するイベントによってトリガーされます。オートメーションは以下の場合に開始できます。 + +- Run の メトリクス が定義された絶対閾値または相対閾値を満たしたとき。例えば、Run の `loss` が 0.01 未満になったときや、Run の `accuracy`(精度)が 5% 向上したときにトリガーします。 +- Run の z-score(標準スコア)が平均から指定量だけ逸脱したとき。z-score が 0 の場合は、結果が平均と一致していることを示します。z-score が +2 の場合は結果が平均より標準偏差の 2 倍高いことを意味し、z-score が -2 の場合は結果が平均より標準偏差の 2 倍低いことを意味します。 +- プロジェクト またはレジストリでイベントが発生したとき。例えば、モデル アーティファクト の新しい バージョン が作成されたときや、モデル アーティファクト に `production` エイリアス が追加されたときにトリガーします。 + +詳細については、[オートメーションのイベントとスコープ](/models/automations/automation-events/) を参照してください。 + +## オートメーションアクション + +イベントがオートメーションをトリガーすると、次のいずれかのアクションを実行できます。 + +### Slack 通知 +トリガーとなったイベントの詳細を Slack チャンネルに送信します。メッセージにはイベントの概要と、W&B で詳細を確認するためのリンクが含まれます。 + +### Webhook +トリガーとなったイベントに関する情報を含む JSON ペイロードを使用して、Webhook URL を呼び出します。これにより、CI/CD パイプライン、モデル デプロイメント サービス、カスタム ワークフロー などの外部システムとの インテグレーション が可能になります。Webhook リクエストのボディは、JSON シリアライズ可能な任意のペイロードにすることができます。 + +実装の詳細については、以下を参照してください。 +- [Slack オートメーションの作成](/models/automations/create-automations/slack/) +- [Webhook オートメーションの作成](/models/automations/create-automations/webhook/) + +## オートメーションの仕組み + +[オートメーションを作成](/models/automations/create-automations/) する手順は以下の通りです。 + +1. 必要に応じて、アクセストークン、パスワード、機密性の高い 設定 詳細など、オートメーションが必要とする機密文字列の [シークレット(secrets)](/platform/secrets/) を設定します。シークレットは **Team Settings** で定義します。シークレットは、Webhook の外部サービスにクレデンシャルやトークンをプレーンテキストで公開したりペイロードにハードコーディングしたりすることなく安全に渡すために、主に Webhook オートメーションで使用されます。 +1. チームレベルの Webhook または Slack インテグレーション を設定し、W&B があなたに代わって Slack への投稿や Webhook の実行を行うことを許可します。単一のオートメーションアクション(Webhook または Slack 通知)を複数のオートメーションで使用できます。これらのアクションは **Team Settings** で定義されます。 +1. プロジェクト またはレジストリで、オートメーションを作成します。 + 1. 新しい アーティファクト バージョン が追加されたときなど、監視する [イベント](#automation-events) を定義します。 + 1. イベント発生時に実行するアクション(Slack チャンネルへの投稿または Webhook の実行)を定義します。Webhook の場合は、必要に応じてアクセストークンに使用するシークレットや、ペイロードと共に送信するシークレットを指定します。 + +## 制限事項 +[Run メトリクスオートメーション](/models/automations/automation-events/#run-metrics-events) および [Run メトリクス z-score 変化オートメーション](/models/automations/automation-events/#run-metrics-z-score-change-automations) は、現在 [W&B Multi-tenant Cloud](/platform/hosting/#wb-multi-tenant-cloud) でのみサポートされています。 + +## 次のステップ +- [オートメーションを作成する](/models/automations/create-automations/)。 +- [オートメーションのイベントとスコープ](/models/automations/automation-events/) について学ぶ。 +- [シークレットを作成する](/platform/secrets/)。 \ No newline at end of file diff --git a/ja/models/automations/automation-events.mdx b/ja/models/automations/automation-events.mdx new file mode 100644 index 0000000000..3d8c99ae5f --- /dev/null +++ b/ja/models/automations/automation-events.mdx @@ -0,0 +1,151 @@ +--- +title: オートメーションのイベントとスコープ +--- +import EnterpriseCloudOnly from "/snippets/en/_includes/enterprise-cloud-only.mdx"; +import MultiTenantCloudOnly from "/snippets/en/_includes/multi-tenant-cloud-only.mdx"; + + + + + +オートメーションは、Project または Registry 内で特定のイベントが発生したときに開始できます。このページでは、各スコープ内でオートメーションのトリガーとなるイベントについて説明します。オートメーションの詳細については、[Automations overview](/models/automations/) または [Create an automation](/models/automations/create-automations/) をご覧ください。 + +## Registry +このセクションでは、[Registry](/models/registry/) におけるオートメーションのスコープとイベントについて説明します。 + +### Scopes +[Registry](/models/registry/) オートメーションは、将来追加されるコレクションを含め、特定の Registry 内の任意のコレクションで発生するイベントを監視します。 + +### Events +Registry オートメーションでは、以下のイベントを監視できます。 +- **A new version is linked to a collection (新しいバージョンがコレクションにリンクされた)**: 新しい Models や Datasets が Registry に追加されたときに、テストや検証を実行します。 +- **An artifact alias is added (Artifact エイリアスが追加された)**: 新しい Artifact バージョンに特定の エイリアス が適用されたときに、ワークフローの特定のステップをトリガーします。例えば、モデルに `production` エイリアスが適用されたときにデプロイを実行します。 + +## Project +このセクションでは、[Project](/models/track/project-page/) におけるオートメーションのスコープとイベントについて説明します。 + +### Scopes +Project レベルのオートメーションは、プロジェクト内の任意のコレクションで発生するイベントを監視します。指定するイベントに応じて、オートメーションのスコープをさらに制限することができます。 + +### Artifact events +このセクションでは、オートメーションのトリガーとなる Artifact 関連のイベントについて説明します。 + +- **A new version is added to an artifact (Artifact に新しいバージョンが追加された)**: Artifact の各バージョンに対して定期的なアクションを適用します。例えば、新しいデータセットの Artifact バージョンが作成されたときにトレーニングジョブを開始します。 +- **An artifact alias is added (Artifact エイリアスが追加された)**: プロジェクト内の新しい Artifact バージョンに、指定した **Alias regex** に一致する エイリアス が適用されたときに、ワークフローの特定のステップをトリガーします。例えば、Artifact に `test-set-quality-check` エイリアスが適用されたときに一連の下流プロセッシングステップを実行したり、新しい Artifact バージョンに `latest` エイリアスが付与されるたびにワークフローを実行したりします。特定の時点で特定の エイリアス を持てるのは、1つの Artifact バージョンのみです。 +- **An artifact tag is added (Artifact タグが追加された)**: プロジェクト内の Artifact バージョンに、指定した **Tag regex** に一致するタグが適用されたときに、ワークフローの特定のステップをトリガーします。例えば、`^europe.*` を指定して、`europe` で始まるタグが Artifact バージョンに追加されたときに地域固有のワークフローをトリガーします。Artifact タグはグルーピングやフィルタリングに使用され、特定のタグを複数の Artifact バージョンに同時に割り当てることができます。 + +### Run events +オートメーションは、[Run のステータス](/models/runs/run-states) の変更、または [メトリクスの値](/models/track/log#what-data-is-logged-with-specific-wb-api-calls) の変更によってトリガーされます。 + +#### Run status change (Run ステータスの変更) + +- +- **Killed** ステータスの Run はオートメーションをトリガーできません。このステータスは、管理者ユーザーによって Run が強制停止されたことを示します。 + + +Run の [ステータス](/models/runs/run-states) が **Running**、**Finished**、または **Failed** に変更されたときにワークフローをトリガーします。オプションで、Users または Run 名のフィルターを指定して、オートメーションをトリガーできる Run をさらに制限できます。 + + +![Screenshot showing a run status change automation](/images/automations/run_status_change.png) + + +Run ステータスは Run 全体のプロパティであるため、Run ステータスオートメーションは Workspace からではなく、**Automations** ページからのみ作成できます。 + +#### Run metrics change (Run メトリクスの変更) + + + + +Run の履歴にあるメトリクス、または CPU 使用率を追跡する `cpu` などの [システムメトリクス](/models/ref/python/experiments/system-metrics) のログ記録された値に基づいてワークフローをトリガーします。W&B は 15 秒ごとにシステムメトリクスを自動的に ログ 記録します。 + +Run メトリクスオートメーションは、プロジェクトの **Automations** タブ、または Workspace の折れ線グラフパネルから直接作成できます。 + +Run メトリクスオートメーションをセットアップするには、メトリクスの値を指定したしきい値と比較する方法を設定します。選択肢はイベントタイプや指定したフィルターによって異なります。 + +オプションで、Users または Run 名のフィルターを指定して、オートメーションをトリガーできる Run をさらに制限できます。 + +##### Threshold (しきい値) +**Run metrics threshold met** イベントでは、以下を設定します。 +1. 考慮する最新のログ値のウィンドウ(デフォルトは 5)。 +1. ウィンドウ内の **Average**(平均)、**Min**(最小)、または **Max**(最大)のどれを評価するか。 +1. 比較方法: + - Above (より大きい) + - Above or equal to (以上) + - Below (より小さい) + - Below or equal to (以下) + - Not equal to (等しくない) + - Equal to (等しい) + +例えば、平均 `accuracy` が `.6` を超えたときにオートメーションをトリガーします。 + + +![Screenshot showing a run metrics threshold automation](/images/automations/run_metrics_threshold_automation.png) + + +##### Change threshold (変化のしきい値) +**Run metrics change threshold met** イベントでは、オートメーションは開始するかどうかを確認するために 2 つの「ウィンドウ」を使用します。 + +- 考慮する最新のログ値の _現在のウィンドウ (current window)_(デフォルトは 10)。 +- 考慮する最新のログ値の _以前のウィンドウ (prior window)_(デフォルトは 50)。 + +現在のウィンドウと以前のウィンドウは連続しており、重複しません。 + +オートメーションを作成するには、以下を設定します。 +1. ログ値の現在のウィンドウ(デフォルトは 10)。 +1. ログ値の以前のウィンドウ(デフォルトは 50)。 +1. 値を相対値(Relative)または絶対値(Absolute)のどちらで評価するか(デフォルトは **Relative**)。 +1. 比較方法: + - Increases by at least (少なくとも〜増加) + - Decreases by at least (少なくとも〜減少) + - Increases or decreases by at least (少なくとも〜増加または減少) + +例えば、平均 `loss` が少なくとも `.25` 減少したときにオートメーションをトリガーします。 + + +![Screenshot showing a run metrics change threshold automation](/images/automations/run_metrics_change_threshold_automation.png) + + +#### Run metrics z-score change (Run メトリクスの z-score 変化) + + + + +メトリクスの z-score(標準スコア)が指定されたしきい値を超えたときに、W&B はオートメーションをトリガーできます。z-score は、プロジェクト内の設定可能な Run ウィンドウ(デフォルトは 30 Runs)にわたる、そのメトリクスの平均からどれだけの標準偏差があるかを測定します。 + +z-score をイベントトリガーとして使用するには、**Run metrics z-score threshold met** イベントを選択します。 + +z-score に基づくオートメーションは、モデルやトレーニングプロセスが進むにつれて変化する可能性のある絶対的なしきい値をチェックすることなく、異常なパフォーマンスについてチームに通知し続けることができます。 + +Run メトリクスの z-score オートメーションは、プロジェクトの **Automations** タブ、または Workspace の折れ線グラフパネルから直接作成できます。 + +z-score オートメーションを作成するには、以下を設定します。 +1. ターゲットとなる z-score のしきい値。正の浮動小数点数で指定します(例: 2.0)。 +1. 平均値を決定するためのログ値のウィンドウ(デフォルトは 30)。 +1. 比較方法: + - Above (パフォーマンスが異常に高いときにトリガー) + - Below (パフォーマンスが異常に低いときにトリガー) + - Either above or below (高いとき、または低いときの両方) + +例えば、`accuracy` の z-score が 2 を超えたときにオートメーションをトリガーするように設定します。これは、その Run がプロジェクト内の他の Runs よりも大幅に優れたパフォーマンスを示していることを意味します。 + +**z-score 値の理解:** +- z-score が 0 の場合、メトリクスは平均値であることを意味します。 +- z-score が +2.0 の場合、メトリクスが平均より 2 標準偏差高いことを意味します。 +- z-score が -2.0 の場合、メトリクスが平均より 2 標準偏差低いことを意味します。 +- ±2 を超える値は、統計的に有意な外れ値と見なされることがよくあります。 + +#### Run filters +このセクションでは、オートメーションが評価対象の Runs をどのように選択するかについて説明します。 + +- デフォルトでは、プロジェクト内のすべての Run がイベント発生時にオートメーションをトリガーします。以下のいずれかのフィルターを設定することで、オートメーションをトリガーする Runs を制限できます。 + - **Filter to one user's runs**: 指定した ユーザー が作成した Runs のみに制限します。 + - **Filter on run name**: 名前が指定した正規表現に一致する Runs のみに制限します。 + + 詳細は [Create automations](/models/automations/create-automations/) を参照してください。 +- 各 Run は個別に考慮され、それぞれがオートメーションをトリガーする可能性があります。 +- 各 Run の値は別々のウィンドウに入れられ、しきい値と個別に比較されます。 +- 24 時間の期間内で、特定のオートメーションは 1 つの Run につき最大 1 回まで実行されます。 + +## 次のステップ +- [Create a Slack automation](/models/automations/create-automations/slack/) +- [Create a webhook automation](/models/automations/create-automations/webhook/) \ No newline at end of file diff --git a/ja/models/automations/create-automations.mdx b/ja/models/automations/create-automations.mdx new file mode 100644 index 0000000000..75358488ea --- /dev/null +++ b/ja/models/automations/create-automations.mdx @@ -0,0 +1,58 @@ +--- +title: 概要 +description: ML ワークフローを効率化するための W&B オートメーション の作成と管理 +--- +import EnterpriseCloudOnly from "/snippets/en/_includes/enterprise-cloud-only.mdx"; + + + + + +このページでは、 W&B [オートメーション](/models/automations/) の作成と管理の概要について説明します。詳細な手順については、 [Slack オートメーションの作成](/models/automations/create-automations/slack/) または [Webhook オートメーションの作成](/models/automations/create-automations/webhook/) を参照してください。 + + +オートメーションの関連チュートリアルをお探しですか? +- [モデルの評価とデプロイメントのために GitHub Action を自動的にトリガーする方法を学ぶ](https://wandb.ai/wandb/wandb-model-cicd/reports/Model-CI-CD-with-W-B--Vmlldzo0OTcwNDQw) +- [Sagemaker エンドポイントへのモデルの自動デプロイを実演するビデオを見る](https://www.youtube.com/watch?v=s5CMj_w3DaQ) +- [オートメーションを紹介するビデオシリーズを見る](https://youtube.com/playlist?list=PLD80i8An1OEGECFPgY-HPCNjXgGu-qGO6&feature=shared) + + +## 要件 +- チーム管理者は、チームの Projects のオートメーション、および Webhook、シークレット、 Slack インテグレーションなどのオートメーションコンポーネントを作成および管理できます。 [チーム設定](/platform/app/settings-page/teams/) を参照してください。 +- レジストリのオートメーションを作成するには、レジストリへのアクセス権が必要です。 [レジストリアクセスの設定](/models/registry/configure_registry/#registry-roles) を参照してください。 +- Slack オートメーションを作成するには、選択した Slack インスタンスおよびチャンネルに投稿する権限が必要です。 + +## オートメーションの作成 +オートメーションは、 Project またはレジストリの **Automations** タブから作成します。オートメーションを作成する大まかな手順は以下の通りです: + +1. 必要に応じて、アクセストークン、パスワード、 SSH キーなど、オートメーションに必要な機密文字列ごとに [W&B シークレットを作成](/platform/secrets/) します。シークレットは **チーム設定** で定義します。シークレットは主に Webhook オートメーションで使用されます。 +1. チームレベルの Webhook または Slack インテグレーションを設定し、 W&B があなたに代わって Slack への投稿や Webhook の実行を行うことを許可します。単一の Webhook または Slack インテグレーションを複数のオートメーションで使用できます。これらのアクションは **チーム設定** で定義します。 +1. Project またはレジストリでオートメーションを作成し、監視するイベントと実行するアクション( Slack への投稿や Webhook の実行など)を指定します。 Webhook オートメーションを作成する際は、送信するペイロードを設定します。 + +また、 Workspace のラインプロットから、表示されているメトリクスに対して [run メトリクスオートメーション](/models/automations/automation-events/#run-events) を素早く作成することもできます: + +1. パネルの上にカーソルを置き、パネル上部にあるベルのアイコンをクリックします。 + + + オートメーションベルアイコンの場所 + +1. 基本設定または詳細設定コントロールを使用してオートメーションを設定します。例えば、 run フィルターを適用してオートメーションのスコープを制限したり、絶対しきい値を設定したりします。 + +詳細は以下を参照してください: + +- [Slack オートメーションの作成](/models/automations/create-automations/slack/) +- [Webhook オートメーションの作成](/models/automations/create-automations/webhook/) + +## オートメーションの表示と管理 +Project またはレジストリの **Automations** タブからオートメーションを表示・管理できます。 + +- オートメーションの詳細を表示するには、その名前をクリックします。 +- オートメーションの実行履歴を表示するには、名前をクリックして **History** タブを選択します。詳細は [オートメーション履歴の表示](/models/automations/view-automation-history) を参照してください。 +- オートメーションを編集するには、アクションメニュー `...` をクリックし、 **Edit automation** をクリックします。 +- オートメーションを削除するには、アクションメニュー `...` をクリックし、 **Delete automation** をクリックします。 + +## 次のステップ +- [オートメーションのイベントとスコープ](/models/automations/automation-events/) について詳しく学ぶ +- [Slack オートメーションの作成](/models/automations/create-automations/slack/) +- [Webhook オートメーションの作成](/models/automations/create-automations/webhook/) +- [シークレットの作成](/platform/secrets/) \ No newline at end of file diff --git a/ja/models/automations/create-automations/slack.mdx b/ja/models/automations/create-automations/slack.mdx new file mode 100644 index 0000000000..b5c9a7a265 --- /dev/null +++ b/ja/models/automations/create-automations/slack.mdx @@ -0,0 +1,97 @@ +--- +title: Slack 自動化を作成する +--- +import EnterpriseCloudOnly from "/snippets/en/_includes/enterprise-cloud-only.mdx"; + + + + + +このページでは、Slack [オートメーション](/models/automations/) を作成する方法について説明します。Webhook オートメーションを作成する場合は、代わりに [Create a webhook automation](/models/automations/create-automations/webhook/) を参照してください。 + +Slack オートメーションの作成は、大きく分けて以下の手順で行います。 +1. [Slack インテグレーションの追加](#add-a-slack-integration): W&B が Slack インスタンスおよびチャンネルに投稿することを許可します。 +1. [オートメーションの作成](#create-an-automation): 監視対象となる [イベント](/models/automations/automation-events/) と通知先のチャンネルを定義します。 + +## Slack インテグレーションの追加 +Team 管理者は、Team に Slack インテグレーションを追加できます。 + +1. W&B にログインし、 **Team Settings** に移動します。 +1. **Slack channel integrations** セクションで、 **Connect Slack** をクリックして新しい Slack インスタンスを追加します。既存の Slack インスタンスにチャンネルを追加するには、 **New integration** をクリックします。 + + ![Screenshot showing two Slack integrations in a Team](/images/automations/slack_integrations.png) +1. 必要に応じて、ブラウザで Slack にサインインします。プロンプトが表示されたら、選択した Slack チャンネルに W&B が投稿する権限を許可します。ページの内容を確認し、 **Search for a channel** をクリックしてチャンネル名を入力し始めます。リストからチャンネルを選択し、 **Allow** をクリックします。 +1. Slack で、選択したチャンネルに移動します。`[Your Slack handle] added an integration to this channel: Weights & Biases` のような投稿が表示されれば、インテグレーションは正しく設定されています。 + +これで、設定した Slack チャンネルに通知する [オートメーションを作成](#create-an-automation) できるようになります。 + +## Slack インテグレーションの表示と管理 +Team 管理者は、Team の Slack インスタンスとチャンネルを表示および管理できます。 + +1. W&B にログインし、 **Team Settings** に移動します。 +1. **Slack channel integrations** セクションで各 Slack の送信先を確認します。 +1. ゴミ箱アイコンをクリックして、送信先を削除します。 + +## オートメーションの作成 +[Slack インテグレーションを追加](#add-a-slack-integreation) した後、 **Registry** または **Project** を選択し、以下の手順に従って Slack チャンネルに通知するオートメーションを作成します。 + + + +Registry 管理者は、その Registry 内でオートメーションを作成できます。 + +1. W&B にログインします。 +1. Registry の名前をクリックして詳細を表示します。 +1. Registry スコープのオートメーションを作成するには、 **Automations** タブをクリックし、 **Create automation** をクリックします。Registry スコープのオートメーションは、そのすべてのコレクション(将来作成されるものを含む)に自動的に適用されます。 +1. 監視対象となる [イベント](/models/automations/automation-events/#registry-events) を選択します。 + + イベントに応じて表示される追加フィールドに入力します。例えば、 **An artifact alias is added** を選択した場合は、 **Alias regex** を指定する必要があります。 + + **Next step** をクリックします。 +1. [Slack インテグレーション](#add-a-slack-integration) を所有する Team を選択します。 +1. **Action type** を **Slack notification** に設定します。Slack チャンネルを選択し、 **Next step** をクリックします。 +1. オートメーションの名前を入力します。任意で説明を入力します。 +1. **Create automation** をクリックします。 + + +W&B 管理者は、Project 内でオートメーションを作成できます。 + +1. W&B にログインします。 +1. Project ページに移動して **Automations** タブをクリックし、 **Create automation** をクリックします。 + + または、 Workspace のラインプロットから、表示されているメトリクスに対して [run メトリクスオートメーション](/models/automations/automation-events/#run-events) を素早く作成することもできます。パネルの上にカーソルを置き、パネル上部のベルアイコンをクリックします。 + + Automation bell icon location + +1. 監視対象となる [イベント](/models/automations/automation-events/#project) を選択します。 + + 1. 表示される追加フィールドに入力します。例えば、 **An artifact alias is added** を選択した場合は、 **Alias regex** を指定する必要があります。 + + 1. Run によってトリガーされるオートメーションの場合、任意で 1 つ以上の Run フィルタを指定します。 + + - **Filter to one user's runs**: 指定したユーザーによって作成された Run のみを含めます。トグルをクリックしてフィルタをオンにし、ユーザー名を指定します。 + - **Filter on run name**: 名前が指定された正規表現に一致する Run のみを含めます。トグルをクリックしてフィルタをオンにし、正規表現を指定します。 + 1. **Next step** をクリックします。 +1. [Slack インテグレーション](#add-a-slack-integration) を所有する Team を選択します。 +1. **Action type** を **Slack notification** に設定します。Slack チャンネルを選択し、 **Next step** をクリックします。 +1. オートメーションの名前を入力します。任意で説明を入力します。 +1. **Create automation** をクリックします。 + + + +## オートメーションの表示と管理 + + + +Registry の **Automations** タブから Registry のオートメーションを管理します。 +- オートメーションの詳細を表示するには、その名前をクリックします。 +- オートメーションを編集するには、アクションメニュー `...` をクリックし、 **Edit automation** をクリックします。 +- オートメーションを削除するには、アクションメニュー `...` をクリックし、 **Delete automation** をクリックします。確認が必要です。 + + +W&B 管理者は、Project の **Automations** タブから Project のオートメーションを表示および管理できます。 + +- オートメーションの詳細を表示するには、その名前をクリックします。 +- オートメーションを編集するには、アクションメニュー `...` をクリックし、 **Edit automation** をクリックします。 +- オートメーションを削除するには、アクションメニュー `...` をクリックし、 **Delete automation** をクリックします。確認が必要です。 + + \ No newline at end of file diff --git a/ja/models/automations/create-automations/webhook.mdx b/ja/models/automations/create-automations/webhook.mdx new file mode 100644 index 0000000000..1c17274917 --- /dev/null +++ b/ja/models/automations/create-automations/webhook.mdx @@ -0,0 +1,325 @@ +--- +title: Webhook オートメーションの作成 +--- +import EnterpriseCloudOnly from "/snippets/en/_includes/enterprise-cloud-only.mdx"; + + + + + +このページでは、webhook [automation](/models/automations/) の作成方法について説明します。Slack のオートメーションを作成する場合は、代わりに [Create a Slack automation](/models/automations/create-automations/slack/) を参照してください。 + +ハイレベルな手順として、webhook オートメーションを作成するには以下のステップを踏みます: +1. 必要に応じて、アクセストークン、パスワード、SSH キーなど、オートメーションで必要となる機密文字列ごとに [W&B secret を作成](/platform/secrets/) します。Secrets は **Team Settings** で定義されます。 +2. [webhook を作成](#create-a-webhook) して、エンドポイントと認証の詳細を定義し、インテグレーションが必要な secrets へのアクセスを許可します。 +3. [オートメーションを作成](#create-an-automation) して、監視する [event](/models/automations/automation-events/) と W&B が送信するペイロードを定義します。オートメーションに、ペイロードに必要な secrets へのアクセスを許可します。 + +## webhook を作成する +チーム管理者は、チームに webhook を追加できます。 + + +webhook が Bearer トークンを必要とする場合、またはそのペイロードが機密文字列を必要とする場合は、webhook を作成する前に [それを含む secret を作成](/platform/secrets/#add-a-secret) してください。1 つの webhook に対して、最大 1 つのアクセストークンと 1 つのその他の secret を設定できます。webhook の認証および認可要件は、webhook のサービスによって決定されます。 + + +1. W&B にログインし、**Team Settings** ページに移動します。 +1. **Webhooks** セクションで、**New webhook** をクリックします。 +1. webhook の名前を入力します。 +1. webhook のエンドポイント URL を入力します。 +1. webhook が Bearer トークンを必要とする場合は、**Access token** をそのトークンを含む [secret](/platform/secrets/) に設定します。webhook オートメーションを使用すると、W&B は `Authorization: Bearer` HTTP ヘッダーにアクセストークンを設定し、`${ACCESS_TOKEN}` [ペイロード変数](#payload-variables) でトークンにアクセスできます。W&B が webhook サービスに送信する `POST` リクエストの構造の詳細については、[webhook のトラブルシューティング](#troubleshoot-your-webhook) を参照してください。 +1. webhook がペイロード内でパスワードやその他の機密文字列を必要とする場合は、**Secret** をその文字列を含む secret に設定します。その webhook を使用するオートメーションを設定する際、名前の前に `$` を付けることで、その secret に [ペイロード変数](#payload-variables) としてアクセスできます。 + + webhook のアクセストークンが secret に保存されている場合は、次のステップも完了して secret をアクセストークンとして指定する必要があります。 +1. W&B がエンドポイントに接続し、認証できることを確認します: + 1. オプションで、テスト用のペイロードを提供します。ペイロード内で webhook がアクセス権を持つ secret を参照するには、その名前の前に `$` を付けます。このペイロードはテスト目的でのみ使用され、保存されません。オートメーションのペイロードは、[オートメーションを作成](#create-a-webhook-automation) する際に設定します。`POST` リクエスト内で secret とアクセストークンがどこに指定されているかについては、[webhook のトラブルシューティング](#troubleshoot-your-webhook) を参照してください。 + 1. **Test** をクリックします。W&B は、設定した資格情報を使用して webhook のエンドポイントへの接続を試みます。ペイロードが提供されている場合、W&B はそれを送信します。 + + テストが成功しない場合は、webhook の設定を確認して再試行してください。必要に応じて、[webhook のトラブルシューティング](#troubleshoot-your-webhook) を参照してください。 + + +![チーム内の2つのwebhookを示すスクリーンショット](/images/automations/webhooks.png) + + +これで、その webhook を使用する [オートメーションを作成](#create-a-webhook-automation) できるようになりました。 + +## オートメーションを作成する +[webhook を設定](#create-a-webhook) した後、**Registry** または **Project** を選択し、以下の手順に従って webhook をトリガーするオートメーションを作成します。 + + + +Registry の管理者は、そのレジストリ内にオートメーションを作成できます。Registry のオートメーションは、将来追加されるものも含め、レジストリ内のすべてのコレクションに適用されます。 + +1. W&B にログインします。 +1. レジストリ名をクリックして詳細を表示します。 +1. レジストリをスコープとしたオートメーションを作成するには、**Automations** タブをクリックし、**Create automation** をクリックします。 + +1. 監視する [event](/models/automations/automation-events/#registry-events) を選択します。 + + 表示される追加フィールドに入力します。例えば、**An artifact alias is added** を選択した場合は、**Alias regex** を指定する必要があります。 + + **Next step** をクリックします。 +1. [webhook](#create-a-webhook) を所有するチームを選択します。 +1. **Action type** を **Webhooks** に設定し、使用する [webhook](#create-a-webhook) を選択します。 +1. webhook にアクセストークンを設定した場合、`${ACCESS_TOKEN}` [ペイロード変数](#payload-variables) でそのトークンにアクセスできます。webhook に secret を設定した場合、名前の前に `$` を付けることでペイロード内でその secret にアクセスできます。webhook の要件は、webhook のサービスによって決定されます。 +1. **Next step** をクリックします。 +1. オートメーションの名前を入力します。オプションで説明を入力します。**Create automation** をクリックします。 + + +W&B の管理者は、プロジェクト内にオートメーションを作成できます。 + +1. W&B にログインし、プロジェクトページに移動します。 +1. サイドバーで **Automations** をクリックし、**Create automation** をクリックします。 + + または、ワークスペースのラインプロットから、表示されているメトリクスに対する [run metric automation](/models/automations/automation-events/#run-events) を素早く作成できます。パネルの上にカーソルを置き、パネル上部のベルアイコンをクリックします。 + + オートメーションのベルアイコンの場所 + +1. アーティファクトのエイリアスが追加されたときや、run のメトリクスが特定の閾値に達したときなど、監視する [event](/models/automations/automation-events/#project) を選択します。 + + 1. イベントに応じて表示される追加フィールドに入力します。例えば、**An artifact alias is added** を選択した場合は、**Alias regex** を指定する必要があります。 + + 1. run によってトリガーされるオートメーションの場合、オプションで 1 つ以上の run フィルターを指定します。 + + - **Filter to one user's runs**: 指定したユーザーによって作成された run のみに限定します。トグルをクリックしてフィルターをオンにし、ユーザー名を指定します。 + - **Filter on run name**: 名前が指定した正規表現に一致する run のみに限定します。トグルをクリックしてフィルターをオンにし、正規表現を指定します。 + + オートメーションは、将来追加されるものも含め、プロジェクト内のすべてのコレクションに適用されます。 + 1. **Next step** をクリックします。 +1. [webhook](#create-a-webhook) を所有するチームを選択します。 +1. **Action type** を **Webhooks** に設定し、使用する [webhook](#create-a-webhook) を選択します。 +1. webhook がペイロードを必要とする場合は、ペイロードを作成して **Payload** フィールドに貼り付けます。webhook にアクセストークンを設定した場合、`${ACCESS_TOKEN}` [ペイロード変数](#payload-variables) でそのトークンにアクセスできます。webhook に secret を設定した場合、名前の前に `$` を付けることでペイロード内でその secret にアクセスできます。webhook の要件は、webhook のサービスによって決定されます。 +1. **Next step** をクリックします。 +1. オートメーションの名前を入力します。オプションで説明を入力します。**Create automation** をクリックします。 + + + +## オートメーションの表示と管理 + + +レジストリの **Automations** タブから、レジストリのオートメーションを管理します。 + +- オートメーションの詳細を表示するには、その名前をクリックします。 +- オートメーションを編集するには、アクションメニュー(`...`)をクリックし、**Edit automation** をクリックします。 +- オートメーションを削除するには、アクションメニュー(`...`)をクリックし、**Delete automation** をクリックします。確認が必要です。 + + +W&B の管理者は、プロジェクトの **Automations** タブからプロジェクトのオートメーションを表示・管理できます。 + +- オートメーションの詳細を表示するには、その名前をクリックします。 +- オートメーションを編集するには、アクションメニュー(`...`)をクリックし、**Edit automation** をクリックします。 +- オートメーションを削除するには、アクションメニュー(`...`)をクリックし、**Delete automation** をクリックします。確認が必要です。 + + + +## ペイロードリファレンス +これらのセクションを使用して、webhook のペイロードを作成してください。webhook とそのペイロードのテストに関する詳細は、[webhook のトラブルシューティング](#troubleshoot-your-webhook) を参照してください。 + +### ペイロード変数 +このセクションでは、webhook のペイロードを作成するために使用できる変数について説明します。 + +| 変数 | 詳細 | +|----------|---------| +| `${project_name}` | アクションをトリガーした変更を所有するプロジェクトの名前。 | +| `${entity_name}` | アクションをトリガーした変更を所有する Entity またはチームの名前。 | +| `${event_type}` | アクションをトリガーしたイベントのタイプ。 | +| `${event_author}` | アクションをトリガーしたユーザー。 | +| `${alias}` | オートメーションが **An artifact alias is added** イベントによってトリガーされた場合、Artifacts のエイリアスが含まれます。それ以外のオートメーションでは、この変数は空白になります。 | +| `${tag}` | オートメーションが **An artifact tag is added** イベントによってトリガーされた場合、Artifacts のタグが含まれます。それ以外のオートメーションでは、この変数は空白になります。 | +| `${artifact_collection_name}` | アーティファクトバージョンがリンクされているアーティファクトコレクションの名前。 | +| `${artifact_metadata.}` | アクションをトリガーしたアーティファクトバージョンからの任意のトップレベルメタデータキーの値。 `` をトップレベルメタデータキーの名前に置き換えてください。webhook のペイロードでは、トップレベルのメタデータキーのみが使用可能です。 | +| `${artifact_version}` | アクションをトリガーしたアーティファクトバージョンの [`Wandb.Artifact`](/models/ref/python/experiments/artifact.md/) 表現。 | +| `${artifact_version_string}` | アクションをトリガーしたアーティファクトバージョンの `string` 表現。 | +| `${ACCESS_TOKEN}` | [webhook](#create-a-webhook) で設定されている場合、アクセストークンの値。アクセストークンは自動的に `Authorization: Bearer` HTTP ヘッダーで渡されます。 | +| `${SECRET_NAME}` | 設定されている場合、[webhook](#create-a-webhook) で設定された secret の値。 `SECRET_NAME` を secret の名前に置き換えてください。 | + +### ペイロードの例 +このセクションでは、いくつかの一般的なユースケースにおける webhook ペイロードの例を示します。これらの例では、[ペイロード変数](#payload-variables) の使用方法を実演しています。 + + + + +アクセストークンに、GitHub Actions ワークフローをトリガーするために必要な権限セットがあることを確認してください。詳細については、[GitHub Docs を参照してください](https://docs.github.com/en/rest/repos/repos?#create-a-repository-dispatch-event)。 + + +W&B から repository dispatch を送信して GitHub Action をトリガーします。例えば、`on` キーのトリガーとして repository dispatch を受け入れる GitHub ワークフローファイルがあるとします: + +```yaml +on: +repository_dispatch: + types: BUILD_AND_DEPLOY +``` + +リポジトリのペイロードは以下のようになります: + +```json +{ + "event_type": "BUILD_AND_DEPLOY", + "client_payload": + { + "event_author": "${event_author}", + "artifact_version": "${artifact_version}", + "artifact_version_string": "${artifact_version_string}", + "artifact_collection_name": "${artifact_collection_name}", + "project_name": "${project_name}", + "entity_name": "${entity_name}" + } +} +``` + + +webhook ペイロードの `event_type` キーは、GitHub ワークフローの YAML ファイル内の `types` フィールドと一致する必要があります。 + + +レンダリングされたテンプレート文字列の内容と配置は、オートメーションが設定されているイベントまたはモデルバージョンによって異なります。 `${event_type}` は `LINK_ARTIFACT` または `ADD_ARTIFACT_ALIAS` のいずれかとしてレンダリングされます。マッピングの例を以下に示します: + +```text +${event_type} --> "LINK_ARTIFACT" or "ADD_ARTIFACT_ALIAS" +${event_author} --> "" +${artifact_version} --> "wandb-artifact://_id/QXJ0aWZhY3Q6NTE3ODg5ODg3"" +${artifact_version_string} --> "/model-registry/:" +${artifact_collection_name} --> "" +${project_name} --> "model-registry" +${entity_name} --> "" +``` + +テンプレート文字列を使用して、W&B から GitHub Actions やその他のツールに動的にコンテキストを渡します。それらのツールが Python スクリプトを呼び出せる場合、[W&B API](/models/artifacts/download-and-use-an-artifact/) を通じて Registered Models のアーティファクトを利用できます。 + +- repository dispatch に関する詳細は、[GitHub Marketplace の公式ドキュメント](https://github.com/marketplace/actions/repository-dispatch) を参照してください。 + +- モデルの評価とデプロイのためのオートメーション作成ガイドである、動画 [Webhook Automations for Model Evaluation](https://www.youtube.com/watch?v=7j-Mtbo-E74&ab_channel=Weights%26Biases) および [Webhook Automations for Model Deployment](https://www.youtube.com/watch?v=g5UiAFjM2nA&ab_channel=Weights%26Biases) をご覧ください。 + +- Model CI に GitHub Actions の webhook オートメーションを使用する方法を示した W&B [レポート](https://wandb.ai/wandb/wandb-model-cicd/reports/Model-CI-CD-with-W-B--Vmlldzo0OTcwNDQw) を確認してください。Modal Labs の webhook を使用してモデル CI を作成する方法については、こちらの [GitHub リポジトリ](https://github.com/hamelsmu/wandb-modal-webhook) をチェックしてください。 + + +このペイロードの例は、webhook を使用して Teams チャンネルに通知する方法を示しています: + +```json +{ +"@type": "MessageCard", +"@context": "http://schema.org/extensions", +"summary": "New Notification", +"sections": [ + { + "activityTitle": "Notification from WANDB", + "text": "This is an example message sent via Teams webhook.", + "facts": [ + { + "name": "Author", + "value": "${event_author}" + }, + { + "name": "Event Type", + "value": "${event_type}" + } + ], + "markdown": true + } +] +} +``` + +(上記の Teams の例のように)実行時にテンプレート文字列を使用して、W&B のデータをペイロードに挿入できます。 + + + +このセクションは歴史的な経緯のために提供されています。現在 Slack との統合に webhook を使用している場合、W&B は設定を更新して代わりに [新しい Slack インテグレーション](#create-a-slack-automation) を使用することを推奨します。 + + +[Slack API ドキュメント](https://api.slack.com/messaging/webhooks) に記載されている手順に従って、Slack アプリをセットアップし、incoming webhook インテグレーションを追加してください。 `Bot User OAuth Token` の下に指定された secret が、W&B webhook のアクセストークンとして設定されていることを確認してください。 + +以下はペイロードの例です: + +```json +{ + "text": "New alert from WANDB!", +"blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Registry event: ${event_type}" + } + }, + { + "type":"section", + "text": { + "type": "mrkdwn", + "text": "New version: ${artifact_version_string}" + } + }, + { + "type": "divider" + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Author: ${event_author}" + } + } + ] +} +``` + + + +## webhook のトラブルシューティング +W&B App UI でインタラクティブに、または Bash スクリプトでプログラム的に、webhook のトラブルシューティングを行います。新しい webhook を作成する際、または既存の webhook を編集する際にトラブルシューティングを行うことができます。 + +W&B が `POST` リクエストに使用する形式の詳細については、**Bash script** タブを参照してください。 + + + +チーム管理者は、W&B App UI を使用してインタラクティブに webhook をテストできます。 + +1. W&B の Team Settings ページに移動します。 +2. **Webhooks** セクションまでスクロールします。 +3. webhook 名の横にある横三点リーダー(ミートボールアイコン)をクリックします。 +4. **Test** を選択します。 +5. 表示される UI パネルから、表示されたフィールドに POST リクエストを貼り付けます。 + + webhook ペイロードのテストのデモ + +6. **Test webhook** をクリックします。W&B App UI 内に、エンドポイントからのレスポンスが投稿されます。 + + webhook テストのデモ + + +デモンストレーションについては、動画 [Testing Webhooks in W&B](https://www.youtube.com/watch?v=bl44fDpMGJw&ab_channel=Weights%26Biases) をご覧ください。 + + +このシェルスクリプトは、webhook オートメーションがトリガーされたときに W&B が送信するリクエストと同様の `POST` リクエストを生成する一つの方法を示しています。 + +以下のコードをシェルスクリプトにコピー&ペーストして、webhook のトラブルシューティングを行ってください。以下の項目に独自の値を指定してください: + +* `ACCESS_TOKEN` +* `SECRET` +* `PAYLOAD` +* `API_ENDPOINT` + + +```bash webhook_test.sh +#!/bin/bash + +# アクセストークンと secret +ACCESS_TOKEN="your_api_key" +SECRET="your_api_secret" + +# 送信したいデータ(例:JSON形式) +PAYLOAD='{"key1": "value1", "key2": "value2"}' + +# HMAC署名を生成 +# セキュリティのため、Wandbはペイロードとwebhookに関連付けられた +# 共有シークレットキーから、HMAC SHA-256アルゴリズムを使用して計算された +# X-Wandb-Signatureをヘッダーに含めます。 +SIGNATURE=$(echo -n "$PAYLOAD" | openssl dgst \ +-sha256 -hmac "$SECRET" -binary | base64) + +# cURLリクエストを実行 +curl -X POST \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $ACCESS_TOKEN" \ + -H "X-Wandb-Signature: $SIGNATURE" \ + -d "$PAYLOAD" API_ENDPOINT +``` + + \ No newline at end of file diff --git a/ja/models/automations/view-automation-history.mdx b/ja/models/automations/view-automation-history.mdx new file mode 100644 index 0000000000..32372d336c --- /dev/null +++ b/ja/models/automations/view-automation-history.mdx @@ -0,0 +1,66 @@ +--- +title: オートメーションの履歴を表示する +--- + + +この機能には Enterprise ライセンスが必要です。以下の環境で利用可能です: +- W&B Multi-tenant Cloud +- W&B 専用クラウド +- W&B Self-Managed v0.75.0 以降 + + +このページでは、W&B [Automations](/models/automations) の実行履歴を表示し、内容を理解する方法について説明します。これには、何がオートメーションをトリガーしたか、どのようなアクションが実行されたか、そしてそれらが成功したか失敗したかが含まれます。 + +実行された各オートメーションは、以下の内容を含むレコードを生成します: +- **実行タイムスタンプ**: オートメーションがトリガーされた日時。 +- **トリガーイベント**: オートメーションを起動した特定のイベント。 +- **ステータス**: 実行のステータス。[実行ステータス](#execution-status) を参照してください。 +- **アクションの詳細**: Slack チャンネルへの通知や Webhook の実行など、どのアクションが実行されたかに関する情報。 +- **結果の詳細**: オートメーション実行の最終結果に関する追加情報(ある場合)。実行に失敗した際のエラー内容も含まれます。 + +ユースケースに合わせて、**Registry** または **Project** タブを選択し、オートメーション履歴を表示するための詳細な手順を確認してください。 + + + +1. 左サイドバーの **Registry** をクリックして、レジストリに移動します。 +1. リストから対象のレジストリを選択します。 +1. **Automations** タブでレジストリのオートメーションを確認します。**Last execution** のタイムスタンプをクリックすると、実行履歴の詳細が表示されます。検索バーを使用してオートメーション名でフィルタリングしたり、最終トリガー日でソートして最近実行されたオートメーションを見つけたりすることができます。 +1. **Automations history** タブでは、レジストリのオートメーション実行履歴が、イベント、アクション、ステータスとともに逆時系列で表示されます。特定の実行の詳細を表示するには、実行タイムスタンプをクリックします。 + +コレクションに関連するオートメーションの実行がある場合、アイコン ![Collection automation execution symbol, a circle with a right-pointing arrow](/images/automations/collection-automation-execution-icon.png) と関連する実行数が表示されます。 + + +1. 左ナビゲーションの **Automations** タブをクリックします。プロジェクトのオートメーションが表示されます。**Last execution** のタイムスタンプをクリックすると、実行履歴の詳細が表示されます。検索バーを使用してオートメーション名でフィルタリングしたり、最終トリガー日でソートして最近実行されたオートメーションを見つけたりすることができます。 +1. **History** タブでは、プロジェクトのオートメーションのすべての実行が、最新のものから順に逆時系列で表示されます。イベント、アクション、ステータスを含む各実行の メタデータ が表示されます。特定の実行の詳細を表示するには、実行タイムスタンプをクリックします。 + + + +## 実行詳細の理解 + +各オートメーションの実行は、以下のいずれかのステータスを持ちます: + +- **Finished**: オートメーションのすべてのアクションが正常に完了しました。 +- **Failed**: オートメーションでエラーが発生し、正常に終了しませんでした。 +- **Pending**: オートメーションが実行待ちキューに入っています。 + +履歴内の実行をクリックすると、詳細が表示されます: + +- **イベントの詳細**: オートメーションをトリガーした特定のイベント。以下が含まれます: + - イベントタイプ(例:「新規 Artifact バージョン」、「Run の完了」) + - エンティティ情報(Run ID、Artifact 名など) + - イベントをトリガーした User(該当する場合) + +- **アクションの詳細**: オートメーションが試行した内容に関する情報: + - アクションタイプ(Slack 通知または Webhook) + - ターゲット(Slack チャンネルまたは Webhook URL) + - 送信されたペイロード(Webhook の場合) + +- **結果情報**: + - レスポンスステータス(Webhook の場合) + - エラーメッセージまたはスタックトレース(実行に失敗した場合) + +## 次のステップ + +- [オートメーションを作成する](/models/automations/create-automations) +- [オートメーションのイベントとスコープ](/models/automations/automation-events) について学ぶ +- [シークレットを作成する](/platform/secrets) \ No newline at end of file diff --git a/ja/models/evaluate-models.mdx b/ja/models/evaluate-models.mdx new file mode 100644 index 0000000000..f57daf1498 --- /dev/null +++ b/ja/models/evaluate-models.mdx @@ -0,0 +1,245 @@ +--- +title: W&B Weave と W&B Tables を使用した Models の評価 +description: W&B Weave と Tables を使用して、機械学習 モデル を評価する方法について学びます。 +--- + +## Weave を使用したモデルの評価 + +[W&B Weave](/weave) は、LLM および GenAI アプリケーションを評価するために構築された専用のツールキットです。scorer、judge、詳細なトレースなど、包括的な評価機能を提供し、モデルのパフォーマンスを理解して向上させるのに役立ちます。Weave は W&B Models と統合されており、モデルレジストリ に保存されているモデルを評価することができます。 + + + モデルのパフォーマンスメトリクスとトレースを表示する Weave 評価ダッシュボード + + +### モデル評価の主な機能 + +* **Scorer と Judge**: 正確性、関連性、コヒーレンスなどのための、事前定義済みおよびカスタムの評価メトリクス +* **評価用データセット**: 体系的な評価のための正解(ground truth)を含む構造化されたテストセット +* **モデルのバージョン管理**: 異なるバージョンのモデルを追跡して比較 +* **詳細なトレース**: 完全な入力/出力トレースによりモデルの振る舞いをデバッグ +* **コスト追跡**: 評価全体での API コストとトークン使用量を監視 + +### はじめに:W&B Registry からモデルを評価する + +W&B Models Registry からモデルをダウンロードし、Weave を使用して評価します。 + +```python +import weave +import wandb +from typing import Any + +# Weave を初期化 +weave.init("your-entity/your-project") + +# W&B Registry からロードする ChatModel を定義 +class ChatModel(weave.Model): + model_name: str + + def model_post_init(self, __context): + # W&B Models Registry からモデルをダウンロード + with wandb.init(project="your-project", job_type="model_download") as run: + artifact = run.use_artifact(self.model_name) + self.model_path = artifact.download() + # ここでモデルを初期化 + + @weave.op() + async def predict(self, query: str) -> str: + # モデルの推論ロジック + return self.model.generate(query) + +# 評価用データセットを作成 +dataset = weave.Dataset(name="eval_dataset", rows=[ + {"input": "フランスの首都は?", "expected": "パリ"}, + {"input": "2+2は?", "expected": "4"}, +]) + +# scorer を定義 +@weave.op() +def exact_match_scorer(expected: str, output: str) -> dict: + return {"correct": expected.lower() == output.lower()} + +# 評価を実行 +model = ChatModel(model_name="wandb-entity/registry-name/model:version") +evaluation = weave.Evaluation( + dataset=dataset, + scorers=[exact_match_scorer] +) +results = await evaluation.evaluate(model) +``` + +### Weave の評価を W&B Models と統合する + +[Models and Weave Integration Demo](/weave/cookbooks/Models_and_Weave_Integration_Demo) では、以下の完全なワークフローを紹介しています: + +1. **Registry からモデルをロード**: W&B Models Registry に保存されたファインチューン済みモデルをダウンロード +2. **評価パイプラインの作成**: カスタム scorer を使用した包括的な評価を構築 +3. **結果を W&B にログ記録**: 評価メトリクスをモデルの Runs に接続 +4. **評価済みモデルのバージョン管理**: 改善されたモデルを Registry に保存 + +Weave と W&B Models の両方に評価結果をログ記録します。 + +```python +# W&B の追跡を伴う評価の実行 +with weave.attributes({"wandb-run-id": wandb.run.id}): + summary, call = await evaluation.evaluate.call(evaluation, model) + +# W&B Models にメトリクスをログ記録 +wandb.run.log(summary) +wandb.run.config.update({ + "weave_eval_url": f"https://wandb.ai/{entity}/{project}/r/call/{call.id}" +}) +``` + +### 高度な Weave 機能 + +#### カスタム scorer と judge +ユースケースに合わせて洗練された評価メトリクスを作成します。 + +```python +@weave.op() +def llm_judge_scorer(expected: str, output: str, judge_model) -> dict: + prompt = f"この回答は正しいですか? 期待値: {expected}, 出力: {output}" + judgment = await judge_model.predict(prompt) + return {"judge_score": judgment} +``` + +#### バッチ評価 +複数のモデルバージョンや設定を評価します。 + +```python +models = [ + ChatModel(model_name="model:v1"), + ChatModel(model_name="model:v2"), +] + +for model in models: + results = await evaluation.evaluate(model) + print(f"{model.model_name}: {results}") +``` + +### 次のステップ + +* [Weave 評価の完全なチュートリアル](/weave/tutorial-eval/) +* [Models と Weave の統合例](/weave/cookbooks/Models_and_Weave_Integration_Demo) + + + +## Tables を使用したモデルの評価 + +W&B Tables を使用して以下を行います: +* **モデル予測の比較**: 同じテストセットに対して異なるモデルがどのように機能するかを並べて比較 +* **予測の変化を追跡**: トレーニングのエポックやモデルのバージョン間で予測がどのように進化するかを監視 +* **エラーの分析**: フィルタリングとクエリを使用して、よくある誤分類の例やエラーパターンを特定 +* **リッチメディアの可視化**: 予測やメトリクスとともに、画像、音声、テキスト、その他のメディアタイプを表示 + + +![モデルの出力と正解ラベルを表示する予測テーブルの例](/images/data_vis/tables_sample_predictions.png) + + +### 基本的な例:評価結果をログ記録する + +```python +import wandb + +# run を初期化 +run = wandb.init(project="model-evaluation") + +# 評価結果を含むテーブルを作成 +columns = ["id", "input", "ground_truth", "prediction", "confidence", "correct"] +eval_table = wandb.Table(columns=columns) + +# 評価データを追加 +for idx, (input_data, label) in enumerate(test_dataset): + prediction = model(input_data) + confidence = prediction.max() + predicted_class = prediction.argmax() + + eval_table.add_data( + idx, + wandb.Image(input_data), # 画像やその他のメディアをログ記録 + label, + predicted_class, + confidence, + label == predicted_class + ) + +# テーブルをログ記録 +run.log({"evaluation_results": eval_table}) +``` + +### 高度なテーブルワークフロー + +#### 複数のモデルを比較する +直接比較するために、異なるモデルからの評価テーブルを同じキーでログ記録します。 + +```python +# モデル A の評価 +with wandb.init(project="model-comparison", name="model_a") as run: + eval_table_a = create_eval_table(model_a, test_data) + run.log({"test_predictions": eval_table_a}) + +# モデル B の評価 +with wandb.init(project="model-comparison", name="model_b") as run: + eval_table_b = create_eval_table(model_b, test_data) + run.log({"test_predictions": eval_table_b}) +``` + + +![トレーニングエポック間でのモデル予測の並列比較](/images/data_vis/table_comparison.png) + + +#### 時間経過に伴う予測の追跡 +改善を可視化するために、異なるトレーニングエポックでテーブルをログ記録します。 + +```python +for epoch in range(num_epochs): + train_model(model, train_data) + + # このエポックの予測を評価してログ記録 + eval_table = wandb.Table(columns=["image", "truth", "prediction"]) + for image, label in test_subset: + pred = model(image) + eval_table.add_data(wandb.Image(image), label, pred.argmax()) + + wandb.log({f"predictions_epoch_{epoch}": eval_table}) +``` + +### W&B UI でのインタラクティブな分析 + +ログ記録が完了すると、以下が可能になります: +1. **結果のフィルタリング**: 列ヘッダーをクリックして、予測精度、確信度のしきい値、または特定のクラスでフィルタリング +2. **テーブルの比較**: 複数のテーブルバージョンを選択して、並べて比較を表示 +3. **データのクエリ**: クエリバーを使用して特定のパターンを検索(例: `"correct" = false AND "confidence" > 0.8`) +4. **グループ化と集計**: 予測されたクラスでグループ化し、クラスごとの精度メトリクスを確認 + + +![W&B Tables での評価結果のインタラクティブなフィルタリングとクエリ](/images/data_vis/wandb_demo_filter_on_a_table.png) + + +### 例:拡張されたテーブルによるエラー分析 + +```python +# 分析用の列を追加するためにミュータブルなテーブルを作成 +eval_table = wandb.Table( + columns=["id", "image", "label", "prediction"], + log_mode="MUTABLE" # 後で列を追加可能にする +) + +# 初期の予測 +for idx, (img, label) in enumerate(test_data): + pred = model(img) + eval_table.add_data(idx, wandb.Image(img), label, pred.argmax()) + +run.log({"eval_analysis": eval_table}) + +# エラー分析のために確信度スコアを追加 +confidences = [model(img).max() for img, _ in test_data] +eval_table.add_column("confidence", confidences) + +# エラータイプを追加 +error_types = classify_errors(eval_table.get_column("label"), + eval_table.get_column("prediction")) +eval_table.add_column("error_type", error_types) + +run.log({"eval_analysis": eval_table}) +``` \ No newline at end of file diff --git a/ja/models/integrations.mdx b/ja/models/integrations.mdx new file mode 100644 index 0000000000..d808d26479 --- /dev/null +++ b/ja/models/integrations.mdx @@ -0,0 +1,83 @@ +--- +title: インテグレーションの概要 +description: ML フレームワーク、クラウド プラットフォーム、ワークフロー オーケストレーション ツール との W&B インテグレーション を探索しましょう +--- + +W&B は、主要な 機械学習 フレームワーク、 クラウド プラットフォーム、そして ワークフロー オーケストレーション ツールと連携し、 実験 (Experiments) の追跡、 メトリクス の ログ (log) 記録、 モデル (Models) 管理をシームレスに行えるようサポートします。 + +## はじめに + +ここに記載されていない ライブラリ と W&B を連携させたい場合は、 ベストプラクティス と実装ガイドが記載された [Add W&B to any library](/models/integrations/add-wandb-to-any-library) を参照してください。 + +## 機械学習フレームワークとライブラリ + +### 機械学習フレームワーク + +主要な 機械学習 フレームワークと W&B を連携させます。 + +- [Catalyst](/models/integrations/catalyst) +- [DeepChem](/models/integrations/deepchem) +- [DSPy](/models/integrations/dspy) +- [Keras](/models/integrations/keras) +- [LightGBM](/models/integrations/lightgbm) +- [MMEngine](/models/integrations/mmengine) +- [MMF](/models/integrations/mmf) +- [PaddleDetection](/models/integrations/paddledetection) +- [PaddleOCR](/models/integrations/paddleocr) +- [PyTorch Lightning](/models/integrations/lightning) +- [PyTorch Ignite](/models/integrations/ignite) +- [Skorch](/models/integrations/skorch) +- [TensorFlow](/models/integrations/tensorflow) +- [XGBoost](/models/integrations/xgboost) + +### 機械学習ライブラリ + +以下の 機械学習 ライブラリを使用して ワークフロー を拡張します。 + +- [Deepchecks](/models/integrations/deepchecks) +- [Hugging Face](/models/integrations/huggingface) +- [Diffusers](/models/integrations/diffusers) +- [AutoTrain](/models/integrations/autotrain) +- [Fast.ai](/models/integrations/fastai) +- [Fast.ai v1](/models/integrations/fastai/v1) +- [Composer](/models/integrations/composer) +- [OpenAI Gym](/models/integrations/openai-gym) +- [Prodigy](/models/integrations/prodigy) +- [PyTorch Geometric](/models/integrations/pytorch-geometric) +- [TorchTune](/models/integrations/torchtune) +- [Scikit-learn](/models/integrations/scikit) +- [Simple Transformers](/models/integrations/simpletransformers) +- [spaCy](/models/integrations/spacy) +- [Stable Baselines 3](/models/integrations/stable-baselines-3) +- [Ultralytics](/models/integrations/ultralytics) + +## クラウドプラットフォーム + +W&B を使用して、 クラウド プラットフォーム上で モデル (Models) のデプロイとトレーニングを行います。 + +- [Amazon SageMaker](/models/integrations/sagemaker) +- [Databricks](/models/integrations/databricks) +- [Azure OpenAI Fine-tuning](/models/integrations/azure-openai-fine-tuning) +- [OpenAI Fine-tuning](/models/integrations/openai-fine-tuning) +- [Cohere Fine-tuning](/models/integrations/cohere-fine-tuning) +- [OpenAI API](/models/integrations/openai-api) +- [NVIDIA NIM](/models/integrations/nim) + +## ワークフローオーケストレーション + +W&B を ワークフロー オーケストレーション ツールと連携させます。 + +- [Kubeflow Pipelines (KFP)](/models/integrations/kubeflow-pipelines-kfp) +- [Metaflow](/models/integrations/metaflow) +- [Dagster](/models/integrations/dagster) +- [Hydra](/models/integrations/hydra) + +## その他のインテグレーション + +その他の ツール および インテグレーション: + +- [Docker](/models/integrations/docker) +- [TensorBoard](/models/integrations/tensorboard) +- [W&B for Julia](/models/integrations/w-and-b-for-julia) +- [YOLOX](/models/integrations/yolox) +- [YOLOv5](/models/integrations/yolov5) \ No newline at end of file diff --git a/ja/models/integrations/accelerate.mdx b/ja/models/integrations/accelerate.mdx new file mode 100644 index 0000000000..ef65771124 --- /dev/null +++ b/ja/models/integrations/accelerate.mdx @@ -0,0 +1,85 @@ +--- +title: Hugging Face Accelerate +description: 大規模な トレーニング と推論を、シンプルかつ効率的、そして柔軟に。 +--- + +Hugging Face Accelerate は、同じ PyTorch コードをあらゆる分散設定で実行できるようにし、大規模な モデルトレーニング と推論を簡素化する ライブラリ です。 + +Accelerate には W&B Tracker が含まれており、その使用方法を以下に示します。また、[Hugging Face の Accelerate Trackers](https://huggingface.co/docs/accelerate/main/en/usage_guides/tracking) について詳しく読むこともできます。 + +## Accelerate でログ記録を開始する + +Accelerate と W&B を使い始めるには、以下の疑似コードに従ってください。 + +```python +from accelerate import Accelerator + +# Accelerator オブジェクトに wandb でログを記録するように指定します +accelerator = Accelerator(log_with="wandb") + +# wandb のパラメータや設定情報を渡して、wandb run を初期化します +accelerator.init_trackers( + project_name="my_project", + config={"dropout": 0.1, "learning_rate": 1e-2} + init_kwargs={"wandb": {"entity": "my-wandb-team"}} + ) + +... + +# `accelerator.log` を呼び出して wandb にログを記録します。`step` は任意です +accelerator.log({"train_loss": 1.12, "valid_loss": 0.8}, step=global_step) + + +# wandb tracker が正しく終了することを確認します +accelerator.end_training() +``` + +詳細な手順は以下の通りです。 + +1. Accelerator クラスを初期化する際に `log_with="wandb"` を渡します。 +2. [`init_trackers`](https://huggingface.co/docs/accelerate/main/en/package_reference/accelerator#accelerate.Accelerator.init_trackers) メソッドを呼び出し、以下を渡します。 +- `project_name` による プロジェクト 名 +- `init_kwargs` へのネストされた辞書を介して [`wandb.init()`](/models/ref/python/functions/init) に渡したい パラメータ +- `config` を介して wandb run にログを記録したいその他の 実験 設定 情報 +3. `.log` メソッドを使用して Weights & Biases にログを記録します。 `step` 引数 は任意です。 +4. トレーニング が終了したら `.end_training` を呼び出します。 + +## W&B tracker へのアクセス + +W&B tracker に アクセス するには、 `Accelerator.get_tracker()` メソッドを使用します。tracker の `.name` 属性に対応する文字列を渡すと、 `main` プロセス 上の tracker が返されます。 + +```python +wandb_tracker = accelerator.get_tracker("wandb") + +``` + +そこから、通常どおり wandb の run オブジェクトを操作できます。 + +```python +wandb_tracker.log_artifact(some_artifact_to_log) +``` + + +Accelerate に組み込まれた tracker は自動的に正しい プロセス で実行されるため、メイン プロセス でのみ実行されるべき tracker は自動的にそのように動作します。 + +Accelerate のラッピングを完全に解除したい場合は、以下のようにして同じ結果を得ることができます。 + +```python +wandb_tracker = accelerator.get_tracker("wandb", unwrap=True) +with accelerator.on_main_process: + wandb_tracker.log_artifact(some_artifact_to_log) +``` + + +## Accelerate 関連記事 +以下は、Accelerate に関するおすすめの記事です。 + +
+ +HuggingFace Accelerate Super Charged With W&B + +* この記事では、HuggingFace Accelerate が提供する機能と、結果を W&B にログ記録しながら分散 トレーニング と評価をいかに簡単に実行できるかについて解説します。 + +[Hugging Face Accelerate Super Charged with W&B レポート](https://wandb.ai/gladiator/HF%20Accelerate%20+%20W&B/reports/Hugging-Face-Accelerate-Super-Charged-with-Weights-Biases--VmlldzoyNzk3MDUx?utm_source=docs&utm_medium=docs&utm_campaign=accelerate-docs) を読む。 +
+

\ No newline at end of file diff --git a/ja/models/integrations/add-wandb-to-any-library.mdx b/ja/models/integrations/add-wandb-to-any-library.mdx new file mode 100644 index 0000000000..3c4f960664 --- /dev/null +++ b/ja/models/integrations/add-wandb-to-any-library.mdx @@ -0,0 +1,404 @@ +--- +title: 任意の ライブラリ に wandb を追加する +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +## 任意のライブラリに wandb を追加する + +このガイドでは、W&BをPythonライブラリに統合するためのベストプラクティスを紹介します。これにより、独自のライブラリで強力な 実験管理、GPUおよびシステムモニタリング、モデルのチェックポイント保存などを利用できるようになります。 + + +W&Bの使用方法をまだ学習中の場合は、読み進める前に [実験管理](/models/track/) など、このドキュメント内の他の W&B ガイドを先に確認することをお勧めします。 + + +以下では、作業中のコードベースが単一のPythonトレーニングスクリプトやJupyter notebookよりも複雑な場合の、最適なヒントとベストプラクティスを説明します。対象となるトピックは以下の通りです。 + +* セットアップ要件 +* ユーザーログイン +* wandb Run の開始 +* Run Config の定義 +* W&Bへのログ記録 +* 分散トレーニング +* モデルのチェックポイント保存とその他 +* ハイパーパラメータチューニング +* 高度なインテグレーション + +### セットアップ要件 + +開始する前に、W&Bをライブラリの依存関係に必須とするかどうかを決定してください。 + +#### インストール時に W&B を必須にする + +`requirements.txt` ファイルなどの依存関係ファイルに、W&B Pythonライブラリ (`wandb`) を追加します。 + +```python +torch==1.8.0 +... +wandb==0.13.* +``` + +#### インストール時に W&B を任意にする + +W&B SDK (`wandb`) をオプションにするには、2つの方法があります。 + +A. ユーザーが手動でインストールせずに `wandb` 機能を使用しようとしたときにエラーを発生させ、適切なエラーメッセージを表示する: + +```python +try: + import wandb +except ImportError: + raise ImportError( + "現在 wandb がインストールされていない状態で wandb を使用しようとしています。" + "pip install wandb を使用してインストールしてください。" + ) +``` + +B. Pythonパッケージを構築している場合は、`pyproject.toml` ファイルにオプションの依存関係として `wandb` を追加する: + +```toml +[project] +name = "my_awesome_lib" +version = "0.1.0" +dependencies = [ + "torch", + "sklearn" +] + +[project.optional-dependencies] +dev = [ + "wandb" +] +``` + +### ユーザーログイン + +#### APIキーの作成 + +APIキーは、クライアントまたはマシンをW&Bに対して認証します。ユーザープロファイルから APIキー を生成できます。 + + + +1. 右上隅にあるユーザープロファイルアイコンをクリックします。 +1. **User Settings** を選択し、**API Keys** セクションまでスクロールします。 + +#### `wandb` ライブラリのインストールとログイン + +ローカルに `wandb` ライブラリをインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) を APIキー に設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +ユーザーが上記のステップを実行せずに初めて wandb を使用する場合、スクリプトが `wandb.init` を呼び出すと、自動的にログインを促すプロンプトが表示されます。 + +### Run の開始 + +W&B Run は、W&Bによって記録される計算の単位です。通常、1つのトレーニング実験につき1つの W&B Run を関連付けます。 + +コード内で W&B を初期化し、Run を開始するには次のようにします。 + +```python +run = wandb.init() +``` + +オプションとして、プロジェクトの名前を指定したり、`wandb_project` などのパラメータを使用してユーザー自身に設定させたりすることができます。また、entity パラメータとして `wandb_entity` のようにユーザー名やチーム名を指定することも可能です。 + +```python +run = wandb.init(project=wandb_project, entity=wandb_entity) +``` + +Run を終了するには `run.finish()` を呼び出す必要があります。インテグレーションの設計に合う場合は、Run をコンテキストマネージャーとして使用してください。 + +```python +# このブロックを抜けると、自動的に run.finish() が呼び出されます。 +# 例外によって終了した場合は run.finish(exit_code=1) が使用され、 +# Run は失敗としてマークされます。 +with wandb.init() as run: + ... +``` + +#### `wandb.init` をいつ呼び出すべきか? + +コンソールへの出力(エラーメッセージを含む)はすべて W&B Run の一部として記録されるため、ライブラリではできるだけ早い段階で W&B Run を作成する必要があります。これによりデバッグが容易になります。 + +#### `wandb` をオプションの依存関係として使用する + +ユーザーがライブラリを使用する際に `wandb` をオプションにしたい場合は、以下のいずれかを行います。 + +* 次のような `wandb` フラグを定義する: + + + +```python +trainer = my_trainer(..., use_wandb=True) +``` + + +```bash +python train.py ... --use-wandb +``` + + + +* または、`wandb.init` で `wandb` を `disabled` に設定する: + + + +```python +wandb.init(mode="disabled") +``` + + +```bash +export WANDB_MODE=disabled +``` + +または + +```bash +wandb disabled +``` + + + +* または、`wandb` をオフラインに設定する。これによって `wandb` は引き続き動作しますが、インターネット経由で W&B と通信しようとはしません。 + + + +```bash +export WANDB_MODE=offline +``` + +または + +```python +os.environ['WANDB_MODE'] = 'offline' +``` + + +```bash +wandb offline +``` + + + +### Run Config の定義 +`wandb` の Run Config を使用すると、W&B Run を作成する際にモデルやデータセットなどのメタデータを提供できます。この情報を使用して、異なる 実験 を比較し、主な違いを素早く把握できます。 + + + W&B Runs テーブル + + +記録できる一般的な設定パラメータには以下が含まれます。 + +* モデル名、バージョン、アーキテクチャー パラメータなど +* データセット名、バージョン、トレーニング/検証サンプルの数など +* 学習率、バッチサイズ、オプティマイザー などのトレーニングパラメータ + +次のコードスニペットは、config を記録する方法を示しています。 + +```python +config = {"batch_size": 32, ...} +wandb.init(..., config=config) +``` + +#### Run Config の更新 +config を更新するには `wandb.Run.config.update` を使用します。辞書が定義された後にパラメータが取得される場合、設定辞書の更新が役立ちます。例えば、モデルがインスタンス化された後にモデルのパラメータを追加したい場合などです。 + +```python +run.config.update({"model_parameters": 3500}) +``` + +config ファイルの定義方法の詳細については、[実験の設定](/models/track/config/) を参照してください。 + +### W&Bへのログ記録 + +#### メトリクスのログ記録 + +キーの値がメトリクスの名前である辞書を作成します。この辞書オブジェクトを [`run.log`](/models/) に渡します。 + +```python +for epoch in range(NUM_EPOCHS): + for input, ground_truth in data: + prediction = model(input) + loss = loss_fn(prediction, ground_truth) + metrics = { "loss": loss } + run.log(metrics) +``` + +メトリクスが多数ある場合は、メトリクス名に `train/...` や `val/...` などのプレフィックスを使用することで、UI上で自動的にグループ化できます。これにより、W&B Workspace 内にトレーニングメトリクスと検証メトリクス、またはその他の分離したいメトリクスタイプごとのセクションが作成されます。 + +```python +metrics = { + "train/loss": 0.4, + "train/learning_rate": 0.4, + "val/loss": 0.5, + "val/accuracy": 0.7 +} +run.log(metrics) +``` + + + W&B Workspace + + +[`wandb.Run.log()` リファレンス](/models/) を参照してください。 + +#### X軸のずれを防ぐ + +同じトレーニングステップに対して `run.log` を複数回呼び出すと、wandb SDK は `run.log` の呼び出しごとに内部ステップカウンターをインクリメントします。このカウンターは、トレーニングループ内のトレーニングステップと一致しない場合があります。 + +この状況を避けるには、`wandb.init` を呼び出した直後に一度だけ、`run.define_metric` を使用して X軸のステップを明示的に定義します。 + +```python +with wandb.init(...) as run: + run.define_metric("*", step_metric="global_step") +``` + +グロブパターン `*` は、すべてのメトリクスがチャートの X軸 として `global_step` を使用することを意味します。特定のメトリクスのみを `global_step` に対して記録したい場合は、それらを指定できます。 + +```python +run.define_metric("train/loss", step_metric="global_step") +``` + +これで、`run.log` を呼び出すたびに、メトリクス、`step` メトリクス、および `global_step` を記録します。 + +```python +for step, (input, ground_truth) in enumerate(data): + ... + run.log({"global_step": step, "train/loss": 0.1}) + run.log({"global_step": step, "eval/loss": 0.2}) +``` + +独立したステップ変数にアクセスできない場合(例えば、検証ループ中に "global_step" が利用できない場合)、以前に記録された "global_step" の値が wandb によって自動的に使用されます。この場合、メトリクスが必要な時に定義されているよう、初期値を記録しておくようにしてください。 + +#### 画像、テーブル、オーディオなどのログ記録 + +メトリクスに加えて、プロット、ヒストグラム、テーブル、テキスト、および画像、ビデオ、オーディオ、3D などのメディアを記録できます。 + +データを記録する際の考慮事項は以下の通りです。 + +* メトリクスを記録する頻度はどのくらいか? オプションにするべきか? +* 可視化に役立つデータの種類は何か? + * 画像の場合、予測サンプルやセグメンテーションマスクなどを記録して、時間経過による変化を確認できます。 + * テキストの場合、後で探索するために予測サンプルのテーブルを記録できます。 + +メディア、オブジェクト、プロットなどの [ログ記録ガイド](/models/) を参照してください。 + +### 分散トレーニング + +分散環境をサポートするフレームワークでは、以下のワークフローのいずれかを適用できます。 + +* どのプロセスが「メイン」プロセスであるかを検出し、そこでのみ `wandb` を使用する。他のプロセスからの必要なデータは、まずメインプロセスにルーティングされる必要があります。(このワークフローを推奨します)。 +* すべてのプロセスで `wandb` を呼び出し、すべてに同じ一意の `group` 名を付けて自動グループ化する。 + +詳細は [分散トレーニング実験のログ記録](/models/track/log/distributed-training/) を参照してください。 + +### モデルのチェックポイント保存とその他 + +フレームワークがモデルやデータセットを使用または生成する場合、それらを記録して完全な追跡可能性を確保し、W&B Artifacts を通じてパイプライン全体を自動的にモニタリングできます。 + + + W&Bに保存されたデータセットとモデルチェックポイント + + +Artifacts を使用する際、必須ではありませんが、ユーザーが以下の項目を定義できるようにすると便利です。 + +* モデルのチェックポイントやデータセットを記録する機能(オプションにしたい場合)。 +* 入力として使用されるアーティファクトのパス/参照(存在する場合)。例:`user/project/artifact`。 +* Artifacts を記録する頻度。 + +#### モデルのチェックポイントを記録する + +モデルのチェックポイントを W&B に記録できます。一意の `wandb` Run ID を利用して出力モデルのチェックポイントに名前を付けると、Run 間でそれらを区別するのに役立ちます。また、有用なメタデータを追加することもできます。さらに、以下に示すように各モデルにエイリアスを追加することも可能です。 + +```python +metadata = {"eval/accuracy": 0.8, "train/steps": 800} + +artifact = wandb.Artifact( + name=f"model-{run.id}", + metadata=metadata, + type="model" + ) +artifact.add_dir("output_model") # モデルの重みが保存されているローカルディレクトリ + +aliases = ["best", "epoch_10"] +run.log_artifact(artifact, aliases=aliases) +``` + +カスタムエイリアスの作成方法については、[カスタムエイリアスの作成](/models/artifacts/create-a-custom-alias/) を参照してください。 + +出力 Artifacts は任意の頻度(例えば、毎エポック、500ステップごとなど)で記録でき、自動的にバージョン管理されます。 + +#### 学習済みモデルやデータセットのログ記録と追跡 + +トレーニングの入力として使用される、学習済みモデルやデータセットなどのアーティファクトを記録できます。次のスニペットは、アーティファクトを記録し、上のグラフに示されているように、進行中の Run の入力として追加する方法を示しています。 + +```python +artifact_input_data = wandb.Artifact(name="flowers", type="dataset") +artifact_input_data.add_file("flowers.npy") +run.use_artifact(artifact_input_data) +``` + +#### アーティファクトのダウンロード + +アーティファクト(データセット、モデルなど)を再利用すると、`wandb` はローカルにコピーをダウンロードし、キャッシュします。 + +```python +artifact = run.use_artifact("user/project/artifact:latest") +local_path = artifact.download("./tmp") +``` + +Artifacts は W&B の Artifacts セクションで見つけることができ、自動的に生成されたエイリアス (`latest`, `v2`, `v3`) や、ログ記録時に手動で付けたエイリアス (`best_accuracy` など) で参照できます。 + +分散環境や単純な推論などで、`wandb` run を作成せずに(`wandb.init` を通さずに)アーティファクトをダウンロードするには、[wandb API](/models/ref/python/public-api/) を使用してアーティファクトを参照できます。 + +```python +artifact = wandb.Api().artifact("user/project/artifact:latest") +local_path = artifact.download() +``` + +詳細については、[アーティファクトのダウンロードと使用](/models/artifacts/download-and-use-an-artifact/) を参照してください。 + +### ハイパーパラメータのチューニング + +ライブラリで W&B のハイパーパラメータチューニングを利用したい場合は、[W&B Sweeps](/models/sweeps/) をライブラリに追加することもできます。 + +### 高度なインテグレーション + +以下のインテグレーションで、高度な W&B インテグレーションがどのようなものかを確認できます。ほとんどのインテグレーションはこれほど複雑にはならないことに注意してください。 + +* [Hugging Face Transformers `WandbCallback`](https://github.com/huggingface/transformers/blob/49629e7ba8ef68476e08b671d6fc71288c2f16f1/src/transformers/integrations.py#L639) +* [PyTorch Lightning `WandbLogger`](https://github.com/Lightning-AI/lightning/blob/18f7f2d3958fb60fcb17b4cb69594530e83c217f/src/pytorch_lightning/loggers/wandb.py#L53) \ No newline at end of file diff --git a/ja/models/integrations/autotrain.mdx b/ja/models/integrations/autotrain.mdx new file mode 100644 index 0000000000..bdf7c67a2a --- /dev/null +++ b/ja/models/integrations/autotrain.mdx @@ -0,0 +1,128 @@ +--- +title: Hugging Face AutoTrain +--- + +[Hugging Face AutoTrain](https://huggingface.co/docs/autotrain/index) は、自然言語処理 (NLP) 、コンピュータビジョン (CV) 、音声、さらにはテーブルデータタスクのための最先端のモデルをトレーニングできるノーコード ツールです。 + +[W&B](https://wandb.com/) は Hugging Face AutoTrain に直接統合されており、 実験管理 と構成管理(config management)機能を提供します。 CLI コマンドに引数を 1 つ追加するだけで、簡単に実験を開始できます。 + + + Experiment metrics logging + + +## 事前準備 + +`autotrain-advanced` と `wandb` をインストールします。 + + + +```shell +pip install --upgrade autotrain-advanced wandb +``` + + +```notebook +!pip install --upgrade autotrain-advanced wandb +``` + + + +これらの変更を実演するために、このページでは数学の データセット を使用して LLM をファインチューニングし、 [GSM8k Benchmarks](https://github.com/openai/grade-school-math) の `pass@1` で SoTA(State-of-the-Art)の結果を出す手順を説明します。 + +## データセットの準備 + +Hugging Face AutoTrain でカスタムの CSV データセット を適切に動作させるには、特定のフォーマットにする必要があります。 + +- トレーニングファイルには、トレーニングに使用する `text` カラムが含まれている必要があります。最良の結果を得るには、 `text` カラムのデータが `### Human: Question?### Assistant: Answer.` という形式に従っている必要があります。 優れた例として [`timdettmers/openassistant-guanaco`](https://huggingface.co/datasets/timdettmers/openassistant-guanaco) を参考にしてください。 + + 一方、 [MetaMathQA dataset](https://huggingface.co/datasets/meta-math/MetaMathQA) には `query` 、 `response` 、 `type` というカラムが含まれています。まず、この データセット を前処理します。 `type` カラムを削除し、 `query` と `response` カラムの内容を組み合わせて、 `### Human: Query?### Assistant: Response.` 形式の新しい `text` カラムを作成します。トレーニングには、この結果として得られた データセット [`rishiraj/guanaco-style-metamath`](https://huggingface.co/datasets/rishiraj/guanaco-style-metamath) を使用します。 + +## `autotrain` を使用したトレーニング + +コマンドラインまたは ノートブック から `autotrain` advanced を使用してトレーニングを開始できます。 `--log` 引数 を使用するか、 `--log wandb` を使用して、結果を [W&B Run](/models/runs/) に ログ 記録します。 + + + +```shell +autotrain llm \ + --train \ + --model HuggingFaceH4/zephyr-7b-alpha \ + --project-name zephyr-math \ + --log wandb \ + --data-path data/ \ + --text-column text \ + --lr 2e-5 \ + --batch-size 4 \ + --epochs 3 \ + --block-size 1024 \ + --warmup-ratio 0.03 \ + --lora-r 16 \ + --lora-alpha 32 \ + --lora-dropout 0.05 \ + --weight-decay 0.0 \ + --gradient-accumulation 4 \ + --logging_steps 10 \ + --fp16 \ + --use-peft \ + --use-int4 \ + --merge-adapter \ + --push-to-hub \ + --token \ + --repo-id +``` + + +```notebook +# ハイパーパラメーターの設定 +learning_rate = 2e-5 +num_epochs = 3 +batch_size = 4 +block_size = 1024 +trainer = "sft" +warmup_ratio = 0.03 +weight_decay = 0. +gradient_accumulation = 4 +lora_r = 16 +lora_alpha = 32 +lora_dropout = 0.05 +logging_steps = 10 + +# トレーニングの実行 +!autotrain llm \ + --train \ + --model "HuggingFaceH4/zephyr-7b-alpha" \ + --project-name "zephyr-math" \ + --log "wandb" \ + --data-path data/ \ + --text-column text \ + --lr str(learning_rate) \ + --batch-size str(batch_size) \ + --epochs str(num_epochs) \ + --block-size str(block_size) \ + --warmup-ratio str(warmup_ratio) \ + --lora-r str(lora_r) \ + --lora-alpha str(lora_alpha) \ + --lora-dropout str(lora_dropout) \ + --weight-decay str(weight_decay) \ + --gradient-accumulation str(gradient_accumulation) \ + --logging-steps str(logging_steps) \ + --fp16 \ + --use-peft \ + --use-int4 \ + --merge-adapter \ + --push-to-hub \ + --token str(hf_token) \ + --repo-id "rishiraj/zephyr-math" +``` + + + + + + Experiment config saving + + +## その他のリソース + +* [AutoTrain Advanced now supports Experiment Tracking](https://huggingface.co/blog/rishiraj/log-autotrain) : [Rishiraj Acharya](https://huggingface.co/rishiraj) 氏によるブログ。 +* [Hugging Face AutoTrain Docs](https://huggingface.co/docs/autotrain/index) : 公式ドキュメント。 \ No newline at end of file diff --git a/ja/models/integrations/azure-openai-fine-tuning.mdx b/ja/models/integrations/azure-openai-fine-tuning.mdx new file mode 100644 index 0000000000..4811c51d46 --- /dev/null +++ b/ja/models/integrations/azure-openai-fine-tuning.mdx @@ -0,0 +1,46 @@ +--- +title: Azure OpenAI Fine-Tuning +description: W&B を使用して Azure OpenAI Models を ファインチューン する方法。 +--- + +## イントロダクション +Microsoft Azure 上での GPT-3.5 または GPT-4 モデルのファインチューニングにおいて、W&B を使用することで、メトリクスの自動キャプチャや、W&B の 実験管理 および評価ツールを通じた体系的な評価が可能になり、モデルパフォーマンスの追跡、分析、改善を行うことができます。 + + + Azure OpenAI fine-tuning metrics + + +## 事前準備 +- [Azure 公式ドキュメント](https://wandb.me/aoai-wb-int) に従って、Azure OpenAI サービスをセットアップしてください。 +- APIキー を使用して W&B アカウントを 設定 してください。 + +## ワークフローの概要 + +### 1. ファインチューニングのセットアップ +- Azure OpenAI の要件に従って トレーニングデータ を準備します。 +- Azure OpenAI でファインチューニングジョブを 設定 します。 +- W&B はファインチューニングの プロセス を自動的に追跡し、メトリクスと ハイパーパラメーター を ログ に記録します。 + +### 2. 実験管理 +ファインチューニング中、W&B は以下の情報をキャプチャします: +- トレーニングおよび検証メトリクス +- モデルの ハイパーパラメーター +- リソース使用率 +- トレーニングの Artifacts + +### 3. モデルの評価 +ファインチューニング後、[W&B Weave](https://weave-docs.wandb.ai) を使用して以下のことが行えます: +- 参照 データセット に対するモデル出力の評価 +- 異なるファインチューニングの Runs 間でのパフォーマンス比較 +- 特定のテストケースにおけるモデルの 振る舞い の分析 +- モデル選定のためのデータに基づいた意思決定 + +## 実例 +* [医療メモ生成のデモ](https://wandb.me/aoai-ft-colab) を探索して、この インテグレーション がどのように以下を促進するか確認してください: + - ファインチューニング 実験 の体系的な追跡 + - ドメイン固有のメトリクスを用いた モデルの評価 +* [ノートブックを用いたファインチューニングのインタラクティブなデモ](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/azure/azure_gpt_medical_notes.ipynb) を実行する + +## 追加リソース +- [Azure OpenAI W&B インテグレーションガイド](https://wandb.me/aoai-wb-int) +- [Azure OpenAI ファインチューニングドキュメント](https://learn.microsoft.com/azure/ai-services/openai/how-to/fine-tuning?tabs=turbo%2Cpython&pivots=programming-language-python) \ No newline at end of file diff --git a/ja/models/integrations/catalyst.mdx b/ja/models/integrations/catalyst.mdx new file mode 100644 index 0000000000..8feb18fd67 --- /dev/null +++ b/ja/models/integrations/catalyst.mdx @@ -0,0 +1,14 @@ +--- +title: Catalyst +description: Pytorch フレームワークである Catalyst に W&B を統合する方法。 +--- + +[Catalyst](https://github.com/catalyst-team/catalyst) は、再現性、迅速な実験、およびコードベースの再利用に焦点を当てた、ディープラーニングの研究開発向け PyTorch フレームワークです。これにより、新しいモデルの作成を効率的に行うことができます。 + +Catalyst には、パラメータ、メトリクス、画像、およびその他の Artifacts をログに記録するための W&B インテグレーションが含まれています。 + +Python や Hydra を使用した例を含む、[インテグレーションのドキュメント](https://catalyst-team.github.io/catalyst/api/loggers.html#catalyst.loggers.wandb.WandbLogger) をご確認ください。 + +## インタラクティブな例 + +[Colab の例](https://colab.research.google.com/drive/1PD0LnXiADCtt4mu7bzv7VfQkFXVrPxJq?usp=sharing) を実行して、Catalyst と W&B のインテグレーションの実際の動作を確認してください。 \ No newline at end of file diff --git a/ja/models/integrations/cohere-fine-tuning.mdx b/ja/models/integrations/cohere-fine-tuning.mdx new file mode 100644 index 0000000000..826d100e49 --- /dev/null +++ b/ja/models/integrations/cohere-fine-tuning.mdx @@ -0,0 +1,60 @@ +--- +title: Cohere fine-tuning +description: W&B を使用して Cohere モデル を ファインチューン する方法。 +--- + +W&B を使用すると、Cohere モデルのファインチューニングのメトリクスと設定をログに記録して、モデルのパフォーマンスを分析・理解し、その結果を同僚と共有することができます。 + +この [Cohere によるガイド](https://docs.cohere.com/page/convfinqa-finetuning-wandb) には、ファインチューニングの run を開始する方法の完全な例が記載されています。また、[Cohere API ドキュメントはこちら](https://docs.cohere.com/reference/createfinetunedmodel#request.body.settings.wandb) で確認できます。 + +## Cohere ファインチューニングの結果をログに記録する + +Cohere のファインチューニングのログを W&B Workspace に追加するには: + +1. W&B APIキー、W&B の `entity`、および `project` 名を含む `WandbConfig` を作成します。APIキーは https://wandb.ai/settings で作成できます。 + +2. この設定を、モデル名、データセット、ハイパーパラメーターとともに `FinetunedModel` オブジェクトに渡し、ファインチューニングの run を開始します。 + + ```python + from cohere.finetuning import WandbConfig, FinetunedModel + + # W&B の詳細を含む設定を作成します + wandb_ft_config = WandbConfig( + api_key="", + entity="my-entity", # 提供されたAPIキーに関連付けられた有効な entity である必要があります + project="cohere-ft", + ) + + ... # データセットとハイパーパラメーターをセットアップします + + # Cohere でファインチューニングの run を開始します + cmd_r_finetune = co.finetuning.create_finetuned_model( + request=FinetunedModel( + name="command-r-ft", + settings=Settings( + base_model=... + dataset_id=... + hyperparameters=... + wandb=wandb_ft_config # ここで W&B の設定を渡します + ), + ), + ) + ``` + +3. 作成した W&B プロジェクトで、モデルのファインチューニングのトレーニングおよび検証メトリクス、ハイパーパラメーターを確認します。 + + + Cohere fine-tuning dashboard + + + +## Runs の整理 + +W&B の Runs は自動的に整理され、ジョブタイプ、ベースモデル、学習率、その他のハイパーパラメーターなどの設定パラメータに基づいてフィルタリングやソートが可能です。 + +さらに、Runs の名前変更、ノートの追加、タグの作成を行ってグループ化することもできます。 + + +## リソース + +* [Cohere ファインチューニングの例](https://github.com/cohere-ai/notebooks/blob/kkt_ft_cookbooks/notebooks/finetuning/convfinqa_finetuning_wandb.ipynb) \ No newline at end of file diff --git a/ja/models/integrations/composer.mdx b/ja/models/integrations/composer.mdx new file mode 100644 index 0000000000..8b3c0230a0 --- /dev/null +++ b/ja/models/integrations/composer.mdx @@ -0,0 +1,100 @@ +--- +title: MosaicML Composer +description: ニューラルネットワーク をトレーニングするための最先端のアルゴリズム +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +[Composer](https://github.com/mosaicml/composer) は、ニューラルネットワークをより良く、より速く、より安価にトレーニングするためのライブラリです。ニューラルネットワークのトレーニングを加速し、汎化性能を向上させるための多くの最先端の手法が含まれており、多くの異なる拡張機能を簡単に組み合わせることができるオプションの [Trainer](https://docs.mosaicml.com/projects/composer/en/stable/trainer/using_the_trainer.html) API も提供されています。 + +W&B は、ML 実験を記録するための軽量なラッパーを提供します。しかし、これら2つを自分自身で組み合わせる必要はありません。W&B は [WandBLogger](https://docs.mosaicml.com/projects/composer/en/stable/trainer/file_uploading.html#weights-biases-artifacts) を通じて、Composer ライブラリに直接組み込まれています。 + +## W&B へのログ記録を開始する + +```python +from composer import Trainer +from composer.loggers import WandBLogger + +trainer = Trainer(..., logger=WandBLogger()) +``` + + + Interactive dashboards + + +## Composer の `WandBLogger` を使用する + +Composer ライブラリは、`Trainer` 内の [WandBLogger](https://docs.mosaicml.com/projects/composer/en/stable/trainer/file_uploading.html#weights-biases-artifacts) クラスを使用してメトリクスを W&B にログ記録します。ロガーをインスタンス化して `Trainer` に渡すだけで簡単に利用できます。 + +```python +wandb_logger = WandBLogger(project="gpt-5", log_artifacts=True) +trainer = Trainer(logger=wandb_logger) +``` + +## ロガーの引数 + +以下は `WandbLogger` のパラメータです。全リストと説明については [Composer documentation](https://docs.mosaicml.com/projects/composer/en/stable/api_reference/generated/composer.loggers.WandBLogger.html) を参照してください。 + +| パラメータ | 説明 | +| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `project` | W&B Projects 名 (str, optional) | +| `group` | W&B グループ名 (str, optional) | +| `name` | W&B Runs 名。指定されない場合、State.run_name が使用されます (str, optional) | +| `entity` | W&B Entities 名。ユーザー名や W&B Teams 名など (str, optional) | +| `tags` | W&B タグ (List[str], optional) | +| `log_artifacts` | チェックポイントを W&B にログ記録するかどうか。デフォルト: `false` (bool, optional) | +| `rank_zero_only` | rank-zero プロセスのみでログを記録するかどうか。Artifacts をログに記録する場合、すべての rank でログを記録することを強く推奨します。rank ≥1 からの Artifacts は保存されないため、関連情報が破棄される可能性があります。例えば、Deepspeed ZeRO を使用する場合、すべての rank からの Artifacts がないとチェックポイントから復元することが不可能になります。デフォルト: `True` (bool, optional) | +| `init_kwargs` | `wandb.init()` に渡す引数(wandb の `config` など)。`wandb.init()` が受け付けるパラメータについては、[`wandb.init()` parameters](/models/ref/python/functions/init) を参照してください。 | + +典型的な使用例は以下の通りです: + +```python +init_kwargs = {"notes":"Testing higher learning rate in this experiment", + "config":{"arch":"Llama", + "use_mixed_precision":True + } + } + +wandb_logger = WandBLogger(log_artifacts=True, init_kwargs=init_kwargs) +``` + +## 予測サンプルのログ記録 + +[Composer's Callbacks](https://docs.mosaicml.com/projects/composer/en/stable/trainer/callbacks.html) システムを使用して、`WandBLogger` 経由で W&B にログを記録するタイミングを制御できます。この例では、検証用画像と予測のサンプルがログ記録されます。 + +```python +import wandb +from composer import Callback, State, Logger + +class LogPredictions(Callback): + def __init__(self, num_samples=100, seed=1234): + super().__init__() + self.num_samples = num_samples + self.data = [] + + def eval_batch_end(self, state: State, logger: Logger): + """バッチごとに予測を計算し、self.data に保存します""" + + if state.timer.epoch == state.max_duration: # 最後の検証エポック時 + if len(self.data) < self.num_samples: + n = self.num_samples + x, y = state.batch_pair + outputs = state.outputs.argmax(-1) + data = [[wandb.Image(x_i), y_i, y_pred] for x_i, y_i, y_pred in list(zip(x[:n], y[:n], outputs[:n]))] + self.data += data + + def eval_end(self, state: State, logger: Logger): + with wandb.init() as run: + "wandb.Table を作成してログに記録します" + columns = ['image', 'ground truth', 'prediction'] + table = wandb.Table(columns=columns, data=self.data[:self.num_samples]) + run.log({'sample_table':table}, step=int(state.timer.batch)) +... + +trainer = Trainer( + ... + loggers=[WandBLogger()], + callbacks=[LogPredictions()] +) +``` \ No newline at end of file diff --git a/ja/models/integrations/dagster.mdx b/ja/models/integrations/dagster.mdx new file mode 100644 index 0000000000..ece2054bde --- /dev/null +++ b/ja/models/integrations/dagster.mdx @@ -0,0 +1,1007 @@ +--- +title: Dagster +description: Dagster と W&B を統合する方法についてのガイド。 +--- + +Dagster と Weights & Biases (W&B) を使用して、MLOps パイプラインをオーケストレートし、ML 資産を維持します。W&B とのインテグレーションにより、Dagster 内で以下のことが容易になります。 + +* [W&B Artifacts](/models/artifacts/) の作成と使用。 +* [W&B Registry](/models/registry/) での Registered Models の使用と作成。 +* [W&B Launch](/platform/launch) を使用した専用計算リソースでのトレーニングジョブの実行。 +* ops や assets 内での [wandb](/models/ref/python/) クライアントの使用。 + +W&B Dagster インテグレーションは、W&B 固有の Dagster リソースと IO マネージャーを提供します。 + +* `wandb_resource`: W&B API との認証および通信に使用される Dagster リソース。 +* `wandb_artifacts_io_manager`: W&B Artifacts を消費するために使用される Dagster IO マネージャー。 + +以下のガイドでは、Dagster で W&B を使用するための前提条件を満たす方法、ops や assets で W&B Artifacts を作成・使用する方法、W&B Launch の使用方法、および推奨されるベストプラクティスについて説明します。 + +## 開始する前に +W&B 内で Dagster を使用するには、以下のリソースが必要です。 +1. **W&B API キー**。 +2. **W&B entity (ユーザーまたはチーム)**: entity は、W&B Runs や Artifacts を送信するユーザー名またはチーム名です。Run をログに記録する前に、W&B App UI でアカウントまたはチームの entity を作成してください。entity を指定しない場合、Run は通常ユーザー名であるデフォルトの entity に送信されます。デフォルトの entity は、設定の **Project Defaults** で変更できます。 +3. **W&B プロジェクト**: [W&B Runs](/models/runs/) が保存されるプロジェクト名。 + +W&B App のユーザーまたはチームのプロフィールページを確認して、W&B entity を見つけてください。既存の W&B プロジェクトを使用することも、新しく作成することもできます。新しいプロジェクトは、W&B App のホームページまたはユーザー/チームのプロフィールページで作成できます。プロジェクトが存在しない場合は、最初に使用したときに自動的に作成されます。 + +### API キーの設定 +1. [W&B にログイン](https://wandb.ai/login) します。注意: W&B Server を使用している場合は、管理者にインスタンスのホスト名を問い合わせてください。 +2. [User Settings](https://wandb.ai/settings) で API キーを作成します。プロダクション環境では、そのキーを所有するために [サービスアカウント](/models/support/service_account_useful/) を使用することをお勧めします。 +3. その API キーの環境変数を設定します: `export WANDB_API_KEY=YOUR_KEY`。 + + +以下の例では、Dagster コードのどこで API キーを指定するかを示しています。`wandb_config` ネストされた辞書内に entity とプロジェクト名を必ず指定してください。別の W&B プロジェクトを使用したい場合は、異なる `wandb_config` 値を異なる ops/assets に渡すことができます。渡すことができるキーの詳細については、以下の Configuration セクションを参照してください。 + + + + +例: `@job` 用の設定 +```python +# これを config.yaml に追加します +# あるいは、Dagit の Launchpad または JobDefinition.execute_in_process で設定することもできます +# 参照: https://docs.dagster.io/concepts/configuration/config-schema#specifying-runtime-configuration +resources: + wandb_config: + config: + entity: my_entity # これをあなたの W&B entity に置き換えてください + project: my_project # これをあなたの W&B プロジェクトに置き換えてください + + +@job( + resource_defs={ + "wandb_config": make_values_resource( + entity=str, + project=str, + ), + "wandb_resource": wandb_resource.configured( + {"api_key": {"env": "WANDB_API_KEY"}} + ), + "io_manager": wandb_artifacts_io_manager, + } +) +def simple_job_example(): + my_op() +``` + + +例: assets を使用した `@repository` 用の設定 + +```python +from dagster_wandb import wandb_artifacts_io_manager, wandb_resource +from dagster import ( + load_assets_from_package_module, + make_values_resource, + repository, + with_resources, +) + +from . import assets + +@repository +def my_repository(): + return [ + *with_resources( + load_assets_from_package_module(assets), + resource_defs={ + "wandb_config": make_values_resource( + entity=str, + project=str, + ), + "wandb_resource": wandb_resource.configured( + {"api_key": {"env": "WANDB_API_KEY"}} + ), + "wandb_artifacts_manager": wandb_artifacts_io_manager.configured( + {"cache_duration_in_minutes": 60} # ファイルを1時間だけキャッシュする + ), + }, + resource_config_by_key={ + "wandb_config": { + "config": { + "entity": "my_entity", # これをあなたの W&B entity に置き換えてください + "project": "my_project", # これをあなたの W&B プロジェクトに置き換えてください + } + } + }, + ), + ] +``` +この例では、`@job` の例とは異なり、IO マネージャーのキャッシュ保持期間を設定している点に注意してください。 + + + + +### Configuration (設定) +以下の設定オプションは、インテグレーションによって提供される W&B 固有の Dagster リソースおよび IO マネージャーの設定として使用されます。 + +* `wandb_resource`: W&B API と通信するために使用される Dagster [リソース](https://docs.dagster.io/concepts/resources)。提供された API キーを使用して自動的に認証されます。プロパティ: + * `api_key`: (str, 必須): W&B API と通信するために必要な W&B API キー。 + * `host`: (str, オプション): 使用する API ホストサーバー。W&B Server を使用している場合にのみ必要です。デフォルトはパブリッククラウドホストの `https://api.wandb.ai` です。 +* `wandb_artifacts_io_manager`: W&B Artifacts を消費するための Dagster [IO マネージャー](https://docs.dagster.io/concepts/io-management/io-managers)。プロパティ: + * `base_dir`: (int, オプション) ローカルストレージとキャッシュに使用されるベースディレクトリ。W&B Artifacts と W&B Run のログはこのディレクトリに対して読み書きされます。デフォルトでは `DAGSTER_HOME` ディレクトリを使用します。 + * `cache_duration_in_minutes`: (int, オプション) W&B Artifacts と W&B Run ログをローカルストレージに保持する時間を定義します。その時間内に開かれなかったファイルとディレクトリのみがキャッシュから削除されます。キャッシュのパージは IO マネージャーの実行終了時に行われます。キャッシュを完全に無効にする場合は 0 に設定できます。キャッシュは、同じマシンで実行されるジョブ間で Artifact が再利用される際の速度を向上させます。デフォルトは 30 日です。 + * `run_id`: (str, オプション): 再開に使用される、この Run の一意の ID。プロジェクト内で一意である必要があり、Run を削除した場合、その ID は再利用できません。短い説明的な名前には name フィールドを、Run 間で比較するためにハイパーパラメーターを保存するには config を使用してください。ID には次の特殊文字を含めることはできません: `/\#?%:..` Dagster 内で実験管理を行っている場合、IO マネージャーが Run を再開できるように Run ID を設定する必要があります。デフォルトでは Dagster Run ID (例: `7e4df022-1bf2-44b5-a383-bb852df4077e`) に設定されます。 + * `run_name`: (str, オプション) UI でこの Run を識別しやすくするための短い表示名。デフォルトでは、次の形式の文字列になります: `dagster-run-[Dagster Run ID の最初の 8 文字]`。例: `dagster-run-7e4df022`。 + * `run_tags`: (list[str], オプション) 文字列のリスト。UI 上のこの Run のタグリストに入力されます。タグは、Run をまとめて整理したり、`baseline` や `production` のような一時的なラベルを適用したりするのに便利です。UI でタグを追加または削除したり、特定のタグを持つ Run だけに絞り込んだりすることが簡単にできます。インテグレーションによって使用されるすべての W&B Run には `dagster_wandb` タグが付与されます。 + +## W&B Artifacts の使用 + +W&B Artifact とのインテグレーションは、Dagster IO マネージャーに基づいています。 + +[IO マネージャー](https://docs.dagster.io/concepts/io-management/io-managers) は、asset または op の出力を保存し、それを下流の asset または op への入力としてロードする責任を持つ、ユーザー提供のオブジェクトです。例えば、IO マネージャーはファイルシステム上のファイルからオブジェクトを保存およびロードする場合があります。 + +このインテグレーションは、W&B Artifacts 用の IO マネージャーを提供します。これにより、Dagster の `@op` や `@asset` が W&B Artifacts をネイティブに作成および消費できるようになります。これは、Python リストを含む dataset タイプの W&B Artifact を生成する `@asset` の簡単な例です。 + +```python +@asset( + name="my_artifact", + metadata={ + "wandb_artifact_arguments": { + "type": "dataset", + } + }, + io_manager_key="wandb_artifacts_manager", +) +def create_dataset(): + return [1, 2, 3] # これは Artifact に保存されます +``` + +Artifact を書き込むために、`@op`、`@asset`、`@multi_asset` にメタデータ設定をアノテートできます。同様に、Dagster 外で作成された W&B Artifacts も消費できます。 + +## W&B Artifacts の書き込み +続行する前に、W&B Artifacts の使用方法をよく理解しておくことをお勧めします。[Artifacts ガイド](/models/artifacts/) をお読みください。 + +W&B Artifact を書き込むには、Python 関数からオブジェクトを返します。W&B では以下のオブジェクトがサポートされています。 +* Python オブジェクト (int, dict, list…) +* W&B オブジェクト (Table, Image, Graph…) +* W&B Artifact オブジェクト + +以下の例は、Dagster assets (`@asset`) で W&B Artifacts を書き込む方法を示しています。 + + + + +[pickle](https://docs.python.org/3/library/pickle.html) モジュールでシリアライズできるものはすべて pickle 化され、インテグレーションによって作成された Artifact に追加されます。Dagster 内でその Artifact を読み込む際に内容はアンピクルされます(詳細は [Artifacts の読み込み](#read-wb-artifacts) を参照)。 + +```python +@asset( + name="my_artifact", + metadata={ + "wandb_artifact_arguments": { + "type": "dataset", + } + }, + io_manager_key="wandb_artifacts_manager", +) +def create_dataset(): + return [1, 2, 3] +``` + + +W&B は、複数の Pickle ベースのシリアライゼーションモジュール ([pickle](https://docs.python.org/3/library/pickle.html), [dill](https://github.com/uqfoundation/dill), [cloudpickle](https://github.com/cloudpipe/cloudpickle), [joblib](https://github.com/joblib/joblib)) をサポートしています。また、[ONNX](https://onnx.ai/) や [PMML](https://en.wikipedia.org/wiki/Predictive_Model_Markup_Language) のようなより高度なシリアライゼーションも使用できます。詳細については、[Serialization](#serialization-configuration) セクションを参照してください。 + + +[Table](/models/ref/python/data-types/table) や [Image](/models/ref/python/data-types/image) などの W&B オブジェクトは、インテグレーションによって作成された Artifact に追加されます。この例では、Table を Artifact に追加します。 + +```python +import wandb + +@asset( + name="my_artifact", + metadata={ + "wandb_artifact_arguments": { + "type": "dataset", + } + }, + io_manager_key="wandb_artifacts_manager", +) +def create_dataset_in_table(): + return wandb.Table(columns=["a", "b", "c"], data=[[1, 2, 3]]) +``` + + +複雑なユースケースでは、独自の Artifact オブジェクトを構築する必要があるかもしれません。その場合でも、インテグレーションは、インテグレーションの両側でメタデータを補強するなどの有用な追加機能を提供します。 + +```python +import wandb + +MY_ASSET = "my_asset" + +@asset( + name=MY_ASSET, + io_manager_key="wandb_artifacts_manager", +) +def create_artifact(): + artifact = wandb.Artifact(MY_ASSET, "dataset") + table = wandb.Table(columns=["a", "b", "c"], data=[[1, 2, 3]]) + artifact.add(table, "my_table") + return artifact +``` + + + + +### Configuration (設定) +`wandb_artifact_configuration` と呼ばれる設定辞書を、`@op`、`@asset`、`@multi_asset` に設定できます。この辞書は、デコレータの引数にメタデータとして渡す必要があります。この設定は、IO マネージャーによる W&B Artifacts の読み書きを制御するために必要です。 + +`@op` の場合、[Out](https://docs.dagster.io/_apidocs/ops#dagster.Out) メタデータ引数を通じて出力メタデータ内に配置されます。 +`@asset` の場合、asset の metadata 引数内に配置されます。 +`@multi_asset` の場合、[AssetOut](https://docs.dagster.io/_apidocs/assets#dagster.AssetOut) メタデータ引数を通じて各出力メタデータ内に配置されます。 + +以下のコード例は、`@op`、`@asset`、`@multi_asset` の計算で辞書を設定する方法を示しています。 + + + +`@op` の例: +```python +@op( + out=Out( + metadata={ + "wandb_artifact_configuration": { + "name": "my_artifact", + "type": "dataset", + } + } + ) +) +def create_dataset(): + return [1, 2, 3] +``` + + +`@asset` の例: +```python +@asset( + name="my_artifact", + metadata={ + "wandb_artifact_configuration": { + "type": "dataset", + } + }, + io_manager_key="wandb_artifacts_manager", +) +def create_dataset(): + return [1, 2, 3] +``` + +`@asset` にはすでに名前があるため、設定を通じて名前を渡す必要はありません。インテグレーションは Artifact 名を asset 名として設定します。 + + +`@multi_asset` の例: + +```python +@multi_asset( + name="create_datasets", + outs={ + "first_table": AssetOut( + metadata={ + "wandb_artifact_configuration": { + "type": "training_dataset", + } + }, + io_manager_key="wandb_artifacts_manager", + ), + "second_table": AssetOut( + metadata={ + "wandb_artifact_configuration": { + "type": "validation_dataset", + } + }, + io_manager_key="wandb_artifacts_manager", + ), + }, + group_name="my_multi_asset_group", +) +def create_datasets(): + first_table = wandb.Table(columns=["a", "b", "c"], data=[[1, 2, 3]]) + second_table = wandb.Table(columns=["d", "e"], data=[[4, 5]]) + + return first_table, second_table +``` + + + + + +サポートされているプロパティ: +* `name`: (str) この Artifact の人間が読める名前。UI でこの Artifact を識別したり、`use_artifact` 呼び出しで参照したりする際に使用します。名前には、英数字、アンダースコア、ハイフン、ドットを使用できます。名前はプロジェクト内で一意である必要があります。`@op` では必須です。 +* `type`: (str) Artifact の整理と区別に使用される Artifact のタイプ。一般的なタイプには `dataset` や `model` がありますが、英数字、アンダースコア、ハイフン、ドットを含む任意の文字列を使用できます。出力がまだ Artifact でない場合は必須です。 +* `description`: (str) Artifact の説明を提供するフリーテキスト。説明は UI で Markdown としてレンダリングされるため、テーブルやリンクなどを配置するのに適しています。 +* `aliases`: (list[str]) Artifact に適用する 1 つ以上のエイリアスを含む配列。インテグレーションは、設定されているかどうかにかかわらず、そのリストに "latest" タグも追加します。これは、モデルやデータセットのバージョン管理を管理するための効果的な方法です。 +* [`add_dirs`](/models/ref/python/experiments/artifact#add_dir): (list[dict[str, Any]]): Artifact に含める各ローカルディレクトリの設定を含む配列。 +* [`add_files`](/models/ref/python/experiments/artifact#add_file): (list[dict[str, Any]]): Artifact に含める各ローカルファイルの設定を含む配列。 +* [`add_references`](/models/ref/python/experiments/artifact#add_reference): (list[dict[str, Any]]): Artifact に含める各外部リファレンスの設定を含む配列。 +* `serialization_module`: (dict) 使用するシリアライゼーションモジュールの設定。詳細については、Serialization セクションを参照してください。 + * `name`: (str) シリアライゼーションモジュールの名前。許容される値: `pickle`, `dill`, `cloudpickle`, `joblib`。モジュールがローカルで使用可能である必要があります。 + * `parameters`: (dict[str, Any]) シリアライゼーション関数に渡されるオプションの引数。そのモジュールの dump メソッドと同じパラメータを受け入れます。例: `{"compress": 3, "protocol": 4}`。 + +高度な例: + +```python +@asset( + name="my_advanced_artifact", + metadata={ + "wandb_artifact_configuration": { + "type": "dataset", + "description": "My *Markdown* description", + "aliases": ["my_first_alias", "my_second_alias"], + "add_dirs": [ + { + "name": "My directory", + "local_path": "path/to/directory", + } + ], + "add_files": [ + { + "name": "validation_dataset", + "local_path": "path/to/data.json", + }, + { + "is_tmp": True, + "local_path": "path/to/temp", + }, + ], + "add_references": [ + { + "uri": "https://picsum.photos/200/300", + "name": "External HTTP reference to an image", + }, + { + "uri": "s3://my-bucket/datasets/mnist", + "name": "External S3 reference", + }, + ], + } + }, + io_manager_key="wandb_artifacts_manager", +) +def create_advanced_artifact(): + return [1, 2, 3] +``` + + + +asset は、インテグレーションの両側で有用なメタデータとともに実体化(materialize)されます。 +* W&B 側: ソースインテグレーションの名前とバージョン、使用された Python バージョン、pickle プロトコルバージョンなど。 +* Dagster 側: + * Dagster Run ID + * W&B Run: ID, 名前, パス, URL + * W&B Artifact: ID, 名前, タイプ, バージョン, サイズ, URL + * W&B Entity + * W&B Project + +次の画像は、W&B から Dagster asset に追加されたメタデータを示しています。この情報はインテグレーションなしでは利用できません。 + + + + + +次の画像は、提供された設定が W&B Artifact 上の有用なメタデータでどのように強化されたかを示しています。この情報は再現性とメンテナンスに役立ちます。これもインテグレーションなしでは利用できません。 + + + + + + + + + + + + + +mypy のような静的タイプチェッカーを使用している場合は、次のようにして設定タイプ定義オブジェクトをインポートしてください。 + +```python +from dagster_wandb import WandbArtifactConfiguration +``` + + +### パーティションの使用 + +インテグレーションは [Dagster partitions](https://docs.dagster.io/concepts/partitions-schedules-sensors/partitions) をネイティブにサポートしています。 + +以下は、`DailyPartitionsDefinition` を使用したパーティション化の例です。 +```python +@asset( + partitions_def=DailyPartitionsDefinition(start_date="2023-01-01", end_date="2023-02-01"), + name="my_daily_partitioned_asset", + compute_kind="wandb", + metadata={ + "wandb_artifact_configuration": { + "type": "dataset", + } + }, +) +def create_my_daily_partitioned_asset(context): + partition_key = context.asset_partition_key_for_output() + context.log.info(f"Creating partitioned asset for {partition_key}") + return random.randint(0, 100) +``` +このコードは、パーティションごとに 1 つの W&B Artifact を生成します。UI の Artifact パネルで、パーティションキーが付加された asset 名(例: `my_daily_partitioned_asset.2023-01-01`, `my_daily_partitioned_asset.2023-01-02`, `my_daily_partitioned_asset.2023-01-03`)の下に表示されます。複数のディメンションにまたがってパーティション化された asset は、各ディメンションがドット区切り形式で表示されます(例: `my_asset.car.blue`)。 + + +このインテグレーションでは、1 つの Run 内で複数のパーティションを実体化(materialize)することはできません。asset を実体化するには、複数の Run を実行する必要があります。これは、Dagit で asset を実体化する際に実行できます。 + + + + + + +#### 高度な使用法 +- [Partitioned job](https://github.com/dagster-io/dagster/blob/master/examples/with_wandb/with_wandb/ops/partitioned_job.py) +- [Simple partitioned asset](https://github.com/wandb/dagster/blob/master/examples/with_wandb/with_wandb/assets/simple_partitions_example.py) +- [Multi-partitioned asset](https://github.com/wandb/dagster/blob/master/examples/with_wandb/with_wandb/assets/multi_partitions_example.py) +- [Advanced partitioned usage](https://github.com/wandb/dagster/blob/master/examples/with_wandb/with_wandb/assets/advanced_partitions_example.py) + + +## W&B Artifacts の読み込み +W&B Artifacts の読み込みは、書き込みと同様です。`wandb_artifact_configuration` と呼ばれる設定辞書を `@op` または `@asset` に設定できます。唯一の違いは、出力ではなく入力に設定を行う必要がある点です。 + +`@op` の場合、[In](https://docs.dagster.io/_apidocs/ops#dagster.In) メタデータ引数を通じて入力メタデータ内に配置されます。Artifact の名前を明示的に渡す必要があります。 + +`@asset` の場合、[AssetIn](https://docs.dagster.io/_apidocs/assets#dagster.AssetIn) メタデータ引数を通じて入力メタデータ内に配置されます。親 asset の名前が一致する必要があるため、Artifact 名を渡す必要はありません。 + +インテグレーション外で作成された Artifact に依存関係を持たせたい場合は、[SourceAsset](https://docs.dagster.io/_apidocs/assets#dagster.SourceAsset) を使用する必要があります。これにより、常にその asset の最新バージョンが読み込まれます。 + +以下の例は、さまざまな ops から Artifact を読み込む方法を示しています。 + + + +`@op` から Artifact を読み込む +```python +@op( + ins={ + "artifact": In( + metadata={ + "wandb_artifact_configuration": { + "name": "my_artifact", + } + } + ) + }, + io_manager_key="wandb_artifacts_manager" +) +def read_artifact(context, artifact): + context.log.info(artifact) +``` + + +別の `@asset` によって作成された Artifact を読み込む +```python +@asset( + name="my_asset", + ins={ + "artifact": AssetIn( + # 入力引数の名前を変更したくない場合は、'key' を削除できます + key="parent_dagster_asset_name", + input_manager_key="wandb_artifacts_manager", + ) + }, +) +def read_artifact(context, artifact): + context.log.info(artifact) +``` + + +Dagster 外で作成された Artifact を読み込む: + +```python +my_artifact = SourceAsset( + key=AssetKey("my_artifact"), # W&B Artifact の名前 + description="Artifact created outside Dagster", + io_manager_key="wandb_artifacts_manager", +) + + +@asset +def read_artifact(context, my_artifact): + context.log.info(my_artifact) +``` + + + + +### Configuration (設定) +以下の設定は、IO マネージャーが何を収集し、デコレートされた関数に入力として提供するかを示すために使用されます。以下の読み込みパターンがサポートされています。 + +1. Artifact 内に含まれる名前付きオブジェクトを取得するには、`get` を使用します。 + +```python +@asset( + ins={ + "table": AssetIn( + key="my_artifact_with_table", + metadata={ + "wandb_artifact_configuration": { + "get": "my_table", + } + }, + input_manager_key="wandb_artifacts_manager", + ) + } +) +def get_table(context, table): + context.log.info(table.get_column("a")) +``` + + +2. Artifact 内に含まれるダウンロード済みファイルのローカルパスを取得するには、`get_path` を使用します。 + +```python +@asset( + ins={ + "path": AssetIn( + key="my_artifact_with_file", + metadata={ + "wandb_artifact_configuration": { + "get_path": "name_of_file", + } + }, + input_manager_key="wandb_artifacts_manager", + ) + } +) +def get_path(context, path): + context.log.info(path) +``` + +3. Artifact オブジェクト全体を取得するには(コンテンツはローカルにダウンロードされます): +```python +@asset( + ins={ + "artifact": AssetIn( + key="my_artifact", + input_manager_key="wandb_artifacts_manager", + ) + }, +) +def get_artifact(context, artifact): + context.log.info(artifact.name) +``` + + +サポートされているプロパティ +* `get`: (str) Artifact の相対名にある W&B オブジェクトを取得します。 +* `get_path`: (str) Artifact の相対名にあるファイルへのパスを取得します。 + +### Serialization configuration (シリアライゼーション設定) +デフォルトでは、インテグレーションは標準の [pickle](https://docs.python.org/3/library/pickle.html) モジュールを使用しますが、一部のオブジェクトはこれと互換性がありません。例えば、`yield` を含む関数を pickle 化しようとするとエラーが発生します。 + +より多くの Pickle ベースのシリアライゼーションモジュール ([dill](https://github.com/uqfoundation/dill), [cloudpickle](https://github.com/cloudpipe/cloudpickle), [joblib](https://github.com/joblib/joblib)) をサポートしています。また、シリアライズされた文字列を返すか、Artifact を直接作成することで、[ONNX](https://onnx.ai/) や [PMML](https://en.wikipedia.org/wiki/Predictive_Model_Markup_Language) のようなより高度なシリアライゼーションも使用できます。適切な選択はユースケースに依存します。この主題に関する既存のドキュメントを参照してください。 + +### Pickle ベースのシリアライゼーションモジュール + + +Pickle 化は安全でないことが知られています。セキュリティが懸念される場合は、W&B オブジェクトのみを使用してください。データに署名し、ハッシュキーを独自のシステムに保存することをお勧めします。より複雑なユースケースについては、お気軽にお問い合わせください。喜んでお手伝いいたします。 + + +`wandb_artifact_configuration` 内の `serialization_module` 辞書を通じて、使用するシリアライゼーションを設定できます。Dagster を実行しているマシンでモジュールが利用可能であることを確認してください。 + +インテグレーションは、その Artifact を読み込む際に、どのシリアライゼーションモジュールを使用すべきかを自動的に判断します。 + +現在サポートされているモジュールは `pickle`, `dill`, `cloudpickle`, `joblib` です。 + +これは、joblib でシリアライズされた “model” を作成し、それを推論に使用する簡略化された例です。 + +```python +@asset( + name="my_joblib_serialized_model", + compute_kind="Python", + metadata={ + "wandb_artifact_configuration": { + "type": "model", + "serialization_module": { + "name": "joblib" + }, + } + }, + io_manager_key="wandb_artifacts_manager", +) +def create_model_serialized_with_joblib(): + # これは本物の ML モデルではありませんが、pickle モジュールでは不可能なことです + return lambda x, y: x + y + +@asset( + name="inference_result_from_joblib_serialized_model", + compute_kind="Python", + ins={ + "my_joblib_serialized_model": AssetIn( + input_manager_key="wandb_artifacts_manager", + ) + }, + metadata={ + "wandb_artifact_configuration": { + "type": "results", + } + }, + io_manager_key="wandb_artifacts_manager", +) +def use_model_serialized_with_joblib( + context: OpExecutionContext, my_joblib_serialized_model +): + inference_result = my_joblib_serialized_model(1, 2) + context.log.info(inference_result) # 出力: 3 + return inference_result +``` + +### 高度なシリアライゼーション形式 (ONNX, PMML) +ONNX や PMML のような相互交換ファイル形式を使用するのが一般的です。インテグレーションはこれらの形式をサポートしていますが、Pickle ベースのシリアライゼーションよりも少し手間がかかります。 + +これらの形式を使用するには 2 つの異なる方法があります。 +1. モデルを選択した形式に変換し、通常の Python オブジェクトであるかのようにその形式の文字列表現を返します。インテグレーションはその文字列を pickle 化します。その後、その文字列を使用してモデルを再構築できます。 +2. シリアライズされたモデルを含む新しいローカルファイルを作成し、`add_file` 設定を使用してそのファイルでカスタム Artifact を構築します。 + +これは、ONNX を使用してシリアライズされる Scikit-learn モデルの例です。 + +```python +import numpy +import onnxruntime as rt +from skl2onnx import convert_sklearn +from skl2onnx.common.data_types import FloatTensorType +from sklearn.datasets import load_iris +from sklearn.ensemble import RandomForestClassifier +from sklearn.model_selection import train_test_split + +from dagster import AssetIn, AssetOut, asset, multi_asset + +@multi_asset( + compute_kind="Python", + outs={ + "my_onnx_model": AssetOut( + metadata={ + "wandb_artifact_configuration": { + "type": "model", + } + }, + io_manager_key="wandb_artifacts_manager", + ), + "my_test_set": AssetOut( + metadata={ + "wandb_artifact_configuration": { + "type": "test_set", + } + }, + io_manager_key="wandb_artifacts_manager", + ), + }, + group_name="onnx_example", +) +def create_onnx_model(): + # https://onnx.ai/sklearn-onnx/ を参考に作成 + + # モデルをトレーニング + iris = load_iris() + X, y = iris.data, iris.target + X_train, X_test, y_train, y_test = train_test_split(X, y) + clr = RandomForestClassifier() + clr.fit(X_train, y_train) + + # ONNX 形式に変換 + initial_type = [("float_input", FloatTensorType([None, 4]))] + onx = convert_sklearn(clr, initial_types=initial_type) + + # アーティファクトを書き出し (model + test_set) + return onx.SerializeToString(), {"X_test": X_test, "y_test": y_test} + +@asset( + name="experiment_results", + compute_kind="Python", + ins={ + "my_onnx_model": AssetIn( + input_manager_key="wandb_artifacts_manager", + ), + "my_test_set": AssetIn( + input_manager_key="wandb_artifacts_manager", + ), + }, + group_name="onnx_example", +) +def use_onnx_model(context, my_onnx_model, my_test_set): + # https://onnx.ai/sklearn-onnx/ を参考に作成 + + # ONNX Runtime で予測を実行 + sess = rt.InferenceSession(my_onnx_model) + input_name = sess.get_inputs()[0].name + label_name = sess.get_outputs()[0].name + pred_onx = sess.run( + [label_name], {input_name: my_test_set["X_test"].astype(numpy.float32)} + )[0] + context.log.info(pred_onx) + return pred_onx +``` + +### パーティションの使用 + +インテグレーションは [Dagster partitions](https://docs.dagster.io/concepts/partitions-schedules-sensors/partitions) をネイティブにサポートしています。 + +asset の 1 つ、複数、またはすべてのパーティションを選択的に読み込むことができます。 + +すべてのパーティションは辞書形式で提供され、キーと値はそれぞれパーティションキーと Artifact の内容を表します。 + + + + +上流の `@asset` のすべてのパーティションを辞書として読み込みます。この辞書では、キーと値がそれぞれパーティションキーと Artifact の内容に対応します。 +```python +@asset( + compute_kind="wandb", + ins={"my_daily_partitioned_asset": AssetIn()}, + output_required=False, +) +def read_all_partitions(context, my_daily_partitioned_asset): + for partition, content in my_daily_partitioned_asset.items(): + context.log.info(f"partition={partition}, content={content}") +``` + + +`AssetIn` の `partition_mapping` 設定により、特定のパーティションを選択できます。この場合、`TimeWindowPartitionMapping` を採用しています。 +```python +@asset( + partitions_def=DailyPartitionsDefinition(start_date="2023-01-01", end_date="2023-02-01"), + compute_kind="wandb", + ins={ + "my_daily_partitioned_asset": AssetIn( + partition_mapping=TimeWindowPartitionMapping(start_offset=-1) + ) + }, + output_required=False, +) +def read_specific_partitions(context, my_daily_partitioned_asset): + for partition, content in my_daily_partitioned_asset.items(): + context.log.info(f"partition={partition}, content={content}") +``` + + + +設定オブジェクト `metadata` は、プロジェクト内のさまざまなアーティファクトパーティションと W&B がどのように相互作用するかを設定します。 + +`metadata` オブジェクトには `wandb_artifact_configuration` というキーが含まれており、さらにその中に `partitions` というネストされたオブジェクトが含まれています。 + +`partitions` オブジェクトは、各パーティションの名前をその設定にマッピングします。各パーティションの設定では、そこからデータを取得する方法を指定できます。これらの設定には、各パーティションの要件に応じて、`get`, `version`, `alias` といった異なるキーを含めることができます。 + +**設定キー** + +1. `get`: +`get` キーは、データを取得する場所である W&B オブジェクト(Table, Image...)の名前を指定します。 +2. `version`: +`version` キーは、Artifact の特定のバージョンを取得したい場合に使用されます。 +3. `alias`: +`alias` キーを使用すると、エイリアスによって Artifact を取得できます。 + +**ワイルドカード設定** + +ワイルドカード `"*"` は、設定されていないすべてのパーティションを表します。これは、`partitions` オブジェクトで明示的に言及されていないパーティションのデフォルト設定を提供します。 + +例えば、 + +```python +"*": { + "get": "default_table_name", +}, +``` +この設定は、明示的に設定されていないすべてのパーティションについて、`default_table_name` という名前のテーブルからデータが取得されることを意味します。 + +**特定のパーティション設定** + +特定のパーティションの設定をキーとともに提供することで、ワイルドカード設定を上書きできます。 + +例えば、 + +```python +"yellow": { + "get": "custom_table_name", +}, +``` + +この設定は、`yellow` という名前のパーティションについて、ワイルドカード設定を上書きして `custom_table_name` という名前のテーブルからデータが取得されることを意味します。 + +**バージョニングとエイリアシング** + +バージョニングとエイリアシングのために、設定で特定の `version` および `alias` キーを提供できます。 + +バージョンの場合、 + +```python +"orange": { + "version": "v0", +}, +``` + +この設定は、`orange` Artifact パーティションのバージョン `v0` からデータを取得します。 + +エイリアスの場合、 + +```python +"blue": { + "alias": "special_alias", +}, +``` + +この設定は、`special_alias` というエイリアスを持つ Artifact パーティション(設定内では `blue` として参照)の `default_table_name` テーブルからデータを取得します。 + +### 高度な使用法 +インテグレーションの高度な使用法については、以下の完全なコード例を参照してください。 +* [assets の高度な使用例](https://github.com/dagster-io/dagster/blob/master/examples/with_wandb/with_wandb/assets/advanced_example.py) +* [パーティション化されたジョブの例](https://github.com/dagster-io/dagster/blob/master/examples/with_wandb/with_wandb/ops/partitioned_job.py) +* [Model Registry へのモデルのリンク](https://github.com/dagster-io/dagster/blob/master/examples/with_wandb/with_wandb/assets/model_registry_example.py) + + +## W&B Launch の使用 + + +アクティブに開発中のベータ版製品です。 +Launch に興味がありますか?W&B Launch のカスタマーパイロットプログラムへの参加については、アカウントチームにお問い合わせください。 +パイロットカスタマーは、ベータプログラムの対象となるために AWS EKS または SageMaker を使用する必要があります。最終的には、追加のプラットフォームをサポートする予定です。 + + +続行する前に、W&B Launch の使用方法をよく理解しておくことをお勧めします。[Launch ガイド](/platform/launch) をお読みください。 + +Dagster インテグレーションは以下を支援します。 +* Dagster インスタンスで 1 つまたは複数の Launch エージェントを実行する。 +* Dagster インスタンス内でローカルの Launch ジョブを実行する。 +* オンプレミスまたはクラウドでのリモート Launch ジョブ。 + +### Launch agents +このインテグレーションは、`run_launch_agent` と呼ばれるインポート可能な `@op` を提供します。これは Launch Agent を起動し、手動で停止されるまで長時間実行プロセスとして実行します。 + +エージェントは、Launch キューをポーリングし、ジョブを順番に実行(または実行するために外部サービスにディスパッチ)するプロセスです。 + +[Launch ページ](/platform/launch) を参照してください。 + +Launchpad ですべてのプロパティの有用な説明を確認することもできます。 + + + + + +簡単な例 +```python +# これを config.yaml に追加します +# あるいは、Dagit の Launchpad または JobDefinition.execute_in_process で設定することもできます +# 参照: https://docs.dagster.io/concepts/configuration/config-schema#specifying-runtime-configuration +resources: + wandb_config: + config: + entity: my_entity # これをあなたの W&B entity に置き換えてください + project: my_project # これをあなたの W&B プロジェクトに置き換えてください +ops: + run_launch_agent: + config: + max_jobs: -1 + queues: + - my_dagster_queue + +from dagster_wandb.launch.ops import run_launch_agent +from dagster_wandb.resources import wandb_resource + +from dagster import job, make_values_resource + +@job( + resource_defs={ + "wandb_config": make_values_resource( + entity=str, + project=str, + ), + "wandb_resource": wandb_resource.configured( + {"api_key": {"env": "WANDB_API_KEY"}} + ), + }, +) +def run_launch_agent_example(): + run_launch_agent() +``` + +### Launch jobs +このインテグレーションは、`run_launch_job` と呼ばれるインポート可能な `@op` を提供します。これは Launch ジョブを実行します。 + +Launch ジョブは、実行されるためにキューに割り当てられます。キューを作成するか、デフォルトのものを使用できます。そのキューをリスニングしているアクティブなエージェントがあることを確認してください。Dagster インスタンス内でエージェントを実行することもできますが、Kubernetes で展開可能なエージェントの使用を検討することもできます。 + +[Launch ページ](/platform/launch) を参照してください。 + +Launchpad ですべてのプロパティの有用な説明を確認することもできます。 + + + + + + +簡単な例 +```python +# これを config.yaml に追加します +# あるいは、Dagit の Launchpad または JobDefinition.execute_in_process で設定することもできます +# 参照: https://docs.dagster.io/concepts/configuration/config-schema#specifying-runtime-configuration +resources: + wandb_config: + config: + entity: my_entity # これをあなたの W&B entity に置き換えてください + project: my_project # これをあなたの W&B プロジェクトに置き換えてください +ops: + my_launched_job: + config: + entry_point: + - python + - train.py + queue: my_dagster_queue + uri: https://github.com/wandb/example-dagster-integration-with-launch + + +from dagster_wandb.launch.ops import run_launch_job +from dagster_wandb.resources import wandb_resource + +from dagster import job, make_values_resource + + +@job(resource_defs={ + "wandb_config": make_values_resource( + entity=str, + project=str, + ), + "wandb_resource": wandb_resource.configured( + {"api_key": {"env": "WANDB_API_KEY"}} + ), + }, +) +def run_launch_job_example(): + run_launch_job.alias("my_launched_job")() # ジョブにエイリアスを付けて名前を変更します +``` + +## ベストプラクティス + +1. Artifacts の読み書きには IO マネージャーを使用してください。 +[`Artifact.download()`](/models/ref/python/experiments/artifact#download) や [`Run.log_artifact()`](/models/ref/python/experiments/run#log_artifact) を直接使用することは避けてください。これらのメソッドはインテグレーションによって処理されます。代わりに、Artifact に保存したいデータを返し、残りはインテグレーションに任せてください。このアプローチにより、Artifact のリネージがより正確になります。 + +2. 複雑なユースケースの場合のみ、自分で Artifact オブジェクトを構築してください。 +Python オブジェクトと W&B オブジェクトは、ops/assets から返されるべきです。インテグレーションが Artifact のパッケージ化を処理します。 +複雑なユースケースでは、Dagster ジョブで直接 Artifact を構築できます。ソースインテグレーションの名前とバージョン、使用された Python バージョン、pickle プロトコルバージョンなどのメタデータを強化するために、Artifact オブジェクトをインテグレーションに渡すことをお勧めします。 + +3. メタデータを通じて、ファイル、ディレクトリ、外部リファレンスを Artifacts に追加してください。 +インテグレーションの `wandb_artifact_configuration` オブジェクトを使用して、ファイル、ディレクトリ、または外部リファレンス(Amazon S3, GCS, HTTP…)を追加します。詳細については、[Artifact configuration セクション](#configuration-1) の高度な例を参照してください。 + +4. Artifact が生成される場合は、@op の代わりに @asset を使用してください。 +Artifacts は assets です。Dagster がその資産を維持する場合は、asset を使用することをお勧めします。これにより、Dagit Asset Catalog での可観測性が向上します。 + +5. Dagster 外で作成された Artifact を消費するには、SourceAsset を使用してください。 +これにより、インテグレーションを利用して外部で作成された Artifact を読み取ることができます。そうしないと、インテグレーションによって作成された Artifact しか使用できません。 + +6. 大規模モデルの専用計算リソースでのトレーニングのオーケストレーションには、W&B Launch を使用してください。 +小規模なモデルは Dagster クラスター内でトレーニングでき、GPU ノードを持つ Kubernetes クラスターで Dagster を実行することもできます。大規模なモデルのトレーニングには W&B Launch を使用することをお勧めします。これにより、インスタンスの過負荷を防ぎ、より適切な計算リソースへのアクセスが可能になります。 + +7. Dagster 内で実験管理を行う場合は、W&B Run ID を Dagster Run ID の値に設定してください。 +[Run を再開可能](/models/runs/resuming/) にし、かつ W&B Run ID を Dagster Run ID または任意の文字列に設定することをお勧めします。この推奨事項に従うことで、Dagster 内でモデルをトレーニングする際に、W&B メトリクスと W&B Artifacts が同じ W&B Run に保存されるようになります。 + + +W&B Run ID を Dagster Run ID に設定するか、 +```python +wandb.init( + id=context.run_id, + resume="allow", + ... +) +``` + + +あるいは、独自の W&B Run ID を選択して IO マネージャーの設定に渡します。 +```python +wandb.init( + id="my_resumable_run_id", + resume="allow", + ... +) + +@job( + resource_defs={ + "io_manager": wandb_artifacts_io_manager.configured( + {"wandb_run_id": "my_resumable_run_id"} + ), + } +) +``` + +8. 大規模な W&B Artifacts の場合は、get または get_path を使用して必要なデータのみを収集してください。 +デフォルトでは、インテグレーションは Artifact 全体をダウンロードします。非常に大きな Artifact を使用している場合は、必要な特定のファイルやオブジェクトのみを収集したい場合があります。これにより、速度とリソース使用率が向上します。 + +9. Python オブジェクトについては、ユースケースに合わせて pickle 化モジュールを適応させてください。 +デフォルトでは、W&B インテグレーションは標準の [pickle](https://docs.python.org/3/library/pickle.html) モジュールを使用します。しかし、一部のオブジェクトはこれと互換性がありません。例えば、`yield` を含む関数を pickle 化しようとするとエラーが発生します。W&B は、他の Pickle ベースのシリアライゼーションモジュール ([dill](https://github.com/uqfoundation/dill), [cloudpickle](https://github.com/cloudpipe/cloudpickle), [joblib](https://github.com/joblib/joblib)) をサポートしています。 + +また、シリアライズされた文字列を返すか、Artifact を直接作成することで、[ONNX](https://onnx.ai/) や [PMML](https://en.wikipedia.org/wiki/Predictive_Model_Markup_Language) のようなより高度なシリアライゼーションも使用できます。適切な選択はユースケースに依存します。この主題に関する既存のドキュメントを参照してください。 \ No newline at end of file diff --git a/ja/models/integrations/databricks.mdx b/ja/models/integrations/databricks.mdx new file mode 100644 index 0000000000..2007f81621 --- /dev/null +++ b/ja/models/integrations/databricks.mdx @@ -0,0 +1,60 @@ +--- +title: Databricks +description: W&B を Databricks と統合する方法。 +--- + +W&Bは、Databricks 環境における W&B Jupyter ノートブックのエクスペリエンスをカスタマイズすることで、 [Databricks](https://www.databricks.com/) と統合します。 + +## Databricks の設定 + +1. クラスターに wandb をインストールする + + クラスター設定に移動し、使用するクラスターを選択して **Libraries** をクリックします。 **Install New** をクリックし、 **PyPI** を選択して、パッケージ `wandb` を追加します。 + +2. 認証の設定 + + W&B アカウントを認証するために、ノートブックから照会できる Databricks secret を追加できます。 + + ```bash + # databricks cli をインストール + pip install databricks-cli + + # databricks UI からトークンを生成 + databricks configure --token + + # 以下の2つのコマンドのいずれかを使用してスコープを作成(Databricks でセキュリティ機能が有効になっているかどうかに依存): + # セキュリティアドオンがある場合 + databricks secrets create-scope --scope wandb + # セキュリティアドオンがない場合 + databricks secrets create-scope --scope wandb --initial-manage-principal users + + # https://wandb.ai/settings で APIキー を作成 + databricks secrets put --scope wandb --key api_key + ``` + +## 例 + +### シンプルな例 + +```python +import os +import wandb + +api_key = dbutils.secrets.get("wandb", "api_key") +wandb.login(key=api_key) + +with wandb.init() as run: + run.log({"foo": 1}) +``` + +### Sweeps + +`wandb.sweep()` または `wandb.agent()` を使用するノートブックに必要な(一時的な)セットアップ: + +```python +import os + +# これらは将来的に不要になる予定です +os.environ["WANDB_ENTITY"] = "my-entity" +os.environ["WANDB_PROJECT"] = "my-project-that-exists" +``` \ No newline at end of file diff --git a/ja/models/integrations/deepchecks.mdx b/ja/models/integrations/deepchecks.mdx new file mode 100644 index 0000000000..e73e6b28a3 --- /dev/null +++ b/ja/models/integrations/deepchecks.mdx @@ -0,0 +1,58 @@ +--- +title: DeepChecks +description: W&B を DeepChecks と統合する方法。 +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +DeepChecks は、データセットの整合性の検証、分布の検査、データ分割の妥当性確認、モデルの評価、異なるモデル間の比較など、機械学習モデルとデータのバリデーションを最小限の手間で実行できるようにサポートします。 + +[DeepChecks と W&B インテグレーションの詳細はこちら ->](https://docs.deepchecks.com/stable/general/usage/exporting_results/auto_examples/plot_exports_output_to_wandb.html) + +## はじめに + +DeepChecks を W&B と共に使用するには、まず [W&B アカウント](https://wandb.ai/site) に登録する必要があります。DeepChecks の W&B インテグレーションを使えば、以下のように素早く開始できます。 + +```python +import wandb + +wandb.login() + +# deepchecks から check をインポート +from deepchecks.checks import ModelErrorAnalysis + +# check を実行 +result = ModelErrorAnalysis() + +# その結果を wandb にプッシュ +result.to_wandb() +``` + +また、DeepChecks のテストスイート全体を W&B にログ記録することも可能です。 + +```python +import wandb + +wandb.login() + +# deepchecks から full_suite テストをインポート +from deepchecks.suites import full_suite + +# DeepChecks テストスイートを作成して実行 +suite_result = full_suite().run(...) + +# これらの結果を wandb にプッシュ +# ここで必要な wandb.init の設定や引数を渡すことができます +suite_result.to_wandb(project="my-suite-project", config={"suite-name": "full-suite"}) +``` + +## 例 + +[こちらの Reports](https://wandb.ai/cayush/deepchecks/reports/Validate-your-Data-and-Models-with-Deepchecks-and-W-B--VmlldzoxNjY0ODc5) では、DeepChecks と W&B を組み合わせた際の効果を確認できます。 + + + Deepchecks data validation results + + +この W&B インテグレーションに関するご質問や問題がある場合は、[DeepChecks の GitHub リポジトリ](https://github.com/deepchecks/deepchecks) で Issue を作成してください。内容を確認し、回答させていただきます。 \ No newline at end of file diff --git a/ja/models/integrations/deepchem.mdx b/ja/models/integrations/deepchem.mdx new file mode 100644 index 0000000000..edd3466c1a --- /dev/null +++ b/ja/models/integrations/deepchem.mdx @@ -0,0 +1,105 @@ +--- +title: DeepChem +description: W&B を DeepChem ライブラリ と統合する方法。 +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +[DeepChem ライブラリ](https://github.com/deepchem/deepchem) は、創薬、材料科学、化学、生物学におけるディープラーニングの利用を民主化するオープンソース ツールを提供しています。この W&B インテグレーションにより、DeepChem を使用したモデルのトレーニング中に、シンプルで使いやすい 実験管理 とモデルの チェックポイント 保存機能が追加されます。 + +## 3行のコードで DeepChem のログを記録 + +```python +logger = WandbLogger(…) +model = TorchModel(…, wandb_logger=logger) +model.fit(…) +``` + + + DeepChem molecular analysis + + +## レポートと Google Colab + +W&B DeepChem インテグレーションを使用して生成されたチャートの例については、記事「 [Using W&B with DeepChem: Molecular Graph Convolutional Networks](https://wandb.ai/kshen/deepchem_graphconv/reports/Using-W-B-with-DeepChem-Molecular-Graph-Convolutional-Networks--Vmlldzo4MzU5MDc?galleryTag=) 」をご覧ください。 + +すぐに実行可能な コード を確認するには、こちらの [Google Colab](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/deepchem/W%26B_x_DeepChem.ipynb) をチェックしてください。 + +## 実験 (Experiments) を追跡する + +[KerasModel](https://deepchem.readthedocs.io/en/latest/api_reference/models.html#keras-models) または [TorchModel](https://deepchem.readthedocs.io/en/latest/api_reference/models.html#pytorch-models) タイプの DeepChem モデルに対して W&B を設定します。 + +### サインアップと APIキー の作成 + +APIキー は、マシンを W&B に対して認証するために使用されます。 APIキー は ユーザー プロフィールから生成できます。 + + + +1. 右上隅にある ユーザー プロフィールアイコンをクリックします。 +1. **User Settings** を選択し、 **API Keys** セクションまでスクロールします。 + +### `wandb` ライブラリのインストールとログイン + +ローカルに `wandb` ライブラリをインストールしてログインする方法: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) に APIキー を設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +### トレーニングと評価のデータを W&B にログ記録する + +トレーニングの損失(loss)と 評価メトリクス は、自動的に W&B に ログ 記録されます。DeepChem の [ValidationCallback](https://github.com/deepchem/deepchem/blob/master/deepchem/models/callbacks.py) を使用してオプションの評価を有効にすると、 `WandbLogger` は `ValidationCallback` コールバック を検出し、生成された メトリクス を ログ 記録します。 + + + +```python +from deepchem.models import TorchModel, ValidationCallback + +vc = ValidationCallback(…) # オプション +model = TorchModel(…, wandb_logger=logger) +model.fit(…, callbacks=[vc]) +logger.finish() +``` + + +```python +from deepchem.models import KerasModel, ValidationCallback + +vc = ValidationCallback(…) # オプション +model = KerasModel(…, wandb_logger=logger) +model.fit(…, callbacks=[vc]) +logger.finish() +``` + + \ No newline at end of file diff --git a/ja/models/integrations/diffusers.mdx b/ja/models/integrations/diffusers.mdx new file mode 100644 index 0000000000..68f73cd503 --- /dev/null +++ b/ja/models/integrations/diffusers.mdx @@ -0,0 +1,295 @@ +--- +title: Hugging Face Diffusers +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +[Hugging Face Diffusers](https://huggingface.co/docs/diffusers) は、画像、オーディオ、さらには分子の3D構造を生成するための、最先端の学習済み拡散モデル(diffusion models)を利用するための主要なライブラリです。W&B インテグレーションを使用すると、その使いやすさを損なうことなく、リッチで柔軟な 実験管理 、メディアの 可視化 、パイプラインの アーキテクチャー 、および 設定 管理を、インタラクティブで中央集約的な ダッシュボード に追加できます。 + +## わずか2行で次世代のロギングを実現 + +わずか2行の コード を追加するだけで、実験に関連するすべてのプロンプト、ネガティブプロンプト、生成されたメディア、および 設定 を ログ に記録できます。ロギングを開始するための2行の コード は以下の通りです。 + +```python +# autolog関数をインポート +from wandb.integration.diffusers import autolog + +# パイプラインを呼び出す前にautologを呼び出す +autolog(init=dict(project="diffusers_logging")) +``` + + + Experiment results logging + + +## はじめる + +1. `diffusers`, `transformers`, `accelerate`, および `wandb` をインストールします。 + + - コマンドライン : + + ```shell + pip install --upgrade diffusers transformers accelerate wandb + ``` + + - ノートブック : + + ```bash + !pip install --upgrade diffusers transformers accelerate wandb + ``` + + +2. `autolog` を使用して W&B Run を初期化し、[サポートされているすべてのパイプライン呼び出し](https://github.com/wandb/wandb/blob/main/wandb/integration/diffusers/autologger.py#L12-L72) からの入力と出力を自動的に追跡します。 + + `autolog()` 関数は `init` パラメータ を使用して呼び出すことができます。これには [`wandb.init()`](/models/ref/python/functions/init) で必要な パラメータ の 辞書 を渡します。 + + `autolog()` を呼び出すと、W&B Run が初期化され、[サポートされているすべてのパイプライン呼び出し](https://github.com/wandb/wandb/blob/main/wandb/integration/diffusers/autologger.py#L12-L72) からの入力と出力が自動的に追跡されます。 + + - 各パイプライン呼び出しは、Workspace 内の独自の [テーブル](/models/tables/) に追跡され、パイプライン呼び出しに関連付けられた 設定 は、その Run の 設定 内の ワークフロー リストに追加されます。 + - プロンプト、ネガティブプロンプト、および生成されたメディアは [`wandb.Table`](/models/tables/) に ログ 記録されます。 + - シードやパイプライン アーキテクチャー を含む、実験に関連するその他すべての 設定 は、Run の config セクションに保存されます。 + - 各パイプライン呼び出しで生成されたメディアは、Run 内の [メディアパネル](/models/track/log/media/) にも ログ 記録されます。 + + + [サポートされているパイプライン呼び出しのリスト](https://github.com/wandb/wandb/blob/main/wandb/integration/diffusers/autologger.py#L12-L72) を確認できます。このインテグレーションの新機能のリクエストや、関連するバグの報告が必要な場合は、[W&B GitHub issues ページ](https://github.com/wandb/wandb/issues) で issue を作成してください。 + + +## 例 + +### オートロギング (Autologging) + +以下は、autolog が動作する簡単な エンドツーエンド の例です。 + + + +```python +import torch +from diffusers import DiffusionPipeline + +# autolog関数をインポート +from wandb.integration.diffusers import autolog + +# パイプラインを呼び出す前にautologを呼び出す +autolog(init=dict(project="diffusers_logging")) + +# 拡散パイプラインを初期化 +pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-2-1", torch_dtype=torch.float16 +).to("cuda") + +# プロンプト、ネガティブプロンプト、およびシードを定義 +prompt = ["a photograph of an astronaut riding a horse", "a photograph of a dragon"] +negative_prompt = ["ugly, deformed", "ugly, deformed"] +generator = torch.Generator(device="cpu").manual_seed(10) + +# パイプラインを呼び出して画像を生成 +images = pipeline( + prompt, + negative_prompt=negative_prompt, + num_images_per_prompt=2, + generator=generator, +) +``` + + +```python +import torch +from diffusers import DiffusionPipeline + +import wandb + +# autolog関数をインポート +from wandb.integration.diffusers import autolog + +run = wandb.init() + +# パイプラインを呼び出す前にautologを呼び出す +autolog(init=dict(project="diffusers_logging")) + +# 拡散パイプラインを初期化 +pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-2-1", torch_dtype=torch.float16 +).to("cuda") + +# プロンプト、ネガティブプロンプト、およびシードを定義 +prompt = ["a photograph of an astronaut riding a horse", "a photograph of a dragon"] +negative_prompt = ["ugly, deformed", "ugly, deformed"] +generator = torch.Generator(device="cpu").manual_seed(10) + +# パイプラインを呼び出して画像を生成 +images = pipeline( + prompt, + negative_prompt=negative_prompt, + num_images_per_prompt=2, + generator=generator, +) + +# 実験を終了 +run.finish() +``` + + + + +- 単一の 実験 の 結果 : + + + Experiment results logging + + +- 複数の 実験 の 結果 : + + + Experiment results logging + + +- 実験 の 設定 (config) : + + + Experiment config logging + + + +IPython ノートブック 環境で コード を実行する場合、パイプラインを呼び出した後に明示的に [`wandb.Run.finish()`](/models/ref/python/functions/finish) を呼び出す必要があります。Python スクリプト を実行する場合には、これは必要ありません。 + + +### マルチパイプライン ワークフロー の追跡 + +このセクションでは、一般的な [Stable Diffusion XL + Refiner](https://huggingface.co/docs/diffusers/using-diffusers/sdxl#base-to-refiner-model) ワークフロー での autolog の使用例を示します。この ワークフロー では、[`StableDiffusionXLPipeline`](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl) によって生成された latents が、対応する refiner によって洗練されます。 + + + +```python +import torch +from diffusers import StableDiffusionXLImg2ImgPipeline, StableDiffusionXLPipeline +from wandb.integration.diffusers import autolog + +# SDXL base パイプラインを初期化 +base_pipeline = StableDiffusionXLPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", + torch_dtype=torch.float16, + variant="fp16", + use_safetensors=True, +) +base_pipeline.enable_model_cpu_offload() + +# SDXL refiner パイプラインを初期化 +refiner_pipeline = StableDiffusionXLImg2ImgPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-refiner-1.0", + text_encoder_2=base_pipeline.text_encoder_2, + vae=base_pipeline.vae, + torch_dtype=torch.float16, + use_safetensors=True, + variant="fp16", +) +refiner_pipeline.enable_model_cpu_offload() + +prompt = "a photo of an astronaut riding a horse on mars" +negative_prompt = "static, frame, painting, illustration, sd character, low quality, low resolution, greyscale, monochrome, nose, cropped, lowres, jpeg artifacts, deformed iris, deformed pupils, bad eyes, semi-realistic worst quality, bad lips, deformed mouth, deformed face, deformed fingers, deformed toes standing still, posing" + +# 乱数を制御して実験の再現性を確保 +# シード値は自動的にWandBにログ記録されます +seed = 42 +generator_base = torch.Generator(device="cuda").manual_seed(seed) +generator_refiner = torch.Generator(device="cuda").manual_seed(seed) + +# Diffusers用のW&B Autologを呼び出す +# これにより、プロンプト、生成された画像、パイプラインアーキテクチャー、 +# および関連するすべての実験設定がW&Bに自動的にログ記録され、 +# 画像生成実験の再現、共有、分析が容易になります。 +autolog(init=dict(project="sdxl")) + +# base パイプラインを呼び出して latents を生成 +image = base_pipeline( + prompt=prompt, + negative_prompt=negative_prompt, + output_type="latent", + generator=generator_base, +).images[0] + +# refiner パイプラインを呼び出して洗練された画像を生成 +image = refiner_pipeline( + prompt=prompt, + negative_prompt=negative_prompt, + image=image[None, :], + generator=generator_refiner, +).images[0] +``` + + +```python +import torch +from diffusers import StableDiffusionXLImg2ImgPipeline, StableDiffusionXLPipeline + +import wandb +from wandb.integration.diffusers import autolog + +run = wandb.init() + +# SDXL base パイプラインを初期化 +base_pipeline = StableDiffusionXLPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", + torch_dtype=torch.float16, + variant="fp16", + use_safetensors=True, +) +base_pipeline.enable_model_cpu_offload() + +# SDXL refiner パイプラインを初期化 +refiner_pipeline = StableDiffusionXLImg2ImgPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-refiner-1.0", + text_encoder_2=base_pipeline.text_encoder_2, + vae=base_pipeline.vae, + torch_dtype=torch.float16, + use_safetensors=True, + variant="fp16", +) +refiner_pipeline.enable_model_cpu_offload() + +prompt = "a photo of an astronaut riding a horse on mars" +negative_prompt = "static, frame, painting, illustration, sd character, low quality, low resolution, greyscale, monochrome, nose, cropped, lowres, jpeg artifacts, deformed iris, deformed pupils, bad eyes, semi-realistic worst quality, bad lips, deformed mouth, deformed face, deformed fingers, deformed toes standing still, posing" + +# 乱数を制御して実験の再現性を確保 +# シード値は自動的にWandBにログ記録されます +seed = 42 +generator_base = torch.Generator(device="cuda").manual_seed(seed) +generator_refiner = torch.Generator(device="cuda").manual_seed(seed) + +# Diffusers用のW&B Autologを呼び出す +# これにより、プロンプト、生成された画像、パイプラインアーキテクチャー、 +# および関連するすべての実験設定がW&Bに自動的にログ記録され、 +# 画像生成実験の再現、共有、分析が容易になります。 +autolog(init=dict(project="sdxl")) + +# base パイプラインを呼び出して latents を生成 +image = base_pipeline( + prompt=prompt, + negative_prompt=negative_prompt, + output_type="latent", + generator=generator_base, +).images[0] + +# refiner パイプラインを呼び出して洗練された画像を生成 +image = refiner_pipeline( + prompt=prompt, + negative_prompt=negative_prompt, + image=image[None, :], + generator=generator_refiner, +).images[0] + +# 実験を終了 +run.finish() +``` + + + +- Stable Diffusion XL + Refiner の 実験 例 : + + Stable Diffusion XL experiment tracking + + +## その他のリソース + +* [Stable Diffusionのためのプロンプトエンジニアリングガイド](https://wandb.ai/geekyrakshit/diffusers-prompt-engineering/reports/A-Guide-to-Prompt-Engineering-for-Stable-Diffusion--Vmlldzo1NzY4NzQ3) (Reports) +* [PIXART-α: text-to-image 生成のための Diffusion Transformer モデル](https://wandb.ai/geekyrakshit/pixart-alpha/reports/PIXART-A-Diffusion-Transformer-Model-for-Text-to-Image-Generation--Vmlldzo2MTE1NzM3) (Reports) \ No newline at end of file diff --git a/ja/models/integrations/docker.mdx b/ja/models/integrations/docker.mdx new file mode 100644 index 0000000000..69e9517e78 --- /dev/null +++ b/ja/models/integrations/docker.mdx @@ -0,0 +1,24 @@ +--- +title: Docker +description: W&B を Docker と統合する方法。 +--- + +## Docker インテグレーション + +W&B は、コードが実行された Docker イメージへのポインタを保存できます。これにより、以前の 実験 を実行時と全く同じ 環境 で復元することが可能になります。 wandbライブラリ は、この状態を永続化するために **WANDB_DOCKER** 環境 変数を確認します。この状態を自動的に設定するためのヘルパーをいくつか提供しています。 + +### ローカル開発 + +`wandb docker` は、 dockerコンテナ を起動し、 wandb 環境 変数を渡し、コードをマウントし、 wandb がインストールされていることを確認する コマンド です。デフォルトでは、この コマンド は TensorFlow、PyTorch、Keras、Jupyter がインストールされた Docker イメージを使用します。独自の Docker イメージを開始するために同じ コマンド を使用することもできます: `wandb docker my/image:latest` 。この コマンド は現在の ディレクトリー をコンテナの "/app" ディレクトリー にマウントします。これは "--dir" フラグで変更可能です。 + +### プロダクション + +プロダクション のワークロード向けに `wandb docker-run` コマンド が提供されています。これは `nvidia-docker` のドロップインリプレイスメントとして機能することを意図しています。これは `docker run` コマンド のシンプルなラッパーであり、資格情報と **WANDB_DOCKER** 環境 変数を呼び出しに追加します。 "--runtime" フラグを渡さず、かつマシン上で `nvidia-docker` が利用可能な場合、ランタイムが nvidia に設定されることも保証します。 + +### Kubernetes + +トレーニング ワークロードを Kubernetes で実行しており、k8s API がポッドに公開されている場合(デフォルト設定)、 wandb は API に Docker イメージのダイジェストを問い合わせ、 **WANDB_DOCKER** 環境 変数を自動的に設定します。 + +## 復元(Restoring) + +Run が **WANDB_DOCKER** 環境 変数とともに計測されていた場合、 `wandb restore username/project:run_id` を呼び出すと、コードを復元する新しいブランチをチェックアウトし、 トレーニング で使用されたのと全く同じ Docker イメージを、元の コマンド が入力された状態で ローンンチ します。 \ No newline at end of file diff --git a/ja/models/integrations/dspy.mdx b/ja/models/integrations/dspy.mdx new file mode 100644 index 0000000000..c830413e4d --- /dev/null +++ b/ja/models/integrations/dspy.mdx @@ -0,0 +1,193 @@ +--- +title: DSPy +description: W&B を使用して DSPy プログラムをトラッキングし、最適化します。 +--- + +W&B を DSPy と組み合わせて使用することで、言語モデルプログラムの追跡と最適化が可能になります。W&B は [Weave DSPy integration](/weave/guides/integrations/dspy) を補完し、以下の機能を提供します。 + +- 評価メトリクスの経時的な追跡 +- プログラムシグネチャの進化を記録する W&B Tables +- MIPROv2 などの DSPy オプティマイザーとの連携 + +DSPy モジュールを最適化する際に包括的なオブザーバビリティ(観測性)を得るには、W&B と Weave の両方でインテグレーションを有効にしてください。 + + +**Note** + +`wandb==0.21.2` および `weave==0.52.5` 以降、W&B と併用すると Weave は自動的に初期化されます。 + +- `weave` をインポートした後に `wandb.init()` を呼び出した場合(スクリプトの場合) +- `wandb.init()` を呼び出した後に `weave` をインポートした場合(ノートブック / Jupyter の場合) + +明示的な `weave.init(...)` の呼び出しは不要です。 + + +## インストールと認証 + +必要なライブラリをインストールし、W&B で認証を行います。 + + + +1. 必要なライブラリをインストールします: + + ```shell + pip install wandb weave dspy + ``` + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/)を設定してログインします: + + ```bash + export WANDB_API_KEY= + wandb login + ``` + + +1. 必要なライブラリをインストールします: + + ```bash + pip install wandb weave dspy + ``` +1. コード内で W&B にログインします: + + ```python + import wandb + wandb.login() + ``` + + +必要なライブラリをインストールしてインポートし、W&B にログインします: +```notebook +!pip install wandb weave dspy + +import wandb +wandb.login() +``` + + + +W&B を初めて使用される方は、[クイックスタートガイド](/models/quickstart/)をご覧ください。 + + +## プログラム最適化の追跡 (experimental) + + +`dspy.Evaluate` を使用する DSPy オプティマイザー(MIPROv2 など)では、`WandbDSPyCallback` を使用して評価メトリクスを時系列でログに記録し、プログラムシグネチャの進化を W&B Tables で追跡できます。 + +```python +import dspy +from dspy.datasets import MATH + +import weave +import wandb +from wandb.integration.dspy import WandbDSPyCallback + +# W&B を初期化 (weave をインポートするだけで十分です。明示的な weave.init は不要です) +project_name = "dspy-optimization" +with wandb.init(project=project_name) as run: + # DSPy に W&B コールバックを追加 + dspy.settings.callbacks.append( + WandbDSPyCallback(run=run) + ) + + # 言語モデルの設定 + teacher_lm = dspy.LM('openai/gpt-4o', max_tokens=2000, cache=True) + student_lm = dspy.LM('openai/gpt-4o-mini', max_tokens=2000) + dspy.configure(lm=student_lm) + + # データセットのロードとプログラムの定義 + dataset = MATH(subset='algebra') + program = dspy.ChainOfThought("question -> answer") + + # オプティマイザーの設定と実行 + optimizer = dspy.MIPROv2( + metric=dataset.metric, + auto="light", + num_threads=24, + teacher_settings=dict(lm=teacher_lm), + prompt_model=student_lm + ) + + optimized_program = optimizer.compile( + program, + trainset=dataset.train, + max_bootstrapped_demos=2, + max_labeled_demos=2 + ) +``` + +このコードを実行すると、W&B Run URL と Weave URL の両方が発行されます。W&B には評価メトリクスの推移と、プログラムシグネチャの変化を示す Tables が表示されます。Run の **Overview** タブには、詳細な調査のための Weave トレース へのリンクが含まれています。 + +`WandbDSPyCallback` に `run` オブジェクトが渡されない場合は、グローバルな `run` オブジェクトが使用されます。 + + + DSPy optimization run in W&B + + +DSPy を使用した Weave のトレース、評価、最適化に関する詳細については、[Weave DSPy integration guide](/weave/guides/integrations/dspy) を参照してください。 + +## W&B Tables への予測のログ + +詳細な予測ログを有効にすると、最適化中の個々の例を詳細に確認できます。コールバックは各評価ステップに対して W&B Tables を作成し、特定の成功例や失敗例の分析を容易にします。 + +```python +from wandb.integration.dspy import WandbDSPyCallback + +# 予測のログを有効化 (デフォルトで有効) +callback = WandbDSPyCallback(log_results=True) +dspy.settings.callbacks.append(callback) + +# 最適化を実行 +optimized_program = optimizer.compile(program, trainset=train_data) + +# 必要に応じて予測のログを無効化 +# callback = WandbDSPyCallback(log_results=False) +``` + +### 予測データへのアクセス + +最適化後、W&B で予測データを確認できます: + +1. Run の **Overview** ページに移動します。 +2. `predictions_0`、`predictions_1` のようなパターンで命名された Table パネルを探します。 +3. `is_correct` でフィルタリングして、失敗例を分析します。 +4. プロジェクトの Workspace で、Run 間のテーブルを比較します。 + +各テーブルには以下のカラムが含まれます: +- `example`: 入力データ +- `prediction`: モデルの出力 +- `is_correct`: 評価結果 + +詳細は [W&B Tables ガイド](/models/tables/visualize-tables/) および [Tables チュートリアル](/models/tutorials/tables) をご覧ください。 + +## DSPy プログラムの保存とバージョン管理 + +最適な DSPy プログラムを再現し、バージョン管理するために、W&B Artifacts として保存します。プログラム全体を保存するか、状態のみを保存するかを選択できます。 + +```python +from wandb.integration.dspy import WandbDSPyCallback + +# コールバック インスタンスの作成 +callback = WandbDSPyCallback() +dspy.settings.callbacks.append(callback) + +# 最適化の実行 +optimized_program = optimizer.compile(program, trainset=train_data) + +# 保存オプション: + +# 1. プログラム全体 (推奨) - アーキテクチャーと状態の両方を含む +callback.log_best_model(optimized_program, save_program=True) + +# 2. 状態のみを JSON として保存 - 軽量で人間が読める形式 +callback.log_best_model(optimized_program, save_program=False, filetype="json") + +# 3. 状態のみを pickle として保存 - Python オブジェクトをそのまま保持 +callback.log_best_model(optimized_program, save_program=False, filetype="pkl") + +# バージョン管理用のカスタムエイリアスを追加 +callback.log_best_model( + optimized_program, + save_program=True, + aliases=["best", "production", "v2.0"] +) +``` \ No newline at end of file diff --git a/ja/models/integrations/farama-gymnasium.mdx b/ja/models/integrations/farama-gymnasium.mdx new file mode 100644 index 0000000000..f6d486dbfb --- /dev/null +++ b/ja/models/integrations/farama-gymnasium.mdx @@ -0,0 +1,14 @@ +--- +title: Farama Gymnasium +description: W&B を Farama Gymnasium と統合する方法。 +--- + +[Farama Gymnasium](https://gymnasium.farama.org/#) を使用している場合、 `gymnasium.wrappers.Monitor` によって生成された環境のビデオを自動的に ログ 記録します。 [`wandb.init`](/models/ref/python/functions/init) のキーワード 引数 である `monitor_gym` を `True` に設定するだけです。 + +W&B の Gymnasium インテグレーション は非常に軽量です。 `gymnasium` から ログ 記録される [ビデオファイルの名前を確認し](https://github.com/wandb/wandb/blob/c5fe3d56b155655980611d32ef09df35cd336872/wandb/integration/gym/__init__.py#LL69C67-L69C67) 、その名前に基づいて命名します。一致するものがない場合はデフォルトで `"videos"` という名前になります。より細かく制御したい場合は、いつでも手動で [ビデオを ログ 記録](/models/track/log/media/) することができます。 + +Gymnasium と CleanRL ライブラリ を併用する方法の詳細については、こちらの [Reports](https://wandb.ai/raph-test/cleanrltest/reports/Mario-Bros-but-with-AI-Gymnasium-and-CleanRL---Vmlldzo0NTcxNTcw) をご覧ください。 + + + Gymnasium RL environment + \ No newline at end of file diff --git a/ja/models/integrations/fastai.mdx b/ja/models/integrations/fastai.mdx new file mode 100644 index 0000000000..8cae834fe7 --- /dev/null +++ b/ja/models/integrations/fastai.mdx @@ -0,0 +1,257 @@ +--- +title: fastai +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +`WandbCallback` クラスを使用することで、 **fastai** を W&B とインテグレーションできます。詳細については、こちらの [例付きインタラクティブドキュメント](https://app.wandb.ai/borisd13/demo_config/reports/Visualize-track-compare-Fastai-models--Vmlldzo4MzAyNA) をご覧ください。 + +## サインアップと API キーの作成 + +API キーは、お使いのマシンを W&B に対して認証するために使用されます。 API キーはユーザープロファイルから生成できます。 + + + +1. 右上隅にあるユーザープロファイルアイコンをクリックします。 +1. **User Settings** を選択し、 **API Keys** セクションまでスクロールします。 + +## `wandb` ライブラリのインストールとログイン + +ローカルに `wandb` ライブラリをインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) を API キーに設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +## `learner` または `fit` メソッドに `WandbCallback` を追加する + +```python +import wandb +from fastai.callback.wandb import * + +# wandb run のログ記録を開始 +wandb.init(project="my_project") + +# 1つのトレーニングフェーズのみログを記録する場合 +learn.fit(..., cbs=WandbCallback()) + +# すべてのトレーニングフェーズで継続的にログを記録する場合 +learn = learner(..., cbs=WandbCallback()) +``` + + +Fastai のバージョン1を使用している場合は、 [Fastai v1 ドキュメント](/models/integrations/fastai/v1/) を参照してください。 + + +## WandbCallback の引数 + +`WandbCallback` は以下の引数を受け取ります: + +| 引数 | 説明 | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| log | モデルの何をログ記録するか: `gradients` , `parameters`, `all` または `None` (デフォルト)。損失とメトリクスは常にログに記録されます。 | +| log_preds | 予測サンプルのログを記録するかどうか(デフォルトは `True` )。 | +| log_preds_every_epoch | 各エポックごとに予測をログ記録するか、終了時に記録するか(デフォルトは `False` )。 | +| log_model | モデルをログ記録するかどうか(デフォルトは False )。これには `SaveModelCallback` も必要です。 | +| model_name | 保存する `file` の名前。 `SaveModelCallback` を上書きします。 | +| log_dataset |
  • False (デフォルト)
  • True は learn.dls.path で参照されるフォルダをログに記録します。
  • ログに記録するフォルダを参照するために、パスを明示的に定義することもできます。

注意: サブフォルダ "models" は常に無視されます。

| +| dataset_name | ログに記録されるデータセットの名前(デフォルトは folder name )。 | +| valid_dl | 予測サンプルに使用されるアイテムを含む DataLoaders (デフォルトは learn.dls.valid からのランダムなアイテム)。 | +| n_preds | ログに記録する予測の数(デフォルトは 36 )。 | +| seed | ランダムサンプルの定義に使用されます。 | + +カスタムワークフローでは、データセットとモデルを手動でログに記録できます: + +* `log_dataset(path, name=None, metadata={})` +* `log_model(path, name=None, metadata={})` + +_注意: いかなるサブフォルダ "models" も無視されます。_ + +## 分散トレーニング + +`fastai` はコンテキストマネージャー `distrib_ctx` を使用した分散トレーニングをサポートしています。W&B はこれを自動的にサポートしており、設定不要でマルチ GPU 実験を追跡できます。 + +以下の最小構成の例を確認してください: + + + +```python +import wandb +from fastai.vision.all import * +from fastai.distributed import * +from fastai.callback.wandb import WandbCallback + +# experiment="service" を指定して wandb.require を実行 +wandb.require(experiment="service") +path = rank0_first(lambda: untar_data(URLs.PETS) / "images") + +def train(): + dls = ImageDataLoaders.from_name_func( + path, + get_image_files(path), + valid_pct=0.2, + label_func=lambda x: x[0].isupper(), + item_tfms=Resize(224), + ) + wandb.init("fastai_ddp", entity="capecape") + cb = WandbCallback() + learn = vision_learner(dls, resnet34, metrics=error_rate, cbs=cb).to_fp16() + with learn.distrib_ctx(sync_bn=False): + learn.fit(1) + +if __name__ == "__main__": + train() +``` + +次に、ターミナルで以下を実行します: + +```shell +$ torchrun --nproc_per_node 2 train.py +``` + +この場合、マシンには 2 つの GPU が搭載されています。 + + +ノートブック内で直接分散トレーニングを実行できるようになりました。 + +```python +import wandb +from fastai.vision.all import * + +from accelerate import notebook_launcher +from fastai.distributed import * +from fastai.callback.wandb import WandbCallback + +wandb.require(experiment="service") +path = untar_data(URLs.PETS) / "images" + +def train(): + dls = ImageDataLoaders.from_name_func( + path, + get_image_files(path), + valid_pct=0.2, + label_func=lambda x: x[0].isupper(), + item_tfms=Resize(224), + ) + wandb.init("fastai_ddp", entity="capecape") + cb = WandbCallback() + learn = vision_learner(dls, resnet34, metrics=error_rate, cbs=cb).to_fp16() + with learn.distrib_ctx(in_notebook=True, sync_bn=False): + learn.fit(1) + +# 2つのプロセスでランチャーを起動 +notebook_launcher(train, num_processes=2) +``` + + + +### メインプロセスのみでログを記録する + +上記の例では、 `wandb` はプロセスごとに 1 つの run を開始します。トレーニングが終了すると、 2 つの run が作成されます。これが混乱を招く場合があり、メインプロセスのみでログを記録したいことがあります。その場合は、どのプロセスにいるかを手動で検出し、他のすべてのプロセスで run の作成( `wandb.init` の呼び出し)を避ける必要があります。 + + + +```python +import wandb +from fastai.vision.all import * +from fastai.distributed import * +from fastai.callback.wandb import WandbCallback + +wandb.require(experiment="service") +path = rank0_first(lambda: untar_data(URLs.PETS) / "images") + +def train(): + cb = [] + dls = ImageDataLoaders.from_name_func( + path, + get_image_files(path), + valid_pct=0.2, + label_func=lambda x: x[0].isupper(), + item_tfms=Resize(224), + ) + # ランク0(メインプロセス)のみ wandb を初期化 + if rank_distrib() == 0: + run = wandb.init("fastai_ddp", entity="capecape") + cb = WandbCallback() + learn = vision_learner(dls, resnet34, metrics=error_rate, cbs=cb).to_fp16() + with learn.distrib_ctx(sync_bn=False): + learn.fit(1) + +if __name__ == "__main__": + train() +``` +ターミナルでの呼び出し: + +``` +$ torchrun --nproc_per_node 2 train.py +``` + + +```python +import wandb +from fastai.vision.all import * + +from accelerate import notebook_launcher +from fastai.distributed import * +from fastai.callback.wandb import WandbCallback + +wandb.require(experiment="service") +path = untar_data(URLs.PETS) / "images" + +def train(): + cb = [] + dls = ImageDataLoaders.from_name_func( + path, + get_image_files(path), + valid_pct=0.2, + label_func=lambda x: x[0].isupper(), + item_tfms=Resize(224), + ) + # ランク0(メインプロセス)のみ wandb を初期化 + if rank_distrib() == 0: + run = wandb.init("fastai_ddp", entity="capecape") + cb = WandbCallback() + learn = vision_learner(dls, resnet34, metrics=error_rate, cbs=cb).to_fp16() + with learn.distrib_ctx(in_notebook=True, sync_bn=False): + learn.fit(1) + +notebook_launcher(train, num_processes=2) +``` + + + +## 例 + +* [Visualize, track, and compare Fastai models](https://app.wandb.ai/borisd13/demo_config/reports/Visualize-track-compare-Fastai-models--Vmlldzo4MzAyNA): 詳細にドキュメント化されたウォークスルー。 +* [Image Segmentation on CamVid](https://bit.ly/fastai-wandb): インテグレーションのサンプルユースケース。 \ No newline at end of file diff --git a/ja/models/integrations/fastai/v1.mdx b/ja/models/integrations/fastai/v1.mdx new file mode 100644 index 0000000000..e1e3ba8a19 --- /dev/null +++ b/ja/models/integrations/fastai/v1.mdx @@ -0,0 +1,69 @@ +--- +title: fastai v1 +--- + + +このドキュメントは fastai v1 用です。 +現行バージョンの fastai を使用している場合は、 [fastai のページ](../) を参照してください。 + + +fastai v1 を使用した スクリプト では、モデル のトポロジー、損失、メトリクス、重み、勾配、予測 サンプル、および最良の トレーニング 済み モデル を自動的に ログ 記録できる コールバック を提供しています。 + +```python +import wandb +from wandb.fastai import WandbCallback + +wandb.init() + +# callback_fnsにWandbCallbackを指定して学習器を初期化 +learn = cnn_learner(data, model, callback_fns=WandbCallback) +learn.fit(epochs) +``` + +ログ 記録される データ は、コールバック のコンストラクタを通じて設定可能です。 + +```python +from functools import partial + +# partialを使用して引数を渡す例 +learn = cnn_learner( + data, model, callback_fns=partial(WandbCallback, input_type="images") +) +``` + +トレーニング を開始する際のみに `WandbCallback` を使用することも可能です。この場合、インスタンス化する必要があります。 + +```python +learn.fit(epochs, callbacks=WandbCallback(learn)) +``` + +その段階で カスタム パラメータ を渡すこともできます。 + +```python +learn.fit(epochs, callbacks=WandbCallback(learn, input_type="images")) +``` + +## サンプルコード + +インテグレーション の動作を確認するための例をいくつか用意しました: + +**Fastai v1** + +* [シンプソンズのキャラクター分類](https://github.com/borisdayma/simpsons-fastai) : Fastai モデル の追跡と比較を行うシンプルな デモ +* [Fastai によるセマンティックセグメンテーション](https://github.com/borisdayma/semantic-segmentation) : 自動運転車向けの ニューラルネットワーク の最適化 + +## オプション + +`WandbCallback()` クラスは以下のオプションをサポートしています: + +| キーワード 引数 | デフォルト | 説明 | +| :--- | :--- | :--- | +| learn | N/A | フック する fast.ai の learner。 | +| save_model | True | ステップごとに改善が見られた場合に モデル を保存します。また、トレーニング 終了時に最良の モデル をロードします。 | +| mode | auto | `min` 、 `max` 、または `auto` : `monitor` で指定された トレーニング メトリクス をステップ間で比較する方法。 | +| monitor | None | 最良の モデル を保存するためにパフォーマンスを測定する トレーニング メトリクス。 None の場合はデフォルトで validation loss が使用されます。 | +| log | gradients | `gradients` 、 `parameters` 、 `all` 、または None。損失と メトリクス は常に ログ 記録されます。 | +| input_type | None | `images` または `None` 。 予測 サンプルの表示に使用されます。 | +| validation_data | None | `input_type` が設定されている場合に、予測 サンプルに使用される データ。 | +| predictions | 36 | `input_type` が設定され、 `validation_data` が `None` の場合に作成する 予測 の数。 | +| seed | 12345 | `input_type` が設定され、 `validation_data` が `None` の場合に、予測 サンプルのための乱数生成器を初期化します。 | \ No newline at end of file diff --git a/ja/models/integrations/huggingface.mdx b/ja/models/integrations/huggingface.mdx new file mode 100644 index 0000000000..ffa0e7a15a --- /dev/null +++ b/ja/models/integrations/huggingface.mdx @@ -0,0 +1,513 @@ +--- +title: Hugging Face Transformers +--- + +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + + + +[Hugging Face Transformers](https://huggingface.co/transformers/) ライブラリを使用すると、BERT のような最先端の NLP モデルや、混合精度トレーニング、勾配チェックポイントなどのトレーニング手法を簡単に利用できます。[W&B インテグレーション](https://huggingface.co/transformers/main_classes/callback.html#transformers.integrations.WandbCallback) を活用することで、その使いやすさを損なうことなく、リッチで柔軟な 実験管理 と モデルのバージョン管理を、インタラクティブで一元化されたダッシュボードに追加できます。 + +## 数行のコードで高度なロギングを実現 + +```python +os.environ["WANDB_PROJECT"] = "" # W&B プロジェクト名を指定 +os.environ["WANDB_LOG_MODEL"] = "checkpoint" # すべてのモデルチェックポイントをログに記録 + +from transformers import TrainingArguments, Trainer + +args = TrainingArguments(..., report_to="wandb") # W&B ロギングを有効化 +trainer = Trainer(..., args=args) +``` + + HuggingFace dashboard + + + +すぐに実行可能なコードを確認したい場合は、こちらの [Google Colab](https://wandb.me/hf) をご覧ください。 + + +## はじめに:実験を追跡する + +### サインアップと API キーの作成 + +APIキー は、お使いのマシンを W&B に対して認証するために使用されます。ユーザープロファイルから APIキー を生成できます。 + + + +1. 右上隅にあるユーザープロファイルアイコンをクリックします。 +1. **User Settings** を選択し、**API Keys** セクションまでスクロールします。 + +### `wandb` ライブラリのインストールとログイン + +ローカルに `wandb` ライブラリをインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) を APIキー に設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +W&B を初めて使用する場合は、[クイックスタート](/models/quickstart/) も併せてご確認ください。 + +### プロジェクトに名前を付ける + +W&B の Projects は、関連する Runs からログ記録されたすべてのチャート、データ、モデルが保存される場所です。プロジェクトに名前を付けることで、作業を整理し、1つのプロジェクトに関するすべての情報を1か所にまとめて管理できます。 + +Run をプロジェクトに追加するには、環境変数 `WANDB_PROJECT` にプロジェクト名を設定するだけです。`WandbCallback` がこのプロジェクト名の環境変数を読み取り、Run のセットアップ時に使用します。 + + + +```bash +WANDB_PROJECT=amazon_sentiment_analysis +``` + + +```python +import os +os.environ["WANDB_PROJECT"]="amazon_sentiment_analysis" +``` + + +```notebook +%env WANDB_PROJECT=amazon_sentiment_analysis +``` + + + + +プロジェクト名は必ず `Trainer` を初期化する _前_ に設定してください。 + + +プロジェクト名が指定されていない場合、デフォルトのプロジェクト名は `huggingface` になります。 + +### トレーニング Run を W&B にログ記録する + +`Trainer` のトレーニング引数を定義する際、コード内またはコマンドラインから **最も重要なステップ** は、W&B でのロギングを有効にするために `report_to` を `"wandb"` に設定することです。 + +`TrainingArguments` 内の `logging_steps` 引数により、トレーニング中にメトリクスを W&B にプッシュする頻度を制御できます。また、`run_name` 引数を使用して、W&B 上のトレーニング Run に名前を付けることも可能です。 + +設定はこれだけです。これで、トレーニング中の損失、評価メトリクス、モデルのトポロジー、勾配が W&B にログ記録されるようになります。 + + + +```bash +python run_glue.py \ # Python スクリプトを実行 + --report_to wandb \ # W&B へのロギングを有効化 + --run_name bert-base-high-lr \ # W&B Run の名前(任意) + # その他のコマンドライン引数 +``` + + +```python +from transformers import TrainingArguments, Trainer + +args = TrainingArguments( + # その他の引数 + report_to="wandb", # W&B へのロギングを有効化 + run_name="bert-base-high-lr", # W&B Run の名前(任意) + logging_steps=1, # W&B へのログ記録頻度 +) + +trainer = Trainer( + # その他の引数 + args=args, # トレーニング引数 +) + +trainer.train() # トレーニングを開始し W&B にログを記録 +``` + + + + +TensorFlow をお使いですか? PyTorch の `Trainer` を TensorFlow 用の `TFTrainer` に置き換えるだけで同様に動作します。 + + +### モデルのチェックポイント保存を有効にする + +[Artifacts](/models/artifacts/) を使用すると、最大 100GB までのモデルやデータセットを無料で保存でき、W&B の [Registry](/models/registry/) を利用できるようになります。Registry を使えば、モデルの登録、探索、評価、ステージングへの準備、プロダクション環境へのデプロイが可能になります。 + +Hugging Face のモデルチェックポイントを Artifacts にログ記録するには、環境変数 `WANDB_LOG_MODEL` を以下のいずれかに設定します: + +- **`checkpoint`**: [`TrainingArguments`](https://huggingface.co/docs/transformers/main/en/main_classes/trainer#transformers.TrainingArguments) の `args.save_steps` ごとにチェックポイントをアップロードします。 +- **`end`**: `load_best_model_at_end` も設定されている場合、トレーニング終了時にモデルをアップロードします。 +- **`false`**: モデルをアップロードしません。 + + + +```bash +WANDB_LOG_MODEL="checkpoint" +``` + + +```python +import os + +os.environ["WANDB_LOG_MODEL"] = "checkpoint" +``` + + +```notebook +%env WANDB_LOG_MODEL="checkpoint" +``` + + + +これ以降に初期化されるすべての Transformers `Trainer` は、モデルを W&B プロジェクトにアップロードします。ログ記録されたモデルチェックポイントは [Artifacts](/models/artifacts/) UI から確認でき、完全な モデルリネージ も含まれます(UI でのモデルチェックポイントの例は [こちら](https://wandb.ai/wandb/arttest/artifacts/model/iv3_trained/5334ab69740f9dda4fed/lineage?_gl=1*yyql5q*_ga*MTQxOTYyNzExOS4xNjg0NDYyNzk1*_ga_JH1SJHJQXJ*MTY5MjMwNzI2Mi4yNjkuMS4xNjkyMzA5NjM2LjM3LjAuMA..) で確認できます)。 + + +デフォルトでは、`WANDB_LOG_MODEL` が `end` に設定されている場合は `model-{run_id}`、`checkpoint` に設定されている場合は `checkpoint-{run_id}` という名前で W&B Artifacts に保存されます。 +ただし、`TrainingArguments` で [`run_name`](https://huggingface.co/docs/transformers/main/en/main_classes/trainer#transformers.TrainingArguments.run_name) を渡した場合、モデルは `model-{run_name}` または `checkpoint-{run_name}` として保存されます。 + + +#### W&B Registry +チェックポイントを Artifacts にログ記録した後は、最良のモデルチェックポイントを登録し、[Registry](/models/registry/) を通じてチーム全体で一元管理できます。Registry を使用すると、タスクごとに最適なモデルを整理し、モデルのライフサイクルを管理し、ML ライフサイクル全体を追跡・監査し、ダウンストリームのアクションを [オートメーション](/models/automations/) 化できます。 + +モデル Artifact のリンク方法については、[Registry](/models/registry/) を参照してください。 + +### トレーニング中の評価出力の可視化 + +トレーニング中や評価中のモデル出力を可視化することは、モデルがどのように学習しているかを真に理解するために不可欠です。 + +Transformers Trainer のコールバックシステムを使用すると、モデルのテキスト生成出力やその他の予測結果などの追加データを W&B Tables にログ記録できます。 + +トレーニング中の評価出力を W&B テーブルにログ記録する方法の完全なガイドについては、以下の [カスタムロギングセクション](#custom-logging-log-and-view-evaluation-samples-during-training) を参照してください。 + + + 評価出力を表示する W&B テーブル + + +### W&B Run の終了(ノートブックのみ) + +トレーニングが Python スクリプトにカプセル化されている場合、W&B Run はスクリプトの終了とともに完了します。 + +Jupyter や Google Colab ノートブックを使用している場合は、`run.finish()` を呼び出してトレーニングの終了を明示的に伝える必要があります。 + +```python +run = wandb.init() +trainer.train() # トレーニングを開始し W&B にログを記録 + +# トレーニング後の分析、テスト、その他のログ記録コード + +run.finish() +``` + +### 結果の可視化 + +トレーニング結果をログ記録した後は、[W&B Dashboard](/models/track/workspaces/) で動的に結果を探索できます。数十の Run を一度に比較したり、興味深い発見をズームアップしたり、柔軟でインタラクティブな可視化機能を使って複雑なデータから洞察を引き出したりすることが簡単にできます。 + +## 高度な機能と FAQ + +### 最良のモデルを保存するには? +`load_best_model_at_end=True` を含む `TrainingArguments` を `Trainer` に渡すと、W&B は最もパフォーマンスの高いモデルチェックポイントを Artifacts に保存します。 + +モデルチェックポイントを Artifacts として保存すると、それらを [Registry](/models/registry/) にプロモートできます。Registry では以下が可能です: +- ML タスクごとに最適なモデルバージョンを整理。 +- モデルを一元管理し、チームで共有。 +- プロダクション用のモデルをステージング、またはさらなる評価のためにブックマーク。 +- ダウンストリームの CI/CD プロセスをトリガー。 + +### 保存したモデルをロードするには? + +`WANDB_LOG_MODEL` を使用してモデルを W&B Artifacts に保存した場合、追加のトレーニングや推論実行のためにモデルの重みをダウンロードできます。以前使用したものと同じ Hugging Face アーキテクチャーにそれらをロードし直すだけです。 + +```python +# 新しい run を作成 +with wandb.init(project="amazon_sentiment_analysis") as run: + # アーティファクトの名前とバージョンを指定 + my_model_name = "model-bert-base-high-lr:latest" + my_model_artifact = run.use_artifact(my_model_name) + + # モデルの重みをフォルダーにダウンロードし、パスを返す + model_dir = my_model_artifact.download() + + # そのフォルダーから同じモデルクラスを使用して + # Hugging Face モデルをロード + model = AutoModelForSequenceClassification.from_pretrained( + model_dir, num_labels=num_labels + ) + + # 追加のトレーニングや推論の実行 +``` + +### チェックポイントからトレーニングを再開するには? +`WANDB_LOG_MODEL='checkpoint'` を設定していた場合、`model_dir` を `TrainingArguments` の `model_name_or_path` 引数として使用し、`Trainer` に `resume_from_checkpoint=True` を渡すことでトレーニングを再開できます。 + +```python +last_run_id = "xxxxxxxx" # wandb ワークスペースから run_id を取得 + +# run_id を指定して wandb run を再開 +with wandb.init( + project=os.environ["WANDB_PROJECT"], + id=last_run_id, + resume="must", +) as run: + # Run に Artifact を接続 + my_checkpoint_name = f"checkpoint-{last_run_id}:latest" + my_checkpoint_artifact = run.use_artifact(my_model_name) + + # チェックポイントをフォルダーにダウンロードし、パスを返す + checkpoint_dir = my_checkpoint_artifact.download() + + # モデルとトレーナーを再初期化 + model = AutoModelForSequenceClassification.from_pretrained( + "", num_labels=num_labels + ) + # トレーニング引数の設定 + training_args = TrainingArguments() + + trainer = Trainer(model=model, args=training_args) + + # チェックポイントディレクトリを使用してトレーニングを再開 + trainer.train(resume_from_checkpoint=checkpoint_dir) +``` + +### トレーニング中に評価サンプルをログ記録・表示するには + +Transformers `Trainer` を介した W&B へのロギングは、Transformers ライブラリ内の [`WandbCallback`](https://huggingface.co/transformers/main_classes/callback.html#transformers.integrations.WandbCallback) によって処理されます。Hugging Face のロギングをカスタマイズする必要がある場合は、`WandbCallback` をサブクラス化し、Trainer クラスのメソッドを活用する機能を追加することで、このコールバックを変更できます。 + +以下は、この新しいコールバックを HF Trainer に追加する一般的なパターンです。さらにその下には、評価出力を W&B テーブルにログ記録するための完全なコード例があります。 + +```python +# 通常通り Trainer をインスタンス化 +trainer = Trainer() + +# 新しいロギングコールバックをインスタンス化し、Trainer オブジェクトを渡す +evals_callback = WandbEvalsCallback(trainer, tokenizer, ...) + +# コールバックを Trainer に追加 +trainer.add_callback(evals_callback) + +# 通常通りトレーニングを開始 +trainer.train() +``` + +#### トレーニング中に評価サンプルを表示する + +以下のセクションでは、`WandbCallback` をカスタマイズして、トレーニング中にモデルの予測を実行し、評価サンプルを W&B テーブルにログ記録する方法を示します。Trainer コールバックの `on_evaluate` メソッドを使用して、`eval_steps` ごとに実行します。 + +ここでは、トークナイザーを使用してモデル出力から予測とラベルをデコードする `decode_predictions` 関数を作成しました。 + +次に、予測とラベルから pandas DataFrame を作成し、DataFrame に `epoch` 列を追加します。 + +最後に、DataFrame から `wandb.Table` を作成し、それを W&B にログ記録します。 +さらに、`freq` エポックごとに予測をログ記録することで、ログの頻度を制御できます。 + +**注意**: 通常の `WandbCallback` とは異なり、このカスタムコールバックは `Trainer` の初期化中ではなく、`Trainer` がインスタンス化された **後** に追加する必要があります。 +これは、初期化時に `Trainer` インスタンスがコールバックに渡されるためです。 + +```python +from transformers.integrations import WandbCallback +import pandas as pd + + +def decode_predictions(tokenizer, predictions): + labels = tokenizer.batch_decode(predictions.label_ids) + logits = predictions.predictions.argmax(axis=-1) + prediction_text = tokenizer.batch_decode(logits) + return {"labels": labels, "predictions": prediction_text} + + +class WandbPredictionProgressCallback(WandbCallback): + """トレーニング中にモデルの予測をログ記録するカスタム WandbCallback。 + + このコールバックは、トレーニング中の各ロギングステップでモデルの予測とラベルを + wandb.Table にログ記録します。これにより、トレーニングの進行に合わせて + モデルの予測を可視化できます。 + + Attributes: + trainer (Trainer): Hugging Face Trainer インスタンス。 + tokenizer (AutoTokenizer): モデルに関連付けられたトークナイザー。 + sample_dataset (Dataset): 予測生成用の検証データセットのサブセット。 + num_samples (int, optional): 予測生成用に検証データセットから選択するサンプル数。デフォルトは 100。 + freq (int, optional): ロギングの頻度。デフォルトは 2。 + """ + + def __init__(self, trainer, tokenizer, val_dataset, num_samples=100, freq=2): + super().__init__() + self.trainer = trainer + self.tokenizer = tokenizer + self.sample_dataset = val_dataset.select(range(num_samples)) + self.freq = freq + + def on_evaluate(self, args, state, control, **kwargs): + super().on_evaluate(args, state, control, **kwargs) + # `freq` エポックごとに予測をログ記録することで頻度を制御 + if state.epoch % self.freq == 0: + # 予測を生成 + predictions = self.trainer.predict(self.sample_dataset) + # 予測とラベルをデコード + predictions = decode_predictions(self.tokenizer, predictions) + # 予測を wandb.Table に追加 + predictions_df = pd.DataFrame(predictions) + predictions_df["epoch"] = state.epoch + records_table = self._wandb.Table(dataframe=predictions_df) + # テーブルを wandb にログ記録 + self._wandb.log({"sample_predictions": records_table}) + + +# まず、Trainer をインスタンス化 +trainer = Trainer( + model=model, + args=training_args, + train_dataset=lm_datasets["train"], + eval_dataset=lm_datasets["validation"], +) + +# WandbPredictionProgressCallback をインスタンス化 +progress_callback = WandbPredictionProgressCallback( + trainer=trainer, + tokenizer=tokenizer, + val_dataset=lm_dataset["validation"], + num_samples=10, + freq=2, +) + +# コールバックを trainer に追加 +trainer.add_callback(progress_callback) +``` + +より詳細な例については、こちらの [Colab](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/huggingface/Custom_Progress_Callback.ipynb) を参照してください。 + +### 利用可能な追加の W&B 設定は? + +環境変数を設定することで、`Trainer` でログ記録される内容をさらに詳細に設定できます。W&B 環境変数の全リストは [こちらで見ることができます](/platform/hosting/env-vars)。 + +| 環境変数 | 用途 | +| -------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `WANDB_PROJECT` | プロジェクトに名前を付けます(デフォルトは `huggingface`) | +| `WANDB_LOG_MODEL` |

モデルチェックポイントを W&B Artifact としてログ記録します(デフォルトは `false`)

  • false (デフォルト): チェックポイントを記録しません
  • checkpoint: args.save_steps ごとにチェックポイントがアップロードされます。
  • end: トレーニング終了時に最終的なモデルチェックポイントがアップロードされます。
| +| `WANDB_WATCH` |

モデルの勾配、パラメータ、またはその両方をログ記録するか設定します

  • false (デフォルト): 勾配やパラメータのログを記録しません
  • gradients: 勾配のヒストグラムをログ記録します
  • all: 勾配とパラメータの両方のヒストグラムをログ記録します
| +| `WANDB_DISABLED` | ロギングを完全に無効にするには `true` に設定します(デフォルトは `false`) | +| `WANDB_QUIET`. | 標準出力に記録されるステートメントを重要なものだけに制限するには `true` に設定します(デフォルトは `false`) | +| `WANDB_SILENT` | wandb によって出力されるテキストを非表示にするには `true` に設定します(デフォルトは `false`) | + + + +```bash +WANDB_WATCH=all +WANDB_SILENT=true +``` + + +```notebook +%env WANDB_WATCH=all +%env WANDB_SILENT=true +``` + + + +### `wandb.init` をカスタマイズするには? + +`Trainer` が使用する `WandbCallback` は、`Trainer` の初期化時にバックグラウンドで `wandb.init` を呼び出します。あるいは、`Trainer` を初期化する前に `wandb.init` を呼び出して手動で Run を設定することもできます。これにより、W&B Run の設定を完全に制御できるようになります。 + +`init` に渡す設定の例を以下に示します。`wandb.init()` の詳細については、[`wandb.init()` リファレンス](/models/ref/python/functions/init) を参照してください。 + +```python +wandb.init( + project="amazon_sentiment_analysis", + name="bert-base-high-lr", + tags=["baseline", "high-lr"], + group="bert", +) +``` + +## その他のリソース + +Transformers と W&B に関連する 6 つの記事をご紹介します。 + +
+ +Hugging Face Transformers のハイパーパラメーター最適化 + +* Hugging Face Transformers のハイパーパラメーター最適化のための 3 つの戦略(グリッド検索、ベイズ最適化、Population Based Training)を比較しています。 +* Hugging Face Transformers の標準的な uncased BERT モデルを使用し、SuperGLUE ベンチマークの RTE データセットでファインチューニングを行います。 +* 結果、Population Based Training が Hugging Face transformer モデルのハイパーパラメーター最適化において最も効果的なアプローチであることが示されました。 + +[Hyperparameter Optimization for Hugging Face Transformers レポート](https://wandb.ai/amogkam/transformers/reports/Hyperparameter-Optimization-for-Hugging-Face-Transformers--VmlldzoyMTc2ODI) を読む。 +
+ +
+ +Hugging Tweets: ツイートを生成するモデルのトレーニング + +* この記事では、学習済みの GPT2 HuggingFace Transformer モデルを誰でも自分のツイートで 5 分以内にファインチューニングする方法を解説しています。 +* モデルは、ツイートのダウンロード、データセットの最適化、初期実験、ユーザー間の損失の比較、モデルのファインチューニングというパイプラインを使用しています。 + +フルレポートを [こちら](https://wandb.ai/wandb/huggingtweets/reports/HuggingTweets-Train-a-Model-to-Generate-Tweets--VmlldzoxMTY5MjI) で読む。 +
+ +
+ +Hugging Face BERT と W&B を使用した文の分類 + +* この記事では、自然言語処理における最近の画期的な成果を活用し、NLP への転移学習の応用に焦点を当てて文分類器を構築します。 +* 1 文分類用に CoLA (Corpus of Linguistic Acceptability) データセットを使用します。これは文法的に正しいか正しくないかのラベルが付いた文のセットです。 +* Google の BERT を使用して、最小限の労力でさまざまな NLP タスクにおいて高性能なモデルを作成します。 + +フルレポートを [こちら](https://wandb.ai/cayush/bert-finetuning/reports/Sentence-Classification-With-Huggingface-BERT-and-W-B--Vmlldzo4MDMwNA) で読む。 +
+ +
+ +Hugging Face モデルのパフォーマンスを追跡するためのステップバイステップガイド + +* W&B と Hugging Face transformers を使用して、BERT より 40% 小さいながらも 97% の精度を維持する DistilBERT を GLUE ベンチマークでトレーニングします。 +* GLUE ベンチマークは、NLP モデルをトレーニングするための 9 つのデータセットとタスクのコレクションです。 + +フルレポートを [こちら](https://wandb.ai/jxmorris12/huggingface-demo/reports/A-Step-by-Step-Guide-to-Tracking-HuggingFace-Model-Performance--VmlldzoxMDE2MTU) で読む。 +
+ +
+ +HuggingFace における早期終了(Early Stopping)の例 + +* 早期終了正則化を使用した Hugging Face Transformer のファインチューニングは、PyTorch または TensorFlow でネイティブに実行できます。 +* TensorFlow での EarlyStopping コールバックの使用は、`tf.keras.callbacks.EarlyStopping` を使って簡単に行えます。 +* PyTorch には既製の早期終了メソッドはありませんが、GitHub Gist で利用可能な早期終了フックが存在します。 + +フルレポートを [こちら](https://wandb.ai/ayush-thakur/huggingface/reports/Early-Stopping-in-HuggingFace-Examples--Vmlldzo0MzE2MTM) で読む。 +
+ +
+ +カスタムデータセットで Hugging Face Transformers をファインチューニングする方法 + +カスタムの IMDB データセットを使用して、感情分析(二値分類)のために DistilBERT transformer をファインチューニングします。 + +フルレポートを [こちら](https://wandb.ai/ayush-thakur/huggingface/reports/How-to-Fine-Tune-HuggingFace-Transformers-on-a-Custom-Dataset--Vmlldzo0MzQ2MDc) で読む。 +
+ +## ヘルプの取得や機能リクエスト + +Hugging Face W&B インテグレーションに関する問題、質問、機能リクエストについては、[Hugging Face フォーラムのこのスレッド](https://discuss.huggingface.co/t/logging-experiment-tracking-with-w-b/498) に投稿するか、Hugging Face [Transformers GitHub リポジトリ](https://github.com/huggingface/transformers) で Issue を作成してください。 \ No newline at end of file diff --git a/ja/models/integrations/hydra.mdx b/ja/models/integrations/hydra.mdx new file mode 100644 index 0000000000..3ce7751295 --- /dev/null +++ b/ja/models/integrations/hydra.mdx @@ -0,0 +1,98 @@ +--- +title: Hydra +description: W&B を Hydra と統合する方法。 +--- + +> [Hydra](https://hydra.cc) は、研究やその他の複雑な アプリケーション の開発を簡素化するオープンソースの Python フレームワーク です。主な特徴は、構成(composition)によって階層的な 設定 を動的に作成し、設定 ファイルや コマンドライン を通じてそれを上書きできる機能です。 + +W&B の強力な機能を活用しながら、引き続き Hydra を 設定 管理に使用できます。 + +## メトリクスのトラッキング + +通常通り `wandb.init()` と `wandb.Run.log()` を使用して メトリクス をトラッキングします。ここでは、`wandb.entity` と `wandb.project` は Hydra の 設定 ファイル内で定義されています。 + +```python +import wandb + + +@hydra.main(config_path="configs/", config_name="defaults") +def run_experiment(cfg): + + # cfg.wandb.entity と cfg.wandb.project を使用して初期化 + with wandb.init(entity=cfg.wandb.entity, project=cfg.wandb.project) as run: + run.log({"loss": loss}) +``` + +## ハイパーパラメーターのトラッキング + +Hydra は、設定 辞書 とのインターフェースのデフォルトの方法として [omegaconf](https://omegaconf.readthedocs.io/en/2.1_branch/) を使用します。`OmegaConf` の 辞書 はプリミティブな 辞書 のサブクラスではないため、Hydra の `Config` を直接 `wandb.Run.config` に渡すと、ダッシュボード 上で予期しない 結果 になることがあります。`wandb.Run.config` に渡す前に、`omegaconf.DictConfig` をプリミティブな `dict` 型に変換する必要があります。 + +```python +@hydra.main(config_path="configs/", config_name="defaults") +def run_experiment(cfg): + with wandb.init(entity=cfg.wandb.entity, project=cfg.wandb.project) as run: + # omegaconf.DictConfig を標準の Python 辞書に変換 + run.config = omegaconf.OmegaConf.to_container( + cfg, resolve=True, throw_on_missing=True + ) + run = wandb.init(entity=cfg.wandb.entity, project=cfg.wandb.project) + run.log({"loss": loss}) + model = Model(**run.config.model.configs) +``` + +## マルチプロセッシングのトラブルシューティング + +プロセス 開始時にフリーズする場合、[こちらの既知の問題](/models/track/log/distributed-training/) が原因である可能性があります。これを解決するには、`wandb.init()` に追加の settings パラメータ を渡して W&B のマルチプロセッシングプロトコルを変更してみてください。 + +```python +wandb.init(settings=wandb.Settings(start_method="thread")) +``` + +または、シェルからグローバルな 環境 変数を設定します。 + +```bash +$ export WANDB_START_METHOD=thread +``` + +## ハイパーパラメーターの最適化 + +[W&B Sweeps](/models/sweeps/) は、高度な拡張性を備えた ハイパーパラメーター 探索 プラットフォーム です。最小限の コード 変更で W&B Experiments に関する興味深い洞察と 可視化 を提供します。Sweeps は Hydra プロジェクト とシームレスに統合され、追加のコーディングは不要です。必要なのは、通常通り スイープ するさまざまな パラメータ を記述した 設定 ファイルだけです。 + +簡単な `sweep.yaml` ファイルの例は以下の通りです。 + +```yaml +program: main.py +method: bayes +metric: + goal: maximize + name: test/accuracy +parameters: + dataset: + values: [mnist, cifar10] + +command: + - ${env} + - python + - ${program} + - ${args_no_hyphens} +``` + +スイープ を実行します。 + +``` bash +wandb sweep sweep.yaml +``` + +W&B は プロジェクト 内に自動的に スイープ を作成し、スイープ を実行したい各マシンで実行するための `wandb agent` コマンド を返します。 + +### Hydra のデフォルトに存在しないパラメータを渡す + + + +Hydra は、コマンド の前に `+` を付けることで、デフォルトの 設定 ファイルに存在しない追加の パラメータ を コマンドライン から渡すことをサポートしています。例えば、以下のように呼び出すだけで、特定の値を持つ追加の パラメータ を渡すことができます。 + +```bash +$ python program.py +experiment=some_experiment +``` + +[Hydra Experiments](https://hydra.cc/docs/patterns/configuring_experiments/) を設定する際のように、このような `+` 設定に対して Sweeps を実行することはできません。これを回避するには、実験 パラメータ をデフォルトの空のファイルで初期化し、各呼び出し時に W&B Sweep を使用してそれらの空の 設定 を上書きします。詳細については、[こちらの W&B レポート](https://wandb.me/hydra) をご覧ください。 \ No newline at end of file diff --git a/ja/models/integrations/ignite.mdx b/ja/models/integrations/ignite.mdx new file mode 100644 index 0000000000..91d1c18d89 --- /dev/null +++ b/ja/models/integrations/ignite.mdx @@ -0,0 +1,195 @@ +--- +title: PyTorch Ignite +description: W&B を PyTorch Ignite と統合する方法。 +--- + +* 結果の可視化については、こちらの [example W&B report →](https://app.wandb.ai/example-team/pytorch-ignite-example/reports/PyTorch-Ignite-with-W%26B--Vmlldzo0NzkwMg) をご覧ください。 +* コードを実際に動かしてみるには、こちらの [example hosted notebook →](https://colab.research.google.com/drive/15e-yGOvboTzXU4pe91Jg-Yr7sae3zBOJ#scrollTo=ztVifsYAmnRr) をお試しください。 + +Ignite は W&B ハンドラーをサポートしており、トレーニングおよびバリデーション中のメトリクス、モデル / オプティマイザーの パラメータ、勾配を ログ 記録できます。また、モデルの チェックポイント を W&B クラウド に保存するためにも使用できます。このクラスは `wandb` モジュールのラッパーでもあるため、このラッパーを介して任意の `wandb` 関数を呼び出すことができます。モデルの パラメータ や 勾配 を保存する方法については、以下の例を参照してください。 + +## 基本的なセットアップ + +```python +from argparse import ArgumentParser +import wandb +import torch +from torch import nn +from torch.optim import SGD +from torch.utils.data import DataLoader +import torch.nn.functional as F +from torchvision.transforms import Compose, ToTensor, Normalize +from torchvision.datasets import MNIST + +from ignite.engine import Events, create_supervised_trainer, create_supervised_evaluator +from ignite.metrics import Accuracy, Loss + +from tqdm import tqdm + + +class Net(nn.Module): + def __init__(self): + super(Net, self).__init__() + self.conv1 = nn.Conv2d(1, 10, kernel_size=5) + self.conv2 = nn.Conv2d(10, 20, kernel_size=5) + self.conv2_drop = nn.Dropout2d() + self.fc1 = nn.Linear(320, 50) + self.fc2 = nn.Linear(50, 10) + + def forward(self, x): + x = F.relu(F.max_pool2d(self.conv1(x), 2)) + x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) + x = x.view(-1, 320) + x = F.relu(self.fc1(x)) + x = F.dropout(x, training=self.training) + x = self.fc2(x) + return F.log_softmax(x, dim=-1) + + +def get_data_loaders(train_batch_size, val_batch_size): + data_transform = Compose([ToTensor(), Normalize((0.1307,), (0.3081,))]) + + train_loader = DataLoader(MNIST(download=True, root=".", transform=data_transform, train=True), + batch_size=train_batch_size, shuffle=True) + + val_loader = DataLoader(MNIST(download=False, root=".", transform=data_transform, train=False), + batch_size=val_batch_size, shuffle=False) + return train_loader, val_loader +``` + +Ignite で `WandBLogger` を使用するプロセスはモジュール化されています。まず `WandBLogger` オブジェクト を作成し、次にそれを trainer または evaluator にアタッチすることで、メトリクスを自動的に ログ 記録します。この例では以下の内容を示します: + +* trainer オブジェクト にアタッチして、トレーニングの Loss を ログ 記録する。 +* evaluator にアタッチして、バリデーションの Loss を ログ 記録する。 +* 学習率などの任意の パラメータ を ログ 記録する。 +* モデルを `watch`(監視)する。 + +```python +from ignite.contrib.handlers.wandb_logger import * +def run(train_batch_size, val_batch_size, epochs, lr, momentum, log_interval): + train_loader, val_loader = get_data_loaders(train_batch_size, val_batch_size) + model = Net() + device = 'cpu' + + if torch.cuda.is_available(): + device = 'cuda' + + optimizer = SGD(model.parameters(), lr=lr, momentum=momentum) + trainer = create_supervised_trainer(model, optimizer, F.nll_loss, device=device) + evaluator = create_supervised_evaluator(model, + metrics={'accuracy': Accuracy(), + 'nll': Loss(F.nll_loss)}, + device=device) + + desc = "ITERATION - loss: {:.2f}" + pbar = tqdm( + initial=0, leave=False, total=len(train_loader), + desc=desc.format(0) + ) + # WandBlogger オブジェクトの作成 + wandb_logger = WandBLogger( + project="pytorch-ignite-integration", + name="cnn-mnist", + config={"max_epochs": epochs,"batch_size":train_batch_size}, + tags=["pytorch-ignite", "mninst"] + ) + + wandb_logger.attach_output_handler( + trainer, + event_name=Events.ITERATION_COMPLETED, + tag="training", + output_transform=lambda loss: {"loss": loss} + ) + + wandb_logger.attach_output_handler( + evaluator, + event_name=Events.EPOCH_COMPLETED, + tag="training", + metric_names=["nll", "accuracy"], + global_step_transform=lambda *_: trainer.state.iteration, + ) + + wandb_logger.attach_opt_params_handler( + trainer, + event_name=Events.ITERATION_STARTED, + optimizer=optimizer, + param_name='lr' # オプション + ) + + wandb_logger.watch(model) +``` + +オプションとして、Ignite の `EVENTS` を利用してメトリクスを直接 ターミナル に出力することもできます。 + +```python + @trainer.on(Events.ITERATION_COMPLETED(every=log_interval)) + def log_training_loss(engine): + pbar.desc = desc.format(engine.state.output) + pbar.update(log_interval) + + @trainer.on(Events.EPOCH_COMPLETED) + def log_training_results(engine): + pbar.refresh() + evaluator.run(train_loader) + metrics = evaluator.state.metrics + avg_accuracy = metrics['accuracy'] + avg_nll = metrics['nll'] + tqdm.write( + "Training Results - Epoch: {} Avg accuracy: {:.2f} Avg loss: {:.2f}" + .format(engine.state.epoch, avg_accuracy, avg_nll) + ) + + @trainer.on(Events.EPOCH_COMPLETED) + def log_validation_results(engine): + evaluator.run(val_loader) + metrics = evaluator.state.metrics + avg_accuracy = metrics['accuracy'] + avg_nll = metrics['nll'] + tqdm.write( + "Validation Results - Epoch: {} Avg accuracy: {:.2f} Avg loss: {:.2f}" + .format(engine.state.epoch, avg_accuracy, avg_nll)) + + pbar.n = pbar.last_print_n = 0 + + trainer.run(train_loader, max_epochs=epochs) + pbar.close() + + +if __name__ == "__main__": + parser = ArgumentParser() + parser.add_argument('--batch_size', type=int, default=64, + help='input batch size for training (default: 64)') + parser.add_argument('--val_batch_size', type=int, default=1000, + help='input batch size for validation (default: 1000)') + parser.add_argument('--epochs', type=int, default=10, + help='number of epochs to train (default: 10)') + parser.add_argument('--lr', type=float, default=0.01, + help='learning rate (default: 0.01)') + parser.add_argument('--momentum', type=float, default=0.5, + help='SGD momentum (default: 0.5)') + parser.add_argument('--log_interval', type=int, default=10, + help='how many batches to wait before logging training status') + + args = parser.parse_args() + run(args.batch_size, args.val_batch_size, args.epochs, args.lr, args.momentum, args.log_interval) +``` + +このコードにより、以下のような 可視化 が生成されます: + + + PyTorch Ignite training dashboard + + + + PyTorch Ignite performance + + + + PyTorch Ignite hyperparameter tuning results + + + + PyTorch Ignite model comparison dashboard + + +詳細については、[Ignite Docs](https://pytorch.org/ignite/contrib/handlers.html#module-ignite.contrib.handlers.wandb_logger) を参照してください。 \ No newline at end of file diff --git a/ja/models/integrations/keras.mdx b/ja/models/integrations/keras.mdx new file mode 100644 index 0000000000..a3dcaca31a --- /dev/null +++ b/ja/models/integrations/keras.mdx @@ -0,0 +1,307 @@ +--- +title: Keras +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +## Keras コールバック + +W&B には Keras 用の 3 つのコールバックがあり、`wandb` v0.13.4 から利用可能です。レガシーな `WandbCallback` については、ページ下部をご覧ください。 + +- **`WandbMetricsLogger`** : このコールバックは [実験管理](/models/track/) に使用します。トレーニングと検証のメトリクス、およびシステムメトリクスを W&B にログ記録します。 + +- **`WandbModelCheckpoint`** : モデルのチェックポイントを W&B [アーティファクト](/models/artifacts/) にログ記録するために使用します。 + +- **`WandbEvalCallback`**: このベースコールバックは、インタラクティブな可視化のためにモデルの予測を W&B [テーブル](/models/tables/) にログ記録します。 + +これらの新しいコールバックは以下の特徴を持ちます: + +* Keras の設計哲学に準拠しています。 +* 1 つのコールバック (`WandbCallback`) ですべてを行うことによる認知負荷を軽減します。 +* Keras ユーザーがコールバックをサブクラス化して、特定のユースケースに合わせて簡単に修正できるようにします。 + +## `WandbMetricsLogger` で実験を追跡する + + + +`WandbMetricsLogger` は、`on_epoch_end` や `on_batch_end` などのコールバックメソッドが引数として受け取る Keras の `logs` 辞書を自動的にログ記録します。 + +以下を追跡します: + +* `model.compile` で定義されたトレーニングおよび検証メトリクス。 +* システム (CPU/GPU/TPU) メトリクス。 +* 学習率(固定値、または学習率スケジューラーの両方)。 + +```python +import wandb +from wandb.integration.keras import WandbMetricsLogger + +# 新しい W&B Run を初期化 +wandb.init(config={"bs": 12}) + +# model.fit に WandbMetricsLogger を渡す +model.fit( + X_train, y_train, validation_data=(X_test, y_test), callbacks=[WandbMetricsLogger()] +) +``` + +### `WandbMetricsLogger` リファレンス + +| パラメータ | 説明 | +| --------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `log_freq` | (`epoch`, `batch`, または `int`): `epoch` の場合、各エポックの終了時にメトリクスをログ記録します。`batch` の場合、各バッチの終了時にログ記録します。`int` の場合、その指定されたバッチ数ごとにログ記録します。デフォルトは `epoch` です。 | +| `initial_global_step` | (int): 特定の `initial_epoch` からトレーニングを再開し、学習率スケジューラーを使用する場合に、学習率を正しくログ記録するためにこの引数を使用します。これは `step_size * initial_step` として計算できます。デフォルトは 0 です。 | + +## `WandbModelCheckpoint` を使用したモデルのチェックポイント作成 + + + +`WandbModelCheckpoint` コールバックを使用して、Keras モデル (`SavedModel` 形式) またはモデルの重みを定期的に保存し、モデルのバージョン管理のために `wandb.Artifact` として W&B にアップロードします。 + +このコールバックは [`tf.keras.callbacks.ModelCheckpoint`](https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ModelCheckpoint) から継承されているため、チェックポイント作成のロジックは親コールバックによって処理されます。 + +このコールバックは以下を保存します: + +* モニターに基づき最高のパフォーマンスを達成したモデル。 +* パフォーマンスに関わらず、毎エポック終了時のモデル。 +* エポック終了時、または一定数のトレーニングバッチ終了時のモデル。 +* モデルの重みのみ、またはモデル全体。 +* `SavedModel` 形式または `.h5` 形式のモデル。 + +このコールバックは `WandbMetricsLogger` と組み合わせて使用してください。 + +```python +import wandb +from wandb.integration.keras import WandbMetricsLogger, WandbModelCheckpoint + +# 新しい W&B Run を初期化 +wandb.init(config={"bs": 12}) + +# model.fit に WandbModelCheckpoint を渡す +model.fit( + X_train, + y_train, + validation_data=(X_test, y_test), + callbacks=[ + WandbMetricsLogger(), + WandbModelCheckpoint("models"), + ], +) +``` + +### `WandbModelCheckpoint` リファレンス + +| パラメータ | 説明 | +| ------------------------- | ---- | +| `filepath` | (str): モデルファイルを保存するパス。| +| `monitor` | (str): 監視するメトリクス名。 | +| `verbose` | (int): 詳細モード、0 または 1。モード 0 はサイレント、モード 1 はコールバックがアクションを実行したときにメッセージを表示します。 | +| `save_best_only` | (Boolean): `save_best_only=True` の場合、`monitor` と `mode` 属性で定義された内容に従って、最新のモデル、または最適とみなされるモデルのみを保存します。 | +| `save_weights_only` | (Boolean): True の場合、モデルの重みのみを保存します。 | +| `mode` | (`auto`, `min`, または `max`): `val_acc` の場合は `max`、`val_loss` の場合は `min` などに設定します。 | +| `save_freq` | ("epoch" または int): ‘epoch’ を使用すると、各エポックの後にモデルを保存します。整数を使用すると、そのバッチ数の終了時にモデルを保存します。`val_acc` や `val_loss` などの検証メトリクスを監視する場合、それらのメトリクスはエポックの終了時にしか利用できないため、`save_freq` は "epoch" に設定する必要があります。 | +| `options` | (str): `save_weights_only` が true の場合はオプションの `tf.train.CheckpointOptions` オブジェクト、false の場合はオプションの `tf.saved_model.SaveOptions` オブジェクト。 | +| `initial_value_threshold` | (float): 監視対象メトリクスの初期の「最良」値。 | + +### N エポックごとにチェックポイントをログ記録する + +デフォルト (`save_freq="epoch"`) では、コールバックは各エポックの後にチェックポイントを作成し、アーティファクトとしてアップロードします。特定のバッチ数ごとにチェックポイントを作成するには、`save_freq` に整数を設定します。`N` エポックごとにチェックポイントを作成するには、`train` データローダーのカーディナリティを計算し、それを `save_freq` に渡します: + +```python +WandbModelCheckpoint( + filepath="models/", + save_freq=int((trainloader.cardinality()*N).numpy()) +) +``` + +### TPU アーキテクチャーで効率的にチェックポイントをログ記録する + +TPU でチェックポイントを作成する際、`UnimplementedError: File system scheme '[local]' not implemented` というエラーメッセージに遭遇することがあります。これは、モデルディレクトリ (`filepath`) がクラウドストレージのバケットパス (`gs://bucket-name/...`) を使用する必要があり、かつそのバケットが TPU サーバーからアクセス可能である必要があるために発生します。しかし、ローカルパスを使用してチェックポイントを作成し、それをアーティファクトとしてアップロードすることも可能です。 + +```python +checkpoint_options = tf.saved_model.SaveOptions(experimental_io_device="/job:localhost") + +WandbModelCheckpoint( + filepath="models/, + options=checkpoint_options, +) +``` + +## `WandbEvalCallback` を使用したモデル予測の可視化 + + + +`WandbEvalCallback` は、主にモデル予測、副次的にデータセットの可視化を目的とした Keras コールバックを構築するための抽象基底クラスです。 + +この抽象コールバックはデータセットやタスクに依存しません。これを使用するには、この基底 `WandbEvalCallback` クラスを継承し、`add_ground_truth` と `add_model_prediction` メソッドを実装します。 + +`WandbEvalCallback` は、以下のメソッドを提供するユーティリティクラスです: + +* データおよび予測用の `wandb.Table` インスタンスを作成する。 +* データおよび予測テーブルを `wandb.Artifact` としてログ記録する。 +* `on_train_begin` 時にデータテーブルをログ記録する。 +* `on_epoch_end` 時に予測テーブルをログ記録する。 + +次の例では、画像分類タスクに `WandbClfEvalCallback` を使用しています。この例のコールバックは、検証データ (`data_table`) を W&B にログ記録し、推論を実行して、各エポックの終了時に予測 (`pred_table`) を W&B にログ記録します。 + +```python +import wandb +from wandb.integration.keras import WandbMetricsLogger, WandbEvalCallback + + +# モデル予測可視化用コールバックの実装 +class WandbClfEvalCallback(WandbEvalCallback): + def __init__( + self, validation_data, data_table_columns, pred_table_columns, num_samples=100 + ): + super().__init__(data_table_columns, pred_table_columns) + + self.x = validation_data[0] + self.y = validation_data[1] + + def add_ground_truth(self, logs=None): + for idx, (image, label) in enumerate(zip(self.x, self.y)): + self.data_table.add_data(idx, wandb.Image(image), label) + + def add_model_predictions(self, epoch, logs=None): + preds = self.model.predict(self.x, verbose=0) + preds = tf.argmax(preds, axis=-1) + + table_idxs = self.data_table_ref.get_index() + + for idx in table_idxs: + pred = preds[idx] + self.pred_table.add_data( + epoch, + self.data_table_ref.data[idx][0], + self.data_table_ref.data[idx][1], + self.data_table_ref.data[idx][2], + pred, + ) + + +# ... + +# 新しい W&B Run を初期化 +wandb.init(config={"hyper": "parameter"}) + +# コールバックを Model.fit に追加 +model.fit( + X_train, + y_train, + validation_data=(X_test, y_test), + callbacks=[ + WandbMetricsLogger(), + WandbClfEvalCallback( + validation_data=(X_test, y_test), + data_table_columns=["idx", "image", "label"], + pred_table_columns=["epoch", "idx", "image", "label", "pred"], + ), + ], +) +``` + + +W&B の [アーティファクトページ](/models/artifacts/explore-and-traverse-an-artifact-graph/) には、デフォルトで **Workspace** ページではなくテーブルログが含まれます。 + + +### `WandbEvalCallback` リファレンス + +| パラメータ | 説明 | +| -------------------- | ------------------------------------------------ | +| `data_table_columns` | (list) `data_table` のカラム名のリスト | +| `pred_table_columns` | (list) `pred_table` のカラム名のリスト | + +### メモリフットプリントの詳細 + +`on_train_begin` メソッドが呼び出されたときに `data_table` を W&B にログ記録します。W&B アーティファクトとしてアップロードされると、このテーブルへの参照を取得でき、`data_table_ref` クラス変数を使用してアクセスできます。`data_table_ref` は `self.data_table_ref[idx][n]` のようにインデックス指定できる 2D リストで、`idx` は行番号、`n` は列番号です。使い方は上記の例を確認してください。 + +### コールバックのカスタマイズ + +より詳細な制御を行うために、`on_train_begin` または `on_epoch_end` メソッドをオーバーライドできます。`N` バッチごとにサンプルをログ記録したい場合は、`on_train_batch_end` メソッドを実装できます。 + + +`WandbEvalCallback` を継承してモデル予測可視化用のコールバックを実装する際に、不明点や修正が必要な箇所がある場合は、[issue](https://github.com/wandb/wandb/issues) を開いてお知らせください。 + + +## `WandbCallback` [レガシー] + +W&B ライブラリの `WandbCallback` クラスを使用して、`model.fit` で追跡されるすべてのメトリクスと損失値を自動的に保存します。 + +```python +import wandb +from wandb.integration.keras import WandbCallback + +wandb.init(config={"hyper": "parameter"}) + +... # Keras でモデルをセットアップするコード + +# コールバックを model.fit に渡す +model.fit( + X_train, y_train, validation_data=(X_test, y_test), callbacks=[WandbCallback()] +) +``` + +短い動画 [Get Started with Keras and W&B in Less Than a Minute](https://www.youtube.com/watch?ab_channel=Weights&Biases&v=4FjDIJ-vO_M) をご覧いただけます。 + +より詳細な動画については、[Integrate W&B with Keras](https://www.youtube.com/watch?v=Bsudo7jbMow\&ab_channel=Weights%26Biases) をご覧ください。また、[Colab Jupyter Notebook](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/keras/Keras_pipeline_with_Weights_and_Biases.ipynb) も確認できます。 + + +[Fashion MNIST の例](https://github.com/wandb/examples/blob/master/examples/keras/keras-cnn-fashion/train.py) や、それによって生成される [W&B ダッシュボード](https://wandb.ai/wandb/keras-fashion-mnist/runs/5z1d85qs) を含むスクリプトについては、[公式サンプルリポジトリ](https://github.com/wandb/examples) を参照してください。 + + +`WandbCallback` クラスは、監視するメトリクスの指定、重みと勾配の追跡、トレーニングデータおよび検証データの予測のログ記録など、多種多様なログ設定オプションをサポートしています。 + +詳細については、`keras.WandbCallback` のリファレンスドキュメントを確認してください。 + +`WandbCallback` は: + +* Keras によって収集されたすべてのメトリクスの履歴データを自動的にログ記録します:損失(loss)および `keras_model.compile()` に渡されたすべてのメトリクス。 +* `monitor` および `mode` 属性で定義された「最良」のトレーニングステップに関連付けられた実行のサマリーメトリクスを設定します。これはデフォルトで `val_loss` が最小のエポックになります。`WandbCallback` はデフォルトで最良の `epoch` に関連付けられたモデルを保存します。 +* オプションで勾配とパラメータのヒストグラムをログ記録します。 +* オプションで W&B が可視化するためのトレーニングおよび検証データを保存します。 + +### `WandbCallback` リファレンス + +| 引数 | 説明 | +| -------------------------- | ------------------------------------------- | +| `monitor` | (str) 監視するメトリクス名。デフォルトは `val_loss`。 | +| `mode` | (str) `{`auto`, `min`, `max`}` のいずれか。`min` - monitor が最小化されたときにモデルを保存。`max` - monitor が最大化されたときにモデルを保存。`auto` - いつモデルを保存するかを自動推測(デフォルト)。 | +| `save_model` | True - monitor が過去のすべてのエポックを上回ったときにモデルを保存。False - モデルを保存しない。 | +| `save_graph` | (boolean) True の場合、モデルグラフを wandb に保存(デフォルトは True)。 | +| `save_weights_only` | (boolean) True の場合、モデルの重みのみを保存 (`model.save_weights(filepath)`)。それ以外の場合はモデル全体を保存。 | +| `log_weights` | (boolean) True の場合、モデルレイヤーの重みのヒストグラムを保存。 | +| `log_gradients` | (boolean) True の場合、トレーニング勾配のヒストグラムをログ記録。 | +| `training_data` | (tuple) `model.fit` に渡されるものと同じ形式 `(X,y)`。勾配の計算に必要です。`log_gradients` が `True` の場合は必須です。 | +| `validation_data` | (tuple) `model.fit` に渡されるものと同じ形式 `(X,y)`。W&B が可視化するためのデータセット。このフィールドを設定すると、毎エポック、W&B は少数の予測を行い、後で可視化するために結果を保存します。 | +| `generator` | (generator) W&B が可視化するための検証データを返すジェネレーター。このジェネレーターはタプル `(X,y)` を返す必要があります。特定のデータ例を可視化するには、`validate_data` またはジェネレーターのいずれかを設定する必要があります。 | +| `validation_steps` | (int) `validation_data` がジェネレーターの場合、検証セット全体に対してジェネレーターを実行するステップ数。 | +| `labels` | (list) W&B でデータを可視化する場合、複数のクラスを持つ分類器を構築していれば、このラベルリストにより数値出力を理解しやすい文字列に変換します。バイナリ分類器の場合は、2 つのラベルのリスト \[`label for false`, `label for true`] を渡すことができます。`validate_data` と `generator` の両方が false の場合、これは何もしません。 | +| `predictions` | (int) 各エポックで可視化のために作成する予測数。最大は 100 です。 | +| `input_type` | (string) 可視化を助けるためのモデル入力のタイプ。(`image`, `images`, `segmentation_mask`) のいずれか。 | +| `output_type` | (string) 可視化を助けるためのモデル出力のタイプ。(`image`, `images`, `segmentation_mask`) のいずれか。 | +| `log_evaluation` | (boolean) True の場合、各エポックでの検証データとモデルの予測を含むテーブルを保存します。詳細は `validation_indexes`、`validation_row_processor`、`output_row_processor` を参照してください。 | +| `class_colors` | (\[float, float, float]) 入力または出力がセグメンテーションマスクの場合、各クラスの RGB タプル(範囲 0-1)を含む配列。 | +| `log_batch_frequency` | (integer) None の場合、コールバックは毎エポックログを記録します。整数に設定されている場合、コールバックは `log_batch_frequency` バッチごとにトレーニングメトリクスをログ記録します。 | +| `log_best_prefix` | (string) None の場合、余分なサマリーメトリクスを保存しません。文字列に設定されている場合、監視されているメトリクスとエポックの前にプレフィックスを付加し、結果をサマリーメトリクスとして保存します。 | +| `validation_indexes` | (\[wandb.data_types._TableLinkMixin]) 各検証例に関連付けるインデックスキーの順序付きリスト。`log_evaluation` が True で `validation_indexes` を指定した場合、検証データのテーブルは作成されません。代わりに、各予測を `TableLinkMixin` で表される行に関連付けます。行キーのリストを取得するには、`Table.get_index()` を使用してください。 | +| `validation_row_processor` | (Callable) 検証データに適用する関数で、通常はデータの可視化に使用されます。この関数は `ndx` (int) と `row` (dict) を受け取ります。モデルの入力が 1 つの場合、`row["input"]` にはその行の入力データが含まれます。それ以外の場合は、入力スロットの名前が含まれます。fit 関数が単一のターゲットを受け取る場合、`row["target"]` にはその行のターゲットデータが含まれます。それ以外の場合は、出力スロットの名前が含まれます。例えば、入力データが単一の配列で、データを画像として可視化する場合、プロセッサーとして `lambda ndx, row: {"img": wandb.Image(row["input"])}` を指定します。`log_evaluation` が False または `validation_indexes` が存在する場合は無視されます。 | +| `output_row_processor` | (Callable) `validation_row_processor` と同様ですが、モデルの出力に適用されます。`row["output"]` にはモデル出力の結果が含まれます。 | +| `infer_missing_processors` | (Boolean) `validation_row_processor` と `output_row_processor` が欠けている場合に推論するかどうかを決定します。デフォルトは True です。`labels` を指定した場合、W&B は適切な場所で分類タイプのプロセッサーを推論しようとします。 | +| `log_evaluation_frequency` | (int) 評価結果をログ記録する頻度を決定します。デフォルトは `0` で、トレーニングの終了時にのみログ記録します。1 に設定すると毎エポック、2 に設定すると 1 エポックおきにログ記録します。`log_evaluation` が False の場合は効果がありません。 | + +## よくある質問 + +### `Keras` のマルチプロセッシングを `wandb` で使用するにはどうすればよいですか? + +`use_multiprocessing=True` を設定すると、以下のエラーが発生することがあります: + +```python +Error("You must call wandb.init() before wandb.config.batch_size") +``` + +これを回避するには: + +1. `Sequence` クラスの構築時に `wandb.init(group='...')` を追加します。 +2. `main` で `if __name__ == "__main__":` を使用していることを確認し、スクリプトの残りのロジックをその中に入れます。 \ No newline at end of file diff --git a/ja/models/integrations/kubeflow-pipelines-kfp.mdx b/ja/models/integrations/kubeflow-pipelines-kfp.mdx new file mode 100644 index 0000000000..a85d728519 --- /dev/null +++ b/ja/models/integrations/kubeflow-pipelines-kfp.mdx @@ -0,0 +1,190 @@ +--- +title: Kubeflow Pipelines (kfp) +description: W&B を Kubeflow Pipelines と統合する方法。 +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +[Kubeflow Pipelines (kfp)](https://www.kubeflow.org/docs/components/pipelines/overview/) は、 Docker コンテナベースでポータブルかつスケーラブルな 機械学習 (ML) ワークフローを構築・デプロイするためのプラットフォームです。 + +この インテグレーション を使用すると、 kfp の Python 関数コンポーネントにデコレータを適用するだけで、パラメータや アーティファクト を W&B に自動的に ログ 記録できます。 + +この機能は `wandb==0.12.11` から有効になっており、 `kfp<2.0.0` が必要です。 + +## サインアップと APIキー の作成 + +APIキー は、お使いのマシンを W&B に対して認証するために使用されます。 APIキー はユーザープロフィールから生成できます。 + + + +1. 右上隅にあるユーザープロフィールアイコンをクリックします。 +1. **User Settings** を選択し、 **API Keys** セクションまでスクロールします。 + +## `wandb` ライブラリのインストールとログイン + +ローカル環境に `wandb` ライブラリをインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) に APIキー を設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + + +## コンポーネントへのデコレータ追加 + +`@wandb_log` デコレータを追加し、通常通りコンポーネントを作成します。これにより、パイプラインを実行するたびに、入力/出力 パラメータ と アーティファクト が W&B に自動的に ログ 記録されます。 + +```python +from kfp import components +from wandb.integration.kfp import wandb_log + + +@wandb_log +def add(a: float, b: float) -> float: + return a + b + + +add = components.create_component_from_func(add) +``` + +## コンテナへの環境変数の受け渡し + +コンテナに対して明示的に [環境変数](/models/track/environment-variables/) を渡す必要がある場合があります。双方向のリンクを有効にするには、 `WANDB_KUBEFLOW_URL` 環境変数 に Kubeflow Pipelines インスタンスのベース URL(例: `https://kubeflow.mysite.com`)を設定してください。 + +```python +import os +from kubernetes.client.models import V1EnvVar + + +def add_wandb_env_variables(op): + env = { + "WANDB_API_KEY": os.getenv("WANDB_API_KEY"), + "WANDB_BASE_URL": os.getenv("WANDB_BASE_URL"), + } + + for name, value in env.items(): + op = op.add_env_variable(V1EnvVar(name, value)) + return op + + +@dsl.pipeline(name="example-pipeline") +def example_pipeline(param1: str, param2: int): + conf = dsl.get_pipeline_conf() + conf.add_op_transformer(add_wandb_env_variables) +``` + +## プログラムによるデータへのアクセス + +### Kubeflow Pipelines UI 経由 + +W&B で ログ 記録された Kubeflow Pipelines UI 上の任意の Run をクリックします。 + +* 入出力の詳細は、 `Input/Output` タブおよび `ML Metadata` タブで確認できます。 +* `Visualizations` タブから W&B ウェブアプリを表示できます。 + + + W&B in Kubeflow UI + + +### ウェブアプリ UI 経由 + +ウェブアプリ UI には、 Kubeflow Pipelines の `Visualizations` タブと同じ内容が表示されますが、より広い画面で操作できます。ウェブアプリ UI についての詳細は [こちら](/models/app) をご覧ください。 + + + Run details + + + + Pipeline DAG + + +### Public API 経由(プログラムによるアクセス) + +* プログラムによる アクセス については、 [Public API ドキュメント](/models/ref/python/public-api/) を参照してください。 + +### Kubeflow Pipelines から W&B へのコンセプトマッピング + +Kubeflow Pipelines のコンセプトと W&B の対応表は以下の通りです。 + +| Kubeflow Pipelines | W&B | W&B内での場所 | +| ------------------ | --- | --------------- | +| Input Scalar | [`config`](/models/) | [Overviewタブ](/models/runs/#overview-tab) | +| Output Scalar | [`summary`](/models/) | [Overviewタブ](/models/runs/#overview-tab) | +| Input Artifact | Input Artifact | [Artifactsタブ](/models/runs/#artifacts-tab) | +| Output Artifact | Output Artifact | [Artifactsタブ](/models/runs/#artifacts-tab) | + +## きめ細かなログ記録 + +ログ 記録をより詳細に制御したい場合は、コンポーネント内で `wandb.log` や `wandb.log_artifact` を呼び出すことができます。 + +### 明示的な `wandb.log_artifacts` の呼び出し + +以下の例では、 モデル を トレーニング しています。 `@wandb_log` デコレータは関連する入出力を自動的に追跡します。 トレーニング プロセスを ログ 記録したい場合は、次のように明示的に ログ を追加できます: + +```python +@wandb_log +def train_model( + train_dataloader_path: components.InputPath("dataloader"), + test_dataloader_path: components.InputPath("dataloader"), + model_path: components.OutputPath("pytorch_model"), +): + with wandb.init() as run: + ... + for epoch in epochs: + for batch_idx, (data, target) in enumerate(train_dataloader): + ... + if batch_idx % log_interval == 0: + run.log( + {"epoch": epoch, "step": batch_idx * len(data), "loss": loss.item()} + ) + ... + run.log_artifact(model_artifact) +``` + +### 暗黙的な wandb インテグレーションの使用 + +[サポートされているフレームワークインテグレーション](/models/integrations) を使用している場合は、 コールバック を直接渡すことも可能です。 + +```python +@wandb_log +def train_model( + train_dataloader_path: components.InputPath("dataloader"), + test_dataloader_path: components.InputPath("dataloader"), + model_path: components.OutputPath("pytorch_model"), +): + from pytorch_lightning.loggers import WandbLogger + from pytorch_lightning import Trainer + + trainer = Trainer(logger=WandbLogger()) + ... # トレーニングを実行 +``` \ No newline at end of file diff --git a/ja/models/integrations/lightgbm.mdx b/ja/models/integrations/lightgbm.mdx new file mode 100644 index 0000000000..aff501e96d --- /dev/null +++ b/ja/models/integrations/lightgbm.mdx @@ -0,0 +1,36 @@ +--- +title: LightGBM +description: W&B で ツリー を追跡しましょう。 +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +`wandb` ライブラリには、 [LightGBM](https://lightgbm.readthedocs.io/en/latest/) 専用のコールバックが含まれています。また、W&B の汎用的なログ機能を使用して、ハイパーパラメーター探索( Sweeps )のような大規模な実験を簡単に追跡することもできます。 + +```python +from wandb.integration.lightgbm import wandb_callback, log_summary +import lightgbm as lgb + +# メトリクスを W&B にログ記録 +gbm = lgb.train(..., callbacks=[wandb_callback()]) + +# インポータンスプロットをログ記録し、モデルのチェックポイントを W&B にアップロード +log_summary(gbm, save_model_checkpoint=True) +``` + + +動作するコード例をお探しですか? [GitHub のサンプルリポジトリ](https://github.com/wandb/examples/tree/master/examples/boosting-algorithms) をご確認ください。 + + +## Sweeps によるハイパーパラメーターチューニング + +モデルから最高のパフォーマンスを引き出すには、 ツリー の深さや学習率などの ハイパーパラメーター を調整する必要があります。W&B [Sweeps](/models/sweeps/) は、大規模なハイパーパラメーターテスト実験の設定、オーケストレーション、および分析を行うための強力なツールキットです。 + +これらのツールの詳細や、 XGBoost で Sweeps を使用する方法の例については、こちらのインタラクティブな Colabノートブック を参照してください。 + + + + + LightGBM performance comparison + \ No newline at end of file diff --git a/ja/models/integrations/lightning.mdx b/ja/models/integrations/lightning.mdx new file mode 100644 index 0000000000..e50d07f920 --- /dev/null +++ b/ja/models/integrations/lightning.mdx @@ -0,0 +1,594 @@ +--- +title: PyTorch Lightning +--- + +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + + + +PyTorch Lightning は、PyTorch コードを整理し、分散トレーニングや 16-bit 精度などの高度な機能を簡単に追加するための軽量なラッパーを提供します。W&B は、ML 実験をログに記録するための軽量なラッパーを提供します。これら 2 つを自分自身で組み合わせる必要はありません。W&B は、[`WandbLogger`](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.wandb.html#module-lightning.pytorch.loggers.wandb) を介して PyTorch Lightning ライブラリに直接組み込まれています。 + +## Lightning とのインテグレーション + + + +```python +from lightning.pytorch.loggers import WandbLogger +from lightning.pytorch import Trainer + +# すべてのモデルをログに記録するように設定してインスタンス化 +wandb_logger = WandbLogger(log_model="all") +trainer = Trainer(logger=wandb_logger) +``` + + +**wandb.log() の使用:** `WandbLogger` は Trainer の `global_step` を使用して W&B にログを記録します。コード内で直接 `wandb.log` を追加で呼び出す場合は、`wandb.log()` の `step` 引数を **使用しないでください**。 + +代わりに、他のメトリクスと同様に Trainer の `global_step` をログに記録してください: + +```python +wandb.log({"accuracy":0.99, "trainer/global_step": step}) +``` + + + +```python +import lightning as L +from wandb.integration.lightning.fabric import WandbLogger + +# ロガーのセットアップ +wandb_logger = WandbLogger(log_model="all") +fabric = L.Fabric(loggers=[wandb_logger]) +fabric.launch() +# メトリクスのログ記録 +fabric.log_dict({"important_metric": important_metric}) +``` + + + + + Interactive dashboards + + +### サインアップと APIキー の作成 + +APIキー は、お使いのマシンを W&B に対して認証します。ユーザープロファイルから APIキー を生成できます。 + + + +1. 右上隅にあるユーザープロファイルアイコンをクリックします。 +1. **User Settings** を選択し、**API Keys** セクションまでスクロールします。 + +### `wandb` ライブラリのインストールとログイン + +`wandb` ライブラリをローカルにインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) に APIキー を設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + + +## PyTorch Lightning の `WandbLogger` を使用する + +PyTorch Lightning には、メトリクス、モデルの重み、メディアなどをログに記録するための複数の `WandbLogger` クラスがあります。 + +- [`PyTorch`](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.wandb.html#module-lightning.pytorch.loggers.wandb) +- [`Fabric`](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.wandb.html#module-lightning.pytorch.loggers.wandb) + +Lightning と統合するには、`WandbLogger` をインスタンス化し、Lightning の `Trainer` または `Fabric` に渡します。 + + + +```python +trainer = Trainer(logger=wandb_logger) +``` + + +```python +fabric = L.Fabric(loggers=[wandb_logger]) +fabric.launch() +fabric.log_dict({ + "important_metric": important_metric +}) +``` + + + + +### 一般的なロガー引数 + +以下は `WandbLogger` で最もよく使用されるパラメータの一部です。すべてのロガー引数の詳細については、PyTorch Lightning のドキュメントを確認してください。 + +- [`PyTorch`](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.wandb.html#module-lightning.pytorch.loggers.wandb) +- [`Fabric`](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.wandb.html#module-lightning.pytorch.loggers.wandb) + +| パラメータ | 説明 | +| ----------- | ----------------------------------------------------------------------------- | +| `project` | ログを記録する W&B の Projects を定義します | +| `name` | W&B の Runs に名前を付けます | +| `log_model` | `log_model="all"` の場合はすべてのモデルを、`log_model=True` の場合はトレーニング終了時にログを記録します | +| `save_dir` | データが保存されるパス | + +## ハイパーパラメータのログ記録 + + + +```python +class LitModule(LightningModule): + def __init__(self, *args, **kwarg): + # ハイパーパラメータを保存(W&Bによって自動的にログ記録されます) + self.save_hyperparameters() +``` + + +```python +wandb_logger.log_hyperparams( + { + "hyperparameter_1": hyperparameter_1, + "hyperparameter_2": hyperparameter_2, + } +) +``` + + + +## 追加のコンフィグパラメータのログ記録 + +```python +# 単一のパラメータを追加 +wandb_logger.experiment.config["key"] = value + +# 複数のパラメータを追加 +wandb_logger.experiment.config.update({key1: val1, key2: val2}) + +# wandb モジュールを直接使用 +wandb.config["key"] = value +wandb.config.update() +``` + +## 勾配、パラメータのヒストグラム、モデル構造のログ記録 + +モデルオブジェクトを `wandblogger.watch()` に渡すことで、トレーニング中にモデルの勾配とパラメータを監視できます。詳細は PyTorch Lightning の `WandbLogger` ドキュメントを参照してください。 + +## メトリクスのログ記録 + + + +`WandbLogger` を使用している場合、`training_step` や `validation_step` メソッドなどの `LightningModule` 内で `self.log('my_metric_name', metric_vale)` を呼び出すことで、メトリクスを W&B にログ記録できます。 + +以下のコードスニペットは、メトリクスと `LightningModule` のハイパーパラメータをログに記録するための `LightningModule` の定義方法を示しています。この例では、[`torchmetrics`](https://github.com/PyTorchLightning/metrics) ライブラリを使用してメトリクスを計算しています。 + +```python +import torch +from torch.nn import Linear, CrossEntropyLoss, functional as F +from torch.optim import Adam +from torchmetrics.functional import accuracy +from lightning.pytorch import LightningModule + + +class My_LitModule(LightningModule): + def __init__(self, n_classes=10, n_layer_1=128, n_layer_2=256, lr=1e-3): + """モデルパラメータを定義するために使用されるメソッド""" + super().__init__() + + # mnist 画像は (1, 28, 28) (チャンネル, 幅, 高さ) + self.layer_1 = Linear(28 * 28, n_layer_1) + self.layer_2 = Linear(n_layer_1, n_layer_2) + self.layer_3 = Linear(n_layer_2, n_classes) + + self.loss = CrossEntropyLoss() + self.lr = lr + + # ハイパーパラメータを self.hparams に保存(W&Bによって自動ログ記録) + self.save_hyperparameters() + + def forward(self, x): + """推論に使用されるメソッド input -> output""" + + # (b, 1, 28, 28) -> (b, 1*28*28) + batch_size, channels, width, height = x.size() + x = x.view(batch_size, -1) + + # 3 x (linear + relu) を実行 + x = F.relu(self.layer_1(x)) + x = F.relu(self.layer_2(x)) + x = self.layer_3(x) + return x + + def training_step(self, batch, batch_idx): + """単一バッチから損失を返す必要がある""" + _, loss, acc = self._get_preds_loss_accuracy(batch) + + # 損失とメトリクスをログ記録 + self.log("train_loss", loss) + self.log("train_accuracy", acc) + return loss + + def validation_step(self, batch, batch_idx): + """メトリクスのログ記録に使用""" + preds, loss, acc = self._get_preds_loss_accuracy(batch) + + # 損失とメトリクスをログ記録 + self.log("val_loss", loss) + self.log("val_accuracy", acc) + return preds + + def configure_optimizers(self): + """モデルのオプティマイザーを定義""" + return Adam(self.parameters(), lr=self.lr) + + def _get_preds_loss_accuracy(self, batch): + """train/valid/test ステップが類似しているための便利な関数""" + x, y = batch + logits = self(x) + preds = torch.argmax(logits, dim=1) + loss = self.loss(logits, y) + acc = accuracy(preds, y) + return preds, loss, acc +``` + + +```python +import lightning as L +import torch +import torchvision as tv +from wandb.integration.lightning.fabric import WandbLogger +import wandb + +fabric = L.Fabric(loggers=[wandb_logger]) +fabric.launch() + +model = tv.models.resnet18() +optimizer = torch.optim.SGD(model.parameters(), lr=lr) +model, optimizer = fabric.setup(model, optimizer) + +train_dataloader = fabric.setup_dataloaders( + torch.utils.data.DataLoader(train_dataset, batch_size=batch_size) +) + +model.train() +for epoch in range(num_epochs): + for batch in train_dataloader: + optimizer.zero_grad() + loss = model(batch) + loss.backward() + optimizer.step() + # 損失のログ記録 + fabric.log_dict({"loss": loss}) +``` + + + +## メトリクスの最小値/最大値のログ記録 + +W&B の [`define_metric`](/models/ref/python/experiments/run#define_metric) 関数を使用すると、W&B サマリーメトリクスに、そのメトリクスの最小値、最大値、平均値、または最良値のどれを表示するかを定義できます。`define_metric` が使用されない場合は、最後にログに記録された値がサマリーメトリクスに表示されます。詳細は `define_metric` の [リファレンスドキュメント](/models/ref/python/experiments/run#define_metric) および [ガイド](/models/track/log/customize-logging-axes/) を参照してください。 + +W&B サマリーメトリクスで最大検証精度を追跡するように W&B に指示するには、トレーニングの開始時に一度だけ `wandb.define_metric` を呼び出します。 + + + +```python +class My_LitModule(LightningModule): + ... + + def validation_step(self, batch, batch_idx): + if trainer.global_step == 0: + # 検証精度の最大値を追跡するように定義 + wandb.define_metric("val_accuracy", summary="max") + + preds, loss, acc = self._get_preds_loss_accuracy(batch) + + # 損失とメトリクスをログ記録 + self.log("val_loss", loss) + self.log("val_accuracy", acc) + return preds +``` + + +```python +# メトリクスの定義 +wandb.define_metric("val_accuracy", summary="max") +fabric = L.Fabric(loggers=[wandb_logger]) +fabric.launch() +fabric.log_dict({"val_accuracy": val_accuracy}) +``` + + + +## モデルのチェックポイント作成 + +モデルのチェックポイントを W&B [Artifacts](/models/artifacts/) として保存するには、 +Lightning の [`ModelCheckpoint`](https://pytorch-lightning.readthedocs.io/en/stable/api/pytorch_lightning.callbacks.ModelCheckpoint.html#pytorch_lightning.callbacks.ModelCheckpoint) コールバックを使用し、`WandbLogger` の `log_model` 引数を設定します。 + + + +```python +trainer = Trainer(logger=wandb_logger, callbacks=[checkpoint_callback]) +``` + + +```python +fabric = L.Fabric(loggers=[wandb_logger], callbacks=[checkpoint_callback]) +``` + + + +_latest_ および _best_ のエイリアスが自動的に設定され、W&B [Artifact](/models/artifacts/) からモデルチェックポイントを簡単に取得できます。 + +```python +# 参照はアーティファクトパネルで取得可能 +# "VERSION" はバージョン(例: "v2")またはエイリアス("latest" または "best")を指定可能 +checkpoint_reference = "USER/PROJECT/MODEL-RUN_ID:VERSION" +``` + + + +```python +# チェックポイントをローカルにダウンロード(まだキャッシュされていない場合) +wandb_logger.download_artifact(checkpoint_reference, artifact_type="model") +``` + + +```python +# チェックポイントをローカルにダウンロード(まだキャッシュされていない場合) +run = wandb.init(project="MNIST") +artifact = run.use_artifact(checkpoint_reference, type="model") +artifact_dir = artifact.download() +``` + + + + + +```python +# チェックポイントのロード +model = LitModule.load_from_checkpoint(Path(artifact_dir) / "model.ckpt") +``` + + +```python +# 生のチェックポイントをリクエスト +full_checkpoint = fabric.load(Path(artifact_dir) / "model.ckpt") + +model.load_state_dict(full_checkpoint["model"]) +optimizer.load_state_dict(full_checkpoint["optimizer"]) +``` + + + +ログに記録されたモデルチェックポイントは [W&B Artifacts](/models/artifacts/) UI で表示可能であり、完全なモデルリネージが含まれます(UI でのモデルチェックポイントの例は [こちら](https://wandb.ai/wandb/arttest/artifacts/model/iv3_trained/5334ab69740f9dda4fed/lineage?_gl=1*yyql5q*_ga*MTQxOTYyNzExOS4xNjg0NDYyNzk1*_ga_JH1SJHJQXJ*MTY5MjMwNzI2Mi4yNjkuMS4xNjkyMzA5NjM2LjM3LjAuMA..) を参照してください)。 + +最高のモデルチェックポイントをブックマークし、チーム全体で一元管理するには、それらを [W&B Model Registry](/models) にリンクできます。 + +ここでは、タスクごとに最適なモデルを整理し、モデルのライフサイクルを管理し、ML ライフサイクル全体を通じた容易な追跡と監査を促進し、Webhook やジョブを使用してダウンストリームのアクションを [自動化](/models/automations/) することができます。 + +## 画像、テキスト、その他のログ記録 + +`WandbLogger` には、メディアをログに記録するための `log_image`、`log_text`、`log_table` メソッドがあります。 + +また、`wandb.log` または `trainer.logger.experiment.log` を直接呼び出して、オーディオ、分子、点群、3D オブジェクトなどの他のメディアタイプをログに記録することもできます。 + + + +```python +# tensor、numpy 配列、または PIL 画像を使用 +wandb_logger.log_image(key="samples", images=[img1, img2]) + +# キャプションの追加 +wandb_logger.log_image(key="samples", images=[img1, img2], caption=["tree", "person"]) + +# ファイルパスを使用 +wandb_logger.log_image(key="samples", images=["img_1.jpg", "img_2.jpg"]) + +# trainer の .log を使用 +trainer.logger.experiment.log( + {"samples": [wandb.Image(img, caption=caption) for (img, caption) in my_images]}, + step=current_trainer_global_step, +) +``` + + +```python +# データはリストのリストである必要があります +columns = ["input", "label", "prediction"] +my_data = [["cheese", "english", "english"], ["fromage", "french", "spanish"]] + +# カラムとデータを使用 +wandb_logger.log_text(key="my_samples", columns=columns, data=my_data) + +# pandas DataFrame を使用 +wandb_logger.log_text(key="my_samples", dataframe=my_dataframe) +``` + + +```python +# テキストキャプション、画像、オーディオを含む W&B Table をログ記録 +columns = ["caption", "image", "sound"] + +# データはリストのリストである必要があります +my_data = [ + ["cheese", wandb.Image(img_1), wandb.Audio(snd_1)], + ["wine", wandb.Image(img_2), wandb.Audio(snd_2)], +] + +# Table をログ記録 +wandb_logger.log_table(key="my_samples", columns=columns, data=data) +``` + + + +Lightning のコールバックシステムを使用して、`WandbLogger` を介して W&B にログを記録するタイミングを制御できます。この例では、検証画像と予測のサンプルをログに記録します。 + +```python +import torch +import wandb +import lightning.pytorch as pl +from lightning.pytorch.loggers import WandbLogger + +# または +# from wandb.integration.lightning.fabric import WandbLogger + + +class LogPredictionSamplesCallback(Callback): + def on_validation_batch_end( + self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx + ): + """検証バッチが終了したときに呼び出されます。""" + + # `outputs` は `LightningModule.validation_step` から取得されます + # この場合はモデルの予測に対応します + + # 最初のバッチから 20 個のサンプル画像の予測をログ記録します + if batch_idx == 0: + n = 20 + x, y = batch + images = [img for img in x[:n]] + captions = [ + f"Ground Truth: {y_i} - Prediction: {y_pred}" + for y_i, y_pred in zip(y[:n], outputs[:n]) + ] + + # オプション 1: `WandbLogger.log_image` で画像をログ記録 + wandb_logger.log_image(key="sample_images", images=images, caption=captions) + + # オプション 2: 画像と予測を W&B Table としてログ記録 + columns = ["image", "ground truth", "prediction"] + data = [ + [wandb.Image(x_i), y_i, y_pred] or x_i, + y_i, + y_pred in list(zip(x[:n], y[:n], outputs[:n])), + ] + wandb_logger.log_table(key="sample_table", columns=columns, data=data) + + +trainer = pl.Trainer(callbacks=[LogPredictionSamplesCallback()]) +``` + +## Lightning と W&B で複数の GPU を使用する + +PyTorch Lightning は、DDP インターフェースを通じてマルチ GPU サポートを提供しています。ただし、PyTorch Lightning の設計上、GPU のインスタンス化方法に注意する必要があります。 + +Lightning は、トレーニングループ内の各 GPU(またはランク)が、同じ初期条件でまったく同じようにインスタンス化される必要があると想定しています。しかし、ランク 0 のプロセスのみが `wandb.run` オブジェクトにアクセスでき、ランクが 0 以外のプロセスの場合は `wandb.run = None` となります。これにより、ランクが 0 以外のプロセスが失敗する可能性があります。このような状況では、ランク 0 のプロセスが、すでにクラッシュしたランク 0 以外のプロセスの参加を待機するため、**デッドロック** に陥る可能性があります。 + +このため、トレーニングコードのセットアップ方法に注意してください。推奨されるセットアップ方法は、コードを `wandb.run` オブジェクトに依存しないようにすることです。 + +```python +class MNISTClassifier(pl.LightningModule): + def __init__(self): + super(MNISTClassifier, self).__init__() + + self.model = nn.Sequential( + nn.Flatten(), + nn.Linear(28 * 28, 128), + nn.ReLU(), + nn.Linear(128, 10), + ) + + self.loss = nn.CrossEntropyLoss() + + def forward(self, x): + return self.model(x) + + def training_step(self, batch, batch_idx): + x, y = batch + y_hat = self.forward(x) + loss = self.loss(y_hat, y) + + self.log("train/loss", loss) + return {"train_loss": loss} + + def validation_step(self, batch, batch_idx): + x, y = batch + y_hat = self.forward(x) + loss = self.loss(y_hat, y) + + self.log("val/loss", loss) + return {"val_loss": loss} + + def configure_optimizers(self): + return torch.optim.Adam(self.parameters(), lr=0.001) + + +def main(): + # すべての乱数シードを同じ値に設定します。 + # これは分散トレーニング設定において重要です。 + # 各ランクは独自の初期重みセットを取得します。 + # それらが一致しない場合、勾配も一致せず、 + # トレーニングが収束しない可能性があります。 + pl.seed_everything(1) + + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, num_workers=4) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False, num_workers=4) + + model = MNISTClassifier() + wandb_logger = WandbLogger(project="") + callbacks = [ + ModelCheckpoint( + dirpath="checkpoints", + every_n_train_steps=100, + ), + ] + trainer = pl.Trainer( + max_epochs=3, gpus=2, logger=wandb_logger, strategy="ddp", callbacks=callbacks + ) + trainer.fit(model, train_loader, val_loader) +``` + + + +## 例 + +[Colab ノートブック付きのビデオチュートリアル](https://wandb.me/lit-colab) で手順を確認できます。 + +## よくある質問 + +### W&B は Lightning とどのように統合されますか? + +コアとなる統合は [Lightning `loggers` API](https://pytorch-lightning.readthedocs.io/en/stable/extensions/logging.html) に基づいており、これによりフレームワークに依存しない方法でログコードの大部分を記述できます。`Logger` は [Lightning `Trainer`](https://pytorch-lightning.readthedocs.io/en/stable/common/trainer.html) に渡され、その API の豊富な [フックとコールバックシステム](https://pytorch-lightning.readthedocs.io/en/stable/extensions/callbacks.html) に基づいてトリガーされます。これにより、研究コードをエンジニアリングやログコードから適切に分離し続けることができます。 + +### 追加のコードなしでインテグレーションは何をログに記録しますか? + +モデルのチェックポイントを W&B に保存し、そこで表示したり、将来の Runs で使用するためにダウンロードしたりできます。また、GPU 使用率やネットワーク I/O などの [システムメトリクス](/models/ref/python/experiments/system-metrics)、ハードウェアや OS 情報などの環境情報、[コードの状態](/models/app/features/panels/code/)(git のコミットや diff パッチ、ノートブックの内容、セッション履歴を含む)、および標準出力に印刷されたすべての内容をキャプチャします。 + +### トレーニングセットアップで `wandb.run` を使用する必要がある場合はどうすればよいですか? + +アクセスする必要がある変数のスコープを自分自身で拡張する必要があります。言い換えれば、すべてのプロセスで初期条件が同じであることを確認してください。 + +```python +if os.environ.get("LOCAL_RANK", None) is None: + os.environ["WANDB_DIR"] = wandb.run.dir +``` + +初期条件が同じであれば、`os.environ["WANDB_DIR"]` を使用してモデルのチェックポイントディレクトリをセットアップできます。これにより、ランクが 0 以外のプロセスでも `wandb.run.dir` にアクセスできるようになります。 \ No newline at end of file diff --git a/ja/models/integrations/metaflow.mdx b/ja/models/integrations/metaflow.mdx new file mode 100644 index 0000000000..d488840bca --- /dev/null +++ b/ja/models/integrations/metaflow.mdx @@ -0,0 +1,198 @@ +--- +title: Metaflow +description: W&B を Metaflow と統合する方法。 +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +## 概要 + +[Metaflow](https://docs.metaflow.org) は、ML ワークフローの作成と実行のために [Netflix](https://netflixtechblog.com) によって開発されたフレームワークです。 + +このインテグレーションにより、ユーザーは Metaflow の [steps と flows](https://docs.metaflow.org/metaflow/basics) にデコレータを適用して、パラメータや アーティファクト を W&B に自動的に ログ 記録できるようになります。 + +* step をデコレートすると、その step 内の特定の型に対して ログ 記録のオン/オフを切り替えることができます。 +* flow をデコレートすると、その flow 内のすべての step に対して ログ 記録のオン/オフを切り替えることができます。 + +## クイックスタート + +### サインアップして APIキー を作成する + +APIキー は、お使いの環境を W&B に認証します。ユーザープロフィールから APIキー を生成できます。 + + + +1. 右上隅にあるユーザープロフィールのアイコンをクリックします。 +1. **User Settings** を選択し、**API Keys** セクションまでスクロールします。 + +### `wandb` ライブラリのインストールとログイン + +`wandb` ライブラリをローカルにインストールしてログインするには: + + +`wandb` バージョン 0.19.8 以下の場合は、`plum-dispatch` の代わりに `fastcore` バージョン 1.8.0 以下 (`fastcore<1.8.0`) をインストールしてください。 + + + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) を作成した APIキー に設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install -Uqqq metaflow "plum-dispatch<3.0.0" wandb + + wandb login + ``` + + +```bash +pip install -Uqqq metaflow "plum-dispatch<3.0.0" wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install -Uqqq metaflow "plum-dispatch<3.0.0" wandb + +import wandb +wandb.login() +``` + + + +### flows と steps をデコレートする + + + +step をデコレートすると、その step 内の特定の型に対して ログ 記録のオン/オフを切り替えることができます。 + +この例では、`start` 内のすべての Datasets と Models が ログ 記録されます。 + +```python +from wandb.integration.metaflow import wandb_log + +class WandbExampleFlow(FlowSpec): + @wandb_log(datasets=True, models=True, settings=wandb.Settings(...)) + @step + def start(self): + self.raw_df = pd.read_csv(...). # pd.DataFrame -> datasetとしてアップロード + self.model_file = torch.load(...) # nn.Module -> modelとしてアップロード + self.next(self.transform) +``` + + +flow をデコレートすることは、構成するすべての step をデフォルト設定でデコレートすることと同じです。 + +この場合、`WandbExampleFlow` 内のすべての step は、各 step を `@wandb_log(datasets=True, models=True)` でデコレートしたときと同様に、デフォルトで Datasets と Models を ログ 記録します。 + +```python +from wandb.integration.metaflow import wandb_log + +@wandb_log(datasets=True, models=True) # すべての @step をデコレート +class WandbExampleFlow(FlowSpec): + @step + def start(self): + self.raw_df = pd.read_csv(...). # pd.DataFrame -> datasetとしてアップロード + self.model_file = torch.load(...) # nn.Module -> modelとしてアップロード + self.next(self.transform) +``` + + +flow をデコレートすることは、すべての step をデフォルト設定でデコレートすることと同等です。つまり、後で特定の Step を別の `@wandb_log` でデコレートした場合、それは flow レベルのデコレーションを上書きします。 + +この例では: + +* `start` と `mid` は Datasets と Models の両方を ログ 記録します。 +* `end` は Datasets も Models も ログ 記録しません。 + +```python +from wandb.integration.metaflow import wandb_log + +@wandb_log(datasets=True, models=True) # start と mid をデコレートするのと同じ +class WandbExampleFlow(FlowSpec): + # この step は datasets と models をログ記録します + @step + def start(self): + self.raw_df = pd.read_csv(...). # pd.DataFrame -> datasetとしてアップロード + self.model_file = torch.load(...) # nn.Module -> modelとしてアップロード + self.next(self.mid) + + # この step も datasets と models をログ記録します + @step + def mid(self): + self.raw_df = pd.read_csv(...). # pd.DataFrame -> datasetとしてアップロード + self.model_file = torch.load(...) # nn.Module -> modelとしてアップロード + self.next(self.end) + + # この step は上書きされ、datasets も models もログ記録しません + @wandb_log(datasets=False, models=False) + @step + def end(self): + self.raw_df = pd.read_csv(...). + self.model_file = torch.load(...) +``` + + + +## プログラムによる データ へのアクセス + +取得した情報には 3 つの方法でアクセスできます。 ログ 記録中の元の Python プロセス内から [`wandb` クライアントライブラリ](/models/ref/python/) を使用する方法、[Web アプリ UI](/models/track/workspaces/) を使用する方法、または [パブリック API](/models/ref/python/public-api/) を使用してプログラムでアクセスする方法です。`Parameter` は W&B の [`config`](/models/) に保存され、[Overviewタブ](/models/runs/#overview-tab) で確認できます。`datasets`、`models`、および `others` は [W&B Artifacts](/models/artifacts/) に保存され、[Artifacts タブ](/models/runs/#artifacts-tab) で確認できます。Python の基本型は W&B の [`summary`](/models/) 辞書に保存され、Overview タブで確認できます。外部からプログラムでこの情報を取得するための API 使用方法の詳細は、[パブリック API ガイド](/models/track/public-api-guide/) を参照してください。 + +### クイックリファレンス + +| データ | クライアントライブラリ | UI | +| :--- | :--- | :--- | +| `Parameter(...)` | `wandb.Run.config` | Overviewタブ, Config | +| `datasets`, `models`, `others` | `wandb.Run.use_artifact("{var_name}:latest")` | Artifacts タブ | +| Python 基本型 (`dict`, `list`, `str` など) | `wandb.Run.summary` | Overviewタブ, Summary | + +### `wandb_log` kwargs (キーワード引数) + +| kwarg | オプション | +| :--- | :--- | +| `datasets` |
  • True: データセットであるインスタンス変数をログ記録する
  • False
| +| `models` |
  • True: モデルであるインスタンス変数をログ記録する
  • False
| +| `others` |
  • True: pickle としてシリアル化可能なその他のものをログ記録する
  • False
| +| `settings` |
  • wandb.Settings(...): この step または flow に対して独自の wandb 設定を指定する
  • None: wandb.Settings() を渡すのと同等

デフォルトでは以下のようになります:

  • settings.run_groupNone の場合、 \{flow_name\}/\{run_id\} に設定されます
  • settings.run_job_typeNone の場合、 \{run_job_type\}/\{step_name\} に設定されます
| + +## よくある質問 + +### 具体的に何を ログ 記録しますか?すべてのインスタンス変数とローカル変数を ログ 記録しますか? + +`wandb_log` はインスタンス変数のみを ログ 記録します。ローカル変数は **決して** ログ 記録されません。これは、不要な データの ログ 記録を避けるために役立ちます。 + +### どのデータ型が ログ 記録されますか? + +現在、以下の型をサポートしています: + +| ログ設定 | 型 | +| :--- | :--- | +| デフォルト (常にオン) |
  • dict, list, set, str, int, float, bool
| +| `datasets` |
  • pd.DataFrame
  • pathlib.Path
| +| `models` |
  • nn.Module
  • sklearn.base.BaseEstimator
| +| `others` |
  • pickle 可能 かつ JSON シリアル化可能なあらゆるもの
| + +### ログ 記録の 振る舞い をどのように 設定 できますか? + +| 変数の種類 | 振る舞い | 例 | データ型 | +| :--- | :--- | :--- | :--- | +| インスタンス | 自動ログ記録 | `self.accuracy` | `float` | +| インスタンス | `datasets=True` の場合にログ記録 | `self.df` | `pd.DataFrame` | +| インスタンス | `datasets=False` の場合はログ記録されない | `self.df` | `pd.DataFrame` | +| ローカル | 決してログ記録されない | `accuracy` | `float` | +| ローカル | 決してログ記録されない | `df` | `pd.DataFrame` | + +### Artifacts の リネージ (系統) は追跡されますか? + +はい。ある アーティファクト が step A の出力であり、step B の入力である場合、自動的に リネージ DAG を構築します。 + +この 振る舞い の例については、こちらの [ノートブック](https://colab.research.google.com/drive/1wZG-jYzPelk8Rs2gIM3a71uEoG46u_nG#scrollTo=DQQVaKS0TmDU) および対応する [W&B Artifacts ページ](https://wandb.ai/megatruong/metaflow_integration/artifacts/dataset/raw_df/7d14e6578d3f1cfc72fe/graph) を参照してください。 \ No newline at end of file diff --git a/ja/models/integrations/mmengine.mdx b/ja/models/integrations/mmengine.mdx new file mode 100644 index 0000000000..e0a9f7830d --- /dev/null +++ b/ja/models/integrations/mmengine.mdx @@ -0,0 +1,111 @@ +--- +title: MMEngine +--- + +[OpenMMLab](https://github.com-open-mmlab) による MMEngine は、PyTorch ベースのディープラーニングモデルをトレーニングするための基礎ライブラリです。MMEngine は OpenMMLab アルゴリズムライブラリ向けに次世代のトレーニングアーキテクチャーを実装しており、OpenMMLab 内の 30 以上のアルゴリズムライブラリに対して統一された実行基盤を提供します。そのコアコンポーネントには、トレーニングエンジン、評価エンジン、およびモジュール管理が含まれます。 + +[W&B](https://wandb.ai/site) は、専用の [`WandbVisBackend`](https://mmengine.readthedocs.io/en/latest/api/generated/mmengine.visualization.WandbVisBackend.html#mmengine.visualization.WandbVisBackend) を通じて MMEngine に直接統合されており、以下の用途に使用できます。 +- トレーニングおよび評価メトリクスのログ記録。 +- 実験設定(configs)のログ記録と管理。 +- グラフ、画像、スカラーなどの追加レコードのログ記録。 + +## 始めに + +`openmim` と `wandb` をインストールします。 + + + +``` bash +pip install -q -U openmim wandb +``` + + +``` bash +!pip install -q -U openmim wandb +``` + + + +次に、`mim` を使用して `mmengine` と `mmcv` をインストールします。 + + + +``` bash +mim install -q mmengine mmcv +``` + + +``` bash +!mim install -q mmengine mmcv +``` + + + +## MMEngine Runner で WandbVisBackend を使用する + +このセクションでは、[`mmengine.runner.Runner`](https://mmengine.readthedocs.io/en/latest/api/generated/mmengine.runner.Runner.html#mmengine.runner.Runner) を使用して `WandbVisBackend` を利用する一般的なワークフローを示します。 + +1. 可視化設定から `visualizer` を定義します。 + + ```python + from mmengine.visualization import Visualizer + + # 可視化設定を定義 + visualization_cfg = dict( + name="wandb_visualizer", + vis_backends=[ + dict( + type='WandbVisBackend', + init_kwargs=dict(project="mmengine"), + ) + ], + save_dir="runs/wandb" + ) + + # 可視化設定から visualizer のインスタンスを取得 + visualizer = Visualizer.get_instance(**visualization_cfg) + ``` + + + `init_kwargs` には、[W&B run の初期化](/models/ref/python/functions/init) 用の入力パラメータとして引数の辞書を渡します。 + + +2. `visualizer` を使用して `runner` を初期化し、 `runner.train()` を呼び出します。 + + ```python + from mmengine.runner import Runner + + # PyTorch のトレーニングヘルパーである mmengine Runner を構築 + runner = Runner( + model, + work_dir='runs/gan/', + train_dataloader=train_dataloader, + train_cfg=train_cfg, + optim_wrapper=opt_wrapper_dict, + visualizer=visualizer, # visualizer を渡す + ) + + # トレーニングを開始 + runner.train() + ``` + +## OpenMMLab コンピュータビジョンライブラリで WandbVisBackend を使用する + +`WandbVisBackend` は、[MMDetection](https://mmdetection.readthedocs.io/) などの OpenMMLab コンピュータビジョンライブラリを使用して実験を追跡する場合にも簡単に使用できます。 + +```python +# デフォルトのランタイム設定からベース設定を継承 +_base_ = ["../_base_/default_runtime.py"] + +# ベース設定の visualizer の vis_backends に +# WandbVisBackend の設定辞書を割り当てます +_base_.visualizer.vis_backends = [ + dict( + type='WandbVisBackend', + init_kwargs={ + 'project': 'mmdet', + 'entity': 'geekyrakshit' + }, + ), +] +``` \ No newline at end of file diff --git a/ja/models/integrations/mmf.mdx b/ja/models/integrations/mmf.mdx new file mode 100644 index 0000000000..42600a898a --- /dev/null +++ b/ja/models/integrations/mmf.mdx @@ -0,0 +1,47 @@ +--- +title: MMF +description: W&B を Meta AI の MMF と統合する方法。 +--- + +[Meta AI の MMF](https://github.com/facebookresearch/mmf) ライブラリの `WandbLogger` クラスを使用すると、トレーニング / バリデーションのメトリクス、システム(GPU および CPU)メトリクス、モデルのチェックポイント、および設定パラメータを W&B にログ記録できるようになります。 + +## 現在の機能 + +MMF の `WandbLogger` では、現在以下の機能がサポートされています。 + +* トレーニングおよびバリデーションのメトリクス +* 学習率の推移 +* W&B Artifacts へのモデルチェックポイントの保存 +* GPU および CPU のシステムメトリクス +* トレーニングの設定パラメータ + +## 設定パラメータ + +MMF の設定ファイルでは、W&B のログ記録を有効化およびカスタマイズするために、以下のオプションを利用できます。 + +``` +training: + wandb: + enabled: true + + # Entity は、Run を送信するユーザー名またはチーム名です。 + # デフォルトでは、ユーザーアカウントに Run がログ記録されます。 + entity: null + + # W&B で実験をログ記録する際に使用する Project 名 + project: mmf + + # プロジェクト内で実験をログ記録する際に使用する Experiment / Run 名。 + # デフォルトの実験名は ${training.experiment_name} です。 + name: ${training.experiment_name} + + # モデルのチェックポイント機能をオンにし、チェックポイントを W&B Artifacts に保存します + log_model_checkpoint: true + + # wandb.init() に渡したい追加の引数(例: job_type: 'train'、tags: ['tag1', 'tag2'] など) + +env: + # W&B のメタデータが保存されるディレクトリーへのパスを変更する場合 + # (デフォルト: env.log_dir) + wandb_logdir: ${env:MMF_WANDB_LOGDIR,} +``` \ No newline at end of file diff --git a/ja/models/integrations/nim.mdx b/ja/models/integrations/nim.mdx new file mode 100644 index 0000000000..5cb2c9d491 --- /dev/null +++ b/ja/models/integrations/nim.mdx @@ -0,0 +1,80 @@ +--- +title: NVIDIA NeMo Inference Microservice Deploy Job +--- + +W&B の モデル Artifacts を NVIDIA NeMo Inference Microservice (NIM) にデプロイします。これを行うには、W&B Launch を使用します。W&B Launch は、モデル Artifacts を NVIDIA NeMo Model に変換し、実行中の NIM/Triton サーバーにデプロイします。 + +W&B Launch は現在、以下の互換性のあるモデルタイプを受け入れています。 + +1. [Llama2](https://llama.meta.com/llama2/) +2. [StarCoder](https://github.com/bigcode-project/starcoder) +3. NV-GPT (近日公開予定) + + +デプロイ時間は、モデルやマシンのタイプによって異なります。ベースの Llama2-7b 設定では、Google Cloud の `a2-ultragpu-1g` で約1分かかります。 + + +## Quickstart + +1. まだ作成していない場合は、 [Launch キューを作成](/platform/launch/add-job-to-queue/) してください。以下にキュー設定の例を示します。 + + ```yaml + net: host + gpus: all # 特定の GPU セット、または `all` を指定してすべてを使用できます + runtime: nvidia # nvidia container runtime も必要です + volume: + - model-store:/model-store/ + ``` + + + image + + +2. プロジェクト 内にこのジョブを作成します。 + + ```bash + wandb job create -n "deploy-to-nvidia-nemo-inference-microservice" \ + -e $ENTITY \ + -p $PROJECT \ + -E jobs/deploy_to_nvidia_nemo_inference_microservice/job.py \ + -g andrew/nim-updates \ + git https://github.com/wandb/launch-jobs + ``` + +3. GPU マシンで エージェント を起動します。 + ```bash + wandb launch-agent -e $ENTITY -p $PROJECT -q $QUEUE + ``` +4. [Launch UI](https://wandb.ai/launch) から、希望の設定でデプロイ用の Launch ジョブを送信します。 + 1. CLI から送信することも可能です。 + ```bash + wandb launch -d gcr.io/playground-111/deploy-to-nemo:latest \ + -e $ENTITY \ + -p $PROJECT \ + -q $QUEUE \ + -c $CONFIG_JSON_FNAME + ``` + + image + +5. Launch UI でデプロイ プロセスの進行状況を追跡できます。 + + image + +6. 完了したら、すぐにエンドポイントに curl を実行して モデル をテストできます。モデル 名は常に `ensemble` になります。 + ```bash + #!/bin/bash + curl -X POST "http://0.0.0.0:9999/v1/completions" \ + -H "accept: application/json" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "ensemble", + "prompt": "Tell me a joke", + "max_tokens": 256, + "temperature": 0.5, + "n": 1, + "stream": false, + "stop": "string", + "frequency_penalty": 0.0 + }' + ``` \ No newline at end of file diff --git a/ja/models/integrations/openai-api.mdx b/ja/models/integrations/openai-api.mdx new file mode 100644 index 0000000000..14ee675f8e --- /dev/null +++ b/ja/models/integrations/openai-api.mdx @@ -0,0 +1,82 @@ +--- +title: OpenAI API +description: OpenAI API で W&B を使用する方法。 +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +W&B の OpenAI API インテグレーションを使用すると、ファインチューンされたモデルを含むすべての OpenAI モデルについて、リクエスト、レスポンス、トークン数、モデルの メタデータ を ログ に記録できます。 + + + +ファインチューニングの実験、モデル、データセットを追跡し、結果を同僚と共有する方法については、[OpenAI fine-tuning インテグレーション](./openai-fine-tuning) を参照してください。 + + +API の入力と出力を ログ に記録することで、異なるプロンプトのパフォーマンスを迅速に評価したり、モデルの 設定(temperature など)を比較したり、トークン使用量などの他の使用状況 メトリクス を追跡したりできます。 + + + + + + OpenAI API automatic logging + + + +## OpenAI Python API ライブラリのインストール + +W&B の autolog インテグレーションは、OpenAI バージョン 0.28.1 以下で動作します。 + +OpenAI Python API バージョン 0.28.1 をインストールするには、以下を実行してください。 +```python +pip install openai==0.28.1 +``` + +## OpenAI Python API の使用方法 + +### 1. autolog をインポートして初期化する +まず、`wandb.integration.openai` から `autolog` をインポートし、初期化します。 + +```python +import os +import openai +from wandb.integration.openai import autolog + +# プロジェクト名を指定して autolog を初期化 +autolog({"project": "gpt5"}) +``` + +オプションとして、`wandb.init()` が受け付ける 引数 を含んだ 辞書 を `autolog` に渡すことができます。これには、プロジェクト名、チーム名、Entity などが含まれます。[`wandb.init()`](/models/ref/python/functions/init) の詳細については、API リファレンス ガイド を参照してください。 + +### 2. OpenAI API を呼び出す +これで、OpenAI API への各呼び出しが自動的に W&B に ログ 記録されるようになります。 + +```python +os.environ["OPENAI_API_KEY"] = "XXX" + +chat_request_kwargs = dict( + model="gpt-3.5-turbo", + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"}, + {"role": "assistant", "content": "The Los Angeles Dodgers"}, + {"role": "user", "content": "Where was it played?"}, + ], +) +response = openai.ChatCompletion.create(**chat_request_kwargs) +``` + +### 3. OpenAI API の入力とレスポンスを確認する + +**ステップ 1** で `autolog` によって生成された W&B [run](/models/runs/) リンクをクリックします。これにより、W&B App のプロジェクト Workspace にリダイレクトされます。 + +作成した run を選択して、トレーステーブル、トレースタイムライン、および使用された OpenAI LLM の モデル アーキテクチャー を表示します。 + +## autolog をオフにする +OpenAI API の使用が終わったら、`disable()` を呼び出してすべての W&B プロセスを終了することをお勧めします。 + +```python +autolog.disable() +``` + +これで、入力と完了(completions)が W&B に ログ 記録され、分析 や同僚との共有ができるようになります。 \ No newline at end of file diff --git a/ja/models/integrations/openai-fine-tuning.mdx b/ja/models/integrations/openai-fine-tuning.mdx new file mode 100644 index 0000000000..58c52b95a7 --- /dev/null +++ b/ja/models/integrations/openai-fine-tuning.mdx @@ -0,0 +1,183 @@ +--- +title: OpenAI Fine-Tuning +description: W&B を使用して OpenAI Models をファインチューンする方法 +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +OpenAI GPT-3.5 または GPT-4 モデルのファインチューニングのメトリクスと設定を W&B にログ記録しましょう。 W&B のエコシステムを活用して、ファインチューニングの 実験管理 、 Models 、 Datasets を追跡し、その結果を同僚と共有できます。 + + +ファインチューニング可能なモデルの一覧については、 [OpenAI ドキュメント](https://platform.openai.com/docs/guides/fine-tuning/which-models-can-be-fine-tuned) を参照してください。 + + +W&B と OpenAI を連携させてファインチューニングを行う方法の補足情報については、 OpenAI ドキュメントの [W&B Integration](https://platform.openai.com/docs/guides/fine-tuning/weights-and-biases-integration) セクションも併せて参照してください。 + + +## OpenAI Python API のインストールまたは更新 + +W&B の OpenAI ファインチューニング・インテグレーションは、 OpenAI バージョン 1.0 以上で動作します。最新バージョンの [OpenAI Python API](https://pypi.org/project/openai/) ライブラリについては、 PyPI のドキュメントを確認してください。 + + +OpenAI Python API をインストールするには、以下を実行します: +```python +pip install openai +``` + +すでに OpenAI Python API がインストールされている場合は、以下で更新できます: +```python +pip install -U openai +``` + + +## OpenAI ファインチューニング結果の同期 + +W&B を OpenAI のファインチューニング API と統合し、ファインチューニングのメトリクスと設定を W&B にログ記録します。これを行うには、 `wandb.integration.openai.fine_tuning` モジュールから `WandbLogger` クラスを使用します。 + + +```python +from wandb.integration.openai.fine_tuning import WandbLogger + +# ファインチューニングのロジック + +WandbLogger.sync(fine_tune_job_id=FINETUNE_JOB_ID) +``` + + + OpenAI auto-scan feature + + +### ファインチューニングの同期 + +スクリプトから結果を同期します。 + + +```python +from wandb.integration.openai.fine_tuning import WandbLogger + +# 1行のコマンドで同期 +WandbLogger.sync() + +# オプション引数を渡して同期 +WandbLogger.sync( + fine_tune_job_id=None, + num_fine_tunes=None, + project="OpenAI-Fine-Tune", + entity=None, + overwrite=False, + model_artifact_name="model-metadata", + model_artifact_type="model", + **kwargs_wandb_init +) +``` + +### リファレンス + +| 引数 | 説明 | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------- | +| fine_tune_job_id | `client.fine_tuning.jobs.create` を使用してファインチューニングジョブを作成した際に取得する OpenAI Fine-Tune ID です。この引数が None(デフォルト)の場合、まだ同期されていないすべての OpenAI ファインチューニングジョブが W&B に同期されます。 | +| openai_client | 初期化済みの OpenAI クライアントを `sync` に渡します。クライアントが提供されない場合は、ロガー自体によって初期化されます。デフォルトは None です。 | +| num_fine_tunes | ID が指定されない場合、未同期のすべてのファインチューニングが W&B にログ記録されます。この引数を使用すると、同期する最新のファインチューニングの数を選択できます。例えば `num_fine_tunes` が 5 の場合、最新の 5 つのジョブが選択されます。 | +| project | ファインチューニングのメトリクス、 Models 、データなどがログ記録される W&B Projects 名です。デフォルトのプロジェクト名は "OpenAI-Fine-Tune" です。 | +| entity | Runs を送信する W&B の Users 名または Teams 名です。デフォルトでは、通常あなたのユーザー名であるデフォルトのエンティティが使用されます。 | +| overwrite | 強制的にログを記録し、同じファインチューニングジョブの既存の wandb run を上書きします。デフォルトは False です。 | +| wait_for_job_success | OpenAI のファインチューニングジョブは、開始してから完了までに通常時間がかかります。ジョブが完了次第すぐにメトリクスが W&B にログ記録されるように、この設定は 60 秒ごとにステータスが `succeeded` に変わったかを確認します。成功が検出されると、メトリクスが自動的に W&B に同期されます。デフォルトで True に設定されています。 | +| model_artifact_name | ログ記録されるモデルアーティファクトの名前です。デフォルトは `"model-metadata"` です。 | +| model_artifact_type | ログ記録されるモデルアーティファクトのタイプです。デフォルトは `"model"` です。 | +| \*\*kwargs_wandb_init | [`wandb.init()`](/models/ref/python/functions/init) に直接渡される追加の引数です。 | + +## データセットのバージョン管理と可視化 + +### バージョン管理 + +ファインチューニングのために OpenAI にアップロードしたトレーニングデータと検証データは、容易なバージョン管理のために W&B Artifacts として自動的にログ記録されます。以下は Artifacts におけるトレーニングファイルの表示例です。ここでは、このファイルをログ記録した W&B run、ログ記録された日時、データセットのバージョン、メタデータ、およびトレーニングデータからトレーニング済みモデルまでの DAG リネージを確認できます。 + + + W&B Artifacts with training datasets + + +### 可視化 + +データセットは W&B Tables として可視化され、データセットの探索、検索、インタラクションが可能です。以下に W&B Tables を使用して可視化されたトレーニングサンプルの例を示します。 + + + OpenAI data + + + +## ファインチューニング済みモデルとモデルのバージョン管理 + +OpenAI はファインチューニング済みモデルの ID を提供します。モデルの重みに直接アクセスすることはできませんが、 `WandbLogger` はモデルの詳細(ハイパーパラメーター、データファイル ID など)と `fine_tuned_model` ID を含む `model_metadata.json` ファイルを作成し、 W&B Artifacts としてログ記録します。 + +このモデル(メタデータ)アーティファクトは、さらに [W&B Registry](/models/registry/) のモデルにリンクさせることができます。 + + + OpenAI model metadata + + + +## よくある質問 + +### ファインチューニングの結果を W&B でチームと共有するにはどうすればよいですか? + +以下のように、チームアカウントを指定してファインチューニングジョブをログ記録してください: + +```python +WandbLogger.sync(entity="YOUR_TEAM_NAME") +``` + +### Runs を整理するにはどうすればよいですか? + +W&B Runs は自動的に整理され、ジョブタイプ、ベースモデル、学習率、トレーニングファイル名、その他のハイパーパラメーターなどの設定パラメータに基づいてフィルタリングやソートが可能です。 + +さらに、 Run の名前を変更したり、ノートを追加したり、タグを作成してグループ化したりすることもできます。 + +整理ができたら、 Workspace を保存して Reports の作成に使用し、 Runs や保存された Artifacts (トレーニング/検証ファイル)からデータをインポートできます。 + +### ファインチューニングしたモデルにはどうすればアクセスできますか? + +ファインチューニング済みモデルの ID は、アーティファクト( `model_metadata.json` )および設定(config)として W&B にログ記録されます。 + +```python +import wandb + +with wandb.init(project="OpenAI-Fine-Tune", entity="YOUR_TEAM_NAME") as run: + ft_artifact = run.use_artifact("ENTITY/PROJECT/model_metadata:VERSION") + artifact_dir = ft_artifact.download() +``` + +ここで `VERSION` は以下のいずれかです: + +* `v2` のようなバージョン番号 +* `ft-xxxxxxxxx` のようなファインチューン ID +* `latest` のように自動的に、または手動で追加されたエイリアス + +その後、ダウンロードした `model_metadata.json` ファイルを読み取ることで `fine_tuned_model` ID にアクセスできます。 + +### ファインチューニングの同期が正常に行われなかった場合はどうすればよいですか? + +ファインチューニングが W&B に正常にログ記録されなかった場合は、 `overwrite=True` を使用してファインチューニングジョブ ID を渡してください: + +```python +WandbLogger.sync( + fine_tune_job_id="FINE_TUNE_JOB_ID", + overwrite=True, +) +``` + +### W&B でデータセットとモデルを追跡できますか? + +トレーニングデータと検証データは Artifacts として自動的に W&B にログ記録されます。ファインチューニング済みモデルの ID を含むメタデータも Artifacts としてログ記録されます。 + +`wandb.Artifact` や `wandb.Run.log` などの低レベル W&B API を使用して、パイプラインを常に制御することも可能です。これにより、データとモデルの完全な追跡(トレーサビリティ)が可能になります。 + + + OpenAI tracking FAQ + + +## リソース + +* [OpenAI ファインチューニング ドキュメント](https://platform.openai.com/docs/guides/fine-tuning/):非常に詳細で、多くの有用なヒントが含まれています。 +* [デモ Colab](https://wandb.me/openai-colab) +* [How to Fine-Tune Your OpenAI GPT-3.5 and GPT-4 Models with W&B](https://wandb.me/openai-report) レポート \ No newline at end of file diff --git a/ja/models/integrations/openai-gym.mdx b/ja/models/integrations/openai-gym.mdx new file mode 100644 index 0000000000..59888f85dd --- /dev/null +++ b/ja/models/integrations/openai-gym.mdx @@ -0,0 +1,20 @@ +--- +title: OpenAI Gym +description: W&B を OpenAI Gym と連携させる方法。 +--- + + +「2021年以来 Gym をメンテナンスしてきたチームは、今後のすべての開発を [Gymnasium](https://github.com/Farama-Foundation/Gymnasium) (Gym のドロップインリプレイスメント:import gymnasium as gym)に移行しました。Gym は今後アップデートを受け取ることはありません。」([ソース](https://github.com/openai/gym#the-team-that-has-been-maintaining-gym-since-2021-has-moved-all-future-development-to-gymnasium-a-drop-in-replacement-for-gym-import-gymnasium-as-gym-and-gym-will-not-be-receiving-any-future-updates-please-switch-over-to-gymnasium-as-soon-as-youre-able-to-do-so-if-youd-like-to-read-more-about-the-story-behind-this-switch-please-check-out-this-blog-post)) + +Gym は現在アクティブにメンテナンスされているプロジェクトではないため、Gymnasium との インテグレーション をお試しください。 + + +[OpenAI Gym](https://github.com/openai/gym) を使用している場合、W&B は `gym.wrappers.Monitor` によって生成された 環境 のビデオを自動的に ログ 記録します。[`wandb.init`](/models/ref/python/functions/init) の `monitor_gym` キーワード 引数 を `True` に設定するか、`wandb.gym.monitor()` を呼び出すだけです。 + +私たちの gym インテグレーション は非常に軽量です。`gym` から ログ 記録される [ビデオファイルの名前を確認](https://github.com/wandb/wandb/blob/master/wandb/integration/gym/__init__.py#L15) し、その名前に基づいて命名するか、一致するものが見つからない場合は `"videos"` という名前にフォールバックします。より詳細に制御したい場合は、いつでも手動で [ビデオをログ記録](/models/track/log/media/) することができます。 + +[CleanRL](https://github.com/vwxyzjn/cleanrl) による [OpenRL Benchmark](https://wandb.me/openrl-benchmark-report) では、OpenAI Gym の例にこの インテグレーション を使用しています。gym の使用方法を示すソース コード([特定の run で使用された特定のコード](https://wandb.ai/cleanrl/cleanrl.benchmark/runs/2jrqfugg/code?workspace=user-costa-huang) を含む)を確認できます。 + + + OpenAI Gym dashboard + \ No newline at end of file diff --git a/ja/models/integrations/paddledetection.mdx b/ja/models/integrations/paddledetection.mdx new file mode 100644 index 0000000000..6b01db964e --- /dev/null +++ b/ja/models/integrations/paddledetection.mdx @@ -0,0 +1,107 @@ +--- +title: PaddleDetection +description: W&B を PaddleDetection と統合する方法。 +--- + +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + + + +[PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection) は、 [PaddlePaddle](https://github.com/PaddlePaddle/Paddle) をベースとしたエンドツーエンドの物体検出開発キットです。ネットワークコンポーネント、データ拡張、損失関数などの設定可能なモジュールを使用して、様々な主要な物体の検出、インスタンスセグメンテーション、およびキーポイントの追跡と検出を行います。 + +PaddleDetection には W&B インテグレーションが組み込まれており、すべてのトレーニングとバリデーションの メトリクス 、および モデル の チェックポイント とそれに対応する メタデータ を ログ に記録できます。 + +PaddleDetection の `WandbLogger` は、トレーニング中のトレーニングおよび評価 メトリクス と、 モデル の チェックポイント を W&B に ログ 記録します。 + +`COCO2017` データセット の サブセット を使用して、YOLOX モデル を PaddleDetection と統合する方法を説明している [W&B ブログポスト](https://wandb.ai/manan-goel/PaddleDetectionYOLOX/reports/Object-Detection-with-PaddleDetection-and-W-B--VmlldzoyMDU4MjY0) をご覧ください。 + +## サインアップして APIキー を作成する + +APIキー は、使用しているマシンを W&B に対して認証します。 ユーザー プロフィールから APIキー を生成できます。 + + + +1. 右上隅にある ユーザー プロフィールアイコンをクリックします。 +1. **User Settings** を選択し、 **API Keys** セクションまでスクロールします。 + +## `wandb` ライブラリ のインストールとログイン + +ローカルに `wandb` ライブラリ をインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) を作成した APIキー に設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリ をインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +## トレーニングスクリプト で `WandbLogger` を有効化する + + + +[PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection/) の `train.py` への 引数 を介して wandb を使用するには: + +* `--use_wandb` フラグを追加します +* 最初の wandb 引数 の前には `-o` を付ける必要があります(これは一度だけ渡す必要があります) +* 各 引数 には `"wandb-"` というプレフィックスを含める必要があります。例えば、 [`wandb.init()`](/models/ref/python/functions/init) に渡される 引数 には `wandb-` プレフィックスが付きます + +```shell +python tools/train.py + -c config.yml \ + --use_wandb \ + -o \ + wandb-project=MyDetector \ + wandb-entity=MyTeam \ + wandb-save_dir=./logs +``` + + +`config.yml` ファイルの `wandb` キー の下に wandb の 引数 を追加します: + +``` +wandb: + project: MyProject + entity: MyTeam + save_dir: ./logs +``` + +`train.py` ファイルを実行すると、 W&B Dashboard へのリンクが生成されます。 + + + A W&B Dashboard + + + + +## フィードバックまたは問題 + +W&B インテグレーションに関するフィードバックや問題がある場合は、 [PaddleDetection GitHub](https://github.com/PaddlePaddle/PaddleDetection) で Issue を作成するか、 support@wandb.com までメールでお問い合わせください。 \ No newline at end of file diff --git a/ja/models/integrations/paddleocr.mdx b/ja/models/integrations/paddleocr.mdx new file mode 100644 index 0000000000..e2c8f51750 --- /dev/null +++ b/ja/models/integrations/paddleocr.mdx @@ -0,0 +1,104 @@ +--- +title: PaddleOCR +description: PaddleOCR と W&B を統合する方法。 +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) は、PaddlePaddle で実装された、マルチリンガルで優れた最先端の実用的な OCR ツールの作成を目指しています。これにより、ユーザーはより良い モデル をトレーニングし、実務に適用できるようになります。PaddleOCR は、OCR に関連するさまざまな cutting-edge なアルゴリズムをサポートし、産業用ソリューションを開発しています。現在 PaddleOCR は W&B と インテグレーション されており、トレーニングおよび 評価メトリクス を、対応する メタデータ を含む モデル の チェックポイント と共に ログ 記録できるようになりました。 + +## ブログと Colab の例 + +ICDAR2015 データセット を使用して PaddleOCR で モデル をトレーニングする方法については、[こちら](https://wandb.ai/manan-goel/text_detection/reports/Train-and-Debug-Your-OCR-Models-with-PaddleOCR-and-W-B--VmlldzoyMDUwMDIw) をご覧ください。また、[Google Colab](https://colab.research.google.com/drive/1id2VTIQ5-M1TElAkzjzobUCdGeJeW-nV?usp=sharing) も用意されており、対応するライブ W&B ダッシュボード は [こちら](https://wandb.ai/manan-goel/text_detection) からアクセス可能です。この ブログ の中国語版もこちらにあります: [W&B对您的OCR模型进行训练和调试](https://wandb.ai/wandb_fc/chinese/reports/W-B-OCR---VmlldzoyMDk1NzE4) + +## サインアップと APIキー の作成 + +APIキー は、お使いのデバイスを W&B に認証するために使用されます。 ユーザー プロフィールから APIキー を生成できます。 + + + +1. 右上隅にある ユーザー プロフィールアイコンをクリックします。 +1. **User Settings** を選択し、 **API Keys** セクションまでスクロールします。 + +## `wandb` ライブラリ のインストールとログイン + +ローカル環境に `wandb` ライブラリ をインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) に APIキー を設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリ をインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +## `config.yml` ファイルへの wandb の追加 + +PaddleOCR では、設定変数を yaml ファイルで提供する必要があります。設定 yaml ファイルの最後に以下のスニペットを追加すると、すべての トレーニング およびバリデーション メトリクス が、モデル の チェックポイント と共に W&B ダッシュボード に自動的に ログ 記録されます。 + +```python +Global: + use_wandb: True +``` + +[`wandb.init()`](/models/ref/python/functions/init) に渡したい追加のオプション 引数 も、yaml ファイルの `wandb` ヘッダーの下に追加できます。 + +``` +wandb: + project: CoolOCR # (オプション) これは wandb の プロジェクト 名です + entity: my_team # (オプション) wandb の チーム を使用している場合は、ここに チーム 名を渡すことができます + name: MyOCRModel # (オプション) これは wandb の run の名前です +``` + +## `train.py` への `config.yml` ファイルの受け渡し + +その後、yaml ファイルを PaddleOCR リポジトリにある [トレーニングスクリプト](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.5/tools/train.py) の 引数 として渡します。 + +```bash +python tools/train.py -c config.yml +``` + +W&B を有効にして `train.py` ファイルを実行すると、W&B ダッシュボード にアクセスするためのリンクが生成されます。 + + + PaddleOCR training dashboard + + + + PaddleOCR validation dashboard + + + + Text Detection Model dashboard + + +## フィードバックや問題の報告 + +W&B インテグレーション に関するフィードバックや問題がある場合は、 [PaddleOCR GitHub](https://github.com/PaddlePaddle/PaddleOCR) で Issue を作成するか、 support@wandb.com までメールでお問い合わせください。 \ No newline at end of file diff --git a/ja/models/integrations/prodigy.mdx b/ja/models/integrations/prodigy.mdx new file mode 100644 index 0000000000..de669d89ba --- /dev/null +++ b/ja/models/integrations/prodigy.mdx @@ -0,0 +1,40 @@ +--- +title: Prodigy +description: W&B を Prodigy と統合する方法。 +--- + +[Prodigy](https://prodi.gy/) は、機械学習 モデル のトレーニングおよび評価用の データ 作成、エラー 分析 、データの検査とクリーニングのためのアノテーション ツール です。[W&B Tables](/models/tables/tables-walkthrough/) を使用すると、W&B 内で Datasets の ログ 記録、可視化 、分析 、共有などを行うことができます。 + +[W&B と Prodigy のインテグレーション](https://github.com/wandb/wandb/blob/master/wandb/integration/prodigy/prodigy.py) を使用すると、Prodigy でアノテーションした データセット を W&B に直接アップロードして Tables で利用するための、シンプルで使いやすい機能が追加されます。 + +次のような数行の コード を実行するだけで: + +```python +import wandb +from wandb.integration.prodigy import upload_dataset + +# "prodigy" という名前のプロジェクトで run を初期化 +with wandb.init(project="prodigy"): + # Prodigy のデータセット "news_headlines_ner" をアップロード + upload_dataset("news_headlines_ner") +``` + +次のような、視覚的でインタラクティブな共有可能な テーブル を作成できます: + + + Prodigy annotation table + + +## クイックスタート + +`wandb.integration.prodigy.upload_dataset` を使用して、アノテーション済みの Prodigy データセットをローカルの Prodigy データベースから W&B の [Table](/models/ref/python/data-types/table) 形式で直接アップロードします。インストールやセットアップを含む Prodigy の詳細については、[Prodigy documentation](https://prodi.gy/docs/) を参照してください。 + +W&B は、画像や名前付きエンティティ(NER)フィールドを、それぞれ [`wandb.Image`](/models/ref/python/data-types/image) と [`wandb.Html`](/models/ref/python/data-types/html) に自動的に変換しようと試みます。これらの 可視化 を含めるために、生成される テーブル に追加の列が加わることがあります。 + +## 詳細な例を確認する + +W&B と Prodigy の インテグレーション によって生成された 可視化 の例については、[Visualizing Prodigy Datasets Using W&B Tables](https://wandb.ai/kshen/prodigy/reports/Visualizing-Prodigy-Datasets-Using-W-B-Tables--Vmlldzo5NDE2MTc) をご覧ください。 + +## spaCy もお使いですか? + +W&B は spaCy との インテグレーション も提供しています。 [ドキュメントはこちら](/models/integrations/spacy) をご覧ください。 \ No newline at end of file diff --git a/ja/models/integrations/pytorch-geometric.mdx b/ja/models/integrations/pytorch-geometric.mdx new file mode 100644 index 0000000000..0c8936da0d --- /dev/null +++ b/ja/models/integrations/pytorch-geometric.mdx @@ -0,0 +1,174 @@ +--- +title: PyTorch Geometric +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +[PyTorch Geometric](https://github.com/pyg-team/pytorch_geometric) (PyG) は、幾何学的ディープラーニングにおいて最も人気のあるライブラリの 1 つです。W&B は PyG と非常に相性が良く、グラフの可視化や Experiments の追跡をスムーズに行うことができます。 + +PyTorch Geometric をインストールした後、以下の手順に従って開始してください。 + +## サインアップと APIキー の作成 + +APIキー は、お使いのマシンを W&B に対して認証するために使用されます。 APIキー はユーザープロフィールから生成できます。 + + + +1. 右上隅にあるユーザープロフィールのアイコンをクリックします。 +1. **User Settings** を選択し、 **API Keys** セクションまでスクロールします。 + +## `wandb` ライブラリのインストールとログイン + +ローカル環境に `wandb` ライブラリをインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) に作成した APIキー を設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +## グラフの可視化 + +エッジの数やノードの数など、入力グラフの詳細を保存できます。W&B は Plotly チャートや HTML パネルのログ記録をサポートしているため、グラフ用に作成したあらゆる可視化を W&B にログとして記録できます。 + +### PyVis の使用 + +以下のスニペットは、PyVis と HTML を使用して可視化を行う方法を示しています。 + +```python +from pyvis.network import Network +import wandb + +# 'graph_vis' というプロジェクトで run を初期化 +with wandb.init(project=’graph_vis’) as run: + net = Network(height="750px", width="100%", bgcolor="#222222", font_color="white") + + # PyG グラフから PyVis ネットワークにエッジを追加 + for e in tqdm(g.edge_index.T): + src = e[0].item() + dst = e[1].item() + + net.add_node(dst) + net.add_node(src) + + net.add_edge(src, dst, value=0.1) + + # PyVis の可視化を HTML ファイルとして保存 + net.show("graph.html") + # HTML ファイルを W&B にログ記録 + run.log({"eda/graph": wandb.Html("graph.html")}) +``` + + + Interactive graph visualization + + +### Plotly の使用 + +Plotly を使用してグラフの可視化を作成するには、まず PyG グラフを networkx オブジェクトに変換する必要があります。その後、ノードとエッジの両方に対して Plotly の scatter plot を作成します。以下のスニペットをこのタスクに使用できます。 + +```python +def create_vis(graph): + G = to_networkx(graph) + pos = nx.spring_layout(G) + + edge_x = [] + edge_y = [] + for edge in G.edges(): + x0, y0 = pos[edge[0]] + x1, y1 = pos[edge[1]] + edge_x.append(x0) + edge_x.append(x1) + edge_x.append(None) + edge_y.append(y0) + edge_y.append(y1) + edge_y.append(None) + + edge_trace = go.Scatter( + x=edge_x, y=edge_y, + line=dict(width=0.5, color='#888'), + hoverinfo='none', + mode='lines' + ) + + node_x = [] + node_y = [] + for node in G.nodes(): + x, y = pos[node] + node_x.append(x) + node_y.append(y) + + node_trace = go.Scatter( + x=node_x, y=node_y, + mode='markers', + hoverinfo='text', + line_width=2 + ) + + fig = go.Figure(data=[edge_trace, node_trace], layout=go.Layout()) + + return fig + + +with wandb.init(project=’visualize_graph’) as run: + # Plotly オブジェクトを W&B にログ記録 + run.log({‘graph’: wandb.Plotly(create_vis(graph))}) +``` + + + A visualization created using the example function and logged inside a W&B Table. + + +## メトリクスのログ記録 + +W&B を使用して、損失関数(loss)や精度(accuracy)などの実験と関連メトリクスを追跡できます。トレーニングループに以下の行を追加してください。 + +```python +with wandb.init(project="my_project", entity="my_entity") as run: + # メトリクスを W&B にログ記録 + run.log({ + 'train/loss': training_loss, + 'train/acc': training_acc, + 'val/loss': validation_loss, + 'val/acc': validation_acc + }) +``` + + + hits@K metrics over epochs + + +## その他のリソース + +- [Recommending Amazon Products using Graph Neural Networks in PyTorch Geometric](https://wandb.ai/manan-goel/gnn-recommender/reports/Recommending-Amazon-Products-using-Graph-Neural-Networks-in-PyTorch-Geometric--VmlldzozMTA3MzYw#what-does-the-data-look-like?) +- [Point Cloud Classification using PyTorch Geometric](https://wandb.ai/geekyrakshit/pyg-point-cloud/reports/Point-Cloud-Classification-using-PyTorch-Geometric--VmlldzozMTExMTE3) +- [Point Cloud Segmentation using PyTorch Geometric](https://wandb.ai/wandb/point-cloud-segmentation/reports/Point-Cloud-Segmentation-using-Dynamic-Graph-CNN--VmlldzozMTk5MDcy) \ No newline at end of file diff --git a/ja/models/integrations/pytorch.mdx b/ja/models/integrations/pytorch.mdx new file mode 100644 index 0000000000..d213bc7c83 --- /dev/null +++ b/ja/models/integrations/pytorch.mdx @@ -0,0 +1,106 @@ +--- +title: PyTorch +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +PyTorch は Python で最も人気のある ディープラーニング フレームワーク の一つであり、特に研究者の間で広く利用されています。 W&B は、 勾配 の ログ 記録から CPU および GPU での コード のプロファイリングまで、 PyTorch を第一級市民としてサポートしています。 + +また、 [example repo](https://github.com/wandb/examples) では スクリプト の例を確認できます。これには、 [Fashion MNIST](https://github.com/wandb/examples/tree/master/examples/pytorch/pytorch-cnn-fashion) で [Hyperband](https://arxiv.org/abs/1603.06560) を使用した ハイパーパラメーター 最適化の例や、それによって生成された [W&B Dashboard](https://wandb.ai/wandb/keras-fashion-mnist/runs/5z1d85qs) が含まれています。 + +## `run.watch` による 勾配 の ログ 記録 + +勾配 を自動的に ログ 記録するには、 [`wandb.Run.watch()`](/models/ref/python/experiments/run.md/#method-runwatch) を呼び出し、 PyTorch モデル を渡します。 + +```python +import wandb + +with wandb.init(config=args) as run: + + model = ... # モデルのセットアップ + + # マジックメソッド + run.watch(model, log_freq=100) + + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + output = model(data) + loss = F.nll_loss(output, target) + loss.backward() + optimizer.step() + if batch_idx % args.log_interval == 0: + run.log({"loss": loss}) +``` + +同じ スクリプト 内で複数の モデル を追跡する必要がある場合は、各 モデル に対して個別に [`wandb.Run.watch()`](/models/ref/python/experiments/run/#method-runwatch) を呼び出すことができます。 + + +勾配、 メトリクス、およびグラフは、順伝播(forward pass) _および_ 逆伝播(backward pass)の後に `wandb.Run.log()` が呼び出されるまで ログ 記録されません。 + + +## 画像とメディアの ログ 記録 + +画像 データを含む PyTorch の `Tensors` を [`wandb.Image`](/models/ref/python/data-types/image) に渡すと、 [`torchvision`](https://pytorch.org/vision/stable/index.html) のユーティリティが使用され、自動的に画像に変換されます。 + +```python +with wandb.init(project="my_project", entity="my_entity") as run: + images_t = ... # PyTorch Tensorsとして画像を生成またはロード + run.log({"examples": [wandb.Image(im) for im in images_t]}) +``` + +PyTorch やその他の フレームワーク でリッチメディアを W&B に ログ 記録する方法の詳細については、 [メディアロギングガイド](/models/track/log/media/) を参照してください。 + +メディアと一緒に、 モデル の 予測 や派生した メトリクス などの 情報 を含めたい場合は、 `wandb.Table` を使用します。 + +```python +with wandb.init() as run: + my_table = wandb.Table() + + my_table.add_column("image", images_t) + my_table.add_column("label", labels) + my_table.add_column("class_prediction", predictions_t) + + # W&BにTableをログ記録 + run.log({"mnist_predictions": my_table}) +``` + + + PyTorch model results + + +データセット や モデル の ログ 記録と可視化の詳細については、 [W&B Tables ガイド](/models/tables/) を参照してください。 + +## PyTorch コード のプロファイリング + + + PyTorch execution traces + + +W&B は [PyTorch Kineto](https://github.com/pytorch/kineto) の [Tensorboard プラグイン](https://github.com/pytorch/kineto/blob/master/tb_plugin/README) と直接連携し、 PyTorch コード のプロファイリング、 CPU および GPU 通信の詳細な検査、ボトルネックの特定と最適化のための ツール を提供します。 + +```python +profile_dir = "path/to/run/tbprofile/" +profiler = torch.profiler.profile( + schedule=schedule, # スケジューリングの詳細についてはprofilerのドキュメントを参照 + on_trace_ready=torch.profiler.tensorboard_trace_handler(profile_dir), + with_stack=True, +) + +with profiler: + ... # ここでプロファイリングしたいコードを実行 + # 詳細な使用方法についてはprofilerのドキュメントを参照 + +# wandb Artifactを作成 +profile_art = wandb.Artifact("trace", type="profile") +# pt.trace.jsonファイルをArtifactに追加 +profile_art.add_file(glob.glob(profile_dir + ".pt.trace.json")) +# artifactを保存 +profile_art.save() +``` + +動作するサンプル コード は、 [この Colab](https://wandb.me/trace-colab) で確認および実行できます。 + + +インタラクティブな トレース 閲覧 ツール は Chrome Trace Viewer に基づいており、 Google Chrome ブラウザで最適に動作します。 + \ No newline at end of file diff --git a/ja/models/integrations/ray-tune.mdx b/ja/models/integrations/ray-tune.mdx new file mode 100644 index 0000000000..bb77601c2d --- /dev/null +++ b/ja/models/integrations/ray-tune.mdx @@ -0,0 +1,112 @@ +--- +title: Ray Tune +description: W&B を Ray Tune と統合する方法。 +--- + +W&B は、2つの軽量なインテグレーションを提供することで [Ray](https://github.com/ray-project/ray) と連携します。 + +- `WandbLoggerCallback` 関数は、Tune に報告されたメトリクスを自動的に Wandb API にログ記録します。 +- `setup_wandb()` 関数は、Function API と併用でき、Tune のトレーニング情報を使用して Wandb API を自動的に初期化します。通常通り Wandb API を使用でき、例えば `run.log()` を使ってトレーニング プロセス をログ記録することが可能です。 + +## インテグレーションの設定 + +```python +from ray.air.integrations.wandb import WandbLoggerCallback +``` + +Wandb の 設定 は、`tune.run()` の config パラメータに wandb キーを渡すことで行われます(以下の例を参照)。 + +wandb config エントリの内容は、キーワード引数として `wandb.init()` に渡されます。ただし、以下の設定は例外で、`WandbLoggerCallback` 自体の設定に使用されます。 + +### パラメータ + +`project (str)`: Wandb Projects の名前。必須。 + +`api_key_file (str)`: Wandb APIキー を含むファイルへのパス。 + +`api_key (str)`: Wandb APIキー。`api_key_file` を設定する代わりに使用します。 + +`excludes (list)`: ログから除外するメトリクスのリスト。 + +`log_config (bool)`: 結果辞書の config パラメータをログに記録するかどうか。デフォルトは False です。 + +`upload_checkpoints (bool)`: True の場合、モデルの チェックポイント が Artifacts としてアップロードされます。デフォルトは False です。 + +### 例 + +```python +from ray import tune, train +from ray.air.integrations.wandb import WandbLoggerCallback + + +def train_fc(config): + for i in range(10): + # メトリクスを報告 + train.report({"mean_accuracy": (i + config["alpha"]) / 10}) + + +tuner = tune.Tuner( + train_fc, + param_space={ + "alpha": tune.grid_search([0.1, 0.2, 0.3]), + "beta": tune.uniform(0.5, 1.0), + }, + run_config=train.RunConfig( + callbacks=[ + WandbLoggerCallback( + project="", api_key="", log_config=True + ) + ] + ), +) + +results = tuner.fit() +``` + +## setup_wandb + +```python +from ray.air.integrations.wandb import setup_wandb +``` + +このユーティリティ関数は、Ray Tune で使用するために Wandb を初期化するのに役立ちます。基本的な使い方は、トレーニング関数内で `setup_wandb()` を呼び出します。 + +```python +from ray.air.integrations.wandb import setup_wandb + + +def train_fn(config): + # wandb を初期化 + wandb = setup_wandb(config) + run = wandb.init( + project=config["wandb"]["project"], + api_key_file=config["wandb"]["api_key_file"], + ) + + for i in range(10): + loss = config["a"] + config["b"] + # run.log を使用してログを記録 + run.log({"loss": loss}) + tune.report(loss=loss) + run.finish() + + +tuner = tune.Tuner( + train_fn, + param_space={ + # ここで探索空間を定義 + "a": tune.choice([1, 2, 3]), + "b": tune.choice([4, 5, 6]), + # wandb の設定 + "wandb": {"project": "Optimization_Project", "api_key_file": "/path/to/file"}, + }, +) +results = tuner.fit() +``` + +## サンプルコード + +インテグレーションの動作を確認するためのサンプルをいくつか用意しました。 + +* [Colab](https://wandb.me/raytune-colab): インテグレーションを試せるシンプルな デモ。 +* [Dashboard](https://wandb.ai/anmolmann/ray_tune): この例から生成された ダッシュボード を表示。 \ No newline at end of file diff --git a/ja/models/integrations/sagemaker.mdx b/ja/models/integrations/sagemaker.mdx new file mode 100644 index 0000000000..b7c95e6a37 --- /dev/null +++ b/ja/models/integrations/sagemaker.mdx @@ -0,0 +1,37 @@ +--- +title: SageMaker +description: W&B を Amazon SageMaker と統合する方法。 +--- + +W&B は [Amazon SageMaker](https://aws.amazon.com/sagemaker/) と連携しており、ハイパーパラメーターの自動読み込み、分散実行された Runs のグルーピング、およびチェックポイントからの実行再開を自動的に行います。 + +## 認証 + +W&B はトレーニングスクリプトからの相対パスで `secrets.env` という名前のファイルを検索し、`wandb.init()` が呼び出されたときにそれらを環境変数にロードします。実験を起動するために使用するスクリプト内で `wandb.sagemaker_auth(path="source_dir")` を呼び出すことで、`secrets.env` ファイルを生成できます。このファイルは必ず `.gitignore` に追加してください! + +## 既存の Estimator + +SageMaker の事前設定済み Estimator を使用している場合は、ソースディレクトリに wandb を含む `requirements.txt` を追加する必要があります。 + +```text +wandb +``` + +Python 2 を実行している Estimator を使用している場合は、wandb をインストールする前に、この [wheel](https://pythonwheels.com) から直接 `psutil` をインストールする必要があります。 + +```text +https://wheels.galaxyproject.org/packages/psutil-5.4.8-cp27-cp27mu-manylinux1_x86_64.whl +wandb +``` + +完全なサンプルについては [GitHub](https://github.com/wandb/examples/tree/master/examples/pytorch/pytorch-cifar10-sagemaker) を確認し、詳細は [ブログ](https://wandb.ai/site/articles/running-sweeps-with-sagemaker) をご覧ください。 + +また、SageMaker と W&B を使用した感情分析器のデプロイに関する [Deploy Sentiment Analyzer Using SageMaker and W&B チュートリアル](https://wandb.ai/authors/sagemaker/reports/Deploy-Sentiment-Analyzer-Using-SageMaker-and-W-B--VmlldzoxODA1ODE) も併せてご参照ください。 + + +W&B の sweep agent は、SageMaker インテグレーションがオフになっている場合にのみ、SageMaker ジョブ内で期待通りに動作します。`wandb.init` の呼び出しを以下のように修正して、SageMaker インテグレーションをオフにしてください。 + +```python +wandb.init(..., settings=wandb.Settings(sagemaker_disable=True)) +``` + \ No newline at end of file diff --git a/ja/models/integrations/scikit.mdx b/ja/models/integrations/scikit.mdx new file mode 100644 index 0000000000..cd5ed8f8ef --- /dev/null +++ b/ja/models/integrations/scikit.mdx @@ -0,0 +1,338 @@ +--- +title: Scikit-Learn +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +wandb を使用すると、わずか数行の コード で scikit-learn モデル のパフォーマンスを可視化し、比較することができます。[例を試す →](https://wandb.me/scikit-colab) + +## はじめに + +### サインアップして APIキー を作成する + +APIキー は、使用しているマシンを W&B に対して認証します。ユーザープロファイルから APIキー を生成できます。 + + + +1. 右上隅にあるユーザープロファイルアイコンをクリックします。 +1. **User Settings** を選択し、**API Keys** セクションまでスクロールします。 + +### `wandb` ライブラリのインストールとログイン + +ローカルに `wandb` ライブラリをインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) に APIキー を設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +### メトリクス の ログ 記録 + +```python +import wandb + +wandb.init(project="visualize-sklearn") as run: + + y_pred = clf.predict(X_test) + accuracy = sklearn.metrics.accuracy_score(y_true, y_pred) + + # 時系列でメトリクスをログ記録する場合は run.log を使用します + run.log({"accuracy": accuracy}) + + # または、トレーニングの最後に最終的なメトリクスをログ記録する場合は run.summary も使用できます + run.summary["accuracy"] = accuracy +``` + +### プロットの作成 + +#### ステップ 1: wandb のインポートと新しい Run の初期化 + +```python +import wandb + +run = wandb.init(project="visualize-sklearn") +``` + +#### ステップ 2: プロットの可視化 + +#### 個別のプロット + +モデル の トレーニング と 予測 の完了後、wandb でプロットを生成して 予測 を分析できます。サポートされているチャートの全リストについては、以下の **サポートされているプロット** セクションを参照してください。 + +```python +# 単一のプロットを可視化 +wandb.sklearn.plot_confusion_matrix(y_true, y_pred, labels) +``` + +#### すべてのプロット + +W&B には、関連する複数のプロットを一度に描画する `plot_classifier` などの関数があります。 + +```python +# すべての分類プロットを可視化 +wandb.sklearn.plot_classifier( + clf, + X_train, + X_test, + y_train, + y_test, + y_pred, + y_probas, + labels, + model_name="SVC", + feature_names=None, +) + +# すべての回帰プロット +wandb.sklearn.plot_regressor(reg, X_train, X_test, y_train, y_test, model_name="Ridge") + +# すべてのクラスタープロット +wandb.sklearn.plot_clusterer( + kmeans, X_train, cluster_labels, labels=None, model_name="KMeans" +) + +run.finish() +``` + +#### 既存の Matplotlib プロット + +Matplotlib で作成されたプロットも W&B ダッシュボード に ログ 記録できます。そのためには、まず `plotly` をインストールする必要があります。 + +```bash +pip install plotly +``` + +最後に、以下のようにプロットを W&B の ダッシュボード に ログ 記録できます。 + +```python +import matplotlib.pyplot as plt +import wandb + +with wandb.init(project="visualize-sklearn") as run: + + # ここで plt.plot() や plt.scatter() などをすべて行います + # ... + + # plt.show() の代わりに以下を実行します: + run.log({"plot": plt}) +``` + +## サポートされているプロット + +### 学習曲線 (Learning curve) + + + Scikit-learn learning curve + + +さまざまな長さの データセット で モデル を トレーニング し、トレーニングセット と テストセット の両方について、クロスバリデーションスコア対 データセット サイズのプロットを生成します。 + +`wandb.sklearn.plot_learning_curve(model, X, y)` + +* model (clf または reg): フィット済みの回帰器または分類器を指定します。 +* X (arr): データセット の特徴量。 +* y (arr): データセット のラベル。 + +### ROC + + + Scikit-learn ROC curve + + +ROC曲線は、真陽性率 (y軸) 対 偽陽性率 (x-axis) をプロットします。理想的なスコアは、左上の点である TPR = 1 かつ FPR = 0 です。通常、ROC曲線下の面積 (AUC-ROC) を計算し、AUC-ROC が大きいほど優れた結果となります。 + +`wandb.sklearn.plot_roc(y_true, y_probas, labels)` + +* y_true (arr): テストセット のラベル。 +* y_probas (arr): テストセット の 予測 確率。 +* labels (list): ターゲット変数 (y) の名前付きラベル。 + +### クラス比率 (Class proportions) + + + Scikit-learn classification properties + + +トレーニングセット と テストセット におけるターゲットクラスの分布をプロットします。不均衡なクラスを検出し、特定のクラスが モデル に不釣り合いな影響を与えていないか確認するのに役立ちます。 + +`wandb.sklearn.plot_class_proportions(y_train, y_test, ['dog', 'cat', 'owl'])` + +* y_train (arr): トレーニングセット のラベル。 +* y_test (arr): テストセット のラベル。 +* labels (list): ターゲット変数 (y) の名前付きラベル。 + +### PR曲線 (Precision recall curve) + + + Scikit-learn precision-recall curve + + +異なる閾値における 精度 (precision) と 再現率 (recall) のトレードオフを計算します。曲線下の面積が大きいことは、高い再現率と高い精度の両方を表します。高い精度は低い偽陽性率に関連し、高い再現率は低い偽陰性率に関連します。 + +両方のスコアが高いことは、分類器が正確な 結果 を返しており (高精度)、かつ全陽性 結果 の大部分を返している (高再現率) ことを示します。PR曲線 はクラスが非常に不均衡な場合に有用です。 + +`wandb.sklearn.plot_precision_recall(y_true, y_probas, labels)` + +* y_true (arr): テストセット のラベル。 +* y_probas (arr): テストセット の 予測 確率。 +* labels (list): ターゲット変数 (y) の名前付きラベル。 + +### 特徴量重要度 (Feature importances) + + + Scikit-learn feature importance chart + + +分類タスクにおける各特徴量の重要度を評価し、プロットします。ツリー のように `feature_importances_` 属性を持つ分類器でのみ機能します。 + +`wandb.sklearn.plot_feature_importances(model, ['width', 'height, 'length'])` + +* model (clf): フィット済みの分類器を指定します。 +* feature_names (list): 特徴量の名前。特徴量のインデックスを対応する名前に置き換えることで、プロットを読みやすくします。 + +### 検証曲線 (Calibration curve) + + + Scikit-learn calibration curve + + +分類器の 予測 確率がどの程度適切に校正されているか、および校正されていない分類器をどのように校正するかをプロットします。ベースライン のロジスティック回帰 モデル 、引数 として渡された モデル 、およびその 等張校正 (isotonic calibration) と シグモイド校正 (sigmoid calibration) の両方による推定 予測 確率を比較します。 + +検証曲線が対角線に近いほど良好です。転置されたシグモイドのような曲線は過学習した分類器を表し、シグモイドのような曲線は 学習不足 (underfitting) の分類器を表します。 モデル の等張校正とシグモイド校正を トレーニング してそれらの曲線を比較することで、 モデル が過学習または 学習不足 であるかどうか、そしてその場合、どちらの校正 (シグモイドまたは等張) がその修正に役立つかを判断できます。 + +詳細については、[sklearn のドキュメント](https://scikit-learn.org/stable/auto_examples/calibration/plot_calibration_curve.html) を参照してください。 + +`wandb.sklearn.plot_calibration_curve(clf, X, y, 'RandomForestClassifier')` + +* model (clf): フィット済みの分類器を指定します。 +* X (arr): トレーニングセット の特徴量。 +* y (arr): トレーニングセット のラベル。 +* model_name (str): モデル 名。デフォルトは 'Classifier' です。 + +### 混同行列 (Confusion matrix) + + + Scikit-learn confusion matrix + + +分類の正確さを評価するために混同行列を計算します。 モデル の 予測 の質を評価し、 モデル が間違えた 予測 のパターンを見つけるのに役立ちます。対角線は、実際のラベルと 予測 されたラベルが一致している、 モデル が正解した 予測 を表します。 + +`wandb.sklearn.plot_confusion_matrix(y_true, y_pred, labels)` + +* y_true (arr): テストセット のラベル。 +* y_pred (arr): テストセット の 予測 ラベル。 +* labels (list): ターゲット変数 (y) の名前付きラベル。 + +### サマリーメトリクス (Summary metrics) + + + Scikit-learn summary metrics + + +- 分類については、`mse`、`mae`、`r2` スコアなどのサマリー メトリクス を計算します。 +- 回帰については、`f1`、正確度 (accuracy)、精度 (precision)、再現率 (recall) などのサマリー メトリクス を計算します。 + +`wandb.sklearn.plot_summary_metrics(model, X_train, y_train, X_test, y_test)` + +* model (clf または reg): フィット済みの回帰器または分類器を指定します。 +* X (arr): トレーニングセット の特徴量。 +* y (arr): トレーニングセット のラベル。 + * X_test (arr): テストセット の特徴量。 +* y_test (arr): テストセット のラベル。 + +### エルボー図 (Elbow plot) + + + Scikit-learn elbow plot + + +クラスター の数の関数として説明される分散の割合を、 トレーニング 時間とともに測定しプロットします。最適な クラスター 数を選択するのに役立ちます。 + +`wandb.sklearn.plot_elbow_curve(model, X_train)` + +* model (clusterer): フィット済みの クラスター 器を指定します。 +* X (arr): トレーニングセット の特徴量。 + +### シルエット図 (Silhouette plot) + + + Scikit-learn silhouette plot + + +ある クラスター 内の各点が、隣接する クラスター 内の点とどの程度近いかを測定しプロットします。 クラスター の厚さは クラスター サイズに対応します。垂直線は、すべての点の平均シルエットスコアを表します。 + +シルエット係数が +1 に近い場合は、サンプルが隣接する クラスター から遠く離れていることを示します。 値 が 0 の場合は、サンプルが 2 つの隣接する クラスター 間の決定境界上または非常に近い場所にあることを示し、負の 値 はそれらのサンプルが誤った クラスター に割り当てられた可能性があることを示します。 + +一般的に、すべてのシルエット クラスター スコアが平均以上 (赤線を超える) で、できるだけ 1 に近いことが望ましいです。また、 データ 内の潜在的なパターンを反映した クラスター サイズが好まれます。 + +`wandb.sklearn.plot_silhouette(model, X_train, ['spam', 'not spam'])` + +* model (clusterer): フィット済みの クラスター 器を指定します。 +* X (arr): トレーニングセット の特徴量。 + * cluster_labels (list): クラスター ラベルの名前。 クラスター インデックスを対応する名前に置き換えることで、プロットを読みやすくします。 + +### 外れ値候補プロット (Outlier candidates plot) + + + Scikit-learn outlier plot + + +クックの距離 (Cook's distance) を通じて、回帰 モデル に対する データ ポイントの影響度を測定します。影響度が大きく偏っているインスタンスは、外れ値である可能性があります。外れ値検出に役立ちます。 + +`wandb.sklearn.plot_outlier_candidates(model, X, y)` + +* model (regressor): フィット済みの分類器を指定します。 +* X (arr): トレーニングセット の特徴量。 +* y (arr): トレーニングセット のラベル。 + +### 残差プロット (Residuals plot) + + + Scikit-learn residuals plot + + +予測 されたターゲット 値 (y軸) 対 実際のターゲット 値 と 予測 されたターゲット 値 の差 (x軸)、および残差誤差の分布を測定しプロットします。 + +一般的に、適合精度の高い モデル の残差はランダムに分布するはずです。なぜなら、優れた モデル はランダムな誤差を除いて、 データセット 内のほとんどの現象を説明できるからです。 + +`wandb.sklearn.plot_residuals(model, X, y)` + +* model (regressor): フィット済みの分類器を指定します。 +* X (arr): トレーニングセット の特徴量。 +* y (arr): トレーニングセット のラベル。 + +ご質問がある場合は、[Slack コミュニティ](https://wandb.me/slack) でぜひお尋ねください。 + +## 例 + +* [Colab で実行](https://wandb.me/scikit-colab): すぐに始められるシンプルな ノートブック です。 \ No newline at end of file diff --git a/ja/models/integrations/simpletransformers.mdx b/ja/models/integrations/simpletransformers.mdx new file mode 100644 index 0000000000..c632ad74b7 --- /dev/null +++ b/ja/models/integrations/simpletransformers.mdx @@ -0,0 +1,122 @@ +--- +title: Simple Transformers +description: Hugging Face の Transformers ライブラリ を W&B と連携する方法。 +--- + +このライブラリは、Hugging Face の Transformers ライブラリに基づいています。Simple Transformers を使用すると、Transformer モデルのトレーニングと評価を迅速に行うことができます。モデルの初期化、モデルのトレーニング、そしてモデルの評価を行うために必要なコードは、わずか 3 行です。Sequence Classification(配列分類)、Token Classification (NER)、Question Answering(質問応答)、Language Model Fine-Tuning(言語モデルのファインチューニング)、Language Model Training(言語モデルのトレーニング)、Language Generation(言語生成)、T5 モデル、Seq2Seq タスク、Multi-Modal Classification(マルチモーダル分類)、および Conversational AI(対話型 AI)をサポートしています。 + +W&B を使用して モデルトレーニング を可視化するには、`args` 辞書 の `wandb_project` 属性に W&B の Projects 名を設定します。これにより、すべての ハイパーパラメーター の 値 、トレーニング損失、および 評価メトリクス が指定した プロジェクト に ログ 記録されます。 + +```python +model = ClassificationModel('roberta', 'roberta-base', args={'wandb_project': 'project-name'}) +``` + +`wandb.init` に渡されるその他の追加の 引数 は、`wandb_kwargs` として渡すことができます。 + +## 構造 + +このライブラリは、各 NLP タスクに対して個別のクラスを持つように設計されています。同様の機能を提供するクラスがグループ化されています。 + +* `simpletransformers.classification` - すべての Classification モデルが含まれます。 + * `ClassificationModel` + * `MultiLabelClassificationModel` +* `simpletransformers.ner` - すべての 固有表現抽出 (NER) モデルが含まれます。 + * `NERModel` +* `simpletransformers.question_answering` - すべての 質問応答 モデルが含まれます。 + * `QuestionAnsweringModel` + +以下に最小限の例を示します。 + +## MultiLabel Classification + +```text + model = MultiLabelClassificationModel("distilbert","distilbert-base-uncased",num_labels=6, + args={"reprocess_input_data": True, "overwrite_output_dir": True, "num_train_epochs":epochs,'learning_rate':learning_rate, + 'wandb_project': "simpletransformers"}, + ) + # モデルのトレーニング + model.train_model(train_df) + + # モデルの評価 + result, model_outputs, wrong_predictions = model.eval_model(eval_df) +``` + +## Question Answering + +```text + train_args = { + 'learning_rate': wandb.config.learning_rate, + 'num_train_epochs': 2, + 'max_seq_length': 128, + 'doc_stride': 64, + 'overwrite_output_dir': True, + 'reprocess_input_data': False, + 'train_batch_size': 2, + 'fp16': False, + 'wandb_project': "simpletransformers" +} + +model = QuestionAnsweringModel('distilbert', 'distilbert-base-cased', args=train_args) +model.train_model(train_data) +``` + +SimpleTransformers は、一般的なすべての自然言語タスク向けに、クラスだけでなく トレーニングスクリプト も提供しています。以下は、ライブラリでサポートされているグローバル 引数 の完全なリストと、それらのデフォルト 引数 です。 + +```text +global_args = { + "adam_epsilon": 1e-8, + "best_model_dir": "outputs/best_model", + "cache_dir": "cache_dir/", + "config": {}, + "do_lower_case": False, + "early_stopping_consider_epochs": False, + "early_stopping_delta": 0, + "early_stopping_metric": "eval_loss", + "early_stopping_metric_minimize": True, + "early_stopping_patience": 3, + "encoding": None, + "eval_batch_size": 8, + "evaluate_during_training": False, + "evaluate_during_training_silent": True, + "evaluate_during_training_steps": 2000, + "evaluate_during_training_verbose": False, + "fp16": True, + "fp16_opt_level": "O1", + "gradient_accumulation_steps": 1, + "learning_rate": 4e-5, + "local_rank": -1, + "logging_steps": 50, + "manual_seed": None, + "max_grad_norm": 1.0, + "max_seq_length": 128, + "multiprocessing_chunksize": 500, + "n_gpu": 1, + "no_cache": False, + "no_save": False, + "num_train_epochs": 1, + "output_dir": "outputs/", + "overwrite_output_dir": False, + "process_count": cpu_count() - 2 if cpu_count() > 2 else 1, + "reprocess_input_data": True, + "save_best_model": True, + "save_eval_checkpoints": True, + "save_model_every_epoch": True, + "save_steps": 2000, + "save_optimizer_and_scheduler": True, + "silent": False, + "tensorboard_dir": None, + "train_batch_size": 8, + "use_cached_eval_features": False, + "use_early_stopping": False, + "use_multiprocessing": True, + "wandb_kwargs": {}, + "wandb_project": None, + "warmup_ratio": 0.06, + "warmup_steps": 0, + "weight_decay": 0, +} +``` + +より詳細なドキュメントについては、[github上のsimpletransformers](https://github.com/ThilinaRajapakse/simpletransformers) を参照してください。 + +最も人気のある GLUE ベンチマーク データセット のいくつかで Transformer をトレーニングする方法を紹介した、[こちらの W&B レポート](https://app.wandb.ai/cayush/simpletransformers/reports/Using-simpleTransformer-on-common-NLP-applications---Vmlldzo4Njk2NA) をチェックしてください。[Colab で自分でも試してみることができます](https://colab.research.google.com/drive/1oXROllqMqVvBFcPgTKJRboTq96uWuqSz?usp=sharing)。 \ No newline at end of file diff --git a/ja/models/integrations/skorch.mdx b/ja/models/integrations/skorch.mdx new file mode 100644 index 0000000000..7966018685 --- /dev/null +++ b/ja/models/integrations/skorch.mdx @@ -0,0 +1,53 @@ +--- +title: Skorch +description: W&B を Skorch と統合する方法。 +--- + +W&B を Skorch と組み合わせて使用することで、各 エポック 終了時に、最高のパフォーマンスを示した モデル、すべての モデル パフォーマンス メトリクス、モデル のトポロジー、および計算リソースを自動的に ログ に記録できます。 `wandb_run.dir` に保存されたすべてのファイルは、自動的に W&B に ログ 記録されます。 + +[example run](https://app.wandb.ai/borisd13/skorch/runs/s20or4ct?workspace=user-borisd13) を参照してください。 + +## Parameters + +| パラメータ | 型 | 説明 | +| :--- | :--- | :--- | +| `wandb_run` | `wandb.wandb_run`. Run | データ を ログ 記録するために使用される wandb run。 | +|`save_model` | bool (デフォルト=True)| 最良の モデル の チェックポイント を保存し、W&B の Run にアップロードするかどうか。| +|`keys_ignored`| 文字列または文字列のリスト (デフォルト=None) | TensorBoard に ログ 記録すべきではない キー または キー のリスト。ユーザーが提供した キー に加えて、`event_` で始まるものや `_best` で終わるものなどの キー はデフォルトで無視されます。| + +## Example Code + +インテグレーション の仕組みを確認するための例をいくつか作成しました。 + +* [Colab](https://colab.research.google.com/drive/1Bo8SqN1wNPMKv5Bn9NjwGecBxzFlaNZn?usp=sharing): インテグレーション を試すためのシンプルな デモ +* [ステップバイステップガイド](https://app.wandb.ai/cayush/uncategorized/reports/Automate-Kaggle-model-training-with-Skorch-and-W%26B--Vmlldzo4NTQ1NQ): Skorch モデル のパフォーマンスを追跡するための ガイド + +```python +# wandb をインストール +... pip install wandb + +import wandb +from skorch.callbacks import WandbLogger + +# wandb Run を作成 +wandb_run = wandb.init() + +# ハイパーパラメータをログ記録 (任意) +wandb_run.config.update({"learning rate": 1e-3, "batch size": 32}) + +net = NeuralNet(..., callbacks=[WandbLogger(wandb_run)]) +net.fit(X, y) +``` + +## Method reference + +| メソッド | 説明 | +| :--- | :--- | +| `initialize`\(\) | コールバック の初期状態を(再)設定します。 | +| `on_batch_begin`\(net\[, X, y, training\]\) | 各 バッチ の開始時に呼び出されます。 | +| `on_batch_end`\(net\[, X, y, training\]\) | 各 バッチ の終了時に呼び出されます。 | +| `on_epoch_begin`\(net\[, dataset_train, …\]\) | 各 エポック の開始時に呼び出されます。 | +| `on_epoch_end`\(net, \*\*kwargs\) | 最後の履歴ステップから 値 を ログ 記録し、最良の モデル を保存します。 | +| `on_grad_computed`\(net, named_parameters\[, X, …\]\) | 勾配 が計算された後、更新ステップが実行される前に、バッチ ごとに1回呼び出されます。 | +| `on_train_begin`\(net, \*\*kwargs\) | モデル のトポロジーを ログ 記録し、 勾配 のための フック を追加します。 | +| `on_train_end`\(net\[, X, y\]\) | トレーニング の終了時に呼び出されます。 | \ No newline at end of file diff --git a/ja/models/integrations/spacy.mdx b/ja/models/integrations/spacy.mdx new file mode 100644 index 0000000000..96b40e3bdc --- /dev/null +++ b/ja/models/integrations/spacy.mdx @@ -0,0 +1,117 @@ +--- +title: spaCy +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +[spaCy](https://spacy.io) は、高速で正確なモデルを最小限の手間で利用できる、人気の「実用レベル(industrial-strength)」の NLP ライブラリです。 spaCy v3 以降、 [`spacy train`](https://spacy.io/api/cli#train) を使用して W&B で spaCy モデルのトレーニングメトリクスを追跡したり、モデルやデータセットの保存とバージョン管理を行ったりできるようになりました。 設定ファイルに数行追加するだけで準備は完了です。 + +## サインアップと APIキー の作成 + +APIキー は、お使いのマシンを W&B に認証するために使用されます。 ユーザープロフィールから APIキー を生成できます。 + + + +1. 右上隅にあるユーザープロフィールアイコンをクリックします。 +1. **User Settings** を選択し、 **API Keys** セクションまでスクロールします。 + +## `wandb` ライブラリのインストールとログイン + +ローカル環境に `wandb` ライブラリをインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) に APIキー を設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +## spaCy 設定ファイルへの `WandbLogger` の追加 + +spaCy の設定ファイルは、ロギングだけでなく、 GPU 割り当て、 オプティマイザー の選択、 データセット のパスなど、トレーニングのあらゆる側面を指定するために使用されます。 最小限の設定として、 `[training.logger]` の下に、キー `@loggers` と値 `"spacy.WandbLogger.v3"` 、および `project_name` を指定する必要があります。 + + +spaCy のトレーニング設定ファイルの仕組みや、トレーニングをカスタマイズするために渡せるその他のオプションの詳細については、 [spaCy のドキュメント](https://spacy.io/usage/training) を参照してください。 + + +```python +[training.logger] +@loggers = "spacy.WandbLogger.v3" +project_name = "my_spacy_project" +remove_config_values = ["paths.train", "paths.dev", "corpora.train.path", "corpora.dev.path"] +log_dataset_dir = "./corpus" +model_log_interval = 1000 +``` + +| 名前 | 説明 | +| :--- | :--- | +| `project_name` | `str` 。 W&B の Projects の名前。プロジェクトが存在しない場合は自動的に作成されます。 | +| `remove_config_values` | `List[str]` 。 W&B にアップロードされる前に設定から除外する値のリスト。デフォルトは `[]` です。 | +| `model_log_interval` | `Optional int` 。 デフォルトは `None` 。設定すると、 [Artifacts](/models/artifacts/) による [モデルのバージョン管理](/models/registry/) が有効になります。モデルの チェックポイント をログに記録する間隔(ステップ数)を渡します。 | +| `log_dataset_dir` | `Optional str` 。 パスが渡されると、トレーニング開始時に データセット が アーティファクト としてアップロードされます。デフォルトは `None` です。 | +| `entity` | `Optional str` 。 指定した場合、指定された Entities 内に Run が作成されます。 | +| `run_name` | `Optional str` 。 指定した場合、指定された名前で Run が作成されます。 | + +## トレーニングの開始 + +spaCy のトレーニング設定に `WandbLogger` を追加したら、通常通り `spacy train` を実行できます。 + + + +```python +python -m spacy train \ + config.cfg \ + --output ./output \ + --paths.train ./train \ + --paths.dev ./dev +``` + + +```python +python -m spacy train \ + config.cfg \ + --output ./output \ + --paths.train ./train \ + --paths.dev ./dev +``` + + +```notebook +!python -m spacy train \ + config.cfg \ + --output ./output \ + --paths.train ./train \ + --paths.dev ./dev +``` + + + +トレーニングが開始されると、トレーニング Run の [W&B ページ](/models/runs/) へのリンクが出力されます。このリンクから、 W&B ウェブ UI 上の該当する Run の 実験管理 [ダッシュボード](/models/track/workspaces/) にアクセスできます。 \ No newline at end of file diff --git a/ja/models/integrations/stable-baselines-3.mdx b/ja/models/integrations/stable-baselines-3.mdx new file mode 100644 index 0000000000..0cc273ae76 --- /dev/null +++ b/ja/models/integrations/stable-baselines-3.mdx @@ -0,0 +1,87 @@ +--- +title: Stable Baselines 3 +description: Stable Baseline 3 と W&B を統合する方法。 +--- + +[Stable Baselines 3](https://github.com/DLR-RM/stable-baselines3) \(SB3\) は、 PyTorch による信頼性の高い強化学習アルゴリズムの実装セットです。W&B の SB3 インテグレーションは以下の機能を提供します。 + +* 損失やエピソードごとのリターンなどのメトリクスを記録します。 +* エージェントがゲームをプレイしている動画をアップロードします。 +* トレーニング済み モデル を保存します。 +* モデル の ハイパーパラメーター を ログ に記録します。 +* モデル の 勾配 ヒストグラムを ログ に記録します。 + +[SB3 トレーニングの Run 例](https://wandb.ai/wandb/sb3/runs/1jyr6z10) をご確認ください。 + +## SB3 Experiments のログを記録する + +```python +from wandb.integration.sb3 import WandbCallback + +model.learn(..., callback=WandbCallback()) +``` + + + Stable Baselines 3 training with W&B + + +## WandbCallback の引数 + +| 引数 | 使用方法 | +| :--- | :--- | +| `verbose` | SB3 出力の冗長性 | +| `model_save_path` | モデル が保存されるフォルダーへのパス。デフォルト 値 は \`None\` で、 モデル は ログ に記録されません | +| `model_save_freq` | モデル を保存する頻度 | +| `gradient_save_freq` | 勾配 を ログ に記録する頻度。デフォルト 値 は 0 で、 勾配 は ログ に記録されません | + +## 基本的な例 + +W&B の SB3 インテグレーションは、TensorBoard から出力される ログ を使用して メトリクス を記録します。 + +```python +import gym +from stable_baselines3 import PPO +from stable_baselines3.common.monitor import Monitor +from stable_baselines3.common.vec_env import DummyVecEnv, VecVideoRecorder +import wandb +from wandb.integration.sb3 import WandbCallback + + +config = { + "policy_type": "MlpPolicy", + "total_timesteps": 25000, + "env_name": "CartPole-v1", +} +run = wandb.init( + project="sb3", + config=config, + sync_tensorboard=True, # SB3 の TensorBoard メトリクスを自動アップロード + monitor_gym=True, # エージェントがゲームをプレイしている動画を自動アップロード + save_code=True, # オプション +) + + +def make_env(): + env = gym.make(config["env_name"]) + env = Monitor(env) # リターンなどの統計情報を記録 + return env + + +env = DummyVecEnv([make_env]) +env = VecVideoRecorder( + env, + f"videos/{run.id}", + record_video_trigger=lambda x: x % 2000 == 0, + video_length=200, +) +model = PPO(config["policy_type"], env, verbose=1, tensorboard_log=f"runs/{run.id}") +model.learn( + total_timesteps=config["total_timesteps"], + callback=WandbCallback( + gradient_save_freq=100, + model_save_path=f"models/{run.id}", + verbose=2, + ), +) +run.finish() +``` \ No newline at end of file diff --git a/ja/models/integrations/tensorboard.mdx b/ja/models/integrations/tensorboard.mdx new file mode 100644 index 0000000000..38e1d29096 --- /dev/null +++ b/ja/models/integrations/tensorboard.mdx @@ -0,0 +1,109 @@ +--- +title: TensorBoard +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + + +W&B は、W&B マルチテナント SaaS において埋め込み TensorBoard をサポートしています。 + + +TensorBoard の ログ を クラウド にアップロードすることで、同僚やクラスメートと 結果 を素早く共有し、一元化された場所で 分析 を管理できます。 + + + TensorBoard integration code + + +## はじめに + +```python +import wandb + +# `sync_tensorboard=True` を指定して wandb run を開始します +wandb.init(project="my-project", sync_tensorboard=True) as run: + # TensorBoard を使用したトレーニングコード + ... + +``` + +[TensorBoard インテグレーションの run 例](https://wandb.ai/rymc/simple-tensorboard-example/runs/oab614zf/tensorboard) を確認してください。 + +run が終了すると、W&B 上で TensorBoard イベントファイルに アクセス でき、ネイティブの W&B チャートで メトリクス を可視化できます。また、システムの CPU や GPU の使用率、 `git` の状態、 run で使用された ターミナル の コマンド など、追加の有用な情報も併せて確認できます。 + + +W&B は、TensorFlow のすべての バージョン で TensorBoard をサポートしています。また、PyTorch を使用した TensorBoard 1.14 以降、および TensorBoardX もサポートしています。 + + +## よくある質問 + +### TensorBoard にログされていないメトリクスを W&B にログするにはどうすればよいですか? + +TensorBoard にログされていない追加のカスタム メトリクス をログする必要がある場合は、コード内で `wandb.Run.log()` を呼び出すことができます。例: `run.log({"custom": 0.8})` + +TensorBoard を同期している場合、 `run.log()` 内の step 引数 の設定は無効になります。別のステップ数を設定したい場合は、次のように step メトリクス と一緒に メトリクス をログしてください。 + +`run.log({"custom": 0.8, "global_step": global_step})` + +### `wandb` と併用する場合、TensorBoard をどのように設定しますか? + +TensorBoard のパッチ適用の方法をより詳細に制御したい場合は、 `wandb.init` に `sync_tensorboard=True` を渡す代わりに、 `wandb.tensorboard.patch` を呼び出すことができます。 + +```python +import wandb + +wandb.tensorboard.patch(root_logdir="") +run = wandb.init() + +# ノートブックで実行している場合は、wandb run を終了して TensorBoard ログを W&B にアップロードします +run.finish() +``` + +この メソッド に `tensorboard_x=False` を渡すとバニラな TensorBoard がパッチされるようになり、PyTorch で TensorBoard > 1.14 を使用している場合は `pytorch=True` を渡すことで適切にパッチされるようになります。これらのオプションは、インポートされているライブラリの バージョン に応じてスマートなデフォルト値が設定されます。 + +デフォルトでは、 `tfevents` ファイルとすべての `.pbtxt` ファイルも同期されます。これにより、お客様に代わって TensorBoard インスタンスを ローンチ することが可能になります。 run ページに [TensorBoard タブ](https://www.wandb.com/articles/hosted-tensorboard) が表示されます。この 振る舞い は、 `wandb.tensorboard.patch` に `save=False` を渡すことで無効にできます。 + +```python +import wandb + +run = wandb.init() +wandb.tensorboard.patch(save=False, tensorboard_x=True) + +# ノートブックで実行している場合は、wandb run を終了して TensorBoard ログを W&B にアップロードします +run.finish() +``` + + +`tf.summary.create_file_writer` を呼び出す前、または `torch.utils.tensorboard` を介して `SummaryWriter` を構築する **前** に、 `wandb.init()` または `wandb.tensorboard.patch` を呼び出す必要があります。 + + +### 過去の TensorBoard runs を同期するにはどうすればよいですか? + +ローカルに保存されている既存の `tfevents` ファイルがあり、それらを W&B にインポートしたい場合は、 `wandb sync log_dir` を実行します。ここで `log_dir` は `tfevents` ファイルが含まれているローカルの ディレクトリー です。 + +### Google Colab や Jupyter で TensorBoard を使用するにはどうすればよいですか? + +Jupyter や Colabノートブック で コード を実行している場合は、トレーニングの最後に必ず `wandb.Run.finish()` を呼び出してください。これにより wandb run が終了し、TensorBoard ログが W&B にアップロードされて可視化できるようになります。 `.py` スクリプト を実行する場合、 スクリプト が終了すると wandb は自動的に終了するため、これは必要ありません。 + +ノートブック 環境でシェル コマンド を実行するには、 `!wandb sync directoryname` のように、先頭に `!` を付ける必要があります。 + +### PyTorch で TensorBoard を使用するにはどうすればよいですか? + +PyTorch の TensorBoard インテグレーション を使用する場合、PyTorch Profiler の JSON ファイルを手動でアップロードする必要がある場合があります。 + +```python +with wandb.init(project="my-project", sync_tensorboard=True) as run: + run.save(glob.glob(f"runs/*.pt.trace.json")[0], base_path=f"runs") +``` + +### クラウドに保存されている tfevents ファイルを同期できますか? + +`wandb` 0.20.0 以降では、S3、GCS、または Azure に保存されている `tfevents` ファイルの同期をサポートしています。 `wandb` は、各 クラウド プロバイダーのデフォルトの認証情報を使用します。対応する コマンド は以下の表の通りです。 + +| クラウドプロバイダー | 認証情報 | ログディレクトリの形式 | +| -------------- | --------------------------------------- | ------------------------------------- | +| S3 | `aws configure` | `s3://bucket/path/to/logs` | +| GCS | `gcloud auth application-default login` | `gs://bucket/path/to/logs` | +| Azure | `az login`[^1] | `az://account/container/path/to/logs` | + +[^1]: また、 `AZURE_STORAGE_ACCOUNT` と `AZURE_STORAGE_KEY` の 環境 変数を 設定 する必要があります。 \ No newline at end of file diff --git a/ja/models/integrations/tensorflow.mdx b/ja/models/integrations/tensorflow.mdx new file mode 100644 index 0000000000..660a2a708a --- /dev/null +++ b/ja/models/integrations/tensorflow.mdx @@ -0,0 +1,94 @@ +--- +title: TensorFlow +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +## はじめに + +すでに TensorBoard を使用している場合、wandb との連携は非常に簡単です。 + +```python +import tensorflow as tf +import wandb +``` + +## カスタムメトリクスのログ記録 + +TensorBoard にログ出力されていない追加のカスタムメトリクスを記録する必要がある場合は、コード内で `run.log()` を呼び出すことができます:`run.log({"custom": 0.8}) ` + +TensorBoard を同期している場合、`run.log()` の step 引数の設定は無効になります。別のステップ数を設定したい場合は、以下のようにステップメトリクスとともにメトリクスをログに記録できます: + +``` python +with wandb.init(config=tf.flags.FLAGS, sync_tensorboard=True) as run: + run.log({"custom": 0.8, "global_step":global_step}, step=global_step) +``` + +## TensorFlow Estimators hook + +ログの内容をより詳細に制御したい場合、wandb は TensorFlow Estimators 用の hook も提供しています。これにより、グラフ内のすべての `tf.summary` の値をログに記録します。 + +```python +import tensorflow as tf +import wandb + +run = wandb.init(config=tf.FLAGS) + +# steps_per_log ごとにログを記録する hook を追加 +estimator.train(hooks=[wandb.tensorflow.WandbHook(steps_per_log=1000)]) +run.finish() +``` + +## 手動でのログ記録 + +TensorFlow でメトリクスを記録する最もシンプルな方法は、TensorFlow ロガーを使用して `tf.summary` をログ出力することです: + +```python +import wandb +run = wandb.init(config=tf.flags.FLAGS, sync_tensorboard=True) +with tf.Session() as sess: + # ... + wandb.tensorflow.log(tf.summary.merge_all()) +``` + +TensorFlow 2 では、カスタムループを使用してモデルをトレーニングする推奨される方法は `tf.GradientTape` を使用することです。詳細は [TensorFlow カスタムトレーニングのウォークスルー](https://www.tensorflow.org/tutorials/customization/custom_training_walkthrough) を参照してください。カスタム TensorFlow トレーニングループに `wandb` を組み込んでメトリクスをログに記録するには、以下のスニペットを参考にしてください: + +```python + with tf.GradientTape() as tape: + # 予測値(確率)を取得 + predictions = model(features) + # 損失(loss)を計算 + loss = loss_func(labels, predictions) + + # メトリクスをログに記録 + run.log("loss": loss.numpy()) + # 勾配(gradients)を取得 + gradients = tape.gradient(loss, model.trainable_variables) + # 重み(weights)を更新 + optimizer.apply_gradients(zip(gradients, model.trainable_variables)) +``` + +[TensorFlow 2 におけるトレーニングループのカスタマイズの完全な例](https://www.wandb.com/articles/wandb-customizing-training-loops-in-tensorflow-2) もご覧いただけます。 + +## W&B は TensorBoard とどう違うのですか? + +W&B の共同創業者たちが開発を始めたとき、彼らは OpenAI で TensorBoard に不満を感じていた ユーザー のための ツール を構築したいと考えていました。私たちが改善に注力した点は以下の通りです。 + +1. **モデルの再現**: W&B は 実験管理 、探索、そして後のモデル再現に優れています。メトリクスだけでなく、ハイパーパラメーター や コード の バージョン も取得し、プロジェクトが再現可能になるよう バージョン 管理ステータスや モデル の チェックポイント を保存できます。 +2. **自動整理**: コラボレーターから プロジェクト を引き継ぐとき、休暇から戻ったとき、あるいは古い プロジェクト を再開するときでも、W&B を使えば試行されたすべての モデル を簡単に確認できるため、誰も 実験 の再実行に時間や GPU サイクル、電力を浪費することはありません。 +3. **高速で柔軟なインテグレーション**: W&B は 5 分で プロジェクト に追加できます。無料のオープンソース Python パッケージをインストールし、コードに数行追加するだけで、モデル を実行するたびに適切にログに記録されたメトリクスと記録が得られます。 +4. **永続的で中央集約されたダッシュボード**: ローカルマシン、共有ラボの クラスター 、クラウド のスポットインスタンスなど、どこで モデル をトレーニングしても、結果は同じ中央集約された ダッシュボード に共有されます。異なるマシンから TensorBoard ファイルをコピーして整理する手間は不要です。 +5. **強力な Tables**: 異なる モデル の 結果 を検索、フィルタリング、ソート、グループ化できます。数千の モデル バージョン を見渡し、異なるタスクに対して最高のパフォーマンスを発揮する モデル を見つけるのが簡単です。TensorBoard は大規模な プロジェクト でうまく動作するように構築されていません。 +6. **コラボレーションのためのツール**: 複雑な 機械学習 プロジェクト の整理に W&B を活用してください。W&B へのリンクを共有するのは簡単で、プライベートな Teams を使用して全員が共有 プロジェクト に 結果 を送信できます。また、Reports を通じたコラボレーションもサポートしており、インタラクティブな 可視化 を追加し、Markdown で作業内容を説明できます。これは、作業ログの保持、指導者への 学び の共有、ラボやチームへの 結果 発表に最適な方法です。 + +[無料アカウント](https://wandb.ai) で始めましょう。 + +## サンプル + +インテグレーション の仕組みを確認できるサンプルをいくつか用意しました。 + +* [Github の例](https://github.com/wandb/examples/blob/master/examples/tensorflow/tf-estimator-mnist/mnist.py): TensorFlow Estimators を使用した MNIST の例 +* [Github の例](https://github.com/wandb/examples/blob/master/examples/tensorflow/tf-cnn-fashion/train.py): 生の TensorFlow を使用した Fashion MNIST の例 +* [Wandb ダッシュボード](https://app.wandb.ai/l2k2/examples-tf-estimator-mnist/runs/p0ifowcb): W&B 上で 結果 を表示 +* TensorFlow 2 でのトレーニングループのカスタマイズ - [記事](https://www.wandb.com/articles/wandb-customizing-training-loops-in-tensorflow-2) | [ダッシュボード](https://app.wandb.ai/sayakpaul/custom_training_loops_tf) \ No newline at end of file diff --git a/ja/models/integrations/torchtune.mdx b/ja/models/integrations/torchtune.mdx new file mode 100644 index 0000000000..b3b11ea247 --- /dev/null +++ b/ja/models/integrations/torchtune.mdx @@ -0,0 +1,150 @@ +--- +title: PyTorch torchtune +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +[torchtune](https://pytorch.org/torchtune/stable/index.html) は、大規模言語モデル(LLM)の作成、ファインチューニング、および実験プロセスを効率化するために設計された PyTorch ベースのライブラリです。さらに、torchtune は [W&B によるロギング](https://pytorch.org/torchtune/stable/deep_dives/wandb_logging.html) を標準でサポートしており、トレーニングプロセスの追跡と可視化を強化できます。 + + + TorchTune training dashboard + + +[torchtune を使用した Mistral 7B のファインチューニング](https://wandb.ai/capecape/torchtune-mistral/reports/torchtune-The-new-PyTorch-LLM-fine-tuning-library---Vmlldzo3NTUwNjM0) に関する W&B ブログポストもあわせてご覧ください。 + +## W&B ロギングをすぐに利用する + + + +ローンンチ時にコマンドライン引数をオーバーライドします: + +```bash +# コマンドラインから W&B ロガーを指定して実行 +tune run lora_finetune_single_device --config llama3/8B_lora_single_device \ + metric_logger._component_=torchtune.utils.metric_logging.WandBLogger \ + metric_logger.project="llama3_lora" \ + log_every_n_steps=5 +``` + + +レシピの設定(config)で W&B ロギングを有効にします: + +```yaml +# llama3/8B_lora_single_device.yaml 内 +metric_logger: + _component_: torchtune.utils.metric_logging.WandBLogger + project: llama3_lora +log_every_n_steps: 5 +``` + + + +## W&B メトリクスロガーの使用 + +レシピの設定ファイルの `metric_logger` セクションを修正することで、W&B ロギングを有効にできます。 `_component_` を `torchtune.utils.metric_logging.WandBLogger` クラスに変更します。また、 `project` 名や `log_every_n_steps` を渡して、ロギングの振る舞いをカスタマイズすることも可能です。 + +また、 [wandb.init()](/models/ref/python/functions/init) メソッドと同様に、他の任意の `kwargs` を渡すことができます。例えば、チームで作業している場合は、 `WandBLogger` クラスに `entity` 引数を渡してチーム名を指定できます。 + + + +```yaml +# llama3/8B_lora_single_device.yaml 内 +metric_logger: + _component_: torchtune.utils.metric_logging.WandBLogger + project: llama3_lora + entity: my_project + job_type: lora_finetune_single_device + group: my_awesome_experiments +log_every_n_steps: 5 +``` + + +```shell +tune run lora_finetune_single_device --config llama3/8B_lora_single_device \ + metric_logger._component_=torchtune.utils.metric_logging.WandBLogger \ + metric_logger.project="llama3_lora" \ + metric_logger.entity="my_project" \ + metric_logger.job_type="lora_finetune_single_device" \ + metric_logger.group="my_awesome_experiments" \ + log_every_n_steps=5 +``` + + + +## 何がログ記録されますか? + +W&B ダッシュボードでログ記録されたメトリクスを確認できます。デフォルトでは、W&B は設定ファイルおよびローンンチ時のオーバーライドからのすべての ハイパーパラメーター をログ記録します。 + +W&B は確定した設定を **Overview** タブにキャプチャします。また、W&B は [Files タブ](https://wandb.ai/capecape/torchtune/runs/joyknwwa/files) に YAML 形式で設定を保存します。 + + + TorchTune configuration + + +### ログ記録されるメトリクス + +各レシピには独自のトレーニングループがあります。ログ記録されるメトリクスについては各レシピを確認してください。デフォルトでは以下の項目が含まれます: + +| メトリクス | 説明 | +| --- | --- | +| `loss` | モデルの損失(loss) | +| `lr` | 学習率(learning rate) | +| `tokens_per_second` | モデルの秒間トークン数 | +| `grad_norm` | モデルの勾配ノルム | +| `global_step` | トレーニングループ内の現在のステップに対応。勾配蓄積(gradient accumulation)を考慮します。基本的には、オプティマイザーステップが実行されるたびにモデルが更新され、 `gradient_accumulation_steps` ごとに勾配が蓄積されてモデルが更新されます。 | + + +`global_step` はトレーニングステップ数と同じではありません。これはトレーニングループ内の現在のステップに対応します。勾配蓄積を考慮し、基本的にはオプティマイザーステップが実行されるたびに `global_step` が 1 増加します。例えば、データローダーに 10 バッチあり、勾配蓄積ステップが 2 で 3 エポック実行する場合、オプティマイザーは 15 回ステップを実行するため、この場合 `global_step` は 1 から 15 の範囲になります。 + + +torchtune の合理的な設計により、カスタムメトリクスの追加や既存のメトリクスの修正が容易に行えます。対応する [レシピファイル](https://github.com/pytorch/torchtune/tree/main/recipes) を修正するだけで十分です。例えば、以下のように `current_epoch` を全エポック数に対するパーセンテージとしてログ記録するように計算できます: + +```python +# レシピファイル内の `train.py` 関数内 +self._metric_logger.log_dict( + {"current_epoch": self.epochs * self.global_step / self._steps_per_epoch}, + step=self.global_step, +) +``` + + +このライブラリは急速に進化しているため、現在のメトリクスは変更される可能性があります。カスタムメトリクスを追加したい場合は、レシピを修正して対応する `self._metric_logger.*` 関数を呼び出してください。 + + +## チェックポイントの保存とロード + +torchtune ライブラリは、さまざまな [チェックポイント形式](https://pytorch.org/torchtune/stable/deep_dives/checkpointer.html) をサポートしています。使用しているモデルのオリジンに応じて、適切な [checkpointer クラス](https://pytorch.org/torchtune/stable/deep_dives/checkpointer.html) に切り替える必要があります。 + +モデルのチェックポイントを [W&B Artifacts](/models/artifacts/) に保存したい場合、最も簡単な解決策は、対応するレシピ内の `save_checkpoint` 関数をオーバーライドすることです。 + +以下は、モデルのチェックポイントを W&B Artifacts に保存するために `save_checkpoint` 関数をオーバーライドする方法の例です。 + +```python +def save_checkpoint(self, epoch: int) -> None: + ... + ## チェックポイントを W&B に保存します + ## Checkpointer クラスによってファイル名が異なります + ## ここでは full_finetune の場合の例を示します + checkpoint_file = Path.joinpath( + self._checkpointer._output_dir, f"torchtune_model_{epoch}" + ).with_suffix(".pt") + + # Artifact を作成 + wandb_artifact = wandb.Artifact( + name=f"torchtune_model_{epoch}", + type="model", + # モデルチェックポイントの説明 + description="Model checkpoint", + # 任意のメタデータを辞書形式で追加できます + metadata={ + utils.SEED_KEY: self.seed, + utils.EPOCHS_KEY: self.epochs_run, + utils.TOTAL_EPOCHS_KEY: self.total_epochs, + utils.MAX_STEPS_KEY: self.max_steps_per_epoch, + }, + ) + # ファイルを追加してログ記録 + wandb_artifact.add_file(checkpoint_file) + wandb.log_artifact(wandb_artifact) +``` \ No newline at end of file diff --git a/ja/models/integrations/ultralytics.mdx b/ja/models/integrations/ultralytics.mdx new file mode 100644 index 0000000000..c020b5c18d --- /dev/null +++ b/ja/models/integrations/ultralytics.mdx @@ -0,0 +1,140 @@ +--- +title: Ultralytics +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +[Ultralytics](https://github.com/ultralytics/ultralytics) は、画像分類、オブジェクト検出、画像セグメンテーション、姿勢推定などのタスク向けの、最先端のコンピュータビジョンモデルの拠点です。リアルタイムオブジェクト検出モデルの最新版である [YOLOv8](https://docs.ultralytics.com/models/yolov8/) だけでなく、[SAM (Segment Anything Model)](https://docs.ultralytics.com/models/sam/#introduction-to-sam-the-segment-anything-model)、[RT-DETR](https://docs.ultralytics.com/models/rtdetr/)、[YOLO-NAS](https://docs.ultralytics.com/models/yolo-nas/) など、他の強力なコンピュータビジョンモデルもホストしています。これらのモデルの実装に加えて、Ultralytics は使いやすい API を使用して、モデルのトレーニング、ファインチューニング、および適用を行うためのエンドツーエンドのワークフローを提供しています。 + +## はじめに + +1. `ultralytics` と `wandb` をインストールします。 + + + + ```shell + pip install --upgrade ultralytics==8.0.238 wandb + + # または + # conda install ultralytics + ``` + + + ```bash + !pip install --upgrade ultralytics==8.0.238 wandb + ``` + + + + 開発チームは `ultralyticsv8.0.238` 以下でインテグレーションのテストを行っています。インテグレーションに関する問題を報告するには、`yolov8` タグを付けて [GitHub issue](https://github.com/wandb/wandb/issues/new?template=sdk-bug.yml) を作成してください。 + +## 実験管理とバリデーション結果の可視化 + + + +このセクションでは、[Ultralytics](https://docs.ultralytics.com/modes/predict/) モデルを使用したトレーニング、ファインチューニング、バリデーション、および [W&B](https://wandb.ai/site) を使用した実験管理、モデルのチェックポイント作成、パフォーマンスの可視化という典型的なワークフローを紹介します。 + +このインテグレーションについては、こちらのレポートもご覧ください: [Supercharging Ultralytics with W&B](https://wandb.ai/geekyrakshit/ultralytics/reports/Supercharging-Ultralytics-with-Weights-Biases--Vmlldzo0OTMyMDI4) + +Ultralytics で W&B インテグレーションを使用するには、`wandb.integration.ultralytics.add_wandb_callback` 関数をインポートします。 + +```python +import wandb +from wandb.integration.ultralytics import add_wandb_callback + +from ultralytics import YOLO +``` + +任意の `YOLO` モデルを初期化し、推論を実行する前に `add_wandb_callback` 関数を呼び出します。これにより、トレーニング、ファインチューニング、バリデーション、または推論を実行した際に、実験ログと画像が自動的に保存されます。画像には、W&B の [コンピュータビジョンタスク向けのインタラクティブ・オーバーレイ](/models/track/log/media/#image-overlays-in-tables) を使用して、正解ラベル(ground-truth)とそれぞれの予測結果が重ねて表示され、詳細なインサイトと共に [`wandb.Table`](/models/tables/) に記録されます。 + +```python +with wandb.init(project="ultralytics", job_type="train") as run: + + # YOLOモデルの初期化 + model = YOLO("yolov8n.pt") + + # Ultralytics用のW&Bコールバックを追加 + add_wandb_callback(model, enable_model_checkpointing=True) + + # モデルのトレーニング/ファインチューニング + # 各エポックの終了時に、バリデーションバッチの予測結果が + # コンピュータビジョンタスク向けの洞察に満ちたインタラクティブなオーバーレイと共に + # W&B Tableにログとして記録されます + model.train(project="ultralytics", data="coco128.yaml", epochs=5, imgsz=640) +``` + +Ultralytics のトレーニングまたはファインチューニングワークフローで W&B を使用して実験管理を行うと、以下のようになります: + +
YOLO Fine-tuning Experiments
+ + +エポックごとのバリデーション結果が [W&B Table](/models/tables/) を使用してどのように可視化されるかは以下の通りです: + +
WandB Validation Visualization Table
+ + +## 予測結果の可視化 + + + +このセクションでは、[Ultralytics](https://docs.ultralytics.com/modes/predict/) モデルを推論に使用し、その結果を [W&B](https://wandb.ai/site) で可視化する典型的なワークフローを紹介します。 + +Google Colab でコードを試すことができます: [Open in Colab](https://wandb.me/ultralytics-inference) + +このインテグレーションについては、こちらのレポートもご覧ください: [Supercharging Ultralytics with W&B](https://wandb.ai/geekyrakshit/ultralytics/reports/Supercharging-Ultralytics-with-Weights-Biases--Vmlldzo0OTMyMDI4) + +Ultralytics で W&B インテグレーションを使用するには、`wandb.integration.ultralytics.add_wandb_callback` 関数をインポートする必要があります。 + +```python +import wandb +from wandb.integration.ultralytics import add_wandb_callback + +from ultralytics.engine.model import YOLO +``` + +インテグレーションをテストするためにいくつかの画像をダウンロードします。静止画、動画、またはカメラソースを使用できます。推論ソースの詳細については、[Ultralytics docs](https://docs.ultralytics.com/modes/predict/) を参照してください。 + +```bash +!wget https://raw.githubusercontent.com/wandb/examples/ultralytics/colabs/ultralytics/assets/img1.png +!wget https://raw.githubusercontent.com/wandb/examples/ultralytics/colabs/ultralytics/assets/img2.png +!wget https://raw.githubusercontent.com/wandb/examples/ultralytics/colabs/ultralytics/assets/img4.png +!wget https://raw.githubusercontent.com/wandb/examples/ultralytics/colabs/ultralytics/assets/img5.png +``` + +`wandb.init()` を使用して W&B [run](/models/runs/) を初期化します。次に、希望の `YOLO` モデルを初期化し、推論を実行する前に `add_wandb_callback` 関数を呼び出します。これにより、推論を実行した際に、[コンピュータビジョンタスク向けのインタラクティブ・オーバーレイ](/models/track/log/media/#image-overlays-in-tables) が重ねられた画像が、詳細なインサイトと共に [`wandb.Table`](/models/tables/) に自動的にログとして記録されます。 + +```python +# W&B Runを初期化 +with wandb.init(project="ultralytics", job_type="inference") as run: + # YOLOモデルを初期化 + model = YOLO("yolov8n.pt") + + # Ultralytics用のW&Bコールバックを追加 + add_wandb_callback(model, enable_model_checkpointing=True) + + # 予測を実行。バウンディングボックスやセグメンテーションマスクの + # インタラクティブなオーバーレイと共にW&B Tableへ自動的にログを記録します + model( + [ + "./assets/img1.jpeg", + "./assets/img3.png", + "./assets/img4.jpeg", + "./assets/img5.jpeg", + ] + ) +``` + +トレーニングやファインチューニングのワークフローでは、`wandb.init()` を使用して明示的に run を初期化する必要はありません。ただし、コードに予測のみが含まれる場合は、明示的に run を作成する必要があります。 + +インタラクティブな bbox オーバーレイの表示例です: + +
WandB Image Overlay
+ + +詳細については、[W&B 画像オーバーレイガイド](/models/track/log/media/#image-overlays) を参照してください。 + +## その他のリソース + +* [Supercharging Ultralytics with W&B](https://wandb.ai/geekyrakshit/ultralytics/reports/Supercharging-Ultralytics-with-Weights-Biases--Vmlldzo0OTMyMDI4) +* [Object Detection using YOLOv8: An End-to-End Workflow](https://wandb.ai/reviewco/object-detection-bdd/reports/Object-Detection-using-YOLOv8-An-End-to-End-Workflow--Vmlldzo1NTAyMDQ1) \ No newline at end of file diff --git a/ja/models/integrations/w-and-b-for-julia.mdx b/ja/models/integrations/w-and-b-for-julia.mdx new file mode 100644 index 0000000000..2b0d93459a --- /dev/null +++ b/ja/models/integrations/w-and-b-for-julia.mdx @@ -0,0 +1,34 @@ +--- +title: Julia 向け W&B +description: W&B を Julia と統合する方法。 +--- + +Julia プログラミング言語で機械学習の実験を行っている方向けに、コミュニティのコントリビューターが作成した非公式の Julia バインディング [wandb.jl](https://github.com/avik-pal/Wandb.jl) を利用することができます。 + +具体的な例は、wandb.jl リポジトリの [ドキュメント内](https://github.com/avik-pal/Wandb.jl/tree/main/docs/src/examples) で確認できます。以下は、その「Getting Started」の例です: + +```julia +using Wandb, Dates, Logging + +# config 内のハイパーパラメーターを追跡し、新しい run を開始します +lg = WandbLogger(project = "Wandb.jl", + name = "wandbjl-demo-$(now())", + config = Dict("learning_rate" => 0.01, + "dropout" => 0.2, + "architecture" => "CNN", + "dataset" => "CIFAR-100")) + +# LoggingExtras.jl を使用して、複数のロガーに同時にログを記録します +global_logger(lg) + +# トレーニングまたは評価ループをシミュレートします +for x ∈ 1:50 + acc = log(1 + x + rand() * get_config(lg, "learning_rate") + rand() + get_config(lg, "dropout")) + loss = 10 - log(1 + x + rand() + x * get_config(lg, "learning_rate") + rand() + get_config(lg, "dropout")) + # スクリプトから W&B にメトリクスをログ記録します + @info "metrics" accuracy=acc loss=loss +end + +# run を終了します +close(lg) +``` \ No newline at end of file diff --git a/ja/models/integrations/xgboost.mdx b/ja/models/integrations/xgboost.mdx new file mode 100644 index 0000000000..3863f31236 --- /dev/null +++ b/ja/models/integrations/xgboost.mdx @@ -0,0 +1,69 @@ +--- +title: XGBoost +description: W&B で ツリー を追跡しましょう。 +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +`wandb` ライブラリには、 XGBoost のトレーニングからメトリクス、設定、保存された booster をログに記録するための `WandbCallback` コールバックが用意されています。こちらから、 XGBoost の `WandbCallback` による出力を表示した [ライブ W&B Dashboard](https://wandb.ai/morg/credit_scorecard) をご覧いただけます。 + + + W&B Dashboard using XGBoost + + +## はじめる + +XGBoost のメトリクス、設定、 booster モデルを W&B にログ記録するのは、 `WandbCallback` を XGBoost に渡すだけで簡単に行えます。 + +```python +from wandb.integration.xgboost import WandbCallback +import xgboost as XGBClassifier + +... +# wandb run を開始 +with wandb.init() as run: + # WandbCallback をモデルに渡す + bst = XGBClassifier() + bst.fit(X_train, y_train, callbacks=[WandbCallback(log_model=True)]) +``` + +XGBoost と W&B を使用したログ記録の包括的な解説については、 [こちらのノートブック](https://wandb.me/xgboost) を開いてご確認ください。 + +## `WandbCallback` リファレンス + +### 機能 +`WandbCallback` を XGBoost モデルに渡すと、以下のことが行われます。 +- booster モデルの設定を W&B にログ記録します +- rmse、精度(accuracy)など、 XGBoost によって収集された評価メトリクスを W&B にログ記録します +- XGBoost によって収集されたトレーニングメトリクスをログ記録します(`eval_set` にデータを提供した場合) +- ベストスコアとベストイテレーションをログ記録します +- 学習済みモデルを保存し、 W&B Artifacts にアップロードします(`log_model = True` の場合) +- インポータンスプロット をログ記録します(`log_feature_importance=True`(デフォルト)の場合) +- `define_metric=True`(デフォルト)の場合、 `wandb.Run.summary` に最適な評価メトリクスを記録します + +### 引数 +- `log_model`: (boolean) True の場合、モデルを保存して W&B Artifacts にアップロードします + +- `log_feature_importance`: (boolean) True の場合、特徴量重要度の棒グラフをログ記録します + +- `importance_type`: (str) ツリー モデルの場合は `{weight, gain, cover, total_gain, total_cover}` のいずれか。線形モデルの場合は `weight`。 + +- `define_metric`: (boolean) True(デフォルト)の場合、トレーニングの最終ステップではなく、最適なステップにおけるモデルのパフォーマンスを `run.summary` に記録します + + +[WandbCallback のソースコード](https://github.com/wandb/wandb/blob/main/wandb/integration/xgboost/xgboost.py) を確認することができます。 + +その他の例については、 [GitHub のサンプルリポジトリ](https://github.com/wandb/examples/tree/master/examples/boosting-algorithms) を参照してください。 + +## Sweeps でハイパーパラメーターをチューニングする + +モデルから最大限のパフォーマンスを引き出すには、ツリーの深さや学習率などの ハイパーパラメーター をチューニングする 必要があります。 W&B [Sweeps](/models/sweeps/) は、大規模な ハイパーパラメーター テストの実験を構成、オーケストレーション、および分析するための強力なツールキットです。 + + + +また、こちらの [XGBoost & Sweeps Python スクリプト](https://github.com/wandb/examples/blob/master/examples/wandb-sweeps/sweeps-xgboost/xgboost_tune.py) もお試しいただけます。 + + + XGBoost performance comparison + \ No newline at end of file diff --git a/ja/models/integrations/yolov5.mdx b/ja/models/integrations/yolov5.mdx new file mode 100644 index 0000000000..25908663e4 --- /dev/null +++ b/ja/models/integrations/yolov5.mdx @@ -0,0 +1,69 @@ +--- +title: YOLOv5 +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +[Ultralytics の YOLOv5](https://ultralytics.com/yolo) ( "You Only Look Once" ) モデルファミリーは、畳み込みニューラルネットワークを用いたリアルタイムの オブジェクト検出 を、煩わしい手間なしに実現します。 + +[W&B](https://wandb.com) は YOLOv5 に直接統合されており、実験のメトリクス追跡、モデルや Datasets の バージョン管理 、豊富な モデル予測 の 可視化 などを提供します。 **YOLO の 実験 を実行する前に、 `pip install` を一度実行するだけで準備は完了です。** + + +すべての W&B ログ機能は、 [PyTorch DDP](https://pytorch.org/tutorials/intermediate/ddp_tutorial.html) などのデータ並列マルチ GPU トレーニングに対応しています。 + + +## コアな実験を追跡する +`wandb` をインストールするだけで、システムメトリクス、モデルメトリクス、メディアをインタラクティブな [Dashboards](/models/track/workspaces/) に記録する、組み込みの W&B [ログ機能](/models/track/log/) が有効になります。 + +```python +pip install wandb +git clone https://github.com/ultralytics/yolov5.git +python yolov5/train.py # 小さなデータセットで小さなネットワークをトレーニングする +``` + +標準出力に W&B が表示するリンクに従うだけで、結果を確認できます。 + + + これらのチャートをはじめ、多くの機能が利用可能です。 + + +## インテグレーションのカスタマイズ + +YOLO にいくつかのシンプルな コマンド ライン 引数 を渡すことで、さらに多くの W&B 機能を活用できます。 + +* `--save_period` に数値を渡すと、 W&B は `save_period` エポック ごとに [モデルバージョン](/models/registry/) を保存します。モデルバージョンには モデル の重みが含まれ、 検証セット で最もパフォーマンスの高いモデルにタグが付けられます。 +* `--upload_dataset` フラグを有効にすると、データセットもアップロードされ、データの バージョン管理 が行われます。 +* `--bbox_interval` に数値を渡すと、 [Data Visualization](../) が有効になります。 `bbox_interval` エポック ごとに、 検証セット に対する モデル の出力が W&B にアップロードされます。 + + + +```python +python yolov5/train.py --epochs 20 --save_period 1 +``` + + +```python +python yolov5/train.py --epochs 20 --save_period 1 \ + --upload_dataset --bbox_interval 1 +``` + + + + +すべての W&B アカウントには、 Datasets と Models 用に 100 GB の無料ストレージが付属しています。 + + +実際の表示は以下のようになります。 + + + モデルのバージョン管理 + + + + Data visualization + + + +データと モデル の バージョン管理 を利用することで、中断したりクラッシュしたりした 実験 を、セットアップなしで任意のデバイスから再開できます。詳細は [Colab](https://wandb.me/yolo-colab) をご確認ください。 + \ No newline at end of file diff --git a/ja/models/integrations/yolox.mdx b/ja/models/integrations/yolox.mdx new file mode 100644 index 0000000000..fbcba3faf3 --- /dev/null +++ b/ja/models/integrations/yolox.mdx @@ -0,0 +1,87 @@ +--- +title: YOLOX +description: W&B を YOLOX と統合する方法。 +--- + +import ApiKeyCreateStreamlined from "/snippets/en/_includes/api-key-create-streamlined.mdx"; + +[YOLOX](https://github.com/Megvii-BaseDetection/YOLOX) は、強力な オブジェクト検出 パフォーマンスを備えた YOLO のアンカーフリーバージョンです。 YOLOX の W&B インテグレーション を使用すると、トレーニング、検証、およびシステムに関連する メトリクス の ログ 記録を有効にでき、単一の コマンドライン 引数 で 予測 をインタラクティブに検証できます。 + +## サインアップと APIキー の作成 + +APIキー は、W&B に対してマシンを認証します。 ユーザー プロフィールから APIキー を生成できます。 + + + +1. 右上隅にある ユーザー プロフィールアイコンをクリックします。 +1. **User Settings** を選択し、 **API Keys** セクションまでスクロールします。 + +## `wandb` ライブラリのインストールとログイン + +ローカルに `wandb` ライブラリをインストールしてログインするには: + + + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) に APIキー を設定します。 + + ```bash + export WANDB_API_KEY= + ``` + +1. `wandb` ライブラリをインストールしてログインします。 + + ```shell + pip install wandb + + wandb login + ``` + + +```bash +pip install wandb +``` +```python +import wandb +wandb.login() +``` + + +```notebook +!pip install wandb + +import wandb +wandb.login() +``` + + + +## メトリクス の ログ 記録 + +`--logger wandb` コマンドライン 引数 を使用して、wandb による ログ 記録を有効にします。 オプションとして、 [`wandb.init()`](/models/ref/python/functions/init) が期待するすべての 引数 を渡すこともできます。 各 引数 の前に `wandb-` を付けてください。 + +`num_eval_imges` は、 モデルの評価 のために W&B Tables に ログ 記録される 検証セット の画像と 予測 の数を制御します。 + +```shell +# wandbにログイン +wandb login + +# `wandb` logger引数を指定してyoloxトレーニングスクリプトを呼び出す +python tools/train.py .... --logger wandb \ + wandb-project \ + wandb-entity + wandb-name \ + wandb-id \ + wandb-save_dir \ + wandb-num_eval_imges \ + wandb-log_checkpoints +``` + +## 例 + +[YOLOX のトレーニングおよび検証メトリクスを表示したダッシュボードの例 ->](https://wandb.ai/manan-goel/yolox-nano/runs/3pzfeom) + + + YOLOX training dashboard + + +この W&B インテグレーション に関する質問や問題がありますか? [YOLOX リポジトリ](https://github.com/Megvii-BaseDetection/YOLOX) で issue を作成してください。 \ No newline at end of file diff --git a/ja/models/launch.mdx b/ja/models/launch.mdx new file mode 100644 index 0000000000..8c3077a527 --- /dev/null +++ b/ja/models/launch.mdx @@ -0,0 +1,54 @@ +--- +title: LLM Evaluation Jobs +description: W&B 内で モデル の チェックポイント やホストされた API モデル を評価し、自動生成されたリーダーボードを使用して 結果 を分析します。 +--- +import PreviewLink from '/snippets/en/_includes/llm-eval-jobs/preview.mdx'; + +[LLM Evaluation Jobs](/models/launch) は、CoreWeave が管理する インフラストラクチャー を使用して LLM モデルのパフォーマンスを 評価 するためのベンチマークフレームワークです。業界標準の最新 [モデルの評価ベンチマーク](/models/launch/evaluations) スイートから選択し、W&B Models の自動リーダーボードやチャートを使用して、結果 を表示、分析、共有できます。LLM Evaluation Jobs を利用することで、GPU インフラストラクチャー を自前でデプロイし、維持管理する複雑さから解放されます。 + + + +{/* + + + + +*/} + +## 仕組み +以下の数ステップで、モデルの チェックポイント や、パブリックにアクセス可能な OpenAI 互換のホスト型 モデル を 評価 できます。 + +1. W&B Models で評価ジョブを セットアップ します。ベンチマークと、リーダーボードを生成するかどうかなどの 設定 を定義します。 +1. 評価ジョブを Launch します。 +1. 結果 とリーダーボードを表示・分析します。 + +同じ宛先 Projects に対して評価ジョブを Launch するたびに、その Projects のリーダーボードが自動的に更新されます。 + + +![評価ジョブのリーダーボードの例](/images/models/llm-evaluation-jobs/model-checkpoint-leaderboard-example.png) + + +## 次のステップ +- [評価ベンチマークカタログ](/models/launch/evaluations) を閲覧する +- [モデルのチェックポイントを評価する](/models/launch/evaluate-model-checkpoint) +- [API ホスト型モデルを評価する](/models/launch/evaluate-hosted-model) + +## 詳細 + +### 料金 +LLM Evaluation Jobs は、完全に管理された CoreWeave の計算リソース上で、一般的なベンチマークに対して モデル の チェックポイント やホスト型 API を 評価 します。インフラストラクチャー を管理する必要はありません。支払いは消費したリソースに対してのみ発生し、アイドル時間には発生しません。料金は「計算リソース」と「ストレージ」の 2 つの要素で構成されます。計算リソースはパブリックプレビュー期間中は無料です。一般提供開始時に料金をアナウンス予定です。保存される 結果 には、Models の Runs に保存された メトリクス やサンプルごとの Traces が含まれます。ストレージ料金は データ 量に基づき、月単位で請求されます。プレビュー期間中、LLM Evaluation Jobs はマルチテナントの クラウド でのみ利用可能です。詳細は [料金ページ](https://wandb.ai/pricing) を参照してください。 + +### ジョブの制限 +個々の評価ジョブには以下の制限があります。 +- 評価対象の モデル の最大サイズは、コンテキストを含めて 86 GB です。 +- 各ジョブは 2 枚の GPU に制限されています。 + +### 要件 +- モデル の チェックポイント を 評価 するには、モデル の重みが VLLM 互換の Artifacts としてパッケージ化されている必要があります。詳細とサンプル コード については、[例:モデルの準備](/models/launch/evaluate-model-checkpoint#example-prepare-a-model) を参照してください。 +- OpenAI 互換 モデル を 評価 するには、その モデル がパブリックな URL でアクセス可能である必要があり、また、組織または Team の管理者が認証用の APIキー を Team Secret として 設定 する必要があります。 +- 一部のベンチマークでは、スコアリングに OpenAI モデル を使用します。これらのベンチマークを実行するには、組織または Team の管理者が、必要な APIキー を Team Secret として 設定 する必要があります。[評価ベンチマークカタログ](/models/launch/evaluations) で、ベンチマークにこの要件があるかどうかを確認してください。 +- 一部のベンチマークでは、Hugging Face のゲート付き データセット への アクセス が必要です。これらのベンチマークのいずれかを実行するには、組織または Team の管理者が Hugging Face でゲート付き データセット への アクセス をリクエストし、Hugging Face ユーザー アクセス トークンを生成して、それを Team Secret として 設定 する必要があります。[評価ベンチマークカタログ](/models/launch/evaluations) で、ベンチマークにこの要件があるかどうかを確認してください。 + +これらの要件を満たすための詳細と手順については、以下を参照してください。 +- [モデルのチェックポイントを評価する](/models/launch/evaluate-hosted-model) +- [ホスト型 API モデルを評価する](/models/launch/evaluate-model-checkpoint) \ No newline at end of file diff --git a/ja/models/launch/evaluate-hosted-model.mdx b/ja/models/launch/evaluate-hosted-model.mdx new file mode 100644 index 0000000000..937f2632d5 --- /dev/null +++ b/ja/models/launch/evaluate-hosted-model.mdx @@ -0,0 +1,58 @@ +--- +title: ホストされた API モデル を評価する +description: CoreWeave によって管理される インフラストラクチャー を使用して、ホストされた API モデル を評価する +--- +import ReviewEvaluationResults from "/snippets/en/_includes/llm-eval-jobs/review-evaluation-results.mdx"; +import RerunEvaluation from "/snippets/en/_includes/llm-eval-jobs/rerun-evaluation.mdx"; +import ExportEvaluation from "/snippets/en/_includes/llm-eval-jobs/export-evaluation.mdx"; +import PreviewLink from '/snippets/en/_includes/llm-eval-jobs/preview.mdx'; + + + +このページでは、[LLM Evaluation Jobs](/models/launch) を使用して、CoreWeave が管理するインフラストラクチャーを利用し、公開アクセス可能な URL にあるホストされた API モデルに対して一連の評価ベンチマークを実行する方法を説明します。W&B Models に artifact として保存されたモデルチェックポイントを評価する場合は、代わりに [Evaluate a model checkpoint](/models/launch/evaluate-model-checkpoint) を参照してください。 + +## 前提条件 +1. LLM Evaluation Jobs の [要件と制限事項](/models/launch#more-details) を確認してください。 +1. 特定のベンチマークを実行するには、チーム管理者がチームスコープのシークレットとして必要な APIキー を追加する必要があります。チームメンバーは、評価ジョブの設定時にそのシークレットを指定できます。 + - **OpenAPI APIキー**: スコアリングに OpenAI モデルを使用するベンチマークで使用されます。ベンチマークを選択した後に **Scorer API key** フィールドが表示される場合に必要です。シークレット名は `OPENAI_API_KEY` である必要があります。 + - **Hugging Face ユーザーアクセストークン**: `lingoly` や `lingoly2` など、ゲート(アクセス制限)付きの Hugging Face データセットへのアクセスが必要な特定のベンチマークで必要です。ベンチマークを選択した後に **Hugging Face Token** フィールドが表示される場合に必要です。APIキー は関連するデータセットへのアクセス権を持っている必要があります。詳細は Hugging Face のドキュメント [User access tokens](https://huggingface.co/docs/hub/en/security-tokens) および [accessing gated datasets](https://huggingface.co/docs/hub/en/datasets-gated#access-gated-datasets-as-a-user) を参照してください。 + - [W&B Inference](/inference) で提供されるモデルを評価するには、組織またはチーム管理者が任意の値を設定した `WANDB_API_KEY` を作成する必要があります。このシークレットは、実際には認証には使用されません。 +1. 評価対象のモデルは、公開アクセス可能な URL で利用可能である必要があります。組織またはチーム管理者は、認証用の APIキー を含むチームスコープのシークレットを作成する必要があります。 +1. 評価結果を保存するための新しい [W&B Project](/models/track/project-page) を作成します。左側のナビゲーションから **Create new project** をクリックします。 +1. 仕組みを理解し、特定の要件を確認するために、各ベンチマークのドキュメントを確認してください。利便性のために、[Available evaluation benchmarks](/models/launch/evaluations) リファレンスに関連リンクが含まれています。 + +## モデルの評価 +以下の手順に従って、評価ジョブをセットアップし、 Launch します。 + +1. W&B にログインし、左側のナビゲーションで **Launch** をクリックします。**LLM Evaluation Jobs** ページが表示されます。 +1. **Evaluate hosted API model** をクリックして、評価をセットアップします。 +1. 評価結果を保存する送信先の Project を選択します。 +1. **Model** セクションで、評価するベース URL とモデル名を指定し、認証に使用する APIキー を選択します。モデル名は、[AI Security Institute](https://inspect.aisi.org.uk/providers.html#openai-api) で定義されている OpenAI 互換の形式で指定してください。例えば、OpenAI モデルは `openai/` という構文で指定します。ホストされているモデルプロバイダーとモデルの包括的なリストについては、[AI Security Institute's model provider reference](https://inspect.aisi.org.uk/providers.html) を参照してください。 + - [W&B Inference](/inference) で提供されるモデルを評価するには、ベース URL を `https://api.inference.wandb.ai/v1` に設定し、モデル名を `openai-api/wandb/` という構文で指定します。詳細は [Inference model catalog](/inference/models) を参照してください。 + - [OpenRouter](https://inspect.aisi.org.uk/providers.html#openrouter) プロバイダーを使用するには、モデル名の前に `openrouter` を付け、`openrouter/` という構文で指定します。 + - カスタムの OpenAI 準拠モデルを評価するには、モデル名を `openai-api/wandb/` という構文で指定します。 +1. **Select evaluations** をクリックし、実行するベンチマークを最大4つまで選択します。 +1. スコアリングに OpenAI モデルを使用するベンチマークを選択した場合、**Scorer API key** フィールドが表示されます。それをクリックし、`OPENAI_API_KEY` シークレットを選択します。利便性のために、チーム管理者はこのドロワーから **Create secret** をクリックしてシークレットを作成することもできます。 +1. Hugging Face のゲート付きデータセットへのアクセスが必要なベンチマークを選択した場合、**Hugging Face token** フィールドが表示されます。[関連するデータセットへのアクセスをリクエスト](https://huggingface.co/docs/hub/en/datasets-gated#access-gated-datasets-as-a-user) した後、Hugging Face ユーザーアクセストークンを含むシークレットを選択します。 +1. オプションで、**Sample limit** に正の整数を設定して、評価するベンチマークサンプルの最大数を制限できます。設定しない場合は、タスク内のすべてのサンプルが含まれます。 +1. リーダーボードを自動的に作成するには、**Publish results to leaderboard** をクリックします。リーダーボードは Workspace パネルにすべての評価をまとめて表示し、Report で共有することもできます。 +1. **Launch** をクリックして、評価ジョブを Launch します。 +1. ページ上部の円形の矢印アイコンをクリックして、最近の run モーダルを開きます。評価ジョブは他の最近の Runs と一緒に表示されます。完了した run の名前をクリックして単一 run ビューで開くか、**Leaderboard** リンクをクリックしてリーダーボードを直接開きます。詳細は [View the results](#view-the-results) を参照してください。 + +この例のジョブは、OpenAI モデル `o4-mini` に対して `simpleqa` ベンチマークを実行します。 + + +![ホストされたモデルの評価ジョブの例](/images/models/llm-evaluation-jobs/hosted-model-job-example.png) + + +このリーダーボードの例では、複数の OpenAI モデルのパフォーマンスをまとめて可視化しています。 + + +![複数のホストされたモデルのパフォーマンスを可視化するリーダーボードの例](/images/models/llm-evaluation-jobs/hosted-model-leaderboard-example.png) + + + + + + + \ No newline at end of file diff --git a/ja/models/launch/evaluate-model-checkpoint.mdx b/ja/models/launch/evaluate-model-checkpoint.mdx new file mode 100644 index 0000000000..9eb89a4603 --- /dev/null +++ b/ja/models/launch/evaluate-model-checkpoint.mdx @@ -0,0 +1,85 @@ +--- +title: モデルの チェックポイント を評価する +description: CoreWeave によって管理される インフラストラクチャー を使用して、VLLM 互換の モデル チェックポイント を評価します。 +--- +import ReviewEvaluationResults from "/snippets/en/_includes/llm-eval-jobs/review-evaluation-results.mdx"; +import RerunEvaluation from "/snippets/en/_includes/llm-eval-jobs/rerun-evaluation.mdx"; +import ExportEvaluation from "/snippets/en/_includes/llm-eval-jobs/export-evaluation.mdx"; +import PreviewLink from '/snippets/en/_includes/llm-eval-jobs/preview.mdx'; + + + +このページでは、[LLM Evaluation Jobs](/models/launch) を使用して、CoreWeave が管理するインフラストラクチャー上で、W&B Models 内のモデルチェックポイントに対して一連の評価ベンチマークを実行する方法について説明します。公開アクセス可能な URL で提供されているホスト型 API モデルを評価する場合は、代わりに [Evaluate an API-hosted model](/models/launch/evaluate-hosted-model) を参照してください。 + +## 事前準備 +1. LLM Evaluation Jobs の [要件と制限事項](/models/launch#more-details) を確認してください。 +1. 特定のベンチマークを実行するには、チーム管理者が [チームスコープのシークレット](/platform/secrets#add-a-secret) として必要な APIキー を追加する必要があります。チームメンバー は、評価ジョブの設定時にそのシークレットを指定できます。要件については、[Evaluation model catalog](/models/launch/evaluations) を参照してください。 + - **OpenAPI APIキー**: スコアリングに OpenAI モデルを使用するベンチマークで使用されます。ベンチマークを選択した後に **Scorer API key** フィールドが表示される場合に必要です。シークレット名は `OPENAI_API_KEY` である必要があります。 + - **Hugging Face ユーザーアクセス件トークン**: `lingoly` や `lingoly2` など、ゲート(承認制)付きの Hugging Face データセットへのアクセスが必要な特定のベンチマークで必要です。ベンチマークを選択した後に **Hugging Face Token** フィールドが表示される場合に必要です。この APIキー は、関連するデータセットへのアクセス権を持っている必要があります。詳細は、Hugging Face のドキュメント [User access tokens](https://huggingface.co/docs/hub/en/security-tokens) および [accessing gated datasets](https://huggingface.co/docs/hub/en/datasets-gated#access-gated-datasets-as-a-user) を参照してください。 +1. 評価結果を保存するための新しい [W&B Projects](/models/track/project-page) を作成します。左側のナビゲーションから **Create new project** をクリックします。 +1. モデルを VLLM 互換フォーマットでパッケージ化し、W&B Models の Artifacts として保存します。これ以外のタイプの Artifacts でベンチマークを試みると失敗します。一つの方法として、このページの最後にある [例:モデルの準備](#example-prepare-your-model) を参照してください。 +1. 各ベンチマークのドキュメントを確認して、その 仕組み と特定の要件を理解してください。利便性のため、[Available evaluation benchmarks](/models/launch/evaluations) リファレンスに関連リンクが含まれています。 + +## モデルを評価する +以下の手順に従って、評価ジョブをセットアップし、ローンチします。 + +1. W&B にログインし、左側のナビゲーションで **Launch** をクリックします。**LLM Evaluation Jobs** ページが表示されます。 +1. **Evaluate model checkpoint** をクリックして、評価ジョブをセットアップします。 +1. 評価結果を保存する送信先 Projects を選択します。 +1. **Model artifact** セクションで、評価する準備済みモデルの Projects、Artifact、および バージョン を指定します。 +1. **Evaluations** をクリックし、最大 4 つのベンチマークを選択します。 +1. スコアリングに OpenAI モデルを使用するベンチマークを選択した場合、**Scorer API key** フィールドが表示されます。それをクリックし、`OPENAI_API_KEY` シークレットを選択します。利便性のため、チーム管理者はこのドロワーから **Create secret** をクリックしてシークレットを作成することもできます。 +1. Hugging Face のゲート付きデータセットへのアクセスが必要なベンチマークを選択した場合、**Hugging Face token** フィールドが表示されます。[関連するデータセットへのアクセスをリクエスト](https://huggingface.co/docs/hub/en/datasets-gated#access-gated-datasets-as-a-user) した後、Hugging Face ユーザーアクセス件トークンを含むシークレットを選択します。 +1. オプションで、**Sample limit** に正の整数を設定して、評価するベンチマークサンプルの最大数を制限できます。指定しない場合は、タスク内のすべてのサンプルが含まれます。 +1. リーダーボードを自動的に作成するには、**Publish results to leaderboard** をクリックします。リーダーボードは、Workspace パネルにすべての評価をまとめて表示し、Reports で共有することもできます。 +1. **Launch** をクリックして評価ジョブをローンチします。 +1. ページ上部の円形の矢印アイコンをクリックして、最近の run モーダルを開きます。評価ジョブは他の最近の Runs と共に表示されます。完了した run の名前をクリックしてシングル run ビューで開くか、**Leaderboard** リンクをクリックしてリーダーボードを直接開きます。詳細は [結果を表示する](#view-the-results) を参照してください。 + + +最初のモデルを評価した後は、次の評価ジョブを設定する際に、多くのフィールドに最新の値が事前入力されます。 + + +この評価ジョブの例では、Artifact に対して 2 つのベンチマークを実行しています。 + + +![モデルチェックポイント評価ジョブの例](/images/models/llm-evaluation-jobs/model-checkpoint-job-example.png) + + +このリーダーボードの例では、複数のモデルのパフォーマンスをまとめて可視化しています。 + + +![複数のベンチマークタスクに対する複数のモデルのパフォーマンスを可視化するリーダーボードの例](/images/models/llm-evaluation-jobs/model-checkpoint-leaderboard-example.png) + + + + + + + + +## 例:モデルの準備 +モデルを準備するには、W&B Models にモデルをロードし、モデルの重みを VLLM 互換フォーマットでパッケージ化して、その 結果 を保存します。以下にその一例を示します。 + +```python lines +import os +from transformers import AutoTokenizer, AutoModelForCausalLM + +# モデルのロード +model_name = "your-model-name" +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = AutoModelForCausalLM.from_pretrained(model_name) + +# vLLM互換フォーマットで保存 +save_dir = "path/to/save" +tokenizer.save_pretrained(save_dir) +model.save_pretrained(save_dir) + +# W&B Modelsに保存 +import wandb +wandb_run = wandb.init(entity="your-entity-name", project="your-project-name") +artifact = wandb.Artifact(name="your-artifact-name") +artifact.add_dir(save_dir) +logged_artifact = wandb_run.log_artifact(artifact) +logged_artifact.wait() +wandb.finish() +``` \ No newline at end of file diff --git a/ja/models/launch/evaluations.mdx b/ja/models/launch/evaluations.mdx new file mode 100644 index 0000000000..a11c837adb --- /dev/null +++ b/ja/models/launch/evaluations.mdx @@ -0,0 +1,207 @@ +--- +title: 評価ベンチマークカタログ +description: LLM Evaluation Jobs を通じて利用可能な評価ベンチマークを閲覧する +--- +import PreviewLink from '/snippets/en/_includes/llm-eval-jobs/preview.mdx'; + + + +このページでは、 [LLM Evaluation Jobs](/models/launch) が提供する評価ベンチマークをカテゴリ別にリストアップしています。 + +特定のベンチマークを実行するには、チーム管理者が [チームスコープの secret](/platform/secrets#add-a-secret) として必要な API キーを追加する必要があります。チームメンバーは、評価ジョブを設定する際にその secret を指定できます。 + - **OpenAI Model Scorer** カラムが `true` のベンチマークは、スコアリングに OpenAI モデルを使用します。組織またはチームの管理者は、OpenAI API キーをチーム secret として追加する必要があります。この要件があるベンチマークで評価ジョブを設定する場合は、 **Scorer API key** フィールドにその secret を設定してください。 + - **Gated Hugging Face Dataset** カラムにリンクがあるベンチマークは、ゲート付きの Hugging Face データセットへのアクセスが必要です。組織またはチームの管理者は、Hugging Face でデータセットへのアクセスをリクエストし、Hugging Face ユーザーアクセストークンを作成して、そのアクセスキーをチーム secret として設定する必要があります。この要件があるベンチマークを設定する場合は、 **Hugging Face Token** フィールドにその secret を設定してください。 + +{/* + Benchmark list: https://github.com/wandb/launch-jobs/blob/main/jobs/inspect_ai_evals/api_model/sample-schema.json + OpenAI and Hugging Face requirements: https://github.com/wandb/core/blob/master/frontends/app/src/components/Launch/publicQueue/utils.ts +*/} + +## Knowledge(知識) + +科学、言語、一般的な推論など、さまざまなドメインにわたる事実知識を評価します。 + +| 評価 | タスク ID | OpenAI Model Scorer | Gated Hugging Face Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [BoolQ](https://github.com/google-research-datasets/boolean-questions) | `boolq` | | | 自然言語クエリからの 2 値(はい/いいえ)の質問 | +| [GPQA Diamond](https://arxiv.org/abs/2311.12022) | `gpqa_diamond` | | | 大学院レベルの科学の質問(最高品質のサブセット) | +| [HLE](https://arxiv.org/abs/2501.14249) | `hle` | | Yes | 人間レベルの評価ベンチマーク | +| [Lingoly](https://arxiv.org/abs/2406.06196) | `lingoly` | | Yes | 言語学オリンピックの問題 | +| [Lingoly Too](https://arxiv.org/abs/2503.02972) | `lingoly_too` | | Yes | 拡張された言語学チャレンジ問題 | +| [MMIU](https://arxiv.org/abs/2408.02718) | `mmiu` | | | 大規模マルチタスク言語理解ベンチマーク | +| [MMLU (0-shot)](https://github.com/hendrycks/test) | `mmlu_0_shot` | | | 例示なし(0-shot)での大規模マルチタスク言語理解 | +| [MMLU (5-shot)](https://github.com/hendrycks/test) | `mmlu_5_shot` | | | 5 つの例示を伴う大規模マルチタスク言語理解 | +| [MMLU-Pro](https://arxiv.org/abs/2406.01574) | `mmlu_pro` | | | MMLU のより難易度の高いバージョン | +| [ONET M6](https://github.com/UKGovernmentBEIS/inspect_evals/tree/main/src/inspect_evals/onet) | `onet_m6` | | | 職業知識ベンチマーク | +| [PAWS](https://github.com/google-research-datasets/paws) | `paws` | | | 言い換えによる敵対的単語置換 | +| [SevenLLM MCQ (English)](https://github.com/wangclnlp/SevenLLM-Benchmark) | `sevenllm_mcq_en` | | | 英語の多肢選択式質問 | +| [SevenLLM MCQ (Chinese)](https://github.com/wangclnlp/SevenLLM-Benchmark) | `sevenllm_mcq_zh` | | | 中国語の多肢選択式質問 | +| [SevenLLM QA (English)](https://github.com/wangclnlp/SevenLLM-Benchmark) | `sevenllm_qa_en` | | | 英語の質問回答(QA) | +| [SevenLLM QA (Chinese)](https://github.com/wangclnlp/SevenLLM-Benchmark) | `sevenllm_qa_zh` | | | 中国語の質問回答(QA) | +| [SimpleQA](https://openai.com/index/introducing-simpleqa/) | `simpleqa` | Yes | | 直接的な事実に関する質問回答 | +| [SimpleQA Verified](https://openai.com/index/introducing-simpleqa/) | `simpleqa_verified` | | | 検証済みの回答を含む SimpleQA のサブセット | +| [WorldSense](https://github.com/facebookresearch/worldsense) | `worldsense` | | | 世界の知識と常識の理解度を評価 | + +## Reasoning(推論) + +論理的思考、問題解決、および常識的な推論能力を評価します。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [AGIE AQUA-RAT](https://arxiv.org/abs/1705.04146) | `agie_aqua_rat` | | | 根拠(rationale)を伴う代数の質問回答 | +| [AGIE LogiQA (English)](https://arxiv.org/abs/2007.08124) | `agie_logiqa_en` | | | 英語の論理推論の質問 | +| [AGIE LSAT Analytical Reasoning](https://www.lsac.org/) | `agie_lsat_ar` | | | LSAT 分析推論(ロジックパズル)の問題 | +| [AGIE LSAT Logical Reasoning](https://www.lsac.org/) | `agie_lsat_lr` | | | LSAT 論理推論の質問 | +| [ARC Challenge](https://allenai.org/data/arc) | `arc_challenge` | | | 推論を必要とする難易度の高い科学の質問(AI2 推論チャレンジ) | +| [ARC Easy](https://allenai.org/data/arc) | `arc_easy` | | | ARC データセットからの比較的容易な科学の質問セット | +| [BBH](https://github.com/suzgunmirac/BIG-Bench-Hard) | `bbh` | | | BIG-Bench Hard: BIG-Bench からの難易度の高いタスク | +| [CoCoNot](https://arxiv.org/abs/2310.03697) | `coconot` | | | 反実仮想的な常識推論ベンチマーク | +| [CommonsenseQA](https://www.tau-nlp.sites.tau.ac.il/commonsenseqa) | `commonsense_qa` | | | 常識推論の質問 | +| [HellaSwag](https://arxiv.org/abs/1905.07830) | `hellaswag` | | | 常識的な自然言語推論 | +| [MUSR](https://arxiv.org/abs/2310.16049) | `musr` | | | 多段階推論ベンチマーク | +| [PIQA](https://yonatanbisk.com/piqa/) | `piqa` | | | 物理的な常識推論 | +| [WinoGrande](https://winogrande.allenai.org/) | `winogrande` | | | 代名詞の解消を通じた常識推論 | + +## Math(数学) + +小学校レベルから競技レベルの問題まで、さまざまな難易度の数学的問題解決能力を評価します。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [AGIE Math](https://arxiv.org/abs/2410.12211) | `agie_math` | | | AGIE ベンチマークスイートからの高度な数学的推論 | +| [AGIE SAT Math](https://collegereadiness.collegeboard.org/sat) | `agie_sat_math` | | | SAT 数学の質問 | +| [AIME 2024](https://artofproblemsolving.com/wiki/index.php/AIME_Problems_and_Solutions) | `aime2024` | | | 2024 年のアメリカ招待数学検定(AIME)の問題 | +| [AIME 2025](https://artofproblemsolving.com/wiki/index.php/AIME_Problems_and_Solutions) | `aime2025` | | | 2025 年のアメリカ招待数学検定(AIME)の問題 | +| [GSM8K](https://github.com/openai/grade-school-math) | `gsm8k` | | | Grade School Math 8K: 多段階の算数文章題 | +| [InfiniteBench Math Calc](https://arxiv.org/abs/2402.13718) | `infinite_bench_math_calc` | | | 長いコンテキストにおける数学的計算 | +| [InfiniteBench Math Find](https://arxiv.org/abs/2402.13718) | `infinite_bench_math_find` | | | 長いコンテキストにおける数学的パターンの発見 | +| [MATH](https://github.com/hendrycks/math) | `math` | | | 競技レベルの数学問題 | +| [MGSM](https://github.com/google-research/url-nlp/tree/main/mgsm) | `mgsm` | | | 多言語の小学校レベルの算数 | + +## Code(コード) + +デバッグ、コード実行予測、関数呼び出しなどのプログラミングおよびソフトウェア開発能力を評価します。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [BFCL](https://gorilla.cs.berkeley.edu/blogs/8_berkeley_function_calling_leaderboard.html) | `bfcl` | | | Berkeley Function Calling Leaderboard: 関数呼び出しとツール使用能力をテスト | +| [InfiniteBench Code Debug](https://arxiv.org/abs/2402.13718) | `infinite_bench_code_debug` | | | 長いコンテキストでのコードデバッグタスク | +| [InfiniteBench Code Run](https://arxiv.org/abs/2402.13718) | `infinite_bench_code_run` | | | 長いコンテキストでのコード実行予測 | + +## Reading(読解) + +複雑なテキストからの読解力と情報抽出能力を評価します。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [AGIE LSAT Reading Comprehension](https://www.lsac.org/) | `agie_lsat_rc` | | | LSAT の読解パッセージと質問 | +| [AGIE SAT English](https://collegereadiness.collegeboard.org/sat) | `agie_sat_en` | | | パッセージを含む SAT の読解および作文の質問 | +| [AGIE SAT English (No Passage)](https://collegereadiness.collegeboard.org/sat) | `agie_sat_en_without_passage` | | | パッセージを伴わない SAT 英語の質問 | +| [DROP](https://allenai.org/data/drop) | `drop` | | | Discrete Reasoning Over Paragraphs: 数値的推論を必要とする読解 | +| [RACE-H](https://www.cs.cmu.edu/~glai1/data/race/) | `race_h` | | | 英語試験(難易度高)からの読解 | +| [SQuAD](https://rajpurkar.github.io/SQuAD-explorer/) | `squad` | | | Stanford Question Answering Dataset: Wikipedia 記事に対する抽出型の質問回答 | + +## Long context(長いコンテキスト) + +検索やパターン認識を含む、拡張されたコンテキストを処理し推論する能力を評価します。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [InfiniteBench KV Retrieval](https://arxiv.org/abs/2402.13718) | `infinite_bench_kv_retrieval` | | | 長いコンテキストにおけるキーバリュー検索 | +| [InfiniteBench LongBook (English)](https://arxiv.org/abs/2402.13718) | `infinite_bench_longbook_choice_eng` | | | 長い書籍に関する多肢選択式質問 | +| [InfiniteBench LongDialogue QA (English)](https://arxiv.org/abs/2402.13718) | `infinite_bench_longdialogue_qa_eng` | | | 長い対話に対する質問回答 | +| [InfiniteBench Number String](https://arxiv.org/abs/2402.13718) | `infinite_bench_number_string` | | | 長いシーケンス内の数値パターン認識 | +| [InfiniteBench Passkey](https://arxiv.org/abs/2402.13718) | `infinite_bench_passkey` | | | 長いコンテキストからの情報検索 | +| [NIAH](https://arxiv.org/abs/2406.07230) | `niah` | | | Needle in a Haystack: 長いコンテキストの検索テスト | + +## Safety(安全性) + +アライメント、バイアス検出、有害コンテンツへの耐性、および真実性を評価します。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [AgentHarm](https://arxiv.org/abs/2410.09024) | `agentharm` | Yes | | 有害なエージェントの振る舞いや悪用シナリオに対するモデルの耐性をテスト | +| [AgentHarm Benign](https://arxiv.org/abs/2410.09024) | `agentharm_benign` | Yes | | 偽陽性率を測定するための AgentHarm の良性ベースライン | +| [Agentic Misalignment](https://arxiv.org/abs/2510.05179) | `agentic_misalignment` | | | エージェント的な振る舞いにおける潜在的なミスアライメントを評価 | +| [AHB](https://arxiv.org/abs/2503.04804) | `ahb` | | | Agent Harmful Behavior: 有害なエージェントアクションに対する耐性をテスト | +| [AIRBench](https://arxiv.org/abs/2410.02407) | `air_bench` | | | 敵対的な指示に対する耐性をテスト | +| [BBEH](https://arxiv.org/abs/2502.19187) | `bbeh` | | | 有害な振る舞いを評価するためのバイアスベンチマーク | +| [BBEH Mini](https://arxiv.org/abs/2502.19187) | `bbeh_mini` | | | BBEH ベンチマークの縮小版 | +| [BBQ](https://arxiv.org/abs/2110.08193) | `bbq` | | | 質問回答に関するバイアスベンチマーク | +| [BOLD](https://arxiv.org/abs/2101.11718) | `bold` | | | オープンエンドな言語生成におけるバイアスデータセット | +| [CYSE3 Visual Prompt Injection](https://arxiv.org/abs/2408.01605) | `cyse3_visual_prompt_injection` | | | 視覚的なプロンプトインジェクション攻撃に対する耐性をテスト | +| [Make Me Pay](https://arxiv.org/abs/2410.08691) | `make_me_pay` | | | 金銭詐欺や不正シナリオに対する耐性をテスト | +| [MASK](https://arxiv.org/abs/2503.03750) | `mask` | Yes | Yes | モデルの機密情報の取り扱いをテスト | +| [Personality BFI](https://github.com/UKGovernmentBEIS/inspect_evals/tree/main/src/inspect_evals/personality) | `personality_BFI` | | | ビッグファイブ性格特性評価 | +| [Personality TRAIT](https://arxiv.org/abs/2406.14703) | `personality_TRAIT` | | Yes | 包括的な性格特性評価 | +| SOSBench | `sosbench` | Yes | | 安全性と監督のストレステスト | +| [StereoSet](https://stereoset.mit.edu/) | `stereoset` | | | 言語モデルにおけるステレオタイプ的なバイアスを測定 | +| [StrongREJECT](https://arxiv.org/abs/2402.10260) | `strong_reject` | | | 有害なリクエストを拒絶するモデルの能力をテスト | +| [Sycophancy](https://arxiv.org/abs/2310.13548) | `sycophancy` | | | お世辞(sycophantic)な振る舞いをする傾向を評価 | +| [TruthfulQA](https://github.com/sylinrl/TruthfulQA) | `truthfulqa` | | | モデルの真実性と虚偽に対する耐性をテスト | +| [UCCB](https://huggingface.co/datasets/CraneAILabs/UCCB) | `uccb` | | | 不安全なコンテンツの分類ベンチマーク | +| [WMDP Bio](https://www.wmdp.ai/) | `wmdp_bio` | | | 生物学における危険な知識をテスト | +| [WMDP Chem](https://www.wmdp.ai/) | `wmdp_chem` | | | 化学における危険な知識をテスト | +| [WMDP Cyber](https://www.wmdp.ai/) | `wmdp_cyber` | | | サイバーセキュリティにおける危険な知識をテスト | +| [XSTest](https://arxiv.org/abs/2308.01263) | `xstest` | Yes | | 過剰な拒絶を検出するための過剰安全テスト | + +## Domain-Specific(ドメイン特化) + +医学、化学、法学、生物学、およびその他の専門分野における専門知識を評価します。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [ChemBench](https://arxiv.org/abs/2404.01475) | `chembench` | | | 化学の知識と問題解決のベンチマーク | +| [HealthBench](https://arxiv.org/abs/2406.09746) | `healthbench` | Yes | | ヘルスケアおよび医学知識の評価 | +| [HealthBench Consensus](https://arxiv.org/abs/2406.09746) | `healthbench_consensus` | Yes | | 専門家の合意に基づくヘルスケアの質問 | +| [HealthBench Hard](https://arxiv.org/abs/2406.09746) | `healthbench_hard` | Yes | | 難易度の高いヘルスケアシナリオ | +| [LabBench Cloning Scenarios](https://arxiv.org/abs/2407.10362) | `lab_bench_cloning_scenarios` | | | 実験計画とクローニング | +| [LabBench DBQA](https://arxiv.org/abs/2407.10362) | `lab_bench_dbqa` | | | ラボシナリオに関するデータベースの質問回答 | +| [LabBench FigQA](https://arxiv.org/abs/2407.10362) | `lab_bench_figqa` | | | 科学的文脈における図の解釈 | +| [LabBench LitQA](https://arxiv.org/abs/2407.10362) | `lab_bench_litqa` | | | 研究用文献に基づく質問回答 | +| [LabBench ProtocolQA](https://arxiv.org/abs/2407.10362) | `lab_bench_protocolqa` | | | 実験プロトコルの理解 | +| [LabBench SeqQA](https://arxiv.org/abs/2407.10362) | `lab_bench_seqqa` | | | 生物学的配列分析の質問 | +| [LabBench SuppQA](https://arxiv.org/abs/2407.10362) | `lab_bench_suppqa` | | | 補足資料の解釈 | +| [LabBench TableQA](https://arxiv.org/abs/2407.10362) | `lab_bench_tableqa` | | | 科学論文における表の解釈 | +| [MedQA](https://github.com/jind11/MedQA) | `medqa` | | | 医師免許試験の質問 | +| [PubMedQA](https://pubmedqa.github.io/) | `pubmedqa` | | | 研究アブストラクトからの生物医学的質問回答 | +| [SEC-QA v1](https://arxiv.org/abs/2406.14806) | `sec_qa_v1` | | | SEC(米国証券取引委員会)提出書類の質問回答 | +| [SEC-QA v1 (5-shot)](https://arxiv.org/abs/2406.14806) | `sec_qa_v1_5_shot` | | | 5 つの例示を伴う SEC-QA | +| [SEC-QA v2](https://arxiv.org/abs/2406.14806) | `sec_qa_v2` | | | 更新された SEC 提出書類ベンチマーク | +| [SEC-QA v2 (5-shot)](https://arxiv.org/abs/2406.14806) | `sec_qa_v2_5_shot` | | | 5 つの例示を伴う SEC-QA v2 | + +## Multimodal(マルチモーダル) + +視覚入力とテキスト入力を組み合わせた、画像と言語の理解度を評価します。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [DocVQA](https://www.docvqa.org/) | `docvqa` | | | Document Visual Question Answering: 文書画像に関する質問 | +| [MathVista](https://mathvista.github.io/) | `mathvista` | | | 視覚的文脈を伴う数学的推論(視覚と数学の融合) | +| [MMMU Multiple Choice](https://mmmu-benchmark.github.io/) | `mmmu_multiple_choice` | | | 多肢選択形式によるマルチモーダル理解 | +| [MMMU Open](https://mmmu-benchmark.github.io/) | `mmmu_open` | | | 自由回答形式によるマルチモーダル理解 | +| [V*Star Bench Attribute Recognition](https://arxiv.org/abs/2411.10006) | `vstar_bench_attribute_recognition` | | | 視覚的な属性認識タスク | +| [V*Star Bench Spatial Relationship](https://arxiv.org/abs/2411.10006) | `vstar_bench_spatial_relationship_reasoning` | | | 視覚入力による空間推論 | + +## Instruction Following(指示追従) + +特定の指示やフォーマット要件への遵守度を評価します。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [IFEval](https://arxiv.org/abs/2311.07911) | `ifeval` | | | 正確な指示追従能力をテスト | + +## System(システム) + +基本的なシステムの検証と実行前チェックです。 + +| 評価 | タスク ID | OpenAI Scorer | Gated HF Dataset | 説明 | +|------------|---------|---------------|------------------|-------------| +| [Pre-Flight](https://ukgovernmentbeis.github.io/inspect_evals/evals/knowledge/pre_flight/) | `pre_flight` | | | 基本的なシステムチェックと検証テスト | + + +## 次のステップ + +- [モデルのチェックポイントを評価する](/models/launch/evaluate-model-checkpoint) +- [ホストされた API モデルを評価する](/models/launch/evaluate-hosted-model) +- 特定のベンチマークの詳細については [AISI Inspect Evals](https://inspect.aisi.org.uk/evals/) を参照してください。 \ No newline at end of file diff --git a/ja/models/models_quickstart.mdx b/ja/models/models_quickstart.mdx new file mode 100644 index 0000000000..bd155b90d2 --- /dev/null +++ b/ja/models/models_quickstart.mdx @@ -0,0 +1,254 @@ +--- +title: W&B Models を使い始める +--- + +機械学習ワークフローにおけるモデルのアーティファクトを追跡、共有、管理するために、いつ、どのように W&B を使用するかを学びます。このページでは、各タスクに適した W&B API を使用して、実験のログ記録、レポートの作成、およびログ記録されたデータへのアクセス方法について説明します。 + +このチュートリアルでは以下を使用します: + +* [W&B Python SDK](/models/ref/python) (`wandb.sdk`): トレーニング中の実験をログに記録し、監視するため。 +* [W&B Public API](/models/ref/python/public-api) (`wandb.apis.public`): ログに記録された実験データのクエリと分析を行うため。 +* [W&B Reports and Workspaces API](/models/ref/wandb_workspaces) (`wandb.wandb-workspaces`): 学びをまとめるためのレポートを作成するため。 + +## サインアップと API キーの作成 +マシンを W&B で認証するには、まず [wandb.ai/settings](https://wandb.ai/settings) で APIキー を生成する必要があります。APIキー をコピーし、安全に保管してください。 + +## パッケージのインストールとインポート + +W&B ライブラリと、このウォークスルーで必要となる他のいくつかのパッケージをインストールします。 + +```python +pip install wandb +``` + +W&B Python SDK をインポートします: + + +```python +import wandb +``` + +以下のコードブロックで、あなたのチームの entity を指定してください: + + +```python +TEAM_ENTITY = "" # あなたのチームの entity に置き換えてください +PROJECT = "my-awesome-project" +``` + +## モデルのトレーニング + +以下のコードは、モデルのトレーニング、メトリクスのログ記録、およびモデルを Artifacts として保存するという、基本的な機械学習ワークフローをシミュレートします。 + +トレーニング中に W&B とやり取りするには、W&B Python SDK (`wandb.sdk`) を使用します。[`wandb.Run.log()`](/models/ref/python/experiments/run/#method-runlog) を使用して損失(loss)をログに記録し、[`wandb.Artifact`](/models/ref/python/experiments/artifact) を使用してトレーニング済みモデルを Artifacts として保存し、最後に [`Artifact.add_file`](/models/ref/python/experiments/artifact#add_file) を使用してモデルファイルを追加します。 + +```python +import random # データのシミュレーション用 + +def model(training_data: int) -> int: + """デモンストレーション用のモデルシミュレーション。""" + return training_data * 2 + random.randint(-1, 1) + +# 重みとノイズのシミュレーション +weights = random.random() # ランダムな重みを初期化 +noise = random.random() / 5 # ノイズをシミュレートするための小さなランダムノイズ + +# ハイパーパラメーターと設定 +config = { + "epochs": 10, # トレーニングするエポック数 + "learning_rate": 0.01, # オプティマイザーの学習率 +} + +# コンテキストマネージャーを使用して W&B Runs を初期化および終了 +with wandb.init(project=PROJECT, entity=TEAM_ENTITY, config=config) as run: + # トレーニングループのシミュレーション + for epoch in range(config["epochs"]): + xb = weights + noise # シミュレートされた入力トレーニングデータ + yb = weights + noise * 2 # シミュレートされたターゲット出力(入力ノイズの2倍) + + y_pred = model(xb) # モデルの予測 + loss = (yb - y_pred) ** 2 # 平均二乗誤差(MSE)損失 + + print(f"epoch={epoch}, loss={loss}") + # エポックと損失を W&B にログ記録 + run.log({ + "epoch": epoch, + "loss": loss, + }) + + # モデルアーティファクトの一意の名前 + model_artifact_name = f"model-demo" + + # シミュレートされたモデルファイルを保存するローカルパス + PATH = "model.txt" + + # モデルをローカルに保存 + with open(PATH, "w") as f: + f.write(str(weights)) # モデルの重みをファイルに保存 + + # アーティファクトオブジェクトを作成 + # ローカルに保存されたモデルをアーティファクトオブジェクトに追加 + artifact = wandb.Artifact(name=model_artifact_name, type="model", description="My trained model") + artifact.add_file(local_path=PATH) + artifact.save() +``` + +前のコードブロックの重要なポイントは以下の通りです: +* トレーニング中のメトリクスをログに記録するには `wandb.Run.log()` を使用します。 +* モデル(データセットなど)を Artifacts として W&B プロジェクトに保存するには `wandb.Artifact` を使用します。 + +モデルをトレーニングして Artifacts として保存したので、それを W&B のレジストリに公開できます。[`wandb.Run.use_artifact()`](/models/ref/python/experiments/run/#method-runuse_artifact) を使用してプロジェクトからアーティファクトを取得し、Model Registry への公開準備をします。`wandb.Run.use_artifact()` には2つの重要な目的があります: +* プロジェクトからアーティファクトオブジェクトを取得する。 +* アーティファクトを run の入力としてマークし、再現性とトレーサビリティを確保する。詳細は [リネージマップの作成と表示](/models/registry/lineage/) を参照してください。 + +## ダッシュボードでトレーニングデータを表示する + +https://wandb.ai/login からアカウントにログインします。 + +**Projects** の下に `my-awesome-project`(または上記でプロジェクト名として使用したもの)が表示されているはずです。これをクリックして、プロジェクトの Workspace に入ります。 + +ここから、実行したすべての Run に関する詳細を確認できます。このスクリーンショットでは、コードが数回再実行され、いくつかの Runs が生成されており、それぞれにランダムに生成された名前が付いています。 + + + + + + +## モデルを W&B Registry に公開する + +組織内の他のユーザーとモデルを共有するには、`wandb.Run.link_artifact()` を使用して [コレクション](/models/registry/create_collection/) に公開します。以下のコードはアーティファクトを [レジストリ](/models/registry) にリンクし、チームがアクセスできるようにします。 + +```python +# アーティファクト名は、チームのプロジェクト内の特定のアーティファクトバージョンを指定します +artifact_name = f'{TEAM_ENTITY}/{PROJECT}/{model_artifact_name}:v0' +print("Artifact name: ", artifact_name) + +REGISTRY_NAME = "Model" # W&B でのレジストリ名 +COLLECTION_NAME = "DemoModels" # レジストリ内のコレクション名 + +# レジストリ内のアーティファクトのターゲットパスを作成 +target_path = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" +print("Target path: ", target_path) + +with wandb.init(entity=TEAM_ENTITY, project=PROJECT) as run: + model_artifact = run.use_artifact(artifact_or_name=artifact_name, type="model") + run.link_artifact(artifact=model_artifact, target_path=target_path) +``` + +`wandb.Run.link_artifact()` を実行すると、モデルアーティファクトはレジストリ内の `DemoModels` コレクションに入ります。そこから、バージョン履歴、[リネージマップ](/models/registry/lineage/)、その他の [メタデータ](/models/registry/registry_cards/) などの詳細を確認できます。 + +アーティファクトをレジストリにリンクする方法の追加情報については、[アーティファクトをレジストリにリンクする](/models/registry/link_version/) を参照してください。 + +## 推論のためにレジストリからモデルアーティファクトを取得する + +推論にモデルを使用するには、`wandb.Run.use_artifact()` を使用してレジストリから公開されたアーティファクトを取得します。これによりアーティファクトオブジェクトが返され、[`wandb.Artifact.download()`](/models/ref/python/experiments/artifact/#method-artifactdownload) を使用してアーティファクトをローカルファイルにダウンロードできます。 + +```python +REGISTRY_NAME = "Model" # W&B でのレジストリ名 +COLLECTION_NAME = "DemoModels" # レジストリ内のコレクション名 +VERSION = 0 # 取得するアーティファクトのバージョン + +model_artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}" +print(f"Model artifact name: {model_artifact_name}") + +with wandb.init(entity=TEAM_ENTITY, project=PROJECT) as run: + registry_model = run.use_artifact(artifact_or_name=model_artifact_name) + local_model_path = registry_model.download() +``` + +レジストリからアーティファクトを取得する方法の詳細については、[レジストリからアーティファクトをダウンロードして使用する](/models/registry/download_use_artifact/) を参照してください。 + +使用している機械学習フレームワークによっては、重みをロードする前にモデルのアーキテクチャーを再構築する必要がある場合があります。これは使用している特定のフレームワークやモデルに依存するため、読者への演習として残しておきます。 + + +## レポートで発見を共有する + + +W&B Report および Workspace API はパブリックプレビュー中です。 + + +作業を要約するために [レポート](/models/reports/) を作成して共有しましょう。プログラムでレポートを作成するには、[W&B Report and Workspace API](/models/ref/wandb_workspaces/reports) を使用します。 + +まず、W&B Reports API をインストールします: + +```python +pip install wandb wandb-workspaces -qqq +``` + +以下のコードブロックは、マークダウン、パネルグリッドなど、複数のブロックを含むレポートを作成します。ブロックを追加したり、既存のブロックの内容を変更したりして、レポートをカスタマイズできます。 + +コードブロックの出力には、作成されたレポートの URL へのリンクが表示されます。ブラウザでこのリンクを開いてレポートを表示できます。 + +```python +import wandb_workspaces.reports.v2 as wr + +experiment_summary = """これは、W&B を使用してシンプルなモデルをトレーニングするために実施された実験の要約です。""" +dataset_info = """トレーニングに使用されたデータセットは、シンプルなモデルによって生成された合成データで構成されています。""" +model_info = """モデルは、ノイズを含む入力データに基づいて出力を予測するシンプルな線形回帰モデルです。""" + +report = wr.Report( + project=PROJECT, + entity=TEAM_ENTITY, + title="My Awesome Model Training Report", + description=experiment_summary, + blocks= [ + wr.TableOfContents(), + wr.H2("Experiment Summary"), + wr.MarkdownBlock(text=experiment_summary), + wr.H2("Dataset Information"), + wr.MarkdownBlock(text=dataset_info), + wr.H2("Model Information"), + wr.MarkdownBlock(text = model_info), + wr.PanelGrid( + panels=[ + wr.LinePlot(title="Train Loss", x="Step", y=["loss"], title_x="Step", title_y="Loss") + ], + ), + ] + +) + +# レポートを W&B に保存 +report.save() +``` + +プログラムでレポートを作成する方法や、W&B App を使用してインタラクティブにレポートを作成する方法の詳細については、W&B Docs 開発者ガイドの [レポートの作成](/models/reports/create-a-report/) を参照してください。 + +## レジストリへのクエリ +[W&B Public APIs](/models/ref/python/public-api/) を使用して、W&B の履歴データのクエリ、分析、管理を行います。これは、アーティファクトのリネージの追跡、異なるバージョンの比較、モデルの経時的なパフォーマンス分析に役立ちます。 + +以下のコードブロックは、特定のコレクション内のすべてのアーティファクトを Model Registry から照会する方法を示しています。コレクションを取得し、そのバージョンを反復処理して、各アーティファクトの名前とバージョンを出力します。 + +```python +import wandb + +# wandb API を初期化 +api = wandb.Api() + +# 文字列 `model` を含み、 +# かつ `text-classification` タグまたは `latest` エイリアスのいずれかを持つすべてのアーティファクトバージョンを検索します +registry_filters = { + "name": {"$regex": "model"} +} + +# 論理 $or 演算子を使用してアーティファクトバージョンをフィルタリングします +version_filters = { + "$or": [ + {"tag": "text-classification"}, + {"alias": "latest"} + ] +} + +# フィルターに一致するすべてのアーティファクトバージョンのイテラブルを返します +artifacts = api.registries(filter=registry_filters).collections().versions(filter=version_filters) + +# 見つかった各アーティファクトの名前、コレクション、エイリアス、タグ、作成日時を出力します +for art in artifacts: + print(f"artifact name: {art.name}") + print(f"collection artifact belongs to: { art.collection.name}") + print(f"artifact aliases: {art.aliases}") + print(f"tags attached to artifact: {art.tags}") + print(f"artifact created at: {art.created_at}\n") +``` + +レジストリのクエリに関する詳細については、[MongoDB スタイルのクエリでレジストリアイテムを検索する](/models/registry/search_registry/#query-registry-items-with-mongodb-style-queries) を参照してください。 \ No newline at end of file diff --git a/ja/models/quickstart.mdx b/ja/models/quickstart.mdx index 9705efd6d7..07ec8a1e21 100644 --- a/ja/models/quickstart.mdx +++ b/ja/models/quickstart.mdx @@ -3,17 +3,25 @@ title: W&B クイックスタート description: W&B クイックスタート --- -W&B をインストールして、お好きな規模の機械学習実験をトラッキング、可視化、管理しましょう。 +import ApiKeyCreate from "/snippets/en/_includes/api-key-create.mdx"; -## サインアップしてAPIキーを作成する +W&B をインストールして、あらゆる規模の機械学習 実験 を追跡、可視化、管理しましょう。 -W&Bとマシンを認証するには、ユーザープロファイルまたは[wandb.ai/authorize](https://wandb.ai/authorize)でAPIキーを生成します。APIキーをコピーして安全に保管してください。 + +W&B Weave に関する情報をお探しですか? [Weave Python SDK クイックスタート](/weave/quickstart) または [Weave TypeScript SDK クイックスタート](/weave/reference/generated_typescript_docs/intro-notebook) をご覧ください。 + -## `wandb` ライブラリをインストールしてログインする +## サインアップと APIキー の作成 + +マシンを W&B で認証するには、 APIキー が必要です。 + + + +## `wandb` ライブラリのインストールとログイン - -1. `WANDB_API_KEY` [環境変数](/ja/models/track/environment-variables/) を設定します。 + +1. `WANDB_API_KEY` [環境変数](/models/track/environment-variables/) を設定します。 ```bash export WANDB_API_KEY= @@ -32,10 +40,11 @@ pip install wandb ``` ```python import wandb + wandb.login() ``` - + ```notebook !pip install wandb import wandb @@ -44,70 +53,80 @@ wandb.login() -## ランを開始してハイパーパラメーターをトラックする +## Run の初期化と ハイパーパラメーター の追跡 -Python スクリプトやノートブックで、[`wandb.init()`](/ja/models/ref/python/run)を使用して W&B のランオブジェクトを初期化します。`config` パラメータには辞書を使用してハイパーパラメーターの名前と値を指定します。 +Python スクリプト または ノートブック で、 [`wandb.init()`](/models/ref/python/experiments/run/) を使用して W&B の run オブジェクト を初期化します。 `config` パラメータ に 辞書 を使用して、 ハイパーパラメーター の名前と 値 を指定します。 `with` ステートメント内では、 メトリクス やその他の情報を W&B に ログ 記録できます。 ```python -run = wandb.init( - project="my-awesome-project", # プロジェクトを指定する - config={ # ハイパーパラメーターとメタデータをトラックする - "learning_rate": 0.01, - "epochs": 10, - }, -) +import wandb + +wandb.login() + +# runが記録されるプロジェクト +project = "my-awesome-project" + +# ハイパーパラメーターを含む辞書 +config = { + 'epochs' : 10, + 'lr' : 0.01 +} + +with wandb.init(project=project, config=config) as run: + # ここにトレーニングコードを記述 + # run.log() で W&B に値をログ記録 + run.log({"accuracy": 0.9, "loss": 0.1}) ``` -W&B のコア要素として [ラン](/ja/models/runs/) は使用され、[メトリクスをトラックする](/ja/models/track/)、[ログを作成する](/ja/models/track/log/) など様々なことができます。 +次のセクションでは、トレーニング run をシミュレートし、精度(accuracy)と損失(loss)の メトリクス を W&B に ログ 記録する完全な例を紹介します。 -## コンポーネントを組み立てる + +[Runs](/models/runs/) は W&B のコア要素です。 run を使用して [メトリクスを追跡](/models/track/) したり、 [ログを作成](/models/track/log/) したり、 Artifacts を追跡したりできます。 + -この模擬トレーニングスクリプトは、W&Bにシミュレートされた精度と損失のメトリクスをログします: +## 機械学習トレーニング実験の作成 + +この模擬 トレーニングスクリプト は、シミュレートされた精度と損失の メトリクス を W&B に ログ 記録します。以下の コード を Python スクリプト または ノートブック のセルにコピー&ペーストして実行してください。 ```python -# train.py import wandb import random wandb.login() -epochs = 10 -lr = 0.01 - -run = wandb.init( - project="my-awesome-project", # プロジェクトを指定する - config={ # ハイパーパラメーターとメタデータをトラックする - "learning_rate": lr, - "epochs": epochs, - }, -) - -offset = random.random() / 5 -print(f"lr: {lr}") - -# トレーニングランをシミュレーション -for epoch in range(2, epochs): - acc = 1 - 2**-epoch - random.random() / epoch - offset - loss = 2**-epoch + random.random() / epoch + offset - print(f"epoch={epoch}, accuracy={acc}, loss={loss}") - wandb.log({"accuracy": acc, "loss": loss}) - -# run.log_code() +# runが記録されるプロジェクト +project = "my-awesome-project" + +# ハイパーパラメーターを含む辞書 +config = { + 'epochs' : 10, + 'lr' : 0.01 +} + +with wandb.init(project=project, config=config) as run: + offset = random.random() / 5 + print(f"lr: {config['lr']}") + + # トレーニングrunをシミュレート + for epoch in range(2, config['epochs']): + acc = 1 - 2**-config['epochs'] - random.random() / config['epochs'] - offset + loss = 2**-config['epochs'] + random.random() / config['epochs'] + offset + print(f"epoch={config['epochs']}, accuracy={acc}, loss={loss}") + run.log({"accuracy": acc, "loss": loss}) ``` - -[wandb.ai/home](https://wandb.ai/home) にアクセスして、記録された精度や損失メトリクス、および各トレーニングステップでの変化を確認してください。次のイメージは、各ランからトラックされた損失と精度を示しています。各ランオブジェクトは、**Runs** 列に生成された名前と共に表示されます。 +[wandb.ai/home](https://wandb.ai/home) にアクセスして、精度や損失などの記録された メトリクス と、それらが各トレーニング ステップでどのように変化したかを確認してください。以下の画像は、各 run から追跡された損失と精度を示しています。各 run オブジェクト は、自動生成された名前とともに **Runs** カラムに表示されます。 - 各ランからトラックされた損失と精度を表示しています。 + 各runから追跡された損失と精度を表示。 ## 次のステップ -W&B エコシステムのさらなる機能を探求しましょう: +W&B エコシステムのさらなる機能を探索しましょう。 -1. PyTorch や Hugging Face のライブラリ、および SageMaker のようなサービスと W&B を組み合わせた [W&B インテグレーションチュートリアル](/ja/guides/integrations/) を読んでみてください。 -2. [W&B Reports](/ja/models/reports/) を使用して、ランを整理し、自動可視化し、学びを要約し、共同作業者と更新を共有します。 -3. [W&B Artifacts](/ja/models/artifacts/) を作成して、データセット、モデル、依存関係、および機械学習パイプライン全体の結果をトラックします。 -4. [W&B Sweeps](/ja/models/sweeps/) を使用してハイパーパラメーター検索を自動化し、モデルを最適化します。 -5. [中央ダッシュボード](/ja/models/tables/) でランを分析し、モデルの予測を可視化し、洞察を共有します。 -6. [W&B AI Academy](https://wandb.ai/site/courses/) を訪れて、ハンズオンのコースを通じて LLMs、MLOps、W&B Models について学びましょう。 \ No newline at end of file +1. PyTorch などの フレームワーク 、Hugging Face などの ライブラリ 、SageMaker などのサービスを W&B と組み合わせる [W&B インテグレーション チュートリアル](/models/integrations) を読んでください。 +2. [Reports](/models/reports) を使用して、 Runs を整理し、 可視化 を自動化し、 学び を要約して、共同作業者と最新情報を共有しましょう。 +3. [Artifacts](/models/artifacts) を作成して、機械学習 パイプライン 全体で データセット 、 モデル 、依存関係、および 結果 を追跡します。 +4. [Sweeps](/models/sweeps) を使用して ハイパーパラメーター 探索を自動化し、 モデル を最適化します。 +5. [中央ダッシュボード](/models/tables) で Runs を分析し、 モデル の 予測 を 可視化 し、洞察を共有します。 +6. [W&B AI Academy](https://wandb.ai/site/courses/) にアクセスして、実践的な コース を通じて LLM、MLOps、および W&B Models について学びましょう。 +7. [weave-docs.wandb.ai](/weave) にアクセスして、 Weave を使用して LLM ベースの アプリケーション を追跡、実験、評価、デプロイ、および改善する方法を学びましょう。 \ No newline at end of file diff --git a/ja/models/ref.mdx b/ja/models/ref.mdx index 63b60f3472..4ba97d7da6 100644 --- a/ja/models/ref.mdx +++ b/ja/models/ref.mdx @@ -1,28 +1,36 @@ --- -title: 参照 -description: Weights & Biases API に関する生成されたドキュメント -no_list: true +title: リファレンス概要 +description: W&B API に関する生成ドキュメント type: docs +no_list: true --- +import {ClickableCard} from "/snippets/ClickableCard.jsx"; + + - -モデルを訓練し、ファインチューンし、実験からプロダクションまで管理します。 + +実験からプロダクションまで、 Models のトレーニング、 ファインチューン 、管理を行います。 - -ログインし、ジョブを実行し、sweep を実行するなど、シェルコマンドを使用します。 + +シェル コマンド を使用して、ログイン、ジョブの実行、 Sweeps の実行などを行います。 - -Node サーバーからメトリクスをトラッキングするベータ版の JavaScript/TypeScript クライアント。 + +データの選択と集計を行うためのベータ版クエリ言語です。 - -データを選択および集約するためのベータクエリ言語。 + +Weave APIをお探しですか? W&B Weave ドキュメントを参照してください。 - -Weave API をお探しですか? [W&B Weave Docs](/weave)を参照してください。 - \ No newline at end of file +## Weave Reference + + + Weave APIをお探しですか? W&B Weave ドキュメントを参照してください。 + \ No newline at end of file diff --git a/ja/models/ref/cli.mdx b/ja/models/ref/cli.mdx index 15741db4a9..d2987b193e 100644 --- a/ja/models/ref/cli.mdx +++ b/ja/models/ref/cli.mdx @@ -1,42 +1,62 @@ --- -title: コマンドライン インターフェース +title: CLI リファレンス SDK 0.24.0 +description: W&B コマンドラインインターフェース(CLI)を使用すると、シェルのコマンドから、ログイン、ジョブの実行、Sweeps の実行などを行うことができます。 --- -**使用法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb [OPTIONS] COMMAND [ARGS]...` +import Wandb from "/snippets/en/_includes/cli/wandb.mdx"; -**オプション** + -| **オプション** | **説明** | + The snippet will be auto-detected on the next regeneration. +*/} + +## 使い方 + +```bash +wandb [OPTIONS] COMMAND [ARGS]... +``` + +## オプション + +| オプション | 説明 | | :--- | :--- | -| `--version` | バージョンを表示して終了します。 | +| `--version` | バージョンを表示して終了します。(デフォルト: False) | -**コマンド** +## コマンド -| **コマンド** | **説明** | +| コマンド | 説明 | | :--- | :--- | -| agent | W&B エージェントを実行します | -| artifact | アーティファクトと対話するためのコマンド | -| beta | wandb CLI コマンドのベータバージョン。 | -| controller | W&B ローカルsweepコントローラを実行します | -| disabled | W&B を無効にします。 | -| docker | コードをdockerコンテナで実行します。 | -| docker-run | `docker run` をラップし、WANDB_API_KEY と WANDB_DOCKER を追加します... | -| enabled | W&B を有効にします。 | -| init | Weights & Biasesでディレクトリーを設定します | -| job | W&B ジョブを管理および表示するためのコマンド | -| launch | W&B Jobを起動またはキューに入れます。 | -| launch-agent | W&B ローンンチ エージェントを実行します。 | -| launch-sweep | W&B ローンンチ スウィープを実行します(実験的)。 | -| login | Weights & Biases にログインします | -| offline | W&B 同期を無効にします | -| online | W&B 同期を有効にします | -| pull | Weights & Biases からファイルを取得します | -| restore | runのコード、設定、およびdocker状態を復元します | -| scheduler | W&B ローンンチ スウィープ スケジューラを実行します(実験的) | -| server | ローカル W&B サーバーを操作するためのコマンド | -| status | 設定情報を表示します | -| sweep | ハイパーパラメーター探索を初期化します。 | -| sync | オフライントレーニングディレクトリーを W&B にアップロードします | -| verify | ローカルインスタンスを検証します | \ No newline at end of file +| [agent](/models/ref/cli/wandb-agent) | W&B エージェント を実行します | +| [artifact](/models/ref/cli/wandb-artifact) | アーティファクト を操作するためのコマンド | +| [beta](/models/ref/cli/wandb-beta) | wandb CLI コマンドのベータ版です。 | +| [controller](/models/ref/cli/wandb-controller) | W&B ローカル sweep コントローラ を実行します | +| [disabled](/models/ref/cli/wandb-disabled) | W&B を無効にします。 | +| [docker](/models/ref/cli/wandb-docker) | dockerコンテナ 内で コード を実行します。 | +| [docker-run](/models/ref/cli/wandb-docker-run) | `docker run` をラップし、WANDB_API_KEY と WANDB_DOCKER 環境 変数を追加します。 | +| [enabled](/models/ref/cli/wandb-enabled) | W&B を有効にします。 | +| [init](/models/ref/cli/wandb-init) | ディレクトリー を Weights & Biases 用に 設定 します | +| [job](/models/ref/cli/wandb-job) | W&B ジョブの管理と表示のためのコマンド | +| [launch](/models/ref/cli/wandb-launch) | W&B ジョブを Launch またはキューに入れます。 | +| [launch-agent](/models/ref/cli/wandb-launch-agent) | W&B launch agent を実行します。 | +| [launch-sweep](/models/ref/cli/wandb-launch-sweep) | W&B launch sweep を実行します(実験的機能)。 | +| [local](/models/ref/cli/wandb-local) | ローカル W&B コンテナを起動します(非推奨、wandb server --help を参照してください) | +| [login](/models/ref/cli/wandb-login) | W&B サービスとの認証用 APIキー を検証し、保存します。 | +| [off](/models/ref/cli/wandb-off) | 説明はありません | +| [offline](/models/ref/cli/wandb-offline) | W&B に ログ 記録された データ を クラウド にアップロードせずにローカルに保存します。 | +| [on](/models/ref/cli/wandb-on) | 説明はありません | +| [online](/models/ref/cli/wandb-online) | `wandb offline` を解除します。 | +| [projects](/models/ref/cli/wandb-projects) | Projects を一覧表示します | +| [pull](/models/ref/cli/wandb-pull) | Weights & Biases からファイルをプルします | +| [restore](/models/ref/cli/wandb-restore) | run の コード 、 設定 、docker の状態を復元します。 | +| [scheduler](/models/ref/cli/wandb-scheduler) | W&B launch sweep スケジューラを実行します(実験的機能) | +| [server](/models/ref/cli/wandb-server) | ローカル W&B サーバー を操作するためのコマンド | +| [status](/models/ref/cli/wandb-status) | 設定 設定を表示します | +| [sweep](/models/ref/cli/wandb-sweep) | ハイパーパラメーター探索 (sweep) を初期化します。 | +| [sync](/models/ref/cli/wandb-sync) | W&B の run データ を クラウド に同期します。 | +| [verify](/models/ref/cli/wandb-verify) | W&B のローカルインスタンスをチェックおよび検証します。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-agent.mdx b/ja/models/ref/cli/wandb-agent.mdx index 1e2f25760d..4a227ae93a 100644 --- a/ja/models/ref/cli/wandb-agent.mdx +++ b/ja/models/ref/cli/wandb-agent.mdx @@ -2,18 +2,38 @@ title: wandb エージェント --- -**使用方法** +{/* + このコマンドの導入コンテンツを追加するには: + 1. スニペットファイルを作成: /snippets/en/_includes/cli/wandb-agent.mdx + 2. そのファイルにイントロダクションの内容を追加 + 3. このコメントブロック全体を削除し、以下の2行のみを残してください: -`wandb agent [OPTIONS] SWEEP_ID` +import WandbAgent from "/snippets/en/_includes/cli/wandb-agent.mdx"; -**概要** + -W&B エージェントを実行します + 次回の再生成時にスニペットが自動検出されます。 +*/} -**オプション** +W&B エージェント を実行します。 -| **オプション** | **説明** | +## 使用法 + +```bash +wandb agent SWEEP_ID [OPTIONS] +``` + +## 引数(Arguments) + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `SWEEP_ID` | 説明なし | はい | + +## オプション + +| オプション | 説明 | | :--- | :--- | -| `-p, --project` | sweep から作成された W&B runs が送信されるプロジェクトの名前。プロジェクトが指定されていない場合、run は「Uncategorized」というラベルのプロジェクトに送信されます。 | -| `-e, --entity` | sweep によって作成された W&B runs を送信したいユーザー名またはチーム名。指定した entity が既に存在することを確認してください。entity を指定しない場合、run は通常ユーザー名であるデフォルトの entity に送信されます。 | -| `--count` | このエージェントの最大 run 数。 | \ No newline at end of file +| `--project`, `-p` | Sweep から作成された W&B Runs の送信先となる Projects の名前。プロジェクトが指定されていない場合、run は「Uncategorized」というラベルのプロジェクトに送信されます。 | +| `--entity`, `-e` | Sweep によって作成された W&B Runs の送信先となる Teams 名または Users 名。指定する Entity が既に存在することを確認してください。Entity を指定しない場合、run は通常ユーザー名であるデフォルトの Entity に送信されます。 | +| `--count` | この エージェント が実行する最大 Runs 数。 | +| `--forward-signals`, `-f` | エージェント に配信されたシグナル(例:SIGINT/SIGTERM)を子プロセスである run に転送し、クリーンにシャットダウンできるようにします。(デフォルト:False) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-artifact.mdx b/ja/models/ref/cli/wandb-artifact.mdx index 4a50b74ec7..b79e9ccb89 100644 --- a/ja/models/ref/cli/wandb-artifact.mdx +++ b/ja/models/ref/cli/wandb-artifact.mdx @@ -2,24 +2,19 @@ title: wandb アーティファクト --- -**使用方法** +Artifacts とやり取りするためのコマンド -`wandb artifact [OPTIONS] COMMAND [ARGS]...` +## Usage -**概要** +```bash +wandb artifact COMMAND [ARGS]... +``` -アーティファクトと対話するためのコマンド +## Commands -**オプション** - -| **オプション** | **説明** | -| :--- | :--- | - -**コマンド** - -| **コマンド** | **説明** | +| コマンド | 説明 | | :--- | :--- | -| cache | アーティファクトキャッシュと対話するためのコマンド | -| get | wandb からアーティファクトをダウンロード | -| ls | wandb プロジェクト内のすべてのアーティファクトをリスト表示 | -| put | wandb にアーティファクトをアップロード | +| [cache](/models/ref/cli/wandb-artifact/wandb-artifact-cache) | Artifacts のキャッシュを操作するためのコマンド | +| [get](/models/ref/cli/wandb-artifact/wandb-artifact-get) | W&B から アーティファクト をダウンロードする | +| [ls](/models/ref/cli/wandb-artifact/wandb-artifact-ls) | W&B の Projects 内にあるすべての アーティファクト を一覧表示する | +| [put](/models/ref/cli/wandb-artifact/wandb-artifact-put) | W&B に アーティファクト をアップロードする | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-artifact/wandb-artifact-cache.mdx b/ja/models/ref/cli/wandb-artifact/wandb-artifact-cache.mdx index ce1ccd9228..a40b990510 100644 --- a/ja/models/ref/cli/wandb-artifact/wandb-artifact-cache.mdx +++ b/ja/models/ref/cli/wandb-artifact/wandb-artifact-cache.mdx @@ -1,24 +1,17 @@ --- -title: wandb アーティファクト cache +title: wandb artifact cache --- -**使用法** +Artifact キャッシュを操作するためのコマンド。 -`wandb artifact cache [OPTIONS] COMMAND [ARGS]...` +## 使用法 -**概要** +```bash +wandb artifact cache COMMAND [ARGS]... +``` -アーティファクトキャッシュと対話するためのコマンド +## コマンド - -**オプション** - -| **オプション** | **説明** | -| :--- | :--- | - - -**コマンド** - -| **コマンド** | **説明** | +| コマンド | 説明 | | :--- | :--- | -| cleanup | アーティファクトキャッシュからあまり頻繁に使用されないファイルをクリーンアップする | \ No newline at end of file +| [cleanup](/models/ref/cli/wandb-artifact/wandb-artifact-cache/wandb-artifact-cache-cleanup) | Artifacts キャッシュから使用頻度の低いファイルをクリーンアップします | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-artifact/wandb-artifact-cache/wandb-artifact-cache-cleanup.mdx b/ja/models/ref/cli/wandb-artifact/wandb-artifact-cache/wandb-artifact-cache-cleanup.mdx index f413be1727..0ca6317ffd 100644 --- a/ja/models/ref/cli/wandb-artifact/wandb-artifact-cache/wandb-artifact-cache-cleanup.mdx +++ b/ja/models/ref/cli/wandb-artifact/wandb-artifact-cache/wandb-artifact-cache-cleanup.mdx @@ -1,18 +1,36 @@ --- -title: wandb アーティファクト cache cleanup +title: wandb artifact cache cleanup --- -**使用方法** +{/* + このコマンドの紹介コンテンツを追加するには: + 1. スニペットファイルを作成:/snippets/en/_includes/cli/wandb-artifact-cache-cleanup.mdx + 2. そのファイルに紹介文を追加 + 3. このコメントブロック全体を削除し、以下の2行のみを残してください: -`wandb artifact cache cleanup [OPTIONS] TARGET_SIZE` +import WandbArtifactCacheCleanup from "/snippets/en/_includes/cli/wandb-artifact-cache-cleanup.mdx"; -**概要** + -Artifactsのキャッシュから、使用頻度の低いファイルをクリーンアップします + 次回の再生成時にスニペットが自動検出されます。 +*/} +Artifacts キャッシュから、使用頻度の低いファイルをクリーンアップします。 -**オプション** +## Usage(使用法) -| **オプション** | **説明** | +```bash +wandb artifact cache cleanup TARGET_SIZE [OPTIONS] +``` + +## Arguments(引数) + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `TARGET_SIZE` | 説明なし | はい | + +## Options(オプション) + +| オプション | 説明 | | :--- | :--- | -| `--remove-temp / --no-remove-temp` | 一時ファイルを削除します | \ No newline at end of file +| `--remove-temp` | 一時ファイルを削除する(デフォルト:False) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-artifact/wandb-artifact-get.mdx b/ja/models/ref/cli/wandb-artifact/wandb-artifact-get.mdx index 468e75b8c5..6795ea9587 100644 --- a/ja/models/ref/cli/wandb-artifact/wandb-artifact-get.mdx +++ b/ja/models/ref/cli/wandb-artifact/wandb-artifact-get.mdx @@ -1,18 +1,39 @@ --- -title: wandb アーティファクト get +title: ' thoughtful + + wandb artifact get' --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-artifact-get.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: + +import WandbArtifactGet from "/snippets/en/_includes/cli/wandb-artifact-get.mdx"; + + + + The snippet will be auto-detected on the next regeneration. +*/} + +W&B から Artifacts をダウンロードします。 + +## Usage -`wandb artifact get [OPTIONS] PATH` +```bash +wandb artifact get PATH [OPTIONS] +``` -**概要** +## Arguments -wandb からアーティファクトをダウンロードします +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `PATH` | 説明はありません | はい | -**オプション** +## Options -| **オプション** | **説明** | +| オプション | 説明 | | :--- | :--- | -| `--root` | アーティファクトをダウンロードしたいディレクトリー | -| `--type` | ダウンロードするアーティファクトのタイプ | \ No newline at end of file +| `--root` | Artifacts をダウンロードする先の ディレクトリー | +| `--type` | ダウンロードする Artifacts のタイプ | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-artifact/wandb-artifact-ls.mdx b/ja/models/ref/cli/wandb-artifact/wandb-artifact-ls.mdx index e6831c6df8..e0ece09e8c 100644 --- a/ja/models/ref/cli/wandb-artifact/wandb-artifact-ls.mdx +++ b/ja/models/ref/cli/wandb-artifact/wandb-artifact-ls.mdx @@ -1,17 +1,36 @@ --- -title: wandb アーティファクト ls +title: wandb artifact ls --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-artifact-ls.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb artifact ls [OPTIONS] PATH` +import WandbArtifactLs from "/snippets/en/_includes/cli/wandb-artifact-ls.mdx"; -**概要** + -wandb プロジェクト内のすべてのアーティファクトを一覧表示します + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +W&B Project 内のすべての Artifacts を一覧表示します。 -| **オプション** | **説明** | +## 使用法 + +```bash +wandb artifact ls PATH [OPTIONS] +``` + +## 引数 + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `PATH` | 説明なし | はい | + +## オプション + +| オプション | 説明 | | :--- | :--- | -| `-t, --type` | 一覧表示するアーティファクトのタイプ | \ No newline at end of file +| `--type`, `-t` | 表示する Artifacts のタイプ | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-artifact/wandb-artifact-put.mdx b/ja/models/ref/cli/wandb-artifact/wandb-artifact-put.mdx index e594788386..522c7bb3ca 100644 --- a/ja/models/ref/cli/wandb-artifact/wandb-artifact-put.mdx +++ b/ja/models/ref/cli/wandb-artifact/wandb-artifact-put.mdx @@ -1,24 +1,43 @@ --- -title: wandb アーティファクト put +title: wandb artifact put --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-artifact-put.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb artifact put [OPTIONS] PATH` +import WandbArtifactPut from "/snippets/en/_includes/cli/wandb-artifact-put.mdx"; -**概要** + -アーティファクトを wandb にアップロードします + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +Artifact を wandb にアップロードします。 -| **オプション** | **説明** | +## 使用法 + +```bash +wandb artifact put PATH [OPTIONS] +``` + +## Arguments + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `PATH` | 説明はありません | はい | + +## Options + +| オプション | 説明 | | :--- | :--- | -| `-n, --name` | プッシュするアーティファクトの名前: project/artifact_name | -| `-d, --description` | このアーティファクトの説明 | -| `-t, --type` | アーティファクトのタイプ | -| `-a, --alias` | このアーティファクトに適用するエイリアス | -| `--id` | アップロードしたい run を指定します。 | -| `--resume` | 現在のディレクトリーから前回の run を再開します。 | -| `--skip_cache` | アーティファクトファイルのアップロード中にキャッシュをスキップします。 | -| `--policy [mutable\|immutable]` | アーティファクトファイルをアップロードする際のストレージポリシーを設定します。 | \ No newline at end of file +| `--name`, `-n` | プッシュする Artifact の名前: project/artifact_name | +| `--description`, `-d` | この Artifact の説明 | +| `--type`, `-t` | Artifact のタイプ (デフォルト: dataset) | +| `--alias`, `-a` | この Artifact に適用するエイリアス (デフォルト: ['latest']) | +| `--id` | アップロード先となる run。 | +| `--resume` | 現在のディレクトリーから最後の run を再開します。 | +| `--skip_cache` | Artifact ファイルのアップロード中にキャッシングをスキップします。(デフォルト: False) | +| `--policy` | Artifact ファイルのアップロード中のストレージポリシーを設定します。(デフォルト: mutable) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-beta.mdx b/ja/models/ref/cli/wandb-beta.mdx index b9f942dcef..cfa5337caa 100644 --- a/ja/models/ref/cli/wandb-beta.mdx +++ b/ja/models/ref/cli/wandb-beta.mdx @@ -1,22 +1,20 @@ --- -title: wandb ベータ版 +title: wandb beta --- -**使い方** +wandb CLI コマンドのベータ版です。 -`wandb beta [OPTIONS] COMMAND [ARGS]...` +これらのコマンドは、wandb の今後のリリースにおいて変更されたり、完全に動作しなくなったりする可能性があります。 -**概要** +## 使用法 -wandb CLI コマンドのベータ版です。wandb-core が必要です。 +```bash +wandb beta COMMAND [ARGS]... +``` -**オプション** +## コマンド -| **オプション** | **説明** | +| コマンド | 説明 | | :--- | :--- | - -**コマンド** - -| **コマンド** | **説明** | -| :--- | :--- | -| sync | トレーニング run を W&B にアップロードします | +| [leet](/models/ref/cli/wandb-beta/wandb-beta-leet) | W&B LEET(Lightweight Experiment Exploration Tool)を ローンンチ します。 | +| [sync](/models/ref/cli/wandb-beta/wandb-beta-sync) | PATHS で指定された .wandb ファイルをアップロードします。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-beta/wandb-beta-leet.mdx b/ja/models/ref/cli/wandb-beta/wandb-beta-leet.mdx new file mode 100644 index 0000000000..7478e2ae10 --- /dev/null +++ b/ja/models/ref/cli/wandb-beta/wandb-beta-leet.mdx @@ -0,0 +1,24 @@ +--- +title: wandb beta leet +--- +import WandbBetaLeet from "/snippets/en/_includes/cli/wandb-beta-leet.mdx"; + + + +W&B LEET(Lightweight Experiment Exploration Tool)を起動します。 + +LEET は、引数 `PATH` で指定された W&B run を表示するための ターミナル UI です。 + +`PATH` には、`.wandb` ファイル、または `.wandb` ファイルを含む run ディレクトリーを指定できます。`PATH` が指定されない場合、コマンドは最新の run を探します。 + +## Usage(使用方法) + +```bash +wandb beta leet [PATH] +``` + +## Arguments(引数) + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `PATH` | 説明なし | いいえ | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-beta/wandb-beta-sync.mdx b/ja/models/ref/cli/wandb-beta/wandb-beta-sync.mdx index a61164670c..c817514227 100644 --- a/ja/models/ref/cli/wandb-beta/wandb-beta-sync.mdx +++ b/ja/models/ref/cli/wandb-beta/wandb-beta-sync.mdx @@ -1,26 +1,59 @@ --- -title: wandb ベータ 同期 +title: wandb beta sync --- -**使用法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-beta-sync.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb beta sync [OPTIONS] WANDB_DIR` +import WandbBetaSync from "/snippets/en/_includes/cli/wandb-beta-sync.mdx"; -**概要** + -トレーニング run を W&B にアップロードします + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +PATHS で指定された .wandb ファイルをアップロードします。 -| **オプション** | **説明** | +これは `wandb sync` のベータ版再実装です。機能が完全ではなく、動作が保証されているわけでもありません。また、今後の wandb のリリースにおいて、後方互換性のない形で変更される可能性があります。 + +PATHS には、.wandb ファイル、.wandb ファイルを含む run ディレクトリー、および run ディレクトリーを含む "wandb" ディレクトリーを指定できます。 + +例えば、ディレクトリー内のすべての Runs を同期するには: + +wandb beta sync ./wandb + +特定の run を同期するには: + +wandb beta sync ./wandb/run-20250813_124246-n67z9ude + +または同等の方法として: + +wandb beta sync ./wandb/run-20250813_124246-n67z9ude/run-n67z9ude.wandb + +## 使用法 + +```bash +wandb beta sync [PATHS] [OPTIONS] +``` + +## 引数 + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `PATHS` | 説明なし | いいえ | + +## オプション + +| オプション | 説明 | | :--- | :--- | -| `--id` | アップロードしたい run です。 | -| `-p, --project` | アップロードしたい project です。 | -| `-e, --entity` | スコープにする entity です。 | -| `--skip-console` | コンソールログをスキップします | -| `--append` | run を追加します | -| `-i, --include` | 含めるためのグロブ。複数回使用可能です。 | -| `-e, --exclude` | 除外するためのグロブ。複数回使用可能です。 | -| `--mark-synced / --no-mark-synced` | run を同期済みとしてマークします | -| `--skip-synced / --no-skip-synced` | 同期済みの run をスキップします | -| `--dry-run` | 何もアップロードせずにドライ run を実行します。 | \ No newline at end of file +| `--live` | ログが記録されている最中の run を同期します。run を生成しているプロセスが正常に終了せずにクラッシュした場合、この処理はハングする可能性があります。(デフォルト: False) | +| `-e`, `--entity` | 同期されるすべての Runs に使用する Entity の上書き設定。(デフォルト: ) | +| `-p`, `--project` | 同期されるすべての Runs に使用する Project の上書き設定。(デフォルト: ) | +| `--id` | 同期されるすべての Runs に使用する run ID の上書き設定。これを設定して複数のファイル(同じ Entity および Project)を同期する場合、ファイルは開始時間の順に同期されます。これは、同じ run の再開された複数のフラグメントを同期することを目的としています。(デフォルト: ) | +| `--skip-synced` | このコマンドですでに同期済みの Runs をスキップします。(デフォルト: True) | +| `--dry-run` | 何もアップロードせずに、実行される内容を表示します。(デフォルト: False) | +| `-v`, `--verbose` | より詳細な情報を表示します。(デフォルト: False) | +| `-n` | 一度に同期する Runs の最大数。同じ run の一部である複数のファイルを同期する場合、この設定に関係なく、ファイルは開始時間の順に逐次同期されます。これは、レジュームされた Runs や --id パラメータを使用した場合に発生します。(デフォルト: 5) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-controller.mdx b/ja/models/ref/cli/wandb-controller.mdx index 3e7d047064..65bf7c6b3e 100644 --- a/ja/models/ref/cli/wandb-controller.mdx +++ b/ja/models/ref/cli/wandb-controller.mdx @@ -2,16 +2,35 @@ title: wandb コントローラ --- -**使用法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-controller.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb コントローラ [OPTIONS] SWEEP_ID` +import WandbController from "/snippets/en/_includes/cli/wandb-controller.mdx"; -**概要** + -W&B ローカル sweep コントローラを実行します + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +W&B ローカル Sweep controller を実行します。 -| **オプション** | **説明** | +## Usage(使用法) + +```bash +wandb controller SWEEP_ID [OPTIONS] +``` + +## Arguments(引数) + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `SWEEP_ID` | 説明なし | はい | + +## Options(オプション) + +| オプション | 説明 | | :--- | :--- | -| `--verbose` | 詳細な出力を表示する | \ No newline at end of file +| `--verbose` | 詳細な出力を表示(デフォルト: False) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-disabled.mdx b/ja/models/ref/cli/wandb-disabled.mdx index 046f48f4c6..e6d42fcdb3 100644 --- a/ja/models/ref/cli/wandb-disabled.mdx +++ b/ja/models/ref/cli/wandb-disabled.mdx @@ -2,16 +2,29 @@ title: wandb disabled --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-disabled.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb disabled [OPTIONS]` +import WandbDisabled from "/snippets/en/_includes/cli/wandb-disabled.mdx"; -**概要** + + + The snippet will be auto-detected on the next regeneration. +*/} W&B を無効化します。 -**オプション** +## 使用法 + +```bash +wandb disabled [OPTIONS] +``` + +## オプション -| **オプション** | **説明** | +| オプション | 説明 | | :--- | :--- | -| `--service` | W&B サービスを無効化します [デフォルト: True] | \ No newline at end of file +| `--service` | W&B サービスを無効化する (デフォルト: True) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-docker-run.mdx b/ja/models/ref/cli/wandb-docker-run.mdx index c74fbf3ee8..9ef3c9fb31 100644 --- a/ja/models/ref/cli/wandb-docker-run.mdx +++ b/ja/models/ref/cli/wandb-docker-run.mdx @@ -1,20 +1,25 @@ --- title: wandb docker-run --- +import WandbDockerRun from "/snippets/en/_includes/cli/wandb-docker-run.mdx"; -**使用方法** + medical_thought + -`wandb docker-run [OPTIONS] [DOCKER_RUN_ARGS]...` +`docker run` をラップし、 `WANDB_API_KEY` と `WANDB_DOCKER` 環境変数を追加します。 -**概要** +また、システムに `nvidia-docker` 実行ファイルが存在し、かつ `--runtime` が設定されていない場合、ランタイムを `nvidia` に設定します。 -`docker run` をラップし、WANDB_API_KEY と WANDB_DOCKER 環境変数を追加します。 +詳細については `docker run --help` を参照してください。 -nvidia-docker 実行ファイルがシステム上に存在し、--runtime が設定されていない場合は、ランタイムを nvidia に設定します。 +## Usage -詳細については、`docker run --help` を参照してください。 +```bash +wandb docker-run [DOCKER_RUN_ARGS] +``` -**オプション** +## Arguments -| **オプション** | **説明** | -| :--- | :--- | \ No newline at end of file +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `DOCKER_RUN_ARGS` | 説明なし | いいえ | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-docker.mdx b/ja/models/ref/cli/wandb-docker.mdx index 76537dd302..b799f088d8 100644 --- a/ja/models/ref/cli/wandb-docker.mdx +++ b/ja/models/ref/cli/wandb-docker.mdx @@ -1,33 +1,50 @@ --- title: wandb docker --- +import WandbDocker from "/snippets/en/_includes/cli/wandb-docker.mdx"; -**Usage** + -`wandb docker [OPTIONS] [DOCKER_RUN_ARGS]... [DOCKER_IMAGE]` +dockerコンテナ 内で コード を実行します。 -**Summary** +W&B docker を使用すると、wandb が設定された状態で docker イメージ内で コード を実行できます。このコマンドは、`WANDB_DOCKER` と `WANDB_API_KEY` の 環境変数 をコンテナに追加し、デフォルトで現在の ディレクトリー を `/app` にマウントします。イメージ名が指定される前に `docker run` に追加される引数を渡すことができます。イメージが指定されない場合は、デフォルトのイメージが自動的に選択されます。 -docker コンテナ内でコードを実行します。 +```sh +# データセットのディレクトリをマウントして実行 +wandb docker -v /mnt/dataset:/app/data -W&B docker を使用すると、コードを docker イメージ内で実行し、wandb が適切に設定されていることを確認します。WANDB_DOCKER と WANDB_API_KEY の環境変数をコンテナに追加し、既定では現在のディレクトリーを /app にマウントします。`docker run` の画像名が宣言される前に追加されるその他の args を渡すことができます。指定されない場合は、デフォルトのイメージを選択します: +# 特定のイメージとJupyterを指定して実行 +wandb docker gcr.io/kubeflow-images-public/tensorflow-1.12.0-notebook-cpu:v0.4.0 --jupyter -sh wandb docker -v /mnt/dataset:/app/data wandb docker gcr.io/kubeflow- -images-public/tensorflow-1.12.0-notebook-cpu:v0.4.0 --jupyter wandb docker -wandb/deepo:keras-gpu --no-tty --cmd "python train.py --epochs=5" +# 特定のイメージ、TTYなし、特定のコマンドを指定して実行 +wandb docker wandb/deepo:keras-gpu --no-tty --cmd "python train.py --epochs=5" +``` -デフォルトでは、wandb の存在を確認し、存在しない場合はインストールするために entrypoint をオーバーライドします。--jupyter フラグを渡すと、jupyter がインストールされ、ポート 8888 で jupyter lab が開始されます。システム上で nvidia-docker を検出した場合、nvidia ランタイムを使用します。既存の docker run コマンドに環境変数を設定するだけでよければ、wandb docker-run コマンドを参照してください。 +デフォルトでは、エントリーポイントを上書きして wandb の存在を確認し、存在しない場合はインストールします。`--jupyter` フラグを渡すと、jupyter がインストールされていることを確認し、ポート 8888 で jupyter lab を起動します。システムで nvidia-docker が検出された場合は、nvidia ランタイムを使用します。既存の `docker run` コマンドに wandb の 環境変数 を設定したいだけの場合は、`wandb docker-run` コマンド を参照してください。 -**Options** +## Usage(使い方) -| **Option** | **Description** | +```bash +wandb docker [DOCKER_RUN_ARGS] [DOCKER_IMAGE] [OPTIONS] +``` + +## Arguments(引数) + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `DOCKER_RUN_ARGS` | 説明なし | いいえ | +| `DOCKER_IMAGE` | 説明なし | いいえ | + +## Options(オプション) + +| オプション | 説明 | | :--- | :--- | -| `--nvidia / --no-nvidia` | nvidia ランタイムを使用します。nvidia-docker が存在する場合、デフォルトで nvidia が使用されます | -| `--digest` | イメージのダイジェストを出力して終了します | -| `--jupyter / --no-jupyter` | コンテナ内で jupyter lab を実行します | -| `--dir` | コンテナ内にコードをマウントするディレクトリー | -| `--no-dir` | 現在のディレクトリーをマウントしません | -| `--shell` | コンテナを開始するシェル | -| `--port` | jupyter をバインドするホストポート | -| `--cmd` | コンテナ内で実行するコマンド | -| `--no-tty` | コマンドを tty なしで実行します | \ No newline at end of file +| `--nvidia` | nvidia ランタイムを使用します。nvidia-docker が存在する場合はデフォルトで nvidia になります(デフォルト: False) | +| `--digest` | イメージのダイジェストを出力して終了します(デフォルト: False) | +| `--jupyter` | コンテナ内で jupyter lab を実行します(デフォルト: False) | +| `--dir` | コンテナ内のどの ディレクトリー に コード をマウントするかを指定します(デフォルト: /app) | +| `--no-dir` | 現在の ディレクトリー をマウントしません(デフォルト: False) | +| `--shell` | コンテナを起動するシェルを指定します(デフォルト: /bin/bash) | +| `--port` | jupyter をバインドするホストポートを指定します(デフォルト: 8888) | +| `--cmd` | コンテナ内で実行する コマンド | +| `--no-tty` | tty なしで コマンド を実行します(デフォルト: False) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-enabled.mdx b/ja/models/ref/cli/wandb-enabled.mdx index 53c8de9576..c46d3676b4 100644 --- a/ja/models/ref/cli/wandb-enabled.mdx +++ b/ja/models/ref/cli/wandb-enabled.mdx @@ -1,17 +1,30 @@ --- -title: wandb 有効 +title: wandb 有効化済み --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-enabled.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb enabled [OPTIONS]` +import WandbEnabled from "/snippets/en/_includes/cli/wandb-enabled.mdx"; -**概要** + -W&B を有効にします。 + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +W&B を有効化します。 -| **オプション** | **説明** | +## Usage (使用法) + +```bash +wandb enabled [OPTIONS] +``` + +## Options (オプション) + +| オプション | 説明 | | :--- | :--- | -| `--service` | W&B サービスを有効にする [デフォルト: True] | \ No newline at end of file +| `--service` | W&B サービスを有効にします (デフォルト: True) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-init.mdx b/ja/models/ref/cli/wandb-init.mdx index 3d24a2c1a9..bc282f1a76 100644 --- a/ja/models/ref/cli/wandb-init.mdx +++ b/ja/models/ref/cli/wandb-init.mdx @@ -2,19 +2,32 @@ title: wandb init --- -**使用法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-init.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb init [OPTIONS]` +import WandbInit from "/snippets/en/_includes/cli/wandb-init.mdx"; -**概要** + -Weights & Biases でディレクトリーを設定 + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +ディレクトリーに Weights & Biases の設定を行います。 -| **オプション** | **説明** | +## 使用法 + +```bash +wandb init [OPTIONS] +``` + +## オプション + +| オプション | 説明 | | :--- | :--- | -| `-p, --project` | 使用するプロジェクト。 | -| `-e, --entity` | プロジェクトを範囲指定するためのエンティティ。 | -| `--reset` | 設定をリセット | -| `-m, --mode` | "online"、"offline" または "disabled" を指定可能。デフォルトは online。 | \ No newline at end of file +| `--project`, `-p` | 使用する Projects を指定します。 | +| `--entity`, `-e` | Projects のスコープ対象となる Entities を指定します。 | +| `--reset` | 設定 をリセットします (デフォルト: False) | +| `--mode`, `-m` | "online", "offline", または "disabled" を指定できます。デフォルトは online です。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-job.mdx b/ja/models/ref/cli/wandb-job.mdx index 7cd9c57d8c..9c27a8be1a 100644 --- a/ja/models/ref/cli/wandb-job.mdx +++ b/ja/models/ref/cli/wandb-job.mdx @@ -1,26 +1,21 @@ --- -title: wandb ジョブ ---- - -**使用法** - -`wandb job [OPTIONS] COMMAND [ARGS]...` - -**概要** - -W&B ジョブを管理および表示するためのコマンド +title: ' thoughtful_with_thought_extra_fast_thought_token: 32 Stereo nodes. + wandb job' +--- -**オプション** +W&B の Job を管理・表示するための コマンド -| **オプション** | **説明** | -| :--- | :--- | +## 使用法 +```bash +wandb job COMMAND [ARGS]... +``` -**コマンド** +## コマンド -| **コマンド** | **説明** | +| コマンド | 説明 | | :--- | :--- | -| create | wandb run なしでソースからジョブを作成します。 | -| describe | ローンンチジョブについて説明します。 | -| list | プロジェクト内のジョブを一覧表示します。 | \ No newline at end of file +| [create](/models/ref/cli/wandb-job/wandb-job-create) | wandb run を介さずに、ソースから Job を作成します。 | +| [describe](/models/ref/cli/wandb-job/wandb-job-describe) | Launch Job の詳細を表示します。 | +| [list](/models/ref/cli/wandb-job/wandb-job-list) | プロジェクト 内の Job を一覧表示します。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-job/wandb-job-create.mdx b/ja/models/ref/cli/wandb-job/wandb-job-create.mdx index 5e8486bae2..4a0a9793d1 100644 --- a/ja/models/ref/cli/wandb-job/wandb-job-create.mdx +++ b/ja/models/ref/cli/wandb-job/wandb-job-create.mdx @@ -2,30 +2,50 @@ title: wandb job create --- -**使用方法** +{/* + このコマンドのイントロダクション・コンテンツを追加するには: + 1. スニペットファイルを作成:/snippets/en/_includes/cli/wandb-job-create.mdx + 2. そのファイルにイントロダクションの内容を追加 + 3. このコメントブロック全体を削除し、以下の2行のみを残してください: -`wandb job create [OPTIONS] {git|code|image} PATH` +import WandbJobCreate from "/snippets/en/_includes/cli/wandb-job-create.mdx"; -**概要** + -wandb run を使用せずにソースからジョブを作成します。 + スニペットは次回の再生成時に自動的に検出されます。 +*/} -ジョブには、git、code、または image の3種類があります。 +wandb run を介さずに、ソースからジョブを作成します。 -git: パス内またはメインの Python 実行可能ファイルを指すエントリポイントを明示的に指定した git ソースです。code: requirements.txt ファイルを含むコードパスです。image: Docker イメージです。 +ジョブには git、code、image の3つのタイプがあります。 -**オプション** +git: git ソース。パス内または明示的に指定されたメインの Python 実行ファイルを指すエントリポイントを持ちます。code: requirements.txt ファイルを含むコードパス。image: Docker イメージ。 -| **オプション** | **説明** | +## Usage + +```bash +wandb job create JOB_TYPE PATH [OPTIONS] +``` + +## Arguments + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `JOB_TYPE` | 説明はありません | はい | +| `PATH` | 説明はありません | はい | + +## Options + +| オプション | 説明 | | :--- | :--- | -| `-p, --project` | ジョブをリストするプロジェクトを指定します。 | -| `-e, --entity` | ジョブが属するエンティティ | -| `-n, --name` | ジョブの名前 | -| `-d, --description` | ジョブの説明 | -| `-a, --alias` | ジョブのエイリアス | -| `--entry-point` | スクリプトのエントリポイントで、実行可能ファイルとエントリポイントファイルを含みます。code または repo ジョブでは必須です。--build-context が提供されている場合、エントリポイントコマンド内のパスはビルドコンテキストに対して相対的なものになります。 | -| `-g, --git-hash` | git ジョブのソースとして使用するコミット参照 | -| `-r, --runtime` | ジョブを実行する Python ランタイム | -| `-b, --build-context` | ジョブのソースコードのルートからビルドコンテキストへのパスです。提供されている場合、これが Dockerfile とエントリポイントのベースパスとして使用されます。 | -| `--base-image` | ジョブに使用するベースイメージ。image ジョブとは互換性がありません。 | -| `--dockerfile` | ジョブの Dockerfile へのパス。--build-context が提供されている場合、Dockerfile のパスはビルドコンテキストに対して相対的になります。 | \ No newline at end of file +| `--project`, `-p` | ジョブをリストアップしたい Projects 。 | +| `--entity`, `-e` | ジョブが属する Entities | +| `--name`, `-n` | ジョブの名前 | +| `--description`, `-d` | ジョブの説明 | +| `--alias`, `-a` | ジョブの エイリアス | +| `--entry-point`, `-E` | 実行ファイルとエントリポイントファイルを含む、スクリプトへのエントリポイント。code または repo ジョブには必須です。--build-context が指定されている場合、エントリポイントコマンド内のパスはビルドコンテキストからの相対パスになります。 | +| `--git-hash`, `-g` | git ジョブのソースとして使用するコミット参照 | +| `--runtime`, `-r` | ジョブを実行する Python ランタイム | +| `--build-context`, `-b` | ジョブソースコードのルートからのビルドコンテキストへのパス。指定された場合、これが Dockerfile とエントリポイントのベースパスとして使用されます。 | +| `--base-image`, `-B` | ジョブに使用するベースイメージ。image ジョブとは併用できません。 | +| `--dockerfile`, `-D` | ジョブの Dockerfile へのパス。--build-context が指定されている場合、Dockerfile のパスはビルドコンテキストからの相対パスになります。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-job/wandb-job-describe.mdx b/ja/models/ref/cli/wandb-job/wandb-job-describe.mdx index b80265f92d..6d5339839b 100644 --- a/ja/models/ref/cli/wandb-job/wandb-job-describe.mdx +++ b/ja/models/ref/cli/wandb-job/wandb-job-describe.mdx @@ -2,16 +2,29 @@ title: wandb job describe --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-job-describe.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb job describe [OPTIONS] JOB` +import WandbJobDescribe from "/snippets/en/_includes/cli/wandb-job-describe.mdx"; -**概要** + -ローンンチ ジョブについて説明します。次の形式でローンンチ ジョブを指定してください。 -entity/project/job-name:alias-or-version + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +Launch ジョブの詳細を表示します。 Launch ジョブは `entity/project/job-name:alias-or-version` の形式で指定してください。 -| **オプション** | **説明** | -| :--- | :--- | \ No newline at end of file +## Usage + +```bash +wandb job describe JOB +``` + +## Arguments + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `JOB` | 説明なし | はい | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-job/wandb-job-list.mdx b/ja/models/ref/cli/wandb-job/wandb-job-list.mdx index 569df6e661..06138b246d 100644 --- a/ja/models/ref/cli/wandb-job/wandb-job-list.mdx +++ b/ja/models/ref/cli/wandb-job/wandb-job-list.mdx @@ -2,17 +2,30 @@ title: wandb job list --- -**使用法** +{/* + このコマンドのイントロダクション・コンテンツを追加する場合: + 1. スニペットファイルを作成: /snippets/en/_includes/cli/wandb-job-list.mdx + 2. そのファイルにイントロダクションの内容を追加 + 3. このコメントブロック全体を削除し、以下の2行のみを残してください: -`wandb job list [OPTIONS]` +import WandbJobList from "/snippets/en/_includes/cli/wandb-job-list.mdx"; -**概要** + -プロジェクト内のジョブを一覧表示 + スニペットは次回の再生成時に自動的に検出されます。 +*/} -**オプション** +Project 内の job を一覧表示します。 -| **オプション** | **説明** | +## 使用法 + +```bash +wandb job list [OPTIONS] +``` + +## オプション + +| オプション | 説明 | | :--- | :--- | -| `-p, --project` | ジョブを一覧表示したいプロジェクト。 | -| `-e, --entity` | ジョブが所属するエンティティ | +| `--project`, `-p` | job を一覧表示したい Project。 | +| `--entity`, `-e` | job が属する Entity (デフォルト: models) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-launch-agent.mdx b/ja/models/ref/cli/wandb-launch-agent.mdx index 20514c319b..5b269c91e4 100644 --- a/ja/models/ref/cli/wandb-launch-agent.mdx +++ b/ja/models/ref/cli/wandb-launch-agent.mdx @@ -1,22 +1,35 @@ --- -title: wandb ローンンチ-エージェント +title: wandb launch-agent --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-launch-agent.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb launch-agent [OPTIONS]` +import WandbLaunchAgent from "/snippets/en/_includes/cli/wandb-launch-agent.mdx"; -**概要** + -W&B ローンンチ エージェントを実行します。 + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +W&B Launch エージェント を実行します。 -| **オプション** | **説明** | +## Usage (使用法) + +```bash +wandb launch-agent [OPTIONS] +``` + +## Options (オプション) + +| オプション | 説明 | | :--- | :--- | -| `-q, --queue` | エージェントが監視するキューの名前。複数の -q フラグをサポート。 | -| `-e, --entity` | 使用するエンティティ。デフォルトでは現在ログイン中のユーザーが使用されます。 | -| `-l, --log-file` | 内部エージェント ログの出力先。stdout の場合は - を使用。 デフォルトでは、すべてのエージェントログは wandb/ サブディレクトリーまたは WANDB_DIR に設定されている場合は debug.log に保存されます。 | -| `-j, --max-jobs` | このエージェントが並行して実行できる最大のローンンチジョブ数。デフォルトは 1。上限なしの場合は -1 に設定します。 | -| `-c, --config` | 使用するエージェントコンフィグ yaml へのパス | -| `-v, --verbose` | 詳細出力を表示 | +| `--queue`, `-q` | エージェント が監視するキューの名前。複数の -q フラグがサポートされています。 | +| `--entity`, `-e` | 使用する Entities。デフォルトは現在ログインしている Users です。 | +| `--log-file`, `-l` | 内部 エージェント ログ の出力先。stdout の場合は - を使用します。デフォルトでは、すべての エージェント ログ は `wandb/` サブディレクトリー 内の `debug.log`、または `WANDB_DIR` が設定されている場合はその場所に保存されます。 | +| `--max-jobs`, `-j` | この エージェント が並列で実行できる Launch ジョブの最大数。デフォルトは 1 です。上限をなくすには -1 を設定してください。 | +| `--config`, `-c` | 使用する エージェント 設定 yaml へのパス。 | +| `--verbose`, `-v` | 詳細な出力を表示します (デフォルト: 0)。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-launch-sweep.mdx b/ja/models/ref/cli/wandb-launch-sweep.mdx index c5fbad2a4b..fefa9d1dc7 100644 --- a/ja/models/ref/cli/wandb-launch-sweep.mdx +++ b/ja/models/ref/cli/wandb-launch-sweep.mdx @@ -1,21 +1,40 @@ --- -title: wandb ローンンチ-sweep +title: wandb launch-sweep --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-launch-sweep.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb launch-sweep [OPTIONS] [CONFIG]` +import WandbLaunchSweep from "/snippets/en/_includes/cli/wandb-launch-sweep.mdx"; -**概要** + -W&B Launch Sweep を実行します (実験的機能)。 + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +W&B Launch Sweep を実行します(実験的機能)。 -| **オプション** | **説明** | +## Usage + +```bash +wandb launch-sweep [CONFIG] [OPTIONS] +``` + +## Arguments + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `CONFIG` | 説明はありません | いいえ | + +## Options + +| オプション | 説明 | | :--- | :--- | -| `-q, --queue` | sweep をプッシュするキューの名前 | -| `-p, --project` | エージェントが監視するプロジェクトの名前。指定した場合、設定ファイルで渡されたプロジェクトの値を上書きします | -| `-e, --entity` | 使用するエンティティ。デフォルトは現在ログインしているユーザーです | -| `-r, --resume_id` | 8文字のsweep IDを渡してlaunch sweep を再開します。キューが必要です | -| `--prior_run` | このsweep に追加する既存のrun のID | +| `--queue`, `-q` | Sweep をプッシュするキューの名前 | +| `--project`, `-p` | エージェント が監視する Project の名前。指定された場合、設定ファイルで渡されたプロジェクトの 値 を上書きします | +| `--entity`, `-e` | 使用する Entity。デフォルトは現在ログインしている User です | +| `--resume_id`, `-r` | 8文字の Sweep ID を渡して Launch Sweep を再開します。キューの指定が必須です | +| `--prior_run`, `-R` | この Sweep に追加する既存の Run の ID | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-launch.mdx b/ja/models/ref/cli/wandb-launch.mdx index 568f8f5eac..4f973b29fd 100644 --- a/ja/models/ref/cli/wandb-launch.mdx +++ b/ja/models/ref/cli/wandb-launch.mdx @@ -1,33 +1,46 @@ --- -title: wandb ローンンチ +title: wandb Launch --- -**Usage** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-launch.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb launch [OPTIONS]` +import WandbLaunch from "/snippets/en/_includes/cli/wandb-launch.mdx"; -**Summary** + -W&B ジョブ をローンンチまたはキューに追加します。詳細は https://wandb.me/launch を参照してください。 + The snippet will be auto-detected on the next regeneration. +*/} -**Options** +W&B Job を ローンチ またはキューに追加します。詳細は https://wandb.me/launch を参照してください。 -| **Option** | **Description** | +## Usage + +```bash +wandb launch [OPTIONS] +``` + +## Options + +| Option | Description | | :--- | :--- | -| `-u, --uri (str)` | ローカルパスまたはローンンチする git リポジトリ uri 。指定された場合、このコマンドは指定された uri からジョブを作成します。 | -| `-j, --job (str)` | ローンンチするジョブの名前。指定されると、ローンンチには uri が不要です。 | -| `--entry-point` | プロジェクト内のエントリーポイント。[デフォルト: main]。エントリーポイントが見つからない場合、指定された名前のプロジェクトファイルをスクリプトとして実行しようとします。'.py' ファイルは 'python' を使用し、'.sh' ファイルは環境変数 $SHELL によって指定されたデフォルトのシェルを使用して実行します。指定された場合、設定ファイルを使用して渡されたエントリーポイントの値を上書きします。 | -| `--build-context (str)` | ソースコード内のビルドコンテキストのパス。デフォルトはソースコードのルート。-u と互換性があります。 | -| `--name` | run を実行する際に使用する run の名前。指定されない場合、ランダムな run 名が割り当てられます。指定された場合、設定ファイルを使用して渡された名前を上書きします。 | -| `-e, --entity (str)` | 新しい run が送信されるターゲットエンティティの名前。デフォルトは、ローカルの wandb/settings フォルダで設定されたエンティティを使用します。指定された場合、設定ファイルを使用して渡されたエンティティの値を上書きします。 | -| `-p, --project (str)` | 新しい run が送信されるターゲットプロジェクトの名前。デフォルトは、ソース uri または Github run の場合、git リポジトリ名を使用します。指定された場合、設定ファイルを使用して渡されたプロジェクトの値を上書きします。 | -| `-r, --resource` | run に使用する実行リソース。サポートされている値: 'local-process', 'local-container', 'kubernetes', 'sagemaker', 'gcp-vertex'。リソース設定のないキューにプッシュする場合、これは必須のパラメータです。指定された場合、設定ファイルを使用して渡されたリソースの値を上書きします。 | -| `-d, --docker-image` | 使用したい特定の Docker イメージ。形式は name:tag 。指定された場合、設定ファイルを使用して渡された Docker イメージの値を上書きします。 | -| `--base-image` | ジョブコードを実行する Docker イメージ。--docker-image と互換性がありません。 | -| `-c, --config` | JSON ファイル('.json' で終わる必要があります)または JSON 文字列のパス。ローンンチ設定として渡されます。launch run がどのように設定されるかの指示。 | -| `-v, --set-var` | 許可リストが有効になっているキューのために、キーと値のペアとしてテンプレート変数の値を設定します。例: `--set-var key1=value1 --set-var key2=value2` | -| `-q, --queue` | プッシュする run キューの名前。指定されない場合、単一の run を直接ローンンチします。引数なしで指定された場合 (`--queue`)、キュー 'default' がデフォルトとなります。それ以外の場合、指定された名前が引数として供給されたプロジェクトとエンティティの下に存在する必要があります。 | -| `--async` | ジョブを非同期に実行するためのフラグ。デフォルトは false です。つまり、--async が設定されていない限り、wandb launch はジョブの終了を待ちます。このオプションは --queue と互換性がありません。エージェントを使用して非同期オプションを実行する場合は、wandb launch-agent で設定する必要があります。 | -| `--resource-args` | JSON ファイル('.json' で終わる必要があります)または計算リソースに引数として渡される JSON 文字列のパス。提供されるべき正確な内容は実行バックエンドごとに異なります。このファイルのレイアウトについてはドキュメントを参照してください。 | -| `--dockerfile` | ジョブをビルドするために使用される Dockerfile のパス。ジョブのルートに対する相対パス。 | -| `--priority [critical|high|medium|low]` | --queue が指定された場合、ジョブの優先度を設定します。優先度の高いジョブから優先的にローンンチされます。優先度の順序は、最も高い順に、critical、high、medium、low です。 | \ No newline at end of file +| `--uri`, `-u` | ローンチ するローカルパスまたは git リポジトリの URI。指定された場合、この コマンド は指定された URI から Job を作成します。 | +| `--job`, `-j` | ローンチ する Job の名前。これが渡された場合、ローンチ に URI は必要ありません。 | +| `--entry-point`, `-E` | プロジェクト 内の エントリポイント。[デフォルト: main]。エントリポイントが見つからない場合は、指定された名前の プロジェクト ファイルを スクリプト として実行しようとします。 .py ファイルの実行には 'python' を、 .sh ファイルの実行にはデフォルトのシェル( 環境 変数 $SHELL で指定)を使用します。渡された場合、 設定 ファイルで渡されたエントリポイントの 値 を上書きします。 | +| `--build-context` | ソース コード 内のビルドコンテキストへのパス。デフォルトはソース コード のルートです。 -u とのみ互換性があります。 | +| `--name` | ローンチ する Run の名前。指定しない場合、ランダムな Run 名が ローンチ に使用されます。渡された場合、 設定 ファイルで渡された名前を上書きします。 | +| `--entity`, `-e` | 新しい Run が送信されるターゲット Entities の名前。デフォルトでは、ローカルの wandb/settings フォルダで設定された Entity が使用されます。渡された場合、 設定 ファイルで渡された Entity の 値 を上書きします。 | +| `--project`, `-p` | 新しい Run が送信されるターゲット Projects の名前。デフォルトでは、ソース URI から取得した プロジェクト 名、または GitHub の場合は git リポジトリ名が使用されます。渡された場合、 設定 ファイルで渡された プロジェクト の 値 を上書きします。 | +| `--resource`, `-r` | Run に使用する実行リソース。サポートされている 値 : 'local-process', 'local-container', 'kubernetes', 'sagemaker', 'gcp-vertex'。リソース 設定 のないキューにプッシュする場合、これは必須の パラメータ です。渡された場合、 設定 ファイルで渡されたリソースの 値 を上書きします。 | +| `--docker-image`, `-d` | 使用する特定の Docker イメージ。 name:tag の形式で指定します。渡された場合、 設定 ファイルで渡された Docker イメージの 値 を上書きします。 | +| `--base-image`, `-B` | Job コード を実行するための Docker ベースイメージ。 --docker-image とは併用できません。 | +| `--config`, `-c` | ローンチ 設定 として渡される JSON ファイルへのパス( '.json' で終わる必要があります)または JSON 文字列。 ローンチ された Run の 設定 方法を指示します。 | +| `--set-var`, `-v` | 許可リストが有効なキューに対して、テンプレート変数の 値 を key-value ペアとして設定します。例: `--set-var key1=value1 --set-var key2=value2` | +| `--queue`, `-q` | プッシュ先の Run キューの名前。指定しない場合は、単一の Run を直接 ローンチ します。 引数 なし( `--queue` )で指定された場合、デフォルトのキュー 'default' になります。名前が指定された場合、指定された Run キューは、提供された プロジェクト および Entity の下に存在する必要があります。 | +| `--async` | Job を非同期で実行するためのフラグ。デフォルトは false です。つまり、 --async が設定されていない限り、 wandb launch は Job の終了を待ちます。このオプションは --queue と併用できません。 エージェント で実行する場合の非同期オプションは wandb launch-agent で設定する必要があります。(デフォルト: False) | +| `--resource-args`, `-R` | コンピュートリソースにリソース 引数 として渡される JSON ファイルへのパス( '.json' で終わる必要があります)または JSON 文字列。提供すべき正確な内容は、各実行バックエンドによって異なります。このファイルのレイアウトについてはドキュメントを参照してください。 | +| `--dockerfile`, `-D` | Job をビルドするために使用される Dockerfile のパス。 Job のルートからの相対パスで指定します。 | +| `--priority`, `-P` | --queue が渡されたときに、 Job の優先度を設定します。優先度の高い ローンチ Job が先に処理されます。優先度の高い順に critical, high, medium, low です。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-local.mdx b/ja/models/ref/cli/wandb-local.mdx new file mode 100644 index 0000000000..caaad1980a --- /dev/null +++ b/ja/models/ref/cli/wandb-local.mdx @@ -0,0 +1,33 @@ +--- +title: wandb local +--- + +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-local.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: + +import WandbLocal from "/snippets/en/_includes/cli/wandb-local.mdx"; + + + + The snippet will be auto-detected on the next regeneration. +*/} + +ローカルの W&B コンテナを起動します (非推奨です。 `wandb server --help` を参照してください) + +## 使用法 + +```bash +wandb local [OPTIONS] +``` + +## オプション + +| オプション | 説明 | +| :--- | :--- | +| `--port`, `-p` | W&B local をバインドするホストポート (デフォルト: 8080) | +| `--env`, `-e` | wandb/local に渡す環境変数 (デフォルト: []) | +| `--daemon` | デーモンモードで実行するかどうか (デフォルト: True) | +| `--upgrade` | 最新の バージョン にアップグレードする (デフォルト: False) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-login.mdx b/ja/models/ref/cli/wandb-login.mdx index 1c747b2152..cbd9655f06 100644 --- a/ja/models/ref/cli/wandb-login.mdx +++ b/ja/models/ref/cli/wandb-login.mdx @@ -1,22 +1,33 @@ --- -title: wandb ログイン +title: wandb login --- +import WandbLogin from "/snippets/en/_includes/cli/wandb-login.mdx"; -**使用方法** + -`wandb login [OPTIONS] [KEY]...` +W&B サービスで認証を行うための APIキー を検証し、保存します。 -**概要** +デフォルトでは、W&B による検証を行わずに資格情報をローカルにのみ保存します。資格情報を検証するには、`--verify=True` を設定してください。 -Weights & Biases へログイン +サーバー デプロイメント(専用クラウド または顧客管理インスタンス)の場合は、`--host` フラグを使用してホスト URL を指定します。また、ホスト パラメータ を指定して `login` コマンドを実行する代わりに、環境 変数 `WANDB_BASE_URL` および `WANDB_API_KEY` を設定することも可能です。 +## 使用法 -**オプション** +```bash +wandb login [KEY] [OPTIONS] +``` -| **オプション** | **説明** | +## 引数 + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `KEY` | 説明なし | いいえ | + +## オプション + +| オプション | 説明 | | :--- | :--- | -| `--cloud` | ローカルではなくクラウドにログイン | -| `--host, --base-url` | W&B の特定のインスタンスにログイン | -| `--relogin` | すでにログインしている場合でも再ログインを強制 | -| `--anonymously` | 匿名でログイン | -| `--verify / --no-verify` | ログイン資格情報を確認 | \ No newline at end of file +| `--cloud` | ローカルではなく クラウド にログインします (デフォルト: False) | +| `--host`, `--base-url` | W&B の特定のインスタンスにログインします | +| `--relogin` | すでにログインしている場合に強制的に再ログインします | +| `--verify` | ログイン資格情報を検証します (デフォルト: False) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-off.mdx b/ja/models/ref/cli/wandb-off.mdx new file mode 100644 index 0000000000..9eeded2621 --- /dev/null +++ b/ja/models/ref/cli/wandb-off.mdx @@ -0,0 +1,22 @@ +--- +title: wandb off +--- + +{/* + このコマンドの導入コンテンツを追加するには: + 1. スニペットファイルを作成: /snippets/ja/_includes/cli/wandb-off.mdx + 2. そのファイルにイントロコンテンツを追加 + 3. このコメントブロック全体を削除し、以下の2行のみを残してください: + +import WandbOff from "/snippets/en/_includes/cli/wandb-off.mdx"; + + + + 次回の再生成時にスニペットが自動検出されます。 +*/} + +## 使用法 + +```bash +wandb off +``` \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-offline.mdx b/ja/models/ref/cli/wandb-offline.mdx index dad2a9d798..1d3f2f8fe2 100644 --- a/ja/models/ref/cli/wandb-offline.mdx +++ b/ja/models/ref/cli/wandb-offline.mdx @@ -2,16 +2,26 @@ title: wandb offline --- -**使用方法** + start_thought +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-offline.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb offline [OPTIONS]` +import WandbOffline from "/snippets/en/_includes/cli/wandb-offline.mdx"; -**概要** + -W&B の同期を無効にする + The snippet will be auto-detected on the next regeneration. +*/} +W&B にログ記録されたデータを クラウド にアップロードせず、ローカルに保存します。 -**オプション** +オフラインの Runs をアップロードするには、`wandb online` または `wandb sync` を使用してください。 -| **オプション** | **説明** | -| :--- | :--- | \ No newline at end of file +## 使用方法 + +```bash +wandb offline +``` \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-on.mdx b/ja/models/ref/cli/wandb-on.mdx new file mode 100644 index 0000000000..df24da65cf --- /dev/null +++ b/ja/models/ref/cli/wandb-on.mdx @@ -0,0 +1,22 @@ +--- +title: wandb on +--- + +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-on.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: + +import WandbOn from "/snippets/en/_includes/cli/wandb-on.mdx"; + + + + The snippet will be auto-detected on the next regeneration. +*/} + +## 使用方法 + +```bash +wandb on +``` \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-online.mdx b/ja/models/ref/cli/wandb-online.mdx index e6772ee84a..decedd2d14 100644 --- a/ja/models/ref/cli/wandb-online.mdx +++ b/ja/models/ref/cli/wandb-online.mdx @@ -1,16 +1,24 @@ --- -title: wandb オンライン +title: wandb online --- -**使い方** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-online.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb online [OPTIONS]` +import WandbOnline from "/snippets/en/_includes/cli/wandb-online.mdx"; -**概要** + -W&B 同期を有効にする + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +`wandb offline` 設定を解除します。 -| **オプション** | **説明** | -| :--- | :--- | \ No newline at end of file +## 使用方法 + +```bash +wandb online +``` \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-projects.mdx b/ja/models/ref/cli/wandb-projects.mdx new file mode 100644 index 0000000000..f5350a9b7b --- /dev/null +++ b/ja/models/ref/cli/wandb-projects.mdx @@ -0,0 +1,30 @@ +--- +title: wandb Projects +--- + +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-projects.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: + +import WandbProjects from "/snippets/en/_includes/cli/wandb-projects.mdx"; + + + + The snippet will be auto-detected on the next regeneration. +*/} + +Projects を一覧表示します + +## 使用法 + +```bash +wandb projects [OPTIONS] +``` + +## オプション + +| オプション | 説明 | +| :--- | :--- | +| `--entity`, `-e` | 表示対象を絞り込むための Entities を指定します。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-pull.mdx b/ja/models/ref/cli/wandb-pull.mdx index 869f54dac1..1786bbb88d 100644 --- a/ja/models/ref/cli/wandb-pull.mdx +++ b/ja/models/ref/cli/wandb-pull.mdx @@ -2,17 +2,36 @@ title: wandb pull --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-pull.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb pull [OPTIONS] RUN` +import WandbPull from "/snippets/en/_includes/cli/wandb-pull.mdx"; -**概要** + -Weights & Biases からファイルを取得します + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +Weights & Biases からファイルをプルします。 -| **オプション** | **説明** | +## Usage(使用法) + +```bash +wandb pull RUN [OPTIONS] +``` + +## Arguments(引数) + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `RUN` | 説明なし | はい | + +## Options(オプション) + +| オプション | 説明 | | :--- | :--- | -| `-p, --project` | ダウンロードしたいプロジェクトです。 | -| `-e, --entity` | リストを絞り込むためのエンティティです。 | \ No newline at end of file +| `--project`, `-p` | ダウンロードしたい Projects。 | +| `--entity`, `-e` | リストのスコープを制限する Entities。(デフォルト: models) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-restore.mdx b/ja/models/ref/cli/wandb-restore.mdx index 82d63bf746..4e029686ef 100644 --- a/ja/models/ref/cli/wandb-restore.mdx +++ b/ja/models/ref/cli/wandb-restore.mdx @@ -2,19 +2,38 @@ title: wandb restore --- -**使い方** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-restore.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb restore [OPTIONS] RUN` +import WandbRestore from "/snippets/en/_includes/cli/wandb-restore.mdx"; -**概要** + -run のコード、config、docker 状態を復元します + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +Run のコード、設定(config)、および Docker の状態を復元します。 `wandb.save()` や `wandb.init(save_code=True)` でコードが保存されていなかった場合は、最新のコミットからコードを取得します。 -| **オプション** | **説明** | +## Usage + +```bash +wandb restore RUN [OPTIONS] +``` + +## Arguments + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `RUN` | 説明はありません | はい | + +## Options + +| オプション | 説明 | | :--- | :--- | -| `--no-git` | git 状態を復元しない | -| `--branch / --no-branch` | ブランチを作成するか、デタッチされた状態にチェックアウトするか | -| `-p, --project` | アップロードしたいプロジェクト。 | -| `-e, --entity` | リストを特定のエンティティに絞り込むためのエンティティ。 | \ No newline at end of file +| `--no-git` | git の状態を復元しない(デフォルト: False) | +| `--branch` | ブランチを作成するか、デタッチドヘッドでチェックアウトするか(デフォルト: True) | +| `--project`, `-p` | アップロード先の Projects 。 | +| `--entity`, `-e` | リストのスコープ対象となる Entities 。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-scheduler.mdx b/ja/models/ref/cli/wandb-scheduler.mdx index 154f489ad6..66901d13a4 100644 --- a/ja/models/ref/cli/wandb-scheduler.mdx +++ b/ja/models/ref/cli/wandb-scheduler.mdx @@ -1,17 +1,30 @@ --- -title: wandb スケジューラー +title: wandb scheduler --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-scheduler.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb scheduler [OPTIONS] SWEEP_ID` +import WandbScheduler from "/snippets/en/_includes/cli/wandb-scheduler.mdx"; -**概要** + -W&B ローンンチ sweep スケジューラーを実行する(実験的) + The snippet will be auto-detected on the next regeneration. +*/} +W&B Launch Sweep スケジューラーを実行します(実験的機能) -**オプション** +## 使用法 -| **オプション** | **説明** | -| :--- | :--- | \ No newline at end of file +```bash +wandb scheduler SWEEP_ID +``` + +## 引数 (Arguments) + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `SWEEP_ID` | 説明なし | はい | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-server.mdx b/ja/models/ref/cli/wandb-server.mdx index 9da5b158c4..14aba6c67c 100644 --- a/ja/models/ref/cli/wandb-server.mdx +++ b/ja/models/ref/cli/wandb-server.mdx @@ -2,24 +2,17 @@ title: wandb サーバー --- -**使用方法** +ローカルの W&B サーバー を操作するための コマンド -`wandb server [OPTIONS] COMMAND [ARGS]...` +## 使用法 -**概要** +```bash +wandb server COMMAND [ARGS]... +``` -ローカル W&B サーバーを操作するためのコマンド +## コマンド - -**オプション** - -| **オプション** | **説明** | -| :--- | :--- | - - -**コマンド** - -| **コマンド** | **説明** | +| コマンド | 説明 | | :--- | :--- | -| start | ローカル W&B サーバーを開始する | -| stop | ローカル W&B サーバーを停止する | \ No newline at end of file +| [start](/models/ref/cli/wandb-server/wandb-server-start) | ローカルの W&B サーバー を起動します | +| [stop](/models/ref/cli/wandb-server/wandb-server-stop) | ローカルの W&B サーバー を停止します | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-server/wandb-server-start.mdx b/ja/models/ref/cli/wandb-server/wandb-server-start.mdx index ae4f5fa0d4..8f3d1e8b0f 100644 --- a/ja/models/ref/cli/wandb-server/wandb-server-start.mdx +++ b/ja/models/ref/cli/wandb-server/wandb-server-start.mdx @@ -1,19 +1,39 @@ --- -title: wandb サーバー start +title: ' thoughtful mini beige dots tea + + # wandb server start + + + `wandb server start` コマンドを使用して、W&B サーバー のローカルインスタ + + ' --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-server-start.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: + +import WandbServerStart from "/snippets/en/_includes/cli/wandb-server-start.mdx"; + + + + The snippet will be auto-detected on the next regeneration. +*/} -`wandb server start [OPTIONS]` +ローカルの W&B サーバー を起動します。 -**概要** +## 使用法 -ローカル W&B サーバーを開始します +```bash +wandb server start [OPTIONS] +``` -**オプション** +## オプション -| **オプション** | **説明** | +| オプション | 説明 | | :--- | :--- | -| `-p, --port` | バインドする W&B サーバーのホストポート | -| `-e, --env` | wandb/local に渡す環境変数 | -| `--daemon / --no-daemon` | デーモンモードで run またはデーモンモードで run しない | \ No newline at end of file +| `--port`, `-p` | W&B サーバー をバインドするホストポート(デフォルト:8080) | +| `--env`, `-e` | wandb/local に渡す環境変数(デフォルト:[]) | +| `--daemon` | デーモンモードで実行するかどうか(デフォルト:True) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-server/wandb-server-stop.mdx b/ja/models/ref/cli/wandb-server/wandb-server-stop.mdx index 3c07f4d90c..015983a22f 100644 --- a/ja/models/ref/cli/wandb-server/wandb-server-stop.mdx +++ b/ja/models/ref/cli/wandb-server/wandb-server-stop.mdx @@ -1,17 +1,24 @@ --- -title: wandb サーバー stop +title: wandb server stop --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-server-stop.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb server stop [OPTIONS]` +import WandbServerStop from "/snippets/en/_includes/cli/wandb-server-stop.mdx"; -**概要** + -ローカルの W&B サーバーを停止する + The snippet will be auto-detected on the next regeneration. +*/} +ローカルの W&B サーバー を停止します。 -**オプション** +## 使用法 -| **オプション** | **説明** | -| :--- | :--- | \ No newline at end of file +```bash +wandb server stop +``` \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-status.mdx b/ja/models/ref/cli/wandb-status.mdx index 7364ebc3e7..0354f85b10 100644 --- a/ja/models/ref/cli/wandb-status.mdx +++ b/ja/models/ref/cli/wandb-status.mdx @@ -1,18 +1,30 @@ --- -title: wandb ステータス +title: wandb status --- -**使用方法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-status.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb status [OPTIONS]` +import WandbStatus from "/snippets/en/_includes/cli/wandb-status.mdx"; -**概要** + -設定の表示 + The snippet will be auto-detected on the next regeneration. +*/} +設定 情報を表示します -**オプション** +## 使用法 -| **オプション** | **説明** | +```bash +wandb status [OPTIONS] +``` + +## オプション + +| オプション | 説明 | | :--- | :--- | -| `--settings / --no-settings` | 現在の設定を表示 | +| `--settings` | 現在の 設定 を表示します (デフォルト: True) | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-sweep.mdx b/ja/models/ref/cli/wandb-sweep.mdx index 6033b3a05d..076894347d 100644 --- a/ja/models/ref/cli/wandb-sweep.mdx +++ b/ja/models/ref/cli/wandb-sweep.mdx @@ -2,27 +2,46 @@ title: wandb sweep --- -**使用法** +{/* + To add introductory content for this command: + 1. Create the snippet file: /snippets/en/_includes/cli/wandb-sweep.mdx + 2. Add your intro content to that file + 3. Delete this entire comment block and keep only the two lines below: -`wandb sweep [OPTIONS] CONFIG_YAML_OR_SWEEP_ID` +import WandbSweep from "/snippets/en/_includes/cli/wandb-sweep.mdx"; -**概要** + -ハイパーパラメーター探索を初期化します。機械学習モデルのコスト関数を最適化するために、さまざまな組み合わせをテストしてハイパーパラメーターを検索します。 + The snippet will be auto-detected on the next regeneration. +*/} -**オプション** +ハイパーパラメーター探索( Sweeps )を初期化します。様々な組み合わせをテストすることで、機械学習モデルのコスト関数を最適化するハイパーパラメーターを探索します。 -| **オプション** | **説明** | +## 使用法 + +```bash +wandb sweep CONFIG_YAML_OR_SWEEP_ID [OPTIONS] +``` + +## 引数 + +| 引数 | 説明 | 必須 | +| :--- | :--- | :--- | +| `CONFIG_YAML_OR_SWEEP_ID` | 説明なし | はい | + +## オプション + +| オプション | 説明 | | :--- | :--- | -| `-p, --project` | sweep から作成された W&B によって送信されるプロジェクトの名前です。プロジェクトが指定されない場合、run は Uncategorized というラベルのプロジェクトに送信されます。 | -| `-e, --entity` | sweep によって作成された W&B run を送信したいユーザー名またはチーム名です。指定した entity が既に存在することを確認してください。entity を指定しない場合、run は通常は自分のユーザー名であるデフォルトの entity に送信されます。 | -| `--controller` | ローカルコントローラを実行します | -| `--verbose` | 詳細情報を表示します | -| `--name` | sweep の名前です。名前が指定されていない場合は、sweep ID が使用されます。 | -| `--program` | sweep プログラムを設定します | -| `--update` | 保留中の sweep を更新します | -| `--stop` | 新しい run の実行を停止して、現在実行中の run が終了するように sweep を終了します。 | -| `--cancel` | 実行中のすべての run を停止し、新しい run の実行を停止するために sweep をキャンセルします。 | -| `--pause` | 新しい run の実行を一時的に停止するために sweep を一時停止します。 | -| `--resume` | 新しい run の実行を再開するために sweep を再開します。 | -| `--prior_run` | この sweep に追加する既存の run の ID | +| `--project`, `-p` | Sweep から作成された W&B Runs の送信先となる Projects 名。プロジェクトが指定されていない場合、 Run は Uncategorized というラベルのプロジェクトに送信されます。 | +| `--entity`, `-e` | Sweep によって作成された W&B Runs の送信先となる Users 名または Teams 名。指定する Entities が既に存在することを確認してください。エンティティを指定しない場合、 Run は通常ユーザー名であるデフォルトのエンティティに送信されます。 | +| `--controller` | ローカルの controller を実行する(デフォルト: False) | +| `--verbose` | 詳細な出力を表示する(デフォルト: False) | +| `--name` | Sweep の名前。名前が指定されない場合は Sweep ID が使用されます。 | +| `--program` | Sweep プログラムを設定する | +| `--update` | 保留中の Sweep を更新する | +| `--stop` | Sweep を終了し、新しい Runs の実行を停止します。現在実行中の Runs は完了させます。(デフォルト: False) | +| `--cancel` | Sweep をキャンセルし、すべての実行中の Runs を強制終了して、新しい Runs の実行を停止します。(デフォルト: False) | +| `--pause` | Sweep を一時停止し、新しい Runs の実行を一時的に停止します。(デフォルト: False) | +| `--resume` | Sweep を再開し、新しい Runs の実行を続行します。(デフォルト: False) | +| `--prior_run`, `-R` | この Sweep に追加する既存の Run の ID | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-sync.mdx b/ja/models/ref/cli/wandb-sync.mdx index 3e34d285cd..b2a6fe3d57 100644 --- a/ja/models/ref/cli/wandb-sync.mdx +++ b/ja/models/ref/cli/wandb-sync.mdx @@ -1,35 +1,56 @@ --- -title: wandb sync +title: ' thoughtful_thought + + wandb sync' --- +import WandbSync from "/snippets/en/_includes/cli/wandb-sync.mdx"; + + + +W&B の Runs データをクラウドに同期します。 + +`PATH` が指定されている場合、そのパスで見つかった Runs を同期します。パスが指定されていない場合は、まず `./wandb` を探し、次に `wandb/` サブディレクトリーを探します。 + +特定の Run を同期する場合: + +wandb sync ./wandb/run-20250813_124246-n67z9ude + +または、以下の方法も同様です: -**使用方法** +wandb sync ./wandb/run-20250813_124246-n67z9ude/run-n67z9ude.wandb -`wandb sync [OPTIONS] [PATH]...` +## Usage -**概要** +```bash +wandb sync [PATH] [OPTIONS] +``` -オフライン トレーニング ディレクトリーを W&B にアップロードします +## Arguments +| Argument | Description | Required | +| :--- | :--- | :--- | +| `PATH` | 説明なし | No | -**オプション** +## Options -| **オプション** | **説明** | +| Option | Description | | :--- | :--- | -| `--id` | アップロードしたい run。 | -| `-p, --project` | アップロードしたいプロジェクト。 | -| `-e, --entity` | スコープにするエンティティ。 | -| `--job_type` | 関連する runs をまとめる run のタイプを指定します。 | -| `--sync-tensorboard / --no-sync-tensorboard` | tfevent ファイルを wandb にストリームします。 | -| `--include-globs` | 含めるグロブのカンマ区切りのリスト。 | -| `--exclude-globs` | 除外するグロブのカンマ区切りのリスト。 | -| `--include-online / --no-include-online` | オンライン runs を含める | -| `--include-offline / --no-include-offline` | オフライン runs を含める | -| `--include-synced / --no-include-synced` | 同期済み runs を含める | -| `--mark-synced / --no-mark-synced` | runs を同期済みとしてマークする | -| `--sync-all` | 全ての runs を同期する | -| `--clean` | 同期済み runs を削除する | -| `--clean-old-hours` | 指定した時間より前に作成された runs を削除します。--clean フラグと一緒に使用します。 | -| `--clean-force` | 確認プロンプトなしでクリーンする。 | -| `--show` | 表示する runs の数 | -| `--append` | run を追加する | -| `--skip-console` | コンソールログをスキップする | \ No newline at end of file +| `--id` | アップロード先の Run ID。 | +| `--project`, `-p` | アップロード先の Project。 | +| `--entity`, `-e` | 対象となる Entity。 | +| `--job_type` | 関連する Runs をグループ化するための実行タイプを指定します。 | +| `--sync-tensorboard` | tfevent ファイルを wandb にストリームします。 | +| `--include-globs` | 含めるパターンのカンマ区切りリスト(glob 形式)。 | +| `--exclude-globs` | 除外するパターンのカンマ区切りリスト(glob 形式)。 | +| `--include-online` | オンラインの Runs を含める。 | +| `--include-offline` | オフラインの Runs を含める。 | +| `--include-synced` | 同期済みの Runs を含める。 | +| `--mark-synced` | Runs を同期済みとしてマークする(デフォルト: True)。 | +| `--sync-all` | すべての Runs を同期する(デフォルト: False)。 | +| `--clean` | 同期済みの Runs を削除する(デフォルト: False)。 | +| `--clean-old-hours` | 指定した時間より前に作成された Runs を削除します。--clean フラグと一緒に使用します。(デフォルト: 24) | +| `--clean-force` | 確認プロンプトを表示せずに削除を実行する(デフォルト: False)。 | +| `--show` | 表示する Runs の数(デフォルト: 5)。 | +| `--append` | Run を追記する(デフォルト: False)。 | +| `--skip-console` | コンソールログをスキップする(デフォルト: False)。 | +| `--replace-tags` | 'old_tag1=new_tag1,old_tag2=new_tag2' の形式でタグを置換します。 | \ No newline at end of file diff --git a/ja/models/ref/cli/wandb-verify.mdx b/ja/models/ref/cli/wandb-verify.mdx index 8e3565fb74..ba6ff110cd 100644 --- a/ja/models/ref/cli/wandb-verify.mdx +++ b/ja/models/ref/cli/wandb-verify.mdx @@ -1,18 +1,47 @@ --- -title: wandb verify +title: ' thoughtful mini 32 tea block engine sugar ring focus study seed line speed + cloud tiny magic level field tree store boat thin path. + + + wandb verify + + + ' --- +import WandbVerify from "/snippets/en/_includes/cli/wandb-verify.mdx"; + + + +W&B のローカルインスタンスをチェックし、検証します。W&B は以下の項目を確認します: + +ホストが `api.wandb.ai` ではないことを確認します(ホストチェック)。 + +提供された APIキー を使用して、ユーザーが正しくログインしているかを確認します(ログインチェック)。 + +リクエストが HTTPS 経由で行われているかを確認します(セキュアリクエスト)。 + +オブジェクトストアの CORS(Cross-Origin Resource Sharing)設定を検証します(CORS 設定)。 + +メトリクスを ログ 記録し、ファイルを保存およびダウンロードして、Runs が正しく記録され、アクセス可能であることを確認します(Run チェック)。 + +Artifacts を保存およびダウンロードして、アーティファクトの保存および取得システムが期待通りに動作しているかを確認します(Artifact チェック)。 + +ファイルをアップロードして GraphQL エンドポイントをテストし、署名付き URL アップロードを処理できることを確認します(GraphQL PUT チェック)。 -**使用方法** +プロキシ経由で大きなペイロードを送信できるかを確認します(ラージペイロードチェック)。 -`wandb verify [OPTIONS]` +インストールされている W&B パッケージの バージョン が最新であり、サーバー と互換性があることを確認します(W&B バージョン チェック)。 -**概要** +Sweeps を作成および実行して、スイープ機能が正しく動作しているかを確認します(Sweeps チェック)。 -ローカルインスタンスを検証する +## 使用方法 +```bash +wandb verify [OPTIONS] +``` -**オプション** +## オプション -| **オプション** | **説明** | +| オプション | 説明 | | :--- | :--- | | `--host` | W&B の特定のインスタンスをテストします | \ No newline at end of file diff --git a/ja/models/ref/python.mdx b/ja/models/ref/python.mdx index bf883b254b..264021dc97 100644 --- a/ja/models/ref/python.mdx +++ b/ja/models/ref/python.mdx @@ -1,45 +1,37 @@ --- -title: Python ライブラリ +title: Python SDK 0.24.0 +module: null --- -wandb を使用して機械学習の作業を追跡します。 +`wandb` からアクセス可能な W&B Python SDK を使用すると、モデルのトレーニングや ファインチューニング、さらには 実験 から プロダクション に至るまでの モデル 管理が可能になります。 -モデルをトレーニングおよびファインチューンし、実験からプロダクションに至るまでモデルを管理します。 +> この SDK を使用してトレーニングや ファインチューニング を行った後、[Public API](/models/ref/python/public-api) を使用して ログ 記録された データ のクエリや分析を行ったり、[Reports and Workspaces API](/models/ref/wandb_workspaces) を使用して作業内容をまとめたウェブ公開可能な [レポート](/models/reports/) を作成したりすることができます。 -ガイドや例については、https://docs.wandb.ai をご覧ください。 +## インストールとセットアップ -スクリプトやインタラクティブなノートブックについては、https://github.com/wandb/examples をご覧ください。 +### サインアップと APIキー の作成 -リファレンスドキュメントについては、https://docs.wandb.com/ref/python をご覧ください。 +マシンを W&B で認証するには、まず [User Settings](https://wandb.ai/settings) で APIキー を生成する必要があります。 -## クラス +### パッケージのインストールとインポート -[`class Artifact`](/ja/models/ref/python/artifact/): データセットおよびモデルのバージョン管理のための柔軟で軽量な構成要素。 +W&B ライブラリ をインストールします。 -[`class Run`](/ja/models/ref/python/run/): wandb によってログされる計算の単位。通常、これは機械学習の実験です。 +``` +pip install wandb +``` -## 関数 +### W&B Python SDK のインポート: -[`agent(...)`](/ja/models/ref/python/agent/): 一つ以上の sweep agent を開始します。 +```python +import wandb -[`controller(...)`](/ja/models/ref/python/controller/): パブリックな sweep コントローラのコンストラクタです。 +# チームの entity を指定します +entity = "" -[`finish(...)`](/ja/models/ref/python/finish/): run を終了し、残りのデータをアップロードします。 +# run が記録される Project +project = "my-awesome-project" -[`init(...)`](/ja/models/ref/python/init/): 新しい run を開始して W&B へ追跡しログします。 - -[`log(...)`](/ja/models/ref/python/log/): run のデータをアップロードします。 - -[`login(...)`](/ja/models/ref/python/login/): W&B ログイン資格情報を設定します。 - -[`save(...)`](/ja/models/ref/python/save/): 一つ以上のファイルを W&B に同期します。 - -[`sweep(...)`](/ja/models/ref/python/sweep/): ハイパーパラメーター探索を初期化します。 - -[`watch(...)`](/ja/models/ref/python/watch/): 指定された PyTorch のモデルにフックし、勾配とモデルの計算グラフを監視します。 - -| その他のメンバー | Description | -| :--- | :--- | -| `__version__` | `'0.19.8'` | -| `config` | | -| `summary` | | \ No newline at end of file +with wandb.init(entity=entity, project=project) as run: + run.log({"accuracy": 0.9, "loss": 0.1}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/automations.mdx b/ja/models/ref/python/automations.mdx new file mode 100644 index 0000000000..4219719998 --- /dev/null +++ b/ja/models/ref/python/automations.mdx @@ -0,0 +1,96 @@ +--- +title: オートメーション の概要 +description: W&B Automations API を使用して、 ML パイプライン 内で自動化された ワークフロー を作成および管理します。 +module: wandb.automations +no_list: true +--- + +W&B Automations API を使用すると、ML パイプライン内のイベントに反応する自動化ワークフローをプログラムで作成・管理できます。モデルのパフォーマンスの閾値や アーティファクト の作成など、特定の条件が満たされたときにトリガーされるアクションを 設定 できます。 + + +### 主要クラス + +| クラス | 説明 | +|-------|-------------| +| [`Automation`](/models/ref/python/automations/automation/) | 設定内容を含む、保存済みのオートメーションインスタンスを表します。 | +| [`NewAutomation`](/models/ref/python/automations/newautomation/) | 新しいオートメーションを作成するためのビルダー・クラスです。 | + +### イベント (トリガー) + +| イベント | 説明 | +|-------|-------------| +| [`OnRunMetric`](/models/ref/python/automations/onrunmetric/) | run の メトリクス が定義された条件(閾値、変化など)を満たしたときにトリガーされます。 | +| [`OnCreateArtifact`](/models/ref/python/automations/oncreateartifact/) | コレクション内に新しい アーティファクト が作成されたときにトリガーされます。 | +| [`OnLinkArtifact`](/models/ref/python/automations/onlinkartifact/) | アーティファクト がレジストリにリンクされたときにトリガーされます。 | +| [`OnAddArtifactAlias`](/models/ref/python/automations/onaddartifactalias/) | アーティファクト に エイリアス が追加されたときにトリガーされます。 | + +### アクション + +| アクション | 説明 | +|--------|-------------| +| [`SendNotification`](/models/ref/python/automations/sendnotification/) | Slack やその他の統合 チャンネル を通じて通知を送信します。 | +| [`SendWebhook`](/models/ref/python/automations/sendwebhook/) | 外部サービスに HTTP webhook リクエストを送信します。 | +| [`DoNothing`](/models/ref/python/automations/donothing/) | オートメーション 設定 のテストに使用するプレースホルダー・アクションです。 | + +### フィルター + +| フィルター | 説明 | +|--------|-------------| +| [`MetricThresholdFilter`](/models/ref/python/automations/metricthresholdfilter/) | メトリクス の値を閾値と比較し、それに基づいて run をフィルタリングします。 | +| [`MetricChangeFilter`](/models/ref/python/automations/metricchangefilter/) | 時間の経過に伴う メトリクス 値の変化に基づいて run をフィルタリングします。 | + +## 一般的なユースケース + +### モデルパフォーマンスのモニタリング +- モデルの精度が閾値を下回ったときのアラート通知 +- トレーニングの損失(loss)が停滞したときのチームへの通知 +- パフォーマンス メトリクス に基づく再学習 パイプライン のトリガー + +### アーティファクト管理 +- 新しい モデル バージョンが作成されたときの通知送信 +- アーティファクト にタグが付与されたときの デプロイメント ワークフローのトリガー +- データセット が更新されたときの後続 プロセッシング の自動化 + +### 実験管理 +- 失敗またはクラッシュした run に対するアラート通知 +- 長時間実行されている 実験 が完了したときの通知 +- 実験 メトリクス の日次サマリーの送信 + +### 統合ワークフロー +- Webhook を介した外部トラッキングシステムの更新 +- モデルレジストリ と デプロイメント プラットフォームの同期 +- W&B イベントに基づく CI/CD パイプライン のトリガー + +## 使用例 + +以下の例では、`custom-metric` という メトリクス が 10 を超えるたびに Slack 通知を送信するオートメーションを作成します。`custom-metric` は、トレーニング中に `wandb.Run.log({"custom-metric": value })` を使用して ログ 記録されることを想定しています。 + +```python +import wandb +from wandb.automations import OnRunMetric, RunEvent, SendNotification + +api = wandb.Api() + +project = api.project("", entity="") + +# チームの最初の Slack インテグレーションを使用します +slack_hook = next(api.slack_integrations(entity="")) + +# トリガーイベントを作成します +event = OnRunMetric( + scope=project, + filter=RunEvent.metric("custom-metric") > 10, +) + +# イベントに反応するアクションを作成します +action = SendNotification.from_integration(slack_hook) + +# オートメーションを作成します +automation = api.create_automation( + event >> action, + name="my-automation", + description="Send a Slack message whenever 'custom-metric' exceeds 10.", +) +``` + +Automations API の使用方法に関する詳細は、[Automations ガイド](/models/automations/) を参照してください。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/automation.mdx b/ja/models/ref/python/automations/automation.mdx new file mode 100644 index 0000000000..5dcb598c73 --- /dev/null +++ b/ja/models/ref/python/automations/automation.mdx @@ -0,0 +1,44 @@ +--- +title: オートメーション +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Automation` +編集をサポートする、保存済み W&B オートメーションのローカルインスタンス。 + +### method `Automation.__init__` + +```python +__init__( + typename__: 'Literal' = 'Trigger', + id: 'str', + created_at: 'datetime', + updated_at: 'datetime | None' = None, + name: 'str', + description: 'str | None', + enabled: 'bool', + scope: '_ArtifactSequenceScope | _ArtifactPortfolioScope | ProjectScope', + event: 'SavedEvent', + action: 'SavedLaunchJobAction | SavedNotificationAction | SavedWebhookAction | SavedNoOpAction' +) → None +``` + +**Args:** + + - `typename__` (Literal): + - `id` (str): + - `created_at` (datetime): このオートメーションが作成された日時。 + - `updated_at` (Optional[datetime]): このオートメーションが最後に更新された日時(該当する場合)。 + - `name` (str): このオートメーションの名前。 + - `description` (Optional[str]): このオートメーションのオプションの説明。 + - `enabled` (bool): このオートメーションが有効かどうか。有効なオートメーションのみがトリガーされます。 + - `scope` (Union[_ArtifactSequenceScope, _ArtifactPortfolioScope, ProjectScope]): トリガーイベントが発生する必要があるスコープ。 + - `event` (SavedEvent): このオートメーションをトリガーするイベント。 + - `action` (Union[SavedLaunchJobAction, SavedNotificationAction, SavedWebhookAction, SavedNoOpAction]): このオートメーションがトリガーされたときに実行されるアクション。 + +**Returns:** + `Automation` オブジェクト。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/donothing.mdx b/ja/models/ref/python/automations/donothing.mdx new file mode 100644 index 0000000000..b36c0374f9 --- /dev/null +++ b/ja/models/ref/python/automations/donothing.mdx @@ -0,0 +1,32 @@ +--- +title: DoNothing +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + +## class `DoNothing` +意図的に何もしない オートメーション アクションを定義します。 + + +### method `DoNothing.__init__` + +```python +__init__( + no_op: 'bool' = True, + action_type: 'Literal[NO_OP]' = NO_OP +) → None +``` + +**Args:** + + - `no_op` (bool): バックエンドのスキーマ要件を満たすためにのみ存在するプレースホルダーフィールド。 + この値は無視されるため、明示的に設定する必要はありません。 + - `action_type` (Literal[NO_OP]): + +**Returns:** + `DoNothing` オブジェクト 。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/metricchangefilter.mdx b/ja/models/ref/python/automations/metricchangefilter.mdx new file mode 100644 index 0000000000..c8371b177f --- /dev/null +++ b/ja/models/ref/python/automations/metricchangefilter.mdx @@ -0,0 +1,46 @@ +--- +title: MetricChangeFilter +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + +## class `MetricChangeFilter` +メトリクス の 値 の **変化** を ユーザー 定義のしきい値と比較するフィルタです。 + +変化は「タンブリング」ウィンドウ、つまり現在のウィンドウと重複しない直前のウィンドウとの差分として計算されます。 + + +### method `MetricChangeFilter.__init__` + +```python +__init__( + name: 'str', + agg: 'Agg | None' = None, + window: 'int' = 1, + cmp: 'None' = None, + threshold: 'Annotated | Annotated', + prior_window: 'int' = None, + change_type: 'ChangeType', + change_dir: 'ChangeDir' +) → None +``` + +**Args:** + + - `name` (str): + - `agg` (Optional[Agg]): + - `window` (int): + - `cmp` (None): 無視されます。 + - `threshold` (Union[Annotated, Annotated]): + - `prior_window` (int): 「直前」の メトリクス 集計ウィンドウのサイズ(`agg` が `None` の場合は無視されます)。 + 省略された場合、デフォルトで現在のウィンドウと同じサイズになります。 + - `change_type` (ChangeType): + - `change_dir` (ChangeDir): + +**Returns:** + `MetricChangeFilter` オブジェクト。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/metricthresholdfilter.mdx b/ja/models/ref/python/automations/metricthresholdfilter.mdx new file mode 100644 index 0000000000..9405667820 --- /dev/null +++ b/ja/models/ref/python/automations/metricthresholdfilter.mdx @@ -0,0 +1,39 @@ +--- +title: MetricThresholdFilter +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + +## class `MetricThresholdFilter` +**絶対的な** メトリクス の 値 を ユーザー 定義のしきい値と比較するフィルタです。 + +値 は単一の 値 、または複数 値 のウィンドウにわたる集計 結果 の場合があります。 + + +### method `MetricThresholdFilter.__init__` + +```python +__init__( + name: 'str', + agg: 'Agg | None' = None, + window: 'int' = 1, + cmp: 'Literal['$gte', '$gt', '$lt', '$lte']', + threshold: 'Annotated | Annotated' +) → None +``` + +**Args:** + + - `name` (str): + - `agg` (Optional[Agg]): + - `window` (int): + - `cmp` (Literal['$gte', '$gt', '$lt', '$lte']): メトリクス の 値 (左)としきい値(右)の比較演算子。 + - `threshold` (Union[Annotated, Annotated]): + +**Returns:** + `MetricThresholdFilter` オブジェクト 。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/metriczscorefilter.mdx b/ja/models/ref/python/automations/metriczscorefilter.mdx new file mode 100644 index 0000000000..2a17a8a42c --- /dev/null +++ b/ja/models/ref/python/automations/metriczscorefilter.mdx @@ -0,0 +1,32 @@ +--- +title: MetricZScoreFilter +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `MetricZScoreFilter` +メトリクスの Z スコアをユーザー定義のしきい値と比較するフィルタです。 + +### method `MetricZScoreFilter.__init__` + +```python +__init__( + name: 'str', + window: 'int' = 30, + threshold: 'Annotated | Annotated' = 3.0, + change_dir: 'ChangeDir' = ANY +) → None +``` + +**Args:** + + - `name` (str): 観測対象となるメトリクスの名前。 + - `window` (int): メトリクスの平均と標準偏差を計算するためのウィンドウサイズ。 + - `threshold` (Union[Annotated, Annotated]): Z スコアのしきい値。 + - `change_dir` (ChangeDir): 監視対象となる Z スコアの変化の方向。 + +**Returns:** + `MetricZScoreFilter` オブジェクト。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/newautomation.mdx b/ja/models/ref/python/automations/newautomation.mdx new file mode 100644 index 0000000000..915e2d3c12 --- /dev/null +++ b/ja/models/ref/python/automations/newautomation.mdx @@ -0,0 +1,44 @@ +--- +title: NewAutomation +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + +## class `NewAutomation` +作成される新しい オートメーション です。 + + +### method `NewAutomation.__init__` + +```python +__init__( + name: 'str | None' = None, + description: 'str | None' = None, + enabled: 'bool | None' = None, + event: 'Annotated | None' = None, + action: 'Annotated | None' = None +) → None +``` + +**Args:** + + - `name` (Optional[str]): この オートメーション の名前。 + - `description` (Optional[str]): この オートメーション の任意の説明。 + - `enabled` (Optional[bool]): この オートメーション が有効かどうか。有効な オートメーション のみがトリガーされます。 + - `event` (Optional[Annotated]): この オートメーション をトリガーするイベント。 + - `action` (Optional[Annotated]): この オートメーション がトリガーされたときに実行されるアクション。 + +**Returns:** + `NewAutomation` オブジェクト。 + +### property `NewAutomation.scope` + +トリガーイベントが発生する必要があるスコープ。 + +**Returns:** + - `Optional[AutomationScope]`: scope プロパティの 値。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/onaddartifactalias.mdx b/ja/models/ref/python/automations/onaddartifactalias.mdx new file mode 100644 index 0000000000..78d9d6d6dc --- /dev/null +++ b/ja/models/ref/python/automations/onaddartifactalias.mdx @@ -0,0 +1,46 @@ +--- +title: OnAddArtifactAlias +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `OnAddArtifactAlias` +新しい エイリアス が アーティファクト に割り当てられたときに発生します。 + +Examples: +「my-collection」というコレクション内の任意の アーティファクト に「prod」という エイリアス が割り当てられたときにトリガーされるイベントを定義します。 + +```python +from wandb import Api +from wandb.automations import OnAddArtifactAlias, ArtifactEvent + +api = Api() +collection = api.artifact_collection(name="my-collection", type_name="model") + +event = OnAddArtifactAlias( + scope=collection, + filter=ArtifactEvent.alias.eq("prod"), +) +``` + +### method `OnAddArtifactAlias.__init__` + +```python +__init__( + event_type: 'Literal[ADD_ARTIFACT_ALIAS]' = ADD_ARTIFACT_ALIAS, + scope: '_ArtifactSequenceScope | _ArtifactPortfolioScope | ProjectScope', + filter: 'And | Or | Nor | Not | Lt | Gt | Lte | Gte | Eq | Ne | In | NotIn | Exists | Regex | Contains | FilterExpr | dict[str, Any]' = And(()) +) → None +``` + +**Args:** + + - `event_type` (Literal[ADD_ARTIFACT_ALIAS]): + - `scope` (Union[_ArtifactSequenceScope, _ArtifactPortfolioScope, ProjectScope]): イベントのスコープ。 + - `filter` (Union[And, Or, Nor, Not, Lt, Gt, Lte, Gte, Eq, Ne, In, NotIn, Exists, Regex, Contains, FilterExpr, Dict[str, Any]]): このイベントがトリガーされるために必要な追加条件(ある場合)。 + +**Returns:** + `OnAddArtifactAlias` オブジェクト。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/oncreateartifact.mdx b/ja/models/ref/python/automations/oncreateartifact.mdx new file mode 100644 index 0000000000..ccff8f21c5 --- /dev/null +++ b/ja/models/ref/python/automations/oncreateartifact.mdx @@ -0,0 +1,46 @@ +--- +title: OnCreateArtifact +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + +## class `OnCreateArtifact` +新しい Artifacts が作成された際に発生するイベントです。 + +例: +"my-collection" というコレクション内に新しい Artifacts が作成されたときにトリガーされるイベントを定義します。 + +```python +from wandb import Api +from wandb.automations import OnCreateArtifact + +api = Api() +collection = api.artifact_collection(name="my-collection", type_name="model") + +event = OnCreateArtifact(scope=collection) +``` + + +### method `OnCreateArtifact.__init__` + +```python +__init__( + event_type: 'Literal[CREATE_ARTIFACT]' = CREATE_ARTIFACT, + scope: '_ArtifactSequenceScope | _ArtifactPortfolioScope', + filter: 'And | Or | Nor | Not | Lt | Gt | Lte | Gte | Eq | Ne | In | NotIn | Exists | Regex | Contains | FilterExpr | dict[str, Any]' = And(()) +) → None +``` + +**Args:** + + - `event_type` (Literal[CREATE_ARTIFACT]): + - `scope` (Union[_ArtifactSequenceScope, _ArtifactPortfolioScope]): イベントのスコープ。Artifacts コレクションである必要があります。 + - `filter` (Union[And, Or, Nor, Not, Lt, Gt, Lte, Gte, Eq, Ne, In, NotIn, Exists, Regex, Contains, FilterExpr, Dict[str, Any]]): このイベントがトリガーされるために必要な追加条件(ある場合)。 + +**Returns:** + `OnCreateArtifact` オブジェクト。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/onlinkartifact.mdx b/ja/models/ref/python/automations/onlinkartifact.mdx new file mode 100644 index 0000000000..6d9f62e1a4 --- /dev/null +++ b/ja/models/ref/python/automations/onlinkartifact.mdx @@ -0,0 +1,46 @@ +--- +title: OnLinkArtifact +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `OnLinkArtifact` +新しい Artifact がコレクションにリンクされたときに発生するイベントです。 + +例: +"my-collection" という名前のコレクションに、"prod" という エイリアス で Artifact がリンクされたときにトリガーされるイベントを定義します。 + +```python +from wandb import Api +from wandb.automations import OnLinkArtifact, ArtifactEvent + +api = Api() +collection = api.artifact_collection(name="my-collection", type_name="model") + +event = OnLinkArtifact( + scope=collection, + filter=ArtifactEvent.alias.eq("prod"), +) +``` + +### method `OnLinkArtifact.__init__` + +```python +__init__( + event_type: 'Literal[LINK_ARTIFACT]' = LINK_ARTIFACT, + scope: '_ArtifactSequenceScope | _ArtifactPortfolioScope | ProjectScope', + filter: 'And | Or | Nor | Not | Lt | Gt | Lte | Gte | Eq | Ne | In | NotIn | Exists | Regex | Contains | FilterExpr | dict[str, Any]' = And(()) +) → None +``` + +**Args:** + + - `event_type` (Literal[LINK_ARTIFACT]): + - `scope` (Union[_ArtifactSequenceScope, _ArtifactPortfolioScope, ProjectScope]): イベントのスコープ。 + - `filter` (Union[And, Or, Nor, Not, Lt, Gt, Lte, Gte, Eq, Ne, In, NotIn, Exists, Regex, Contains, FilterExpr, Dict[str, Any]]): このイベントをトリガーするために必要な追加条件(ある場合)。 + +**Returns:** + `OnLinkArtifact` オブジェクト。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/onrunmetric.mdx b/ja/models/ref/python/automations/onrunmetric.mdx new file mode 100644 index 0000000000..1f1c1666aa --- /dev/null +++ b/ja/models/ref/python/automations/onrunmetric.mdx @@ -0,0 +1,50 @@ +--- +title: OnRunMetric +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + +## class `OnRunMetric` +`OnRunMetric` は、 ユーザーが定義した条件を満たす run メトリクスを表します。 + +例: +Projects "my-project" 内の任意の run において、 メトリクス "my-metric" の直近 5 つの 値 の平均が 123.45 を超えたときにトリガーされるイベントを定義します: + +```python +from wandb import Api +from wandb.automations import OnRunMetric, RunEvent + +api = Api() +project = api.project(name="my-project") + +event = OnRunMetric( + scope=project, + # "my-metric" の 5 つの平均が 123.45 より大きい(gt)場合にトリガー + filter=RunEvent.metric("my-metric").avg(5).gt(123.45), +) +``` + + +### method `OnRunMetric.__init__` + +```python +__init__( + event_type: 'Literal[RUN_METRIC_THRESHOLD, RUN_METRIC_CHANGE, RUN_METRIC_ZSCORE]', + scope: 'ProjectScope', + filter: 'RunMetricFilter' +) → None +``` + +**Args:** + + - `event_type` (Literal[RUN_METRIC_THRESHOLD, RUN_METRIC_CHANGE, RUN_METRIC_ZSCORE]): イベントのタイプ。 + - `scope` (ProjectScope): イベントのスコープ。 Projects である必要があります。 + - `filter` (RunMetricFilter): このイベントがトリガーされるために満たす必要がある Run およびメトリクスの条件。 + +**Returns:** + `OnRunMetric` オブジェクト。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/runstatefilter.mdx b/ja/models/ref/python/automations/runstatefilter.mdx new file mode 100644 index 0000000000..46c42f424c --- /dev/null +++ b/ja/models/ref/python/automations/runstatefilter.mdx @@ -0,0 +1,28 @@ +--- +title: RunStateFilter +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `RunStateFilter` +run の状態変化に基づいてイベントをトリガーするためのフィルタを表します。 + +### method `RunStateFilter.__init__` + +```python +__init__( + run: 'And | Or | Nor | Not | Lt | Gt | Lte | Gte | Eq | Ne | In | NotIn | Exists | Regex | Contains | FilterExpr | dict[str, Any]' = And(()), + state: 'StateFilter' +) → None +``` + +**Args:** + + - `run` (Union[And, Or, Nor, Not, Lt, Gt, Lte, Gte, Eq, Ne, In, NotIn, Exists, Regex, Contains, FilterExpr, Dict[str, Any]]): このイベントをトリガーするために、対象の Runs が一致する必要があるフィルタ。 + - `state` (StateFilter): このイベントがトリガーされるために満たされる必要がある run の状態条件。 + +**Returns:** + `RunStateFilter` オブジェクト。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/sendnotification.mdx b/ja/models/ref/python/automations/sendnotification.mdx new file mode 100644 index 0000000000..7eb71d6d92 --- /dev/null +++ b/ja/models/ref/python/automations/sendnotification.mdx @@ -0,0 +1,50 @@ +--- +title: 通知の送信 +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + +## class `SendNotification` +(Slack)通知を送信する オートメーション アクションを定義します。 + + +### method `SendNotification.__init__` + +```python +__init__( + integration_id: 'str', + title: 'str' = '', + message: 'str' = '', + severity: 'AlertSeverity' = , + action_type: 'Literal[NOTIFICATION]' = NOTIFICATION +) → None +``` + +**Args:** + + - `integration_id` (str): 通知の送信に使用される Slack インテグレーション の ID。 + - `title` (str): 送信される通知のタイトル。 + - `message` (str): 送信される通知のメッセージ本文。 + - `severity` (AlertSeverity): 送信される通知の重要度(`INFO`, `WARN`, `ERROR`)。 + - `action_type` (Literal[NOTIFICATION]): + +**Returns:** + `SendNotification` オブジェクト。 + +### classmethod `SendNotification.from_integration` + +```python +from_integration( + integration: 'SlackIntegration', + title: 'str' = '', + text: 'str' = '', + level: 'AlertSeverity' = +) → Self +``` + +指定された(Slack) インテグレーション に送信する通知アクションを定義します。 \ No newline at end of file diff --git a/ja/models/ref/python/automations/sendwebhook.mdx b/ja/models/ref/python/automations/sendwebhook.mdx new file mode 100644 index 0000000000..a74fb0807f --- /dev/null +++ b/ja/models/ref/python/automations/sendwebhook.mdx @@ -0,0 +1,44 @@ +--- +title: SendWebhook +namespace: automations_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + +## class `SendWebhook` +Webhook リクエストを送信する オートメーション アクションを定義します。 + + +### method `SendWebhook.__init__` + +```python +__init__( + integration_id: 'str', + request_payload: 'Annotated | None' = None, + action_type: 'Literal[GENERIC_WEBHOOK]' = GENERIC_WEBHOOK +) → None +``` + +**Args:** + + - `integration_id` (str): リクエストの送信に使用される Webhook インテグレーション の ID。 + - `request_payload` (Optional[Annotated]): Webhook リクエストで送信するペイロード。テンプレート変数を含めることができます。 + - `action_type` (Literal[GENERIC_WEBHOOK]): + +**Returns:** + `SendWebhook` オブジェクト。 + +### classmethod `SendWebhook.from_integration` + +```python +from_integration( + integration: 'WebhookIntegration', + payload: 'Optional[JsonEncoded[dict[str, Any]]]' = None +) → Self +``` + +指定された(Webhook) インテグレーション に送信する Webhook アクションを定義します。 \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts.mdx b/ja/models/ref/python/custom-charts.mdx new file mode 100644 index 0000000000..daaa44a7d9 --- /dev/null +++ b/ja/models/ref/python/custom-charts.mdx @@ -0,0 +1,84 @@ +--- +title: カスタムチャートの概要 +description: プロジェクト ダッシュボード でインタラクティブな 可視化 を行うために、W&B Python SDK でカスタムチャートを使用する +module: wandb.plot +no_list: true +--- + +W&B のカスタムチャートは、 `wandb.plot` 名前空間にある一連の関数を通じてプログラム可能です。これらの関数を使用することで、 W&B プロジェクトのダッシュボードにインタラクティブな可視化を作成でき、混同行列、 ROC 曲線、分布プロットなどの一般的な ML の可視化をサポートしています。 + +## 利用可能なチャート関数 + +| 関数 | 説明 | +|----------|-------------| +| [`confusion_matrix()`](/models/ref/python/custom-charts/confusion_matrix/) | 分類パフォーマンスの可視化のための混同行列を生成します。 | +| [`roc_curve()`](/models/ref/python/custom-charts/roc_curve/) | 二値および多クラス分類器の受信者操作特性(ROC)曲線を作成します。 | +| [`pr_curve()`](/models/ref/python/custom-charts/pr_curve/) | 分類器の評価のための PR曲線 を構築します。 | +| [`line()`](/models/ref/python/custom-charts/line/) | テーブル形式のデータから折れ線グラフを作成します。 | +| [`scatter()`](/models/ref/python/custom-charts/scatter/) | 変数間の関係を示す散布図を作成します | +| [`bar()`](/models/ref/python/custom-charts/bar/) | カテゴリデータ用の棒グラフを生成します。 | +| [`histogram()`](/models/ref/python/custom-charts/histogram/) | データの分布分析のためのヒストグラムを構築します。 | +| [`line_series()`](/models/ref/python/custom-charts/line_series/) | 1 つのチャートに複数の系列の折れ線プロットを表示します。 | +| [`plot_table()`](/models/ref/python/custom-charts/plot_table/) | Vega-Lite 仕様を使用してカスタムチャートを作成します。 | + +## 一般的なユースケース + +### モデルの評価 +- **分類**: 分類器の評価のための `confusion_matrix()` 、 `roc_curve()` 、 `pr_curve()` +- **回帰**: 予測 vs. 実測値プロットのための `scatter()` や、残差分析のための `histogram()` +- **Vega-Lite チャート**: ドメイン固有の可視化のための `plot_table()` + +### トレーニングのモニタリング +- **学習曲線**: エポック ごとの メトリクス を追跡するための `line()` または `line_series()` +- **ハイパーパラメーター の比較**: 設定 を比較するための `bar()` チャート + +### データ分析 +- **分布分析**: 特徴量の分布を確認するための `histogram()` +- **相関分析**: 変数間の関係を調査するための `scatter()` プロット + +## はじめに + +### 混同行列をログに記録する + +```python +import wandb + +y_true = [0, 1, 2, 0, 1, 2] +y_pred = [0, 2, 2, 0, 1, 1] +class_names = ["class_0", "class_1", "class_2"] + +# run を初期化 +with wandb.init(project="custom-charts-demo") as run: + run.log({ + "conf_mat": wandb.plot.confusion_matrix( + y_true=y_true, + preds=y_pred, + class_names=class_names + ) + }) +``` + + +### 特徴量分析のための散布図を構築する +```python +import numpy as np + +# 合成データを生成 +data_table = wandb.Table(columns=["feature_1", "feature_2", "label"]) + +with wandb.init(project="custom-charts-demo") as run: + + for _ in range(100): + data_table.add_data( + np.random.randn(), + np.random.randn(), + np.random.choice(["A", "B"]) + ) + + run.log({ + "feature_scatter": wandb.plot.scatter( + data_table, x="feature_1", y="feature_2", + title="Feature Distribution" + ) + }) +``` \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts/bar.mdx b/ja/models/ref/python/custom-charts/bar.mdx new file mode 100644 index 0000000000..a785a6565f --- /dev/null +++ b/ja/models/ref/python/custom-charts/bar.mdx @@ -0,0 +1,65 @@ +--- +title: bar() +namespace: python_sdk_custom_charts +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `bar` + +```python +bar( + table: 'wandb.Table', + label: 'str', + value: 'str', + title: 'str' = '', + split_table: 'bool' = False +) → CustomChart +``` + +wandb.Table のデータから棒グラフを作成します。 + +**Args:** + + - `table`: 棒グラフのデータを含むテーブル。 + - `label`: 各棒のラベルとして使用する列の名前。 + - `value`: 各棒の値として使用する列の名前。 + - `title`: 棒グラフのタイトル。 + - `split_table`: W&B UI 上でテーブルを別のセクションに分割して表示するかどうか。 `True` の場合、テーブルは "Custom Chart Tables" という名前のセクションに表示されます。デフォルトは `False` です。 + +**Returns:** + + - `CustomChart`: W&B にログを記録できるカスタムチャートオブジェクト。チャートをログに記録するには、 `wandb.log()` に渡します。 + +**Example:** + +```python +import random +import wandb + +# テーブル用のランダムデータを生成 +data = [ + ["car", random.uniform(0, 1)], + ["bus", random.uniform(0, 1)], + ["road", random.uniform(0, 1)], + ["person", random.uniform(0, 1)], +] + +# データを使用してテーブルを作成 +table = wandb.Table(data=data, columns=["class", "accuracy"]) + +# W&B run を初期化し、棒グラフをログに記録 +with wandb.init(project="bar_chart") as run: + # テーブルから棒グラフを作成 + bar_plot = wandb.plot.bar( + table=table, + label="class", + value="accuracy", + title="Object Classification Accuracy", + ) + + # 棒グラフを W&B にログ記録 + run.log({"bar_plot": bar_plot}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts/confusion_matrix.mdx b/ja/models/ref/python/custom-charts/confusion_matrix.mdx new file mode 100644 index 0000000000..c0ff82ef15 --- /dev/null +++ b/ja/models/ref/python/custom-charts/confusion_matrix.mdx @@ -0,0 +1,113 @@ +--- +title: confusion_matrix() +namespace: python_sdk_custom_charts +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `confusion_matrix` + +```python +confusion_matrix( + probs: 'Sequence[Sequence[float]] | None' = None, + y_true: 'Sequence[T] | None' = None, + preds: 'Sequence[T] | None' = None, + class_names: 'Sequence[str] | None' = None, + title: 'str' = 'Confusion Matrix Curve', + split_table: 'bool' = False +) → CustomChart +``` + +一連の確率または予測値から混同行列(confusion matrix)を作成します。 + +**Args:** + + - `probs`: 各クラスの予測確率のシーケンス。形状は (N, K) である必要があります。ここで N はサンプル数、K はクラス数です。これが指定された場合、`preds` は指定しないでください。 + - `y_true`: 正解ラベルのシーケンス。 + - `preds`: 予測されたクラスラベルのシーケンス。これが指定された場合、`probs` は指定しないでください。 + - `class_names`: クラス名のシーケンス。指定されない場合、クラス名は "Class_1"、"Class_2" などのように定義されます。 + - `title`: 混同行列チャートのタイトル。 + - `split_table`: テーブルを W&B UI 上で別のセクションに分割するかどうか。`True` の場合、テーブルは "Custom Chart Tables" という名前のセクションに表示されます。デフォルトは `False` です。 + +**Returns:** + + - `CustomChart`: W&B にログを記録できるカスタムチャートオブジェクト。チャートをログに記録するには、`wandb.log()` に渡します。 + +**Raises:** + + - `ValueError`: `probs` と `preds` の両方が指定された場合、または予測数と正解ラベル数が一致しない場合。また、ユニークな予測クラス数がクラス名リストの数を超えた場合、またはユニークな正解ラベル数がクラス名リストの数を超えた場合。 + - `wandb.Error`: numpy がインストールされていない場合。 + +**Examples:** + +野生動物の分類のために、ランダムな確率を使用して混同行列をログに記録する例: + +```python +import numpy as np +import wandb + +# 野生動物のクラス名を定義 +wildlife_class_names = ["Lion", "Tiger", "Elephant", "Zebra"] + +# ランダムな正解ラベルを生成 (10サンプルに対して 0 から 3) +wildlife_y_true = np.random.randint(0, 4, size=10) + +# 各クラスのランダムな確率を生成 (10サンプル x 4クラス) +wildlife_probs = np.random.rand(10, 4) +wildlife_probs = np.exp(wildlife_probs) / np.sum( + np.exp(wildlife_probs), + axis=1, + keepdims=True, +) + +# W&B run を初期化し、混同行列をログに記録 +with wandb.init(project="wildlife_classification") as run: + confusion_matrix = wandb.plot.confusion_matrix( + probs=wildlife_probs, + y_true=wildlife_y_true, + class_names=wildlife_class_names, + title="Wildlife Classification Confusion Matrix", + ) + run.log({"wildlife_confusion_matrix": confusion_matrix}) +``` + +この例では、ランダムな確率を使用して混同行列が生成されます。 + +シミュレーションされたモデル予測と 85% の精度で混同行列をログに記録する例: + +```python +import numpy as np +import wandb + +# 野生動物のクラス名を定義 +wildlife_class_names = ["Lion", "Tiger", "Elephant", "Zebra"] + +# 200枚の動物画像に対する正解ラベルをシミュレート (不均衡な分布) +wildlife_y_true = np.random.choice( + [0, 1, 2, 3], + size=200, + p=[0.2, 0.3, 0.25, 0.25], +) + +# 85% の精度を持つモデル予測をシミュレート +wildlife_preds = [ + y_t + if np.random.rand() < 0.85 + else np.random.choice([x for x in range(4) if x != y_t]) + for y_t in wildlife_y_true +] + +# W&B run を初期化し、混同行列をログに記録 +with wandb.init(project="wildlife_classification") as run: + confusion_matrix = wandb.plot.confusion_matrix( + preds=wildlife_preds, + y_true=wildlife_y_true, + class_names=wildlife_class_names, + title="Simulated Wildlife Classification Confusion Matrix", + ) + run.log({"wildlife_confusion_matrix": confusion_matrix}) +``` + +この例では、混同行列を生成するために、85% の精度で予測がシミュレートされています。 \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts/histogram.mdx b/ja/models/ref/python/custom-charts/histogram.mdx new file mode 100644 index 0000000000..d0aa34476b --- /dev/null +++ b/ja/models/ref/python/custom-charts/histogram.mdx @@ -0,0 +1,60 @@ +--- +title: ヒストグラム +namespace: python_sdk_custom_charts +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `histogram` + +```python +histogram( + table: 'wandb.Table', + value: 'str', + title: 'str' = '', + split_table: 'bool' = False +) → CustomChart +``` + +W&B Table からヒストグラムチャートを構築します。 + +**Args:** + + - `table`: ヒストグラムの データ を含む W&B Table。 + - `value`: ビン軸(x 軸)のラベル。 + - `title`: ヒストグラムプロットのタイトル。 + - `split_table`: W&B UI 上でテーブルを別のセクションに分割するかどうか。 `True` の場合、テーブルは "Custom Chart Tables" という名前のセクションに表示されます。デフォルトは `False` です。 + +**Returns:** + + - `CustomChart`: W&B に ログ 記録可能なカスタムチャートオブジェクト。チャートを ログ に記録するには、 `wandb.log()` に渡します。 + +**Example:** + +```python +import math +import random +import wandb + +# ランダムなデータを生成 +data = [[i, random.random() + math.sin(i / 10)] for i in range(100)] + +# W&B Table を作成 +table = wandb.Table( + data=data, + columns=["step", "height"], +) + +# ヒストグラムプロットを作成 +histogram = wandb.plot.histogram( + table, + value="height", + title="My Histogram", +) + +# ヒストグラムプロットを W&B にログ記録 +with wandb.init(...) as run: + run.log({"histogram-plot1": histogram}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts/line.mdx b/ja/models/ref/python/custom-charts/line.mdx new file mode 100644 index 0000000000..d300e17e30 --- /dev/null +++ b/ja/models/ref/python/custom-charts/line.mdx @@ -0,0 +1,68 @@ +--- +title: line() +namespace: python_sdk_custom_charts +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `line` + +```python +line( + table: 'wandb.Table', + x: 'str', + y: 'str', + stroke: 'str | None' = None, + title: 'str' = '', + split_table: 'bool' = False +) → CustomChart +``` + +カスタマイズ可能な折れ線グラフを作成します。 + +**Args:** + +- `table`: チャートのデータを含むテーブル。 +- `x`: x 軸の値に使用する列名。 +- `y`: y 軸の値に使用する列名。 +- `stroke`: 線の種類を区別するための列名(例:線をグループ化する場合など)。 +- `title`: チャートのタイトル。 +- `split_table`: W&B UI でテーブルを別のセクションに分割するかどうか。 `True` の場合、テーブルは "Custom Chart Tables" という名前のセクションに表示されます。デフォルトは `False` です。 + +**Returns:** + +- `CustomChart`: W&B にログを記録できるカスタムチャートオブジェクト。チャートをログに記録するには、 `wandb.log()` に渡します。 + +**Example:** + +```python +import math +import random +import wandb + +# 異なるパターンを持つ複数のデータシリーズを作成 +data = [] +for i in range(100): + # シリーズ 1: ランダムなノイズを含む正弦波パターン + data.append([i, math.sin(i / 10) + random.uniform(-0.1, 0.1), "series_1"]) + # シリーズ 2: ランダムなノイズを含む余弦波パターン + data.append([i, math.cos(i / 10) + random.uniform(-0.1, 0.1), "series_2"]) + # シリーズ 3: ランダムなノイズを含む線形増加 + data.append([i, i / 10 + random.uniform(-0.5, 0.5), "series_3"]) + +# テーブルの列を定義 +table = wandb.Table(data=data, columns=["step", "value", "series"]) + +# wandb run を初期化し、折れ線グラフをログに記録 +with wandb.init(project="line_chart_example") as run: + line_chart = wandb.plot.line( + table=table, + x="step", + y="value", + stroke="series", # "series" 列でグループ化 + title="Multi-Series Line Plot", + ) + run.log({"line-chart": line_chart}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts/line_series.mdx b/ja/models/ref/python/custom-charts/line_series.mdx new file mode 100644 index 0000000000..4e03d5d675 --- /dev/null +++ b/ja/models/ref/python/custom-charts/line_series.mdx @@ -0,0 +1,126 @@ +--- +title: line_series() +namespace: python_sdk_custom_charts +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `line_series` + +```python +line_series( + xs: 'Iterable[Iterable[Any]] | Iterable[Any]', + ys: 'Iterable[Iterable[Any]]', + keys: 'Iterable[str] | None' = None, + title: 'str' = '', + xname: 'str' = 'x', + split_table: 'bool' = False +) → CustomChart +``` + +折れ線グラフ(line series chart)を構築します。 + +**Args:** + + - `xs`: x 値のシーケンス。単一の配列が渡された場合、すべての y 値はその x 配列に対してプロットされます。配列の配列が渡された場合、各 y 値は対応する x 配列に対してプロットされます。 + - `ys`: y 値のシーケンス。各イテラブル(iterable)が個別のラインシリーズを表します。 + - `keys`: 各ラインシリーズにラベルを付けるためのキーのシーケンス。指定されない場合、キーは "line_1", "line_2" などとして自動生成されます。 + - `title`: チャートのタイトル。 + - `xname`: x 軸のラベル。 + - `split_table`: W&B UI 上で テーブル を別のセクションに分割するかどうか。 `True` の場合、 テーブル は "Custom Chart Tables" という名前のセクションに表示されます。デフォルトは `False` です。 + +**Returns:** + + - `CustomChart`: W&B に ログ 記録可能なカスタムチャート オブジェクト。チャートを ログ 記録するには、 `wandb.log()` に渡してください。 + +**Examples:** +すべての y シリーズが同じ x 値に対してプロットされる、単一の x 配列を ログ 記録する場合: + +```python +import wandb + +# W&B run を初期化 +with wandb.init(project="line_series_example") as run: + # すべての y シリーズで共有される x 値 + xs = list(range(10)) + + # プロットする複数の y シリーズ + ys = [ + [i for i in range(10)], # y = x + [i**2 for i in range(10)], # y = x^2 + [i**3 for i in range(10)], # y = x^3 + ] + + # 折れ線グラフを生成してログ記録 + line_series_chart = wandb.plot.line_series( + xs, + ys, + title="title", + xname="step", + ) + run.log({"line-series-single-x": line_series_chart}) +``` + +この例では、単一の `xs` シリーズ(共有 x 値)がすべての `ys` シリーズに使用されます。その結果、各 y シリーズは同じ x 値(0-9)に対してプロットされます。 + +各 y シリーズが対応する x 配列に対してプロットされる、複数の x 配列を ログ 記録する場合: + +```python +import wandb + +# W&B run を初期化 +with wandb.init(project="line_series_example") as run: + # 各 y シリーズごとの個別の x 値 + xs = [ + [i for i in range(10)], # 最初のシリーズの x + [2 * i for i in range(10)], # 2番目のシリーズの x (引き伸ばし) + [3 * i for i in range(10)], # 3番目のシリーズの x (さらに引き伸ばし) + ] + + # 対応する y シリーズ + ys = [ + [i for i in range(10)], # y = x + [i**2 for i in range(10)], # y = x^2 + [i**3 for i in range(10)], # y = x^3 + ] + + # 折れ線グラフを生成してログ記録 + line_series_chart = wandb.plot.line_series( + xs, ys, title="Multiple X Arrays Example", xname="Step" + ) + run.log({"line-series-multiple-x": line_series_chart}) +``` + +この例では、各 y シリーズが独自の固有の x シリーズに対してプロットされます。これにより、データシリーズ間で x 値が一様でない場合に、より柔軟な対応が可能になります。 + +`keys` を使用してラインラベルをカスタマイズする場合: + +```python +import wandb + +# W&B run を初期化 +with wandb.init(project="line_series_example") as run: + xs = list(range(10)) # 単一の x 配列 + ys = [ + [i for i in range(10)], # y = x + [i**2 for i in range(10)], # y = x^2 + [i**3 for i in range(10)], # y = x^3 + ] + + # 各ラインのカスタムラベル + keys = ["Linear", "Quadratic", "Cubic"] + + # 折れ線グラフを生成してログ記録 + line_series_chart = wandb.plot.line_series( + xs, + ys, + keys=keys, # カスタムキー (ラインラベル) + title="Custom Line Labels Example", + xname="Step", + ) + run.log({"line-series-custom-keys": line_series_chart}) +``` + +この例では、 `keys` 引数を使用してラインにカスタムラベルを付ける方法を示しています。キーは凡例に "Linear", "Quadratic", "Cubic" として表示されます。 \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts/plot_table.mdx b/ja/models/ref/python/custom-charts/plot_table.mdx new file mode 100644 index 0000000000..e8490b4bf0 --- /dev/null +++ b/ja/models/ref/python/custom-charts/plot_table.mdx @@ -0,0 +1,64 @@ +--- +title: plot_table() +namespace: python_sdk_custom_charts +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `plot_table` + +```python +plot_table( + vega_spec_name: 'str', + data_table: 'wandb.Table', + fields: 'dict[str, Any]', + string_fields: 'dict[str, Any] | None' = None, + split_table: 'bool' = False +) → CustomChart +``` + +Vega-Lite 仕様と `wandb.Table` を使用してカスタムチャートを作成します。 + +この関数は、Vega-Lite 仕様と `wandb.Table` オブジェクトで表されるデータテーブルに基づいてカスタムチャートを作成します。仕様は事前定義され、W&B のバックエンドに保存されている必要があります。この関数は、`wandb.Run.log()` を使用して W&B にログ記録できるカスタムチャートオブジェクトを返します。 + +**引数:** + +- `vega_spec_name`: 可視化構造を定義する Vega-Lite 仕様の名前または識別子。 +- `data_table`: 可視化するデータを含む `wandb.Table` オブジェクト。 +- `fields`: Vega-Lite 仕様内のフィールドと、可視化するデータテーブル内の対応する列とのマッピング。 +- `string_fields`: カスタム可視化に必要な文字列定数の値を提供するための辞書。 +- `split_table`: W&B UI でテーブルを別のセクションに分割するかどうか。`True` の場合、テーブルは "Custom Chart Tables" という名前のセクションに表示されます。デフォルトは `False` です。 + +**戻り値:** + +- `CustomChart`: W&B にログ記録可能なカスタムチャートオブジェクト。チャートをログに記録するには、チャートオブジェクトを `wandb.Run.log()` の引数として渡します。 + +**例外:** + +- `wandb.Error`: `data_table` が `wandb.Table` オブジェクトではない場合。 + +**例:** + +```python +# Vega-Lite 仕様とデータテーブルを使用してカスタムチャートを作成します。 +import wandb + +data = [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]] +table = wandb.Table(data=data, columns=["x", "y"]) +fields = {"x": "x", "y": "y", "title": "MY TITLE"} + +with wandb.init() as run: + # ここにトレーニングコードを記述します + + # `string_fields` を使用してカスタムタイトルを作成します。 + my_custom_chart = wandb.plot_table( + vega_spec_name="wandb/line/v0", + data_table=table, + fields=fields, + string_fields={"title": "Title"}, + ) + + run.log({"custom_chart": my_custom_chart}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts/pr_curve.mdx b/ja/models/ref/python/custom-charts/pr_curve.mdx new file mode 100644 index 0000000000..df598cac0f --- /dev/null +++ b/ja/models/ref/python/custom-charts/pr_curve.mdx @@ -0,0 +1,71 @@ +--- +title: pr_curve() +namespace: python_sdk_custom_charts +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `pr_curve` + +```python +pr_curve( + y_true: 'Iterable[T] | None' = None, + y_probas: 'Iterable[numbers.Number] | None' = None, + labels: 'list[str] | None' = None, + classes_to_plot: 'list[T] | None' = None, + interp_size: 'int' = 21, + title: 'str' = 'Precision-Recall Curve', + split_table: 'bool' = False +) → CustomChart +``` + +Precision-Recall (PR) 曲線 を作成します。 + +PR曲線 は、不均衡な データセット に対する分類器の評価に特に有用です。PR曲線 下の面積(AUC)が大きいことは、高い適合率(低い偽陽性率)と高い再現率(低い偽陰性率)の両方を意味します。この曲線は、さまざまな閾値レベルにおける偽陽性と偽陰性のバランスに関する洞察を提供し、モデル の性能評価を支援します。 + +**引数:** + +- `y_true`: 正解のバイナリラベル。形状は (`num_samples`,) である必要があります。 +- `y_probas`: 各クラスの予測スコアまたは確率。これらは確率推定値、信頼スコア、または閾値処理前の決定値です。形状は (`num_samples`, `num_classes`) である必要があります。 +- `labels`: プロットの解釈を容易にするために、`y_true` の数値に置き換えるクラス名のリスト(任意)。例えば、`labels = ['dog', 'cat', 'owl']` とすると、プロット内で 0 は 'dog'、1 は 'cat'、2 は 'owl' に置き換えられます。指定されない場合は、`y_true` の数値がそのまま使用されます。 +- `classes_to_plot`: プロットに含める `y_true` 内のユニークなクラス値のリスト(任意)。指定されない場合、`y_true` に含まれるすべてのユニークなクラスがプロットされます。 +- `interp_size`: 再現率の値を補間するポイントの数。再現率は [0, 1] の範囲で一様に分布した `interp_size` 個のポイントに固定され、適合率はそれに応じて補間されます。 +- `title`: プロットのタイトル。デフォルトは "Precision-Recall Curve" です。 +- `split_table`: W&B UI 上で テーブル を別のセクションに分割するかどうか。`True` の場合、テーブル は "Custom Chart Tables" という名前のセクションに表示されます。デフォルトは `False` です。 + +**戻り値:** + +- `CustomChart`: W&B に ログ 記録可能な カスタムチャート オブジェクト。チャートを ログ 記録するには、`wandb.log()` に渡します。 + +**例外:** + +- `wandb.Error`: NumPy、pandas、または scikit-learn がインストールされていない場合。 + +**例:** + +```python +import wandb + +# スパム検出(二値分類)の例 +y_true = [0, 1, 1, 0, 1] # 0 = スパムではない, 1 = スパム +y_probas = [ + [0.9, 0.1], # 1番目のサンプルの予測確率(スパムではない) + [0.2, 0.8], # 2番目のサンプルの予測確率(スパム)、以下同様 + [0.1, 0.9], + [0.8, 0.2], + [0.3, 0.7], +] + +labels = ["not spam", "spam"] # 読みやすさのための任意のクラス名 + +with wandb.init(project="spam-detection") as run: + pr_curve = wandb.plot.pr_curve( + y_true=y_true, + y_probas=y_probas, + labels=labels, + title="Precision-Recall Curve for Spam Detection", + ) + run.log({"pr-curve": pr_curve}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts/roc_curve.mdx b/ja/models/ref/python/custom-charts/roc_curve.mdx new file mode 100644 index 0000000000..ad13518ab6 --- /dev/null +++ b/ja/models/ref/python/custom-charts/roc_curve.mdx @@ -0,0 +1,74 @@ +--- +title: roc_curve() +namespace: python_sdk_custom_charts +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `roc_curve` + +```python +roc_curve( + y_true: 'Sequence[numbers.Number]', + y_probas: 'Sequence[Sequence[float]] | None' = None, + labels: 'list[str] | None' = None, + classes_to_plot: 'list[numbers.Number] | None' = None, + title: 'str' = 'ROC Curve', + split_table: 'bool' = False +) → CustomChart +``` + +受信者操作特性(ROC)曲線チャートを作成します。 + +**Args:** + +- `y_true`: ターゲット変数の真のクラスラベル(正解)。形状は (num_samples,) である必要があります。 +- `y_probas`: 各クラスの予測確率または決定スコア。形状は (num_samples, num_classes) である必要があります。 +- `labels`: `y_true` のクラスインデックスに対応する、人間が読みやすいラベル。例えば、`labels=['dog', 'cat']` の場合、プロット内ではクラス 0 が 'dog'、クラス 1 が 'cat' として表示されます。None の場合、`y_true` の生のクラスインデックスが使用されます。デフォルトは None です。 +- `classes_to_plot`: ROC 曲線に含めるユニークなクラスラベルの サブセット。None の場合、`y_true` に含まれるすべてのクラスがプロットされます。デフォルトは None です。 +- `title`: ROC 曲線プロットのタイトル。デフォルトは "ROC Curve" です。 +- `split_table`: W&B UI 上でテーブルを別のセクションに分割するかどうか。`True` の場合、テーブルは "Custom Chart Tables" という名前のセクションに表示されます。デフォルトは `False` です。 + +**Returns:** + +- `CustomChart`: W&B に ログ 可能なカスタムチャートオブジェクト。チャートを ログ するには、`wandb.log()` に渡します。 + +**Raises:** + +- `wandb.Error`: numpy、pandas、または scikit-learn が見つからない場合。 + +**Example:** + +```python +import numpy as np +import wandb + +# 3つの疾患を持つ医学的診断分類問題をシミュレート +n_samples = 200 +n_classes = 3 + +# 真のラベル: 各サンプルに "Diabetes"(糖尿病)、"Hypertension"(高血圧)、 +# または "Heart Disease"(心臓病)を割り当て +disease_labels = ["Diabetes", "Hypertension", "Heart Disease"] +# 0: Diabetes, 1: Hypertension, 2: Heart Disease +y_true = np.random.choice([0, 1, 2], size=n_samples) + +# 予測確率: 予測をシミュレートし、各サンプルの合計が1になるようにする +y_probas = np.random.dirichlet(np.ones(n_classes), size=n_samples) + +# プロットするクラスを指定(3つの疾患すべてをプロット) +classes_to_plot = [0, 1, 2] + +# W&B run を初期化し、疾患分類の ROC 曲線プロットをログする +with wandb.init(project="medical_diagnosis") as run: + roc_plot = wandb.plot.roc_curve( + y_true=y_true, + y_probas=y_probas, + labels=disease_labels, + classes_to_plot=classes_to_plot, + title="ROC Curve for Disease Classification", + ) + run.log({"roc-curve": roc_plot}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/custom-charts/scatter.mdx b/ja/models/ref/python/custom-charts/scatter.mdx new file mode 100644 index 0000000000..c95e31a1a4 --- /dev/null +++ b/ja/models/ref/python/custom-charts/scatter.mdx @@ -0,0 +1,62 @@ +--- +title: scatter() +namespace: python_sdk_custom_charts +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `scatter` + +```python +scatter( + table: 'wandb.Table', + x: 'str', + y: 'str', + title: 'str' = '', + split_table: 'bool' = False +) → CustomChart +``` + +wandb.Table の データ から散布図を作成します。 + +**Args:** + +- `table`: 可視化する データ を含む W&B Table 。 +- `x`: x軸に使用するカラム名。 +- `y`: y軸に使用するカラム名。 +- `title`: 散布図のタイトル。 +- `split_table`: W&B UI 上で テーブル を別のセクションに分割するかどうか。 `True` の場合、 テーブル は "Custom Chart Tables" という名前のセクションに表示されます。デフォルトは `False` です。 + +**Returns:** + +- `CustomChart`: W&B に ログ を記録できるカスタムチャート オブジェクト。チャートを ログ に記録するには、 `wandb.log()` に渡します。 + +**Example:** + +```python +import math +import random +import wandb + +# 異なる高度における気温の変化を時間経過とともにシミュレート +data = [ + [i, random.uniform(-10, 20) - 0.005 * i + 5 * math.sin(i / 50)] + for i in range(300) +] + +# 高度 (m) と気温 (°C) のカラムを持つ W&B table を作成 +table = wandb.Table(data=data, columns=["altitude (m)", "temperature (°C)"]) + +# W&B run を初期化し、散布図をログに記録 +with wandb.init(project="temperature-altitude-scatter") as run: + # 散布図を作成してログに記録 + scatter_plot = wandb.plot.scatter( + table=table, + x="altitude (m)", + y="temperature (°C)", + title="Altitude vs Temperature", + ) + run.log({"altitude-temperature-scatter": scatter_plot}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/data-types.mdx b/ja/models/ref/python/data-types.mdx index b3381861cf..4520898eea 100644 --- a/ja/models/ref/python/data-types.mdx +++ b/ja/models/ref/python/data-types.mdx @@ -1,41 +1,59 @@ --- -title: データタイプ +title: データ型の概要 +description: メディアおよび構造化データの ログ を記録するための W&B Python SDK データ型 +module: wandb.sdk.data_types +no_list: true --- -このモジュールは、W&B にリッチでインタラクティブな可視化をログするためのデータ型を定義します。 +W&B における Data Types は、メディアや構造化データを Runs にログ記録するためにラップするクラスです。これらには W&B UI での可視化コンポーネントが含まれており、データのシリアル化、保存、および取得を処理します。 -データ型には、画像、オーディオ、ビデオなどの一般的なメディアタイプや、テーブルや HTML などの情報を柔軟に格納するコンテナが含まれます。 +## 利用可能な Data Types -メディアのログの詳細については、[ガイド](https://docs.wandb.com/models/track/log/media)をご覧ください。 +| Data Type | 説明 | +|-----------|-------------| +| [`Image`](/models/ref/python/data-types/image) | マスク、バウンディングボックス、セグメンテーションをサポートする画像を ログ します。 | +| [`Video`](/models/ref/python/data-types/video) | モデル の出力や データセット サンプルのビデオデータをトラックします。 | +| [`Audio`](/models/ref/python/data-types/audio) | オーディオ プロセッシング タスク用のオーディオサンプルを ログ します。 | +| [`Table`](/models/ref/python/data-types/table) | 混合メディアタイプを含めることができる テーブル を作成します。 | +| [`Plotly`](/models/ref/python/data-types/plotly) | Data Visualization のための Plotly チャートを ログ します。 | +| [`Html`](/models/ref/python/data-types/html) | カスタム HTML コンテンツを埋め込みます。 | +| [`Object3D`](/models/ref/python/data-types/object3d) | 3D ポイントクラウドやメッシュを可視化します。 | +| [`Molecule`](/models/ref/python/data-types/molecule) | 計算化学用の分子構造を ログ します。 | -インタラクティブな データセット と モデル分析 のための構造化データのログの詳細については、[W&B Tables のガイド](https://docs.wandb.com/models/tables/)をご覧ください。 +## 例 -これらの特別なデータ型はすべて WBValue のサブクラスです。すべてのデータ型は JSON にシリアライズされます。wandb はこれを使用して オブジェクト をローカルに保存し、W&B サーバー にアップロードします。 +この例では `Image` を使用しています: -## クラス +```python +import wandb +import matplotlib.pyplot as plt -[`class Audio`](/ja/models/ref/python/data-types/audio/): オーディオクリップ用の Wandb クラス。 +# デモ用に画像を生成 +path_to_img = "/path/to/cafe.png" +im = plt.imread(path_to_img) -[`class BoundingBoxes2D`](/ja/models/ref/python/data-types/boundingboxes2d/): 画像を 2D バウンディングボックスオーバーレイでフォーマットし、W&Bにログします。 +# 新しい run を初期化 +with wandb.init(project="awesome-project") as run: -[`class Graph`](/ja/models/ref/python/data-types/graph/): グラフ用の Wandb クラス。 + # 画像をログ + run.log({"img": [wandb.Image(im, caption="Cafe")]}) +``` -[`class Histogram`](/ja/models/ref/python/data-types/histogram/): ヒストグラム用の wandb クラス。 +この例では `Table` を使用して、テキストとラベルが混在する テーブル を ログ します: -[`class Html`](/ja/models/ref/python/data-types/html/): 任意の html 用の Wandb クラス。 +```python +import wandb -[`class Image`](/ja/models/ref/python/data-types/image/): 画像をフォーマットして W&Bにログします。 +# 新しい run を初期化 +with wandb.init(project="visualize-predictions", name="tables") as run: -[`class ImageMask`](/ja/models/ref/python/data-types/imagemask/): 画像マスクやオーバーレイをフォーマットし、W&Bにログします。 + # リストのリストを使用して、テーブルデータを作成 + data = [["Cat", "1", "1"],["Dog", "0", "-1"]] + run.log({"Table 1": wandb.Table(data=data, columns=["Text", "Predicted Label", "True Label"])}) -[`class Molecule`](/ja/models/ref/python/data-types/molecule/): 3D 分子データ用の Wandb クラス。 - -[`class Object3D`](/ja/models/ref/python/data-types/object3d/): 3D ポイントクラウド用の Wandb クラス。 - -[`class Plotly`](/ja/models/ref/python/data-types/plotly/): plotly プロット用の Wandb クラス。 - -[`class Table`](/ja/models/ref/python/data-types/table/): 表形式のデータを表示および分析するための Table クラス。 - -[`class Video`](/ja/models/ref/python/data-types/video/): ビデオをフォーマットして W&Bにログします。 - -[`class WBTraceTree`](/ja/models/ref/python/data-types/wbtracetree/): トレースツリーデータのためのメディアオブジェクト。 \ No newline at end of file + # `wandb.Table.add_data()` メソッドを使用して、テーブルデータを作成 + table = wandb.Table(columns=["Text", "Predicted Label", "True Label"]) + table.add_data("Cat", "1", "1") + table.add_data("Dog", "0", "-1") + run.log({"Table 2": table}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/data-types/audio.mdx b/ja/models/ref/python/data-types/audio.mdx index a41d7be0c1..8ef52b6fa7 100644 --- a/ja/models/ref/python/data-types/audio.mdx +++ b/ja/models/ref/python/data-types/audio.mdx @@ -1,51 +1,51 @@ --- title: オーディオ +namespace: python_sdk_data_type +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -オーディオクリップ用の Wandb クラス。 +## class `Audio` +オーディオクリップを扱うための W&B クラスです。 + +### method `Audio.__init__` ```python -Audio( - data_or_path, sample_rate=None, caption=None +__init__( + data_or_path: Union[str, pathlib.Path, list, ForwardRef('np.ndarray')], + sample_rate: Optional[int] = None, + caption: Optional[str] = None ) ``` -| Args | Description | -| :--- | :--- | -| `data_or_path` | (string または numpy array) オーディオファイルへのパス、またはオーディオデータの numpy 配列。 | -| `sample_rate` | (int) サンプルレート、生の numpy 配列のオーディオデータを渡す場合に必要。 | -| `caption` | (string) オーディオと一緒に表示するキャプション。 | +オーディオファイルへのパス、またはオーディオデータの NumPy 配列を受け取ります。 + +**Args:** -## メソッド + - `data_or_path`: オーディオファイルへのパス、またはオーディオデータの NumPy 配列。 + - `sample_rate`: サンプルレート。生の NumPy 配列としてオーディオデータを渡す場合に必要です。 + - `caption`: オーディオと一緒に表示されるキャプション。 -### `durations` +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/audio.py#L115-L117) +### classmethod `Audio.durations` ```python -@classmethod -durations( - audio_list -) +durations(audio_list) ``` -### `resolve_ref` +オーディオファイルの長さを計算します。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/audio.py#L131-L143) +--- + +### classmethod `Audio.sample_rates` ```python -resolve_ref() +sample_rates(audio_list) ``` -### `sample_rates` - -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/audio.py#L119-L121) +オーディオファイルのサンプルレートを取得します。 -```python -@classmethod -sample_rates( - audio_list -) -``` \ No newline at end of file +--- \ No newline at end of file diff --git a/ja/models/ref/python/data-types/box3d.mdx b/ja/models/ref/python/data-types/box3d.mdx new file mode 100644 index 0000000000..03bfc2cfaf --- /dev/null +++ b/ja/models/ref/python/data-types/box3d.mdx @@ -0,0 +1,99 @@ +--- +title: box3d() +namespace: python_sdk_data_type +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `box3d` + +```python +box3d( + center: 'npt.ArrayLike', + size: 'npt.ArrayLike', + orientation: 'npt.ArrayLike', + color: 'RGBColor', + label: 'Optional[str]' = None, + score: 'Optional[numeric]' = None +) → Box3D +``` + +3D バウンディングボックスです。ボックスは中心、サイズ、方向によって指定されます。 + +**Args:** + + - `center`: 長さ 3 の ndarray として指定するボックスの中心点。 + - `size`: 長さ 3 の ndarray として指定するボックスの X、Y、Z 次元のサイズ。 + - `orientation`: グローバルな XYZ 座標をボックスのローカル XYZ 座標に変換する回転。非ゼロのクォータニオン r + xi + yj + zk に対応する長さ 4 の ndarray [r, x, y, z] で指定します。 + - `color`: `0 <= r,g,b <= 1` の (r, g, b) タプルで指定するボックスの色。 + - `label`: ボックスのオプションのラベル。 + - `score`: ボックスのオプションのスコア。通常、検出の信頼度を示すために使用されます。 + +**Returns:** + Box3D オブジェクト。 + +**Example:** + 以下の例では、X、Y、Z 軸を中心に回転する 60 個のボックスを含むポイントクラウドを作成します。 + +```python +import wandb + +import math +import numpy as np +from scipy.spatial.transform import Rotation + + +with wandb.init() as run: + run.log( + { + "points": wandb.Object3D.from_point_cloud( + # ランダムなポイントクラウドを生成 + points=np.random.uniform(-5, 5, size=(100, 3)), + boxes=[ + # X軸を中心に回転するボックス + wandb.box3d( + center=(0.3 * t - 3, 0, 0), + size=(0.1, 0.1, 0.1), + orientation=Rotation.from_euler( + "xyz", [t * math.pi / 10, 0, 0] + ).as_quat(), + color=(0.5 + t / 40, 0.5, 0.5), + label=f"box {t}", + score=0.9, + ) + for t in range(20) + ] + + [ + # Y軸を中心に回転するボックス + wandb.box3d( + center=(0, 0.3 * t - 3, 0.3), + size=(0.1, 0.1, 0.1), + orientation=Rotation.from_euler( + "xyz", [0, t * math.pi / 10, 0] + ).as_quat(), + color=(0.5, 0.5 + t / 40, 0.5), + label=f"box {t}", + score=0.9, + ) + for t in range(20) + ] + + [ + # Z軸を中心に回転するボックス + wandb.box3d( + center=(0.3, 0.3, 0.3 * t - 3), + size=(0.1, 0.1, 0.1), + orientation=Rotation.from_euler( + "xyz", [0, 0, t * math.pi / 10] + ).as_quat(), + color=(0.5, 0.5, 0.5 + t / 40), + label=f"box {t}", + score=0.9, + ) + for t in range(20) + ], + ), + } + ) +``` \ No newline at end of file diff --git a/ja/models/ref/python/data-types/histogram.mdx b/ja/models/ref/python/data-types/histogram.mdx index 65f97482c1..defab66fb0 100644 --- a/ja/models/ref/python/data-types/histogram.mdx +++ b/ja/models/ref/python/data-types/histogram.mdx @@ -1,48 +1,54 @@ --- title: ヒストグラム +namespace: python_sdk_data_type +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -wandb のヒストグラム用クラス。 +## class `Histogram` +ヒストグラム用の W&B クラスです。 + +この オブジェクト は、numpy の histogram 関数( https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html )とほぼ同様に動作します。 + +**Attributes:** + +- `bins` ([float]): ビンの境界値。 +- `histogram` ([int]): 各ビンに含まれる要素の数。 + +### method `Histogram.__init__` ```python -Histogram( +__init__( sequence: Optional[Sequence] = None, - np_histogram: Optional['NumpyHistogram'] = None, + np_histogram: Optional[ForwardRef('NumpyHistogram')] = None, num_bins: int = 64 -) -> None +) → None ``` -このオブジェクトは numpy のヒストグラム関数と同様に動作します。 -https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html +Histogram オブジェクト を初期化します。 -#### 例: +**Args:** +sequence: ヒストグラムの入力 データ。 np_histogram: 事前計算されたヒストグラムによる代替入力。 num_bins: ヒストグラムのビン数。デフォルトのビン数は 64 です。最大ビン数は 512 です。 -シーケンスからヒストグラムを生成 +**Examples:** +シーケンスからヒストグラムを生成します。 ```python +import wandb + wandb.Histogram([1, 2, 3]) ``` -np.histogram から効率的に初期化。 +np.histogram から効率的に初期化します。 ```python +import numpy as np +import wandb + hist = np.histogram(data) wandb.Histogram(np_histogram=hist) ``` -| Args | Description | -| :--- | :--- | -| `sequence` | (array_like) ヒストグラムの入力データ | -| `np_histogram` | (numpy histogram) あらかじめ計算されたヒストグラムの代替入力 | -| `num_bins` | (int) ヒストグラムのビンの数。デフォルトのビンの数は 64 です。ビンの最大数は 512 です | - -| Attributes | Description | -| :--- | :--- | -| `bins` | ([float]) ビンの境界 | -| `histogram` | ([int]) 各ビンに入る要素の数 | - -| Class Variables | | -| :--- | :--- | -| `MAX_LENGTH` | `512` | \ No newline at end of file +--- \ No newline at end of file diff --git a/ja/models/ref/python/data-types/html.mdx b/ja/models/ref/python/data-types/html.mdx index f972ac6034..6b835eebc9 100644 --- a/ja/models/ref/python/data-types/html.mdx +++ b/ja/models/ref/python/data-types/html.mdx @@ -1,30 +1,47 @@ --- -title: I'm sorry, it seems like there is no text to translate. Please provide the - content you want to be translated. +title: Html +namespace: python_sdk_data_type +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -任意の HTML 用の Wandb クラス。 +## class `Html` +HTML コンテンツを W&B にログ記録するための W&B クラスです。 + +### method `Html.__init__` ```python -Html( - data: Union[str, 'TextIO'], - inject: bool = (True) -) -> None +__init__( + data: Union[str, pathlib.Path, ForwardRef('TextIO')], + inject: bool = True, + data_is_not_path: bool = False +) → None ``` -| Args | Description | -| :--- | :--- | -| `data` | (string または io オブジェクト) wandb に表示する HTML | -| `inject` | (boolean) HTML オブジェクトにスタイルシートを追加します。False に設定すると、HTML は変更されずに通過します。 | +W&B HTML オブジェクトを作成します。 + +**Args:** + data: 拡張子が ".html" のファイルへのパスである文字列、またはリテラル HTML を含む文字列、あるいは IO オブジェクト。 + - `inject`: HTML オブジェクトにスタイルシートを追加します。False に設定すると、HTML は変更されずにそのまま渡されます。 + - `data_is_not_path`: False に設定されている場合、data はファイルへのパスとして扱われます。 -## メソッド +**Examples:** +ファイルへのパスを指定して初期化することができます: -### `inject_head` +```python +with wandb.init() as run: + # ファイルパスを使用してログを記録 + run.log({"html": wandb.Html("./index.html")}) +``` -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/html.py#L59-L74) +あるいは、文字列または IO オブジェクト内のリテラル HTML を指定して初期化することもできます: ```python -inject_head() -> None -``` \ No newline at end of file +with wandb.init() as run: + # 文字列の HTML を使用してログを記録 + run.log({"html": wandb.Html("

Hello, world!

")}) +``` + +--- \ No newline at end of file diff --git a/ja/models/ref/python/data-types/image.mdx b/ja/models/ref/python/data-types/image.mdx index b2d2d4d5da..525463fca9 100644 --- a/ja/models/ref/python/data-types/image.mdx +++ b/ja/models/ref/python/data-types/image.mdx @@ -1,155 +1,117 @@ --- -title: イメージ +title: 画像 +namespace: python_sdk_data_type +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -W&B に画像をログするためのフォーマット。 +## class `Image` +W&B に画像をログ記録するためのクラスです。 + +### method `Image.__init__` ```python -Image( - data_or_path: "ImageDataOrPathType", +__init__( + data_or_path: 'ImageDataOrPathType', mode: Optional[str] = None, caption: Optional[str] = None, grouping: Optional[int] = None, - classes: Optional[Union['Classes', Sequence[dict]]] = None, - boxes: Optional[Union[Dict[str, 'BoundingBoxes2D'], Dict[str, dict]]] = None, - masks: Optional[Union[Dict[str, 'ImageMask'], Dict[str, dict]]] = None, - file_type: Optional[str] = None -) -> None + classes: Optional[ForwardRef('Classes'), Sequence[dict]] = None, + boxes: Optional[Dict[str, ForwardRef('BoundingBoxes2D')], Dict[str, dict]] = None, + masks: Optional[Dict[str, ForwardRef('ImageMask')], Dict[str, dict]] = None, + file_type: Optional[str] = None, + normalize: bool = True +) → None ``` -| Args | Description | -| :--- | :--- | -| `data_or_path` | (numpy array, string, io) 画像データの numpy 配列または PIL 画像を受け付けます。クラスはデータフォーマットを推測して変換します。| -| `mode` | (string) 画像のための PIL モード。最も一般的なのは "L", "RGB", "RGBA" です。詳しくは https://pillow.readthedocs.io/en/stable/handbook/concepts.html#modes を参照してください。| -| `caption` | (string) 画像表示用のラベル。| +`wandb.Image` オブジェクトを初期化します。 + +このクラスは様々な画像データ形式を処理し、必要に応じてピクセル値を [0, 255] の範囲に自動的に正規化することで、 W&B バックエンドとの互換性を確保します。 + +* [0, 1] の範囲のデータは 255 倍され、 uint8 に変換されます。 +* [-1, 1] の範囲のデータは、 -1 を 0 に、 1 を 255 にマッピングすることで [0, 255] にスケール調整され、 uint8 に変換されます。 +* [-1, 1] 外かつ [0, 255] 外のデータは、 [0, 255] にクリップされ、 uint8 に変換されます(値が [0, 255] を超える場合は警告が表示されます)。 +* すでに [0, 255] の範囲にあるデータは、変更されずに uint8 に変換されます。 -注意 : `wandb.Image` として `torch.Tensor` をログする際、画像は正規化されます。画像を正規化したくない場合は、テンソルを PIL Image に変換してください。 +**arg:** -#### 例: + - `data_or_path`: 画像データの NumPy 配列 / PyTorch tensor 、 PIL 画像オブジェクト、または画像ファイルへのパスを受け取ります。 NumPy 配列または PyTorch tensor が提供された場合、画像データは指定された `file_type` で保存されます。 `normalize` が `False` に設定されていない限り、値が [0, 255] の範囲にない、またはすべての値が [0, 1] の範囲にある場合、画像ピクセル値は [0, 255] の範囲に正規化されます。 + - PyTorch tensor は (channel, height, width) の形式である必要があります。 + - NumPy 配列は (height, width, channel) の形式である必要があります。 + - `mode`: 画像の PIL モード。一般的なものは "L"、 "RGB"、 "RGBA" です。 + - 詳細については Pillow の公式ドキュメントを参照してください: https://pillow.readthedocs.io/en/stable/handbook/concepts.html#modes + - `caption`: 画像表示用のキャプション(ラベル)。 + - `grouping`: 画像のグループ化番号。 + - `classes`: バウンディングボックスや画像マスクのラベル付けに使用される、画像のクラス情報のリスト。 + - `boxes`: 画像のバウンディングボックス情報を含む辞書。 + - https://docs.wandb.ai/ref/python/data-types/boundingboxes2d/ を参照してください。 + - `masks`: 画像のマスク情報を含む辞書。 + - https://docs.wandb.ai/ref/python/data-types/imagemask/ を参照してください。 + - `file_type`: 画像を保存するファイル形式。 `data_or_path` が画像ファイルへのパスである場合、このパラメータは効果がありません。 + - `normalize`: `True` の場合、画像のピクセル値を [0, 255] の範囲に収まるように正規化します。正規化は `data_or_path` が numpy 配列または pytorch tensor の場合にのみ適用されます。 -### numpy 配列から wandb.Image を作成 +**Examples:** +NumPy 配列から `wandb.Image` を作成する ```python import numpy as np import wandb +# run を初期化 with wandb.init() as run: examples = [] for i in range(3): - pixels = np.random.randint(low=0, high=256, size=(100, 100, 3)) - image = wandb.Image(pixels, caption=f"random field {i}") - examples.append(image) + # ランダムな画像データを生成 + pixels = np.random.randint(low=0, high=256, size=(100, 100, 3)) + image = wandb.Image(pixels, caption=f"random field {i}") + examples.append(image) + # データをログ記録 run.log({"examples": examples}) -``` +``` -### PILImage から wandb.Image を作成 +PILImage から `wandb.Image` を作成する ```python import numpy as np from PIL import Image as PILImage import wandb +# run を初期化 with wandb.init() as run: examples = [] for i in range(3): - pixels = np.random.randint( - low=0, high=256, size=(100, 100, 3), dtype=np.uint8 - ) - pil_image = PILImage.fromarray(pixels, mode="RGB") - image = wandb.Image(pil_image, caption=f"random field {i}") - examples.append(image) + pixels = np.random.randint( + low=0, high=256, size=(100, 100, 3), dtype=np.uint8 + ) + pil_image = PILImage.fromarray(pixels, mode="RGB") + image = wandb.Image(pil_image, caption=f"random field {i}") + examples.append(image) + # データをログ記録 run.log({"examples": examples}) -``` +``` -### .png (デフォルト) ではなく .jpg をログ +デフォルトの .png ではなく .jpg でログ記録する ```python import numpy as np import wandb +# run を初期化 with wandb.init() as run: examples = [] for i in range(3): - pixels = np.random.randint(low=0, high=256, size=(100, 100, 3)) - image = wandb.Image(pixels, caption=f"random field {i}", file_type="jpg") - examples.append(image) + pixels = np.random.randint(low=0, high=256, size=(100, 100, 3)) + image = wandb.Image( + pixels, caption=f"random field {i}", file_type="jpg" + ) + examples.append(image) + # データをログ記録 run.log({"examples": examples}) -``` - -| Attributes | Description | -| :--- | :--- | - -## メソッド - -### `all_boxes` - -[View source](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/image.py#L610-L631) - -```python -@classmethod -all_boxes( - images: Sequence['Image'], - run: "LocalRun", - run_key: str, - step: Union[int, str] -) -> Union[List[Optional[dict]], bool] -``` - -### `all_captions` - -[View source](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/image.py#L633-L637) - -```python -@classmethod -all_captions( - images: Sequence['Media'] -) -> Union[bool, Sequence[Optional[str]]] -``` +``` -### `all_masks` -[View source](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/image.py#L587-L608) - -```python -@classmethod -all_masks( - images: Sequence['Image'], - run: "LocalRun", - run_key: str, - step: Union[int, str] -) -> Union[List[Optional[dict]], bool] -``` - -### `guess_mode` - -[View source](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/image.py#L474-L486) - -```python -guess_mode( - data: "np.ndarray" -) -> str -``` - -np.array が表している画像の種類を推測します。 - -### `to_uint8` - -[View source](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/image.py#L488-L511) - -```python -@classmethod -to_uint8( - data: "np.ndarray" -) -> "np.ndarray" -``` - -画像データを uint8 に変換します。 - -範囲 [0,1] の浮動小数点画像と範囲 [0,255] の整数画像を必要に応じてクリッピングして uint8 に変換します。 +--- -| クラス変数 | Description | -| :--- | :--- | -| `MAX_DIMENSION` | `65500` | -| `MAX_ITEMS` | `108` | \ No newline at end of file +### property Image.image \ No newline at end of file diff --git a/ja/models/ref/python/data-types/molecule.mdx b/ja/models/ref/python/data-types/molecule.mdx index 19a5d3dd93..58e88232b6 100644 --- a/ja/models/ref/python/data-types/molecule.mdx +++ b/ja/models/ref/python/data-types/molecule.mdx @@ -1,75 +1,30 @@ --- -title: Molecule +title: 分子 +namespace: python_sdk_data_type +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -Wandb クラスは 3D 分子データ用です。 +## class `Molecule` +3D 分子データのための W&B クラスです。 -```python -Molecule( - data_or_path: Union[str, 'TextIO'], - caption: Optional[str] = None, - **kwargs -) -> None -``` - -| Args | Description | -| :--- | :--- | -| `data_or_path` | (string, io) Molecule はファイル名または io オブジェクトから初期化できます。 | -| `caption` | (string) 表示用の分子に関連付けられたキャプション。 | - -## メソッド - -### `from_rdkit` - -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/molecule.py#L99-L163) - -```python -@classmethod -from_rdkit( - data_or_path: "RDKitDataType", - caption: Optional[str] = None, - convert_to_3d_and_optimize: bool = (True), - mmff_optimize_molecule_max_iterations: int = 200 -) -> "Molecule" -``` - -RDKit がサポートするファイル/オブジェクトタイプを wandb.Molecule に変換します。 - -| Args | Description | -| :--- | :--- | -| `data_or_path` | (string, rdkit.Chem.rdchem.Mol) Molecule はファイル名または rdkit.Chem.rdchem.Mol オブジェクトから初期化できます。 | -| `caption` | (string) 表示用の分子に関連付けられたキャプション。 | -| `convert_to_3d_and_optimize` | (bool) 3D 座標を持つ rdkit.Chem.rdchem.Mol に変換します。これは複雑な分子の場合、時間がかかるため、高価な操作です。 | -| `mmff_optimize_molecule_max_iterations` | (int) rdkit.Chem.AllChem.MMFFOptimizeMolecule で使用する反復回数 | - -### `from_smiles` - -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/molecule.py#L165-L202) +### method `Molecule.__init__` ```python -@classmethod -from_smiles( - data: str, +__init__( + data_or_path: Union[str, pathlib.Path, ForwardRef('TextIO')], caption: Optional[str] = None, - sanitize: bool = (True), - convert_to_3d_and_optimize: bool = (True), - mmff_optimize_molecule_max_iterations: int = 200 -) -> "Molecule" + **kwargs: str +) → None ``` -SMILES 文字列を wandb.Molecule に変換します。 +Molecule オブジェクト を初期化します。 -| Args | Description | -| :--- | :--- | -| `data` | (string) SMILES 文字列。 | -| `caption` | (string) 表示用の分子に関連付けられたキャプション | -| `sanitize` | (bool) RDKit の定義により、分子が化学的に妥当かどうかをチェックします。 | -| `convert_to_3d_and_optimize` | (bool) 3D 座標で rdkit.Chem.rdchem.Mol に変換します。複雑な分子の場合、時間がかかるため、高価な操作です。 | -| `mmff_optimize_molecule_max_iterations` | (int) rdkit.Chem.AllChem.MMFFOptimizeMolecule で使用する反復回数 | +**Args:** + + - `data_or_path`: Molecule はファイル名または io オブジェクトから初期化できます。 + - `caption`: 表示用に分子に関連付けられるキャプション。 -| クラス変数 | Description | -| :--- | :--- | -| `SUPPORTED_RDKIT_TYPES` | | -| `SUPPORTED_TYPES` | | \ No newline at end of file +--- \ No newline at end of file diff --git a/ja/models/ref/python/data-types/object3d.mdx b/ja/models/ref/python/data-types/object3d.mdx index 3c85c1eebe..4a22a8bff3 100644 --- a/ja/models/ref/python/data-types/object3d.mdx +++ b/ja/models/ref/python/data-types/object3d.mdx @@ -1,96 +1,39 @@ --- title: Object3D +namespace: python_sdk_data_type +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -3DポイントクラウドのためのWandbクラス。 +## class `Object3D` +3D 点群( point clouds )のための W&B クラスです。 -```python -Object3D( - data_or_path: Union['np.ndarray', str, 'TextIO', dict], - **kwargs -) -> None -``` - -| 引数 | Description | -| :--- | :--- | -| `data_or_path` | (numpy array, string, io) Object3Dはファイルまたはnumpy配列から初期化できます。ファイルへのパスまたはio オブジェクトと `SUPPORTED_TYPES` のいずれかである必要がある `file_type` を渡すことができます。| - -numpy 配列の形状は次のいずれかでなければなりません: - -``` -[[x y z], ...] nx3 -[[x y z c], ...] nx4 ここで c は[1, 14] の範囲内のカテゴリです -[[x y z r g b], ...] nx6 ここで rgb は色です -``` - -## メソッド - -### `from_file` - -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/object_3d.py#L332-L349) - -```python -@classmethod -from_file( - data_or_path: Union['TextIO', str], - file_type: Optional['FileFormat3D'] = None -) -> "Object3D" -``` - -ファイルまたはストリームから Object3D を初期化します。 - -| 引数 | Description | -| :--- | :--- | -| data_or_path (Union["TextIO", str]): ファイルへのパスまたは `TextIO` ストリーム。file_type (str): `data_or_path` に渡されるデータ形式を指定します。 `data_or_path` が `TextIO` ストリームである場合は必須です。ファイルパスが提供されている場合はこのパラメータは無視されます。タイプはファイル拡張子から取得されます。| - -### `from_numpy` - -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/object_3d.py#L351-L380) +### method `Object3D.__init__` ```python -@classmethod -from_numpy( - data: "np.ndarray" -) -> "Object3D" -``` - -numpy 配列から Object3D を初期化します。 - -| 引数 | Description | -| :--- | :--- | -| data (numpy array): 配列の各エントリはポイントクラウドの1ポイントを表します。 | - -numpy 配列の形状は次のいずれかでなければなりません: - -``` -[[x y z], ...] # nx3. -[[x y z c], ...] # nx4 ここで c は [1, 14] の範囲内のカテゴリです。 -[[x y z r g b], ...] # nx6 ここで rgb は色です。 +__init__( + data_or_path: Union[ForwardRef('np.ndarray'), str, pathlib.Path, ForwardRef('TextIO'), dict], + caption: Optional[str] = None, + **kwargs: Optional[str, ForwardRef('FileFormat3D')] +) → None ``` -### `from_point_cloud` +W&B `Object3D` オブジェクト を作成します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/object_3d.py#L382-L416) +**arg:** + + - `data_or_path`: `Object3D` はファイルまたは numpy 配列から初期化できます。 + - `caption`: 表示用に オブジェクト に関連付けられるキャプション。 -```python -@classmethod -from_point_cloud( - points: Sequence['Point'], - boxes: Sequence['Box3D'], - vectors: Optional[Sequence['Vector3D']] = None, - point_cloud_type: "PointCloudType" = "lidar/beta" -) -> "Object3D" -``` - -Python オブジェクトから Object3D を初期化します。 +**Examples:** + numpy 配列の形状は以下のいずれかである必要があります。 -| 引数 | Description | -| :--- | :--- | -| points (Sequence["Point"]): ポイントクラウドの点。boxes (Sequence["Box3D"]): ポイントクラウドのラベル付け用3Dバウンディングボックス。ボックスはポイントクラウドの可視化で表示されます。vectors (Optional[Sequence["Vector3D"]]): 各ベクトルはポイントクラウドの可視化で表示されます。バウンディングボックスの方向性を示すために使用できます。デフォルトは None です。point_cloud_type ("lidar/beta"): 現時点では「lidar/beta」タイプのみサポートしています。デフォルトは「lidar/beta」です。| +```text +[[x y z], ...] nx3 +[[x y z c], ...] nx4 ここで c はサポートされている範囲 [1, 14] のカテゴリ +[[x y z r g b], ...] nx6 ここで rgb は色 +``` -| クラス変数 | Description | -| :--- | :--- | -| `SUPPORTED_POINT_CLOUD_TYPES` | | -| `SUPPORTED_TYPES` | | \ No newline at end of file +--- \ No newline at end of file diff --git a/ja/models/ref/python/data-types/plotly.mdx b/ja/models/ref/python/data-types/plotly.mdx index 9983a63155..ef55d0d582 100644 --- a/ja/models/ref/python/data-types/plotly.mdx +++ b/ja/models/ref/python/data-types/plotly.mdx @@ -1,30 +1,35 @@ --- title: Plotly +namespace: python_sdk_data_type +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -Wandb クラスは plotly のプロット用です。 + + + +## class `Plotly` +Plotly プロットのための W&B クラスです。 + +### method `Plotly.__init__` ```python -Plotly( - val: Union['plotly.Figure', 'matplotlib.artist.Artist'] +__init__( + val: Union[ForwardRef('plotly.Figure'), ForwardRef('matplotlib.artist.Artist')] ) ``` -| Arg | Description | -| :--- | :--- | -| `val` | matplotlib または plotly の図 | +Plotly オブジェクト を初期化します。 -## メソッド -### `make_plot_media` -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/plotly.py#L42-L50) +**Args:** + + - `val`: Matplotlib または Plotly の figure。 -```python -@classmethod -make_plot_media( - val: Union['plotly.Figure', 'matplotlib.artist.Artist'] -) -> Union[Image, 'Plotly'] -``` \ No newline at end of file + + + +--- \ No newline at end of file diff --git a/ja/models/ref/python/data-types/table.mdx b/ja/models/ref/python/data-types/table.mdx index f1f08b349d..9b18294348 100644 --- a/ja/models/ref/python/data-types/table.mdx +++ b/ja/models/ref/python/data-types/table.mdx @@ -1,205 +1,162 @@ --- title: テーブル +namespace: python_sdk_data_type +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -Table クラスは表形式のデータを表示および分析するために使用されます。 +## class `Table` -```python -Table( - columns=None, data=None, rows=None, dataframe=None, dtype=None, optional=(True), - allow_mixed_types=(False) -) -``` - -従来のスプレッドシートとは異なり、Tables は多くの種類のデータをサポートしています: -スカラー値、文字列、numpy 配列、および `wandb.data_types.Media` のほとんどのサブクラス。 -これにより、`Images`、`Video`、`Audio`、および他の種類のリッチで注釈のあるメディアを -従来のスカラー値と並べて Tables に直接埋め込むことができます。 - -このクラスは、UI の Table Visualizer を生成するために使用される主要なクラスです: [https://docs.wandb.ai/models/tables/](/ja/models/tables/). - -| 引数 | Description | -| :--- | :--- | -| `columns` | (List[str]) テーブル内の列の名前。デフォルトは["Input", "Output", "Expected"]です。 | -| `data` | (List[List[any]]) 2D 行指向の配列。 | -| `dataframe` | (pandas.DataFrame) テーブルの作成に使用される DataFrame オブジェクト。設定されている場合、`data` と `columns` 引数は無視されます。 | -| `optional` | (Union[bool,List[bool]]) `None` の値を許可するかどうかを決定します。デフォルトは True です - 単一の bool 値が指定された場合、構築時に指定されたすべての列において任意性が確保されます - bool 値のリストである場合、各列に適用される任意性が適用されます - `columns` と同じ長さでなければなりません。bool 値のリストはそれぞれの列に適用されます。 | -| `allow_mixed_types` | (bool) 列に混合タイプを許可するかどうかを決定します(タイプ検証を無効にします)。デフォルトは False です。 | +`Table` クラスは、表形式のデータを表示および分析するために使用されます。 -## メソッド +従来の表計算ソフトとは異なり、 テーブル は、スカラー値、文字列、numpy 配列、および `wandb.data_types.Media` のほとんどのサブクラスなど、多数のデータ型をサポートしています。つまり、`Images`、`Video`、`Audio`、その他のリッチでアノテーションされたメディアを、他の従来のスカラー値と一緒に テーブル に直接埋め込むことができます。 -### `add_column` +このクラスは、W&B Tables を生成するために使用される主要なクラスです https://docs.wandb.ai/guides/models/tables/。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L797-L836) +### method `Table.__init__` ```python -add_column( - name, data, optional=(False) +__init__( + columns=None, + data=None, + rows=None, + dataframe=None, + dtype=None, + optional=True, + allow_mixed_types=False, + log_mode: Optional[Literal['IMMUTABLE', 'MUTABLE', 'INCREMENTAL']] = 'IMMUTABLE' ) ``` -テーブルにデータ列を追加します。 +Table オブジェクトを初期化します。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) - 列の一意の名前 | -| `data` | (list | np.array) - 同種のデータの列 | -| `optional` | (bool) - null 値が許可されるかどうか | - -### `add_computed_columns` - -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L887-L909) - -```python -add_computed_columns( - fn -) -``` +`rows` はレガシーな理由で利用可能ですが、使用すべきではありません。`Table` クラスは Pandas API を模倣するために `data` を使用します。 -既存のデータに基づいて1つ以上の計算列を追加します。 +**引数:** -| 引数 | Description | -| :--- | :--- | -| `fn` | ndx(int)および row(dict)という1つまたは2つのパラメータを受け取り、新しい列のキーを新しい列名として指定した辞書を返す関数です。`ndx` は行のインデックスを示す整数です。`include_ndx` が `True` に設定されている場合にのみ含まれます。`row` は既存の列にキー付けされた辞書です。 | +- `columns`: (List[str]) テーブル 内の列名。デフォルトは `["Input", "Output", "Expected"]` です。 +- `data`: (List[List[any]]) 行指向の 2 次配列 値。 +- `dataframe`: (pandas.DataFrame) テーブル の作成に使用される DataFrame オブジェクト。これが設定されている場合、`data` および `columns` 引数は無視されます。 +- `rows`: (List[List[any]]) 行指向の 2 次配列 値。 +- `optional`: (Union[bool, List[bool]]) `None` 値を許可するかどうかを決定します。デフォルトは True です。 + - 単一の bool 値の場合、作成時に指定されたすべての列に対してオプション性が強制されます。 + - bool 値のリストの場合、各列にオプション性が適用されます。`columns` と同じ長さである必要があります。 +- `allow_mixed_types`: (bool) 列に混合型を許可するかどうかを決定します(型検証を無効にします)。デフォルトは False です。 +- `log_mode`: Optional[str] 変更が発生したときに テーブル がどのように ログ 記録されるかを制御します。オプション: + - "IMMUTABLE" (デフォルト): テーブル は一度だけ ログ 記録できます。テーブル が変更された後の後続の ログ 記録の試みは、何もしません(no-ops)。 + - "MUTABLE": テーブル は変更後に再 ログ 記録でき、 ログ 記録されるたびに新しい Artifacts バージョンを作成します。 + - "INCREMENTAL": テーブル データは段階的に ログ 記録され、各 ログ で前回の ログ 以降の新しいデータを含む新しい Artifacts エントリが作成されます。 -### `add_data` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L423-L456) +### method `Table.add_column` ```python -add_data( - *data -) +add_column(name, data, optional=False) ``` -テーブルに新しいデータ行を追加します。テーブル内の最大行数は `wandb.Table.MAX_ARTIFACT_ROWS` によって決定されます。 - -データの長さはテーブル列の長さと一致する必要があります。 +テーブル にデータの列を追加します。 -### `add_row` +**引数:** -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L418-L421) +- `name`: (str) - 列の一意の名前 +- `data`: (list | np.array) - 同質なデータの列 +- `optional`: (bool) - null のような 値 が許可されるかどうか -```python -add_row( - *row -) -``` - -非推奨; 代わりに add_data を使用してください。 - -### `cast` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L315-L371) +### method `Table.add_computed_columns` ```python -cast( - col_name, dtype, optional=(False) -) +add_computed_columns(fn) ``` -列を特定のデータ型にキャストします。 +既存のデータに基づいて 1 つ以上の計算列を追加します。 -これは通常の Python クラスの1つである場合もあれば、内部の W&B タイプの1つであり、例えば wandb.Image や wandb.Classes のインスタンスのようなサンプルオブジェクトである場合もあります。 +**引数:** -| 引数 | Description | -| :--- | :--- | -| `col_name` | (str) - キャストする列の名前。 | -| `dtype` | (class, wandb.wandb_sdk.interface._dtypes.Type, any) - 目的の dtype。 | -| `optional` | (bool) - 列に None を許可するかどうか。 | +- `fn`: 1 つまたは 2 つの パラメータ、`ndx` (int) と `row` (dict) を受け取る関数。その行の新しい列を表す 辞書(新しい列名が キー)を返すことが期待されます。 + - `ndx` は行のインデックスを表す整数です。`include_ndx` が `True` に設定されている場合にのみ含まれます。 + - `row` は既存の列を キー とした 辞書 です。 -### `get_column` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L838-L861) +### method `Table.add_data` ```python -get_column( - name, convert_to=None -) +add_data(*data) ``` -テーブルから列を取得し、オプションで NumPy オブジェクトに変換します。 +テーブル に新しい行データを追加します。 + +テーブル 内の最大行数は `wandb.Table.MAX_ARTIFACT_ROWS` によって決定されます。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) - 列の名前 | -| `convert_to` | (str, optional) - "numpy": 基礎となるデータを numpy オブジェクトに変換します | +データの長さは テーブル の列の長さと一致する必要があります。 -### `get_dataframe` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L872-L878) +### method `Table.add_row` ```python -get_dataframe() +add_row(*row) ``` -テーブルの `pandas.DataFrame` を返します。 +非推奨です。代わりに `Table.add_data` メソッドを使用してください。 -### `get_index` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L863-L870) +### method `Table.cast` ```python -get_index() +cast(col_name, dtype, optional=False) ``` -リンクを作成するために他のテーブルで使用する行インデックスの配列を返します。 - -### `index_ref` +列を特定のデータ型にキャストします。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L880-L885) +これは、通常の Python クラス、内部の W&B 型、または `wandb.Image` や `wandb.Classes` のインスタンスのような例 オブジェクト のいずれかになります。 -```python -index_ref( - index -) -``` +**引数:** -テーブル内の行のインデックスの参照を取得します。 +- `col_name` (str): キャストする列の名前。 +- `dtype` (class, wandb.wandb_sdk.interface._dtypes.Type, any): ターゲットの dtype。 +- `optional` (bool): 列が None を許可するかどうか。 -### `iterrows` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L674-L688) +### method `Table.get_column` ```python -iterrows() +get_column(name, convert_to=None) ``` -行ごとにテーブルデータを返し、行のインデックスと関連するデータを表示します。 - -| Yields | Description | -| :--- | :--- | +テーブル から列を取得し、オプションでそれを NumPy オブジェクト に変換します。 -*** +**引数:** -index : int -行のインデックス。この値を他の W&B テーブルで使用することで、テーブル間の関係が自動的に構築されます -row : List[any] -行のデータ。 +- `name`: (str) - 列の名前 +- `convert_to`: (str, optional) + - "numpy": 基になる データを numpy オブジェクト に変換します。 -### `set_fk` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L695-L699) +### method `Table.get_dataframe` ```python -set_fk( - col_name, table, table_col -) +get_dataframe() ``` -### `set_pk` +テーブル の `pandas.DataFrame` を返します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/table.py#L690-L693) +--- + +### method `Table.get_index` ```python -set_pk( - col_name -) +get_index() ``` -| クラス変数 | Description | -| :--- | :--- | -| `MAX_ARTIFACT_ROWS` | `200000` | -| `MAX_ROWS` | `10000` | \ No newline at end of file +リンクを作成するために他の テーブル で使用するための行インデックスの配列を返します。 + +--- \ No newline at end of file diff --git a/ja/models/ref/python/data-types/video.mdx b/ja/models/ref/python/data-types/video.mdx index adbfab31a0..22ee06b417 100644 --- a/ja/models/ref/python/data-types/video.mdx +++ b/ja/models/ref/python/data-types/video.mdx @@ -1,53 +1,48 @@ --- title: ビデオ +namespace: python_sdk_data_type +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -W&B にログするためのビデオをフォーマットします。 +## class `Video` +W&B にビデオを ログ するためのクラス。 + +### method `Video.__init__` ```python -Video( - data_or_path: Union['np.ndarray', str, 'TextIO', 'BytesIO'], +__init__( + data_or_path: Union[str, pathlib.Path, ForwardRef('np.ndarray'), ForwardRef('TextIO'), ForwardRef('BytesIO')], caption: Optional[str] = None, fps: Optional[int] = None, - format: Optional[str] = None + format: Optional[Literal['gif', 'mp4', 'webm', 'ogg']] = None ) ``` -| 引数 | Description | -| :--- | :--- | -| `data_or_path` | (numpy array, string, io) ビデオはファイルへのパスまたは io オブジェクトで初期化できます。フォーマットは "gif", "mp4", "webm", "ogg" のいずれかでなければなりません。フォーマットは format 引数で指定する必要があります。ビデオは numpy テンソルでも初期化できます。numpy テンソルは 4次元または 5次元でなければなりません。チャンネルは (time, channel, height, width) または (batch, time, channel, height, width) であるべきです。 | -| `caption` | (string) ビデオに関連付けられたキャプション(表示用) | -| `fps` | (int) 生のビデオフレームをエンコードする際のフレームレート。デフォルト値は 4 です。このパラメータは data_or_path が string または bytes の場合には影響しません。 | -| `format` | (string) ビデオのフォーマット。パスまたは io オブジェクトで初期化する場合に必要です。 | +W&B `Video` オブジェクト を初期化します。 + +**引数:** -#### 例: + - `data_or_path`: ビデオはファイルへのパスまたは io オブジェクトで初期化できます。また、 numpy テンソルでも初期化可能です。 numpy テンソルは 4 次元または 5 次元である必要があります。次元は (フレーム数, チャンネル, 高さ, 幅) または (バッチ, フレーム数, チャンネル, 高さ, 幅) である必要があります。 numpy 配列または io オブジェクトで初期化する場合、 `format` 引数でフォーマットを指定する必要があります。 + - `caption`: 表示用にビデオに関連付けられるキャプション。 + - `fps`: 生のビデオフレームをエンコードする際に使用するフレームレート。デフォルト 値 は 4 です。この パラメータ は、 `data_or_path` が文字列またはバイト列の場合は効果がありません。 + - `format`: ビデオのフォーマット。 numpy 配列または io オブジェクトで初期化する場合に必要です。この パラメータ は、ビデオ データをエンコードする際のフォーマットを決定するために使用されます。受け入れられる 値 は "gif"、 "mp4"、 "webm"、 "ogg" です。 値 が提供されない場合、デフォルトのフォーマットは "gif" になります。 -### numpy 配列をビデオとしてログする +**例:** + numpy 配列をビデオとして ログ する ```python import numpy as np import wandb -run = wandb.init() -# 軸は (time, channel, height, width) -frames = np.random.randint(low=0, high=256, size=(10, 3, 100, 100), dtype=np.uint8) -run.log({"video": wandb.Video(frames, fps=4)}) -``` - -## メソッド - -### `encode` - -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/sdk/data_types/video.py#L140-L179) - -```python -encode( - fps: int = 4 -) -> None +with wandb.init() as run: + # 軸は (フレーム数, チャンネル, 高さ, 幅) です + frames = np.random.randint( + low=0, high=256, size=(10, 3, 100, 100), dtype=np.uint8 + ) + run.log({"video": wandb.Video(frames, format="mp4", fps=4)}) ``` -| クラス変数 | Description | -| :--- | :--- | -| `EXTS` | | \ No newline at end of file +--- \ No newline at end of file diff --git a/ja/models/ref/python/experiments.mdx b/ja/models/ref/python/experiments.mdx new file mode 100644 index 0000000000..953125ee41 --- /dev/null +++ b/ja/models/ref/python/experiments.mdx @@ -0,0 +1,128 @@ +--- +title: Experiments の概要 +description: 実験の追跡( Experiments )やアーティファクト( Artifacts )の管理を行うために、W&B Python SDK の基本クラスを使用します。 +module: wandb +no_list: true +--- + +これらのクラスは、機械学習の 実験管理 、 Artifacts の管理、および SDK の 振る舞い を 設定 するためのコアとなる構成要素です。これらの基礎となるクラスを使用することで、 メトリクス の ログ 記録、 モデル の チェックポイント の保存、 データセット の バージョン管理 を行い、完全な 再現性 とコラボレーション機能を備えた 実験 設定 の管理が可能になります。 + +> 機械学習の 実験 でこれらのクラスを使用する詳細については、 [Experiments](/models/ref/python/experiments/) および [Artifacts](/models/artifacts/) のドキュメントを参照してください。 + +## コアクラス + +| クラス | 説明 | +| :--- | :--- | +| [`Run`](/models/ref/python/experiments/run/) | W&B によって記録される計算の主要な単位であり、 メトリクス 、 設定 、および出力を伴う単一の機械学習の 実験 を表します。 | +| [`Artifact`](/models/ref/python/experiments/artifact/) | データセット と モデル の バージョン管理 のための柔軟で軽量な構成要素であり、自動的な重複排除と リネージ トラッキング機能を備えています。 | +| [`Settings`](/models/ref/python/experiments/settings/) | W&B SDK の 設定 管理を行い、 ログ 記録から API インタラクションまでの 振る舞い を制御します。 | + +## はじめに + +### 実験を追跡する + +メトリクス の ログ 記録を行いながら、機械学習の 実験 を作成し追跡します。 + +```python +import wandb + +# 新しい run を初期化します +with wandb.init(project="my-experiments", config={"learning_rate": 0.001}) as run: + # 設定にアクセスします + config = run.config + + # トレーニング中のメトリクスをログに記録します + for epoch in range(10): + metrics = train_one_epoch() # トレーニングロジック + run.log({ + "loss": metrics["loss"], + "accuracy": metrics["accuracy"], + "epoch": epoch + }) + + # サマリーメトリクスを記録します + run.summary["best_accuracy"] = max_accuracy +``` + +### モデル Artifact をバージョン管理する + +メタデータ を含む バージョン 管理された モデル の Artifact を作成し、 ログ に記録します。 + +```python +import wandb + +with wandb.init(project="my-models") as run: + # モデルをトレーニングします + model = train_model() + + # モデルの Artifact を作成します + model_artifact = wandb.Artifact( + name="my-model", + type="model", + description="ResNet-50 trained on ImageNet subset", + metadata={ + "architecture": "ResNet-50", + "dataset": "ImageNet-1K", + "accuracy": 0.95 + } + ) + + # Artifact にモデルファイルを追加します + model_artifact.add_file("model.pt") + model_artifact.add_dir("model_configs/") + + # Artifact を W&B にログ記録します + run.log_artifact(model_artifact) +``` + +### SDK の設定を構成する + +特定の要件に合わせて W&B SDK の 振る舞い をカスタマイズします。 + +```python +import wandb + +# プログラムから設定を構成します +wandb.Settings( + project="production-runs", + entity="my-team", + mode="offline", # オフラインで実行し、後で同期します + save_code=True, # ソースコードを保存します + quiet=True # コンソール出力を抑制します +) + +# または環境変数を使用します +# export WANDB_PROJECT=production-runs +# export WANDB_MODE=offline + +# カスタム設定で初期化します +with wandb.init() as run: + # ここに実験のコードを記述します + pass +``` + +### リネージトラッキングのために Artifact をリンクする + +データセット 、 モデル 、および 評価 の間の関係を追跡します。 + +```python +import wandb + +with wandb.init(project="ml-pipeline") as run: + # データセット Artifact を使用します + dataset = run.use_artifact("dataset:v1") + dataset_dir = dataset.download() + + # データセットを使用してモデルをトレーニングします + model = train_on_dataset(dataset_dir) + + # データセットのリネージを持つモデル Artifact を作成します + model_artifact = wandb.Artifact( + name="trained-model", + type="model" + ) + model_artifact.add_file("model.pt") + + # 自動的なリネージトラッキングを伴うログ記録を行います + run.log_artifact(model_artifact) +``` \ No newline at end of file diff --git a/ja/models/ref/python/experiments/artifact.mdx b/ja/models/ref/python/experiments/artifact.mdx new file mode 100644 index 0000000000..ff8834acb8 --- /dev/null +++ b/ja/models/ref/python/experiments/artifact.mdx @@ -0,0 +1,1115 @@ +--- +title: アーティファクト +namespace: python_sdk_actions +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Artifact` +データセットやモデルの バージョン管理 のための、柔軟で軽量なビルディングブロックです。 + +空の W&B Artifact を構築します。 `add` で始まる メソッド を使用して、アーティファクト のコンテンツを追加します。 アーティファクト に必要なすべてのファイルが含まれたら、 `run.log_artifact()` を呼び出して ログ を記録できます。 + +### method `Artifact.__init__` + +```python +__init__( + name: 'str', + type: 'str', + description: 'str | None' = None, + metadata: 'dict[str, Any] | None' = None, + incremental: 'bool' = False, + use_as: 'str | None' = None, + storage_region: 'str | None' = None +) → None +``` + +**Args:** + + - `name` (str): アーティファクト の人間が読みやすい名前。W&B App UI またはプログラムで特定の アーティファクト を識別するためにこの名前を使用します。 `use_artifact` Public API を使用して、インタラクティブに アーティファクト を参照できます。名前には、英数字、アンダースコア、ハイフン、ドットを含めることができます。名前は プロジェクト 内で一意である必要があります。 + - `type` (str): アーティファクト のタイプ。 アーティファクト の整理と識別の両方にタイプを使用します。英数字、アンダースコア、ハイフン、ドットを含む任意の文字列を使用できます。一般的なタイプには `dataset` や `model` があります。 アーティファクト を W&B モデルレジストリ にリンクしたい場合は、タイプ文字列に `model` を含めてください。一部のタイプは内部使用のために予約されており、 ユーザー が設定することはできません(`job` や `wandb-` で始まるタイプなど)。 + - `description (str | None) = None`: アーティファクト の説明。 モデル または データセット の Artifacts の場合、チームの標準化された モデル または データセット カードのドキュメントを追加します。 アーティファクト の説明は、 `Artifact.description` 属性、または W&B App UI から確認できます。W&B は W&B App 内で説明を markdown としてレンダリングします。 + - `metadata (dict[str, Any] | None) = None`: アーティファクト に関する追加情報。 メタデータ は キー と 値 のペアの 辞書 として指定します。合計で最大 100 個の キー を指定できます。 + - `incremental`: 既存の アーティファクト を修正するには、代わりに `Artifact.new_draft()` メソッド を使用してください。 + - `use_as`: 非推奨です。 + + + +**Returns:** + `Artifact` オブジェクト。 + + + + + + + +--- + +### property Artifact.aliases + +アーティファクト バージョン に割り当てられた、1 つ以上のセマンティックな参照、または識別用の「ニックネーム」のリストです。 + +エイリアス は、プログラムで参照可能な可変の参照です。 アーティファクト の エイリアス は、W&B App UI またはプログラムで変更できます。詳細については、 [Create new artifact versions](https://docs.wandb.ai/guides/artifacts/create-a-new-artifact-version) を参照してください。 + + + +**Returns:** + - `list[str]`: aliases プロパティの 値。 +--- + +### property Artifact.collection + +この アーティファクト が取得されたコレクションです。 + +コレクションは、 アーティファクト バージョン の順序付けられたグループです。この アーティファクト がリンクされているコレクションから取得された場合は、そのコレクションを返します。それ以外の場合は、 アーティファクト バージョン の発生元のコレクションを返します。 + +アーティファクト の発生元のコレクションは、ソースシーケンスとして知られています。 + + + +**Returns:** + - `ArtifactCollection`: collection プロパティの 値。 +--- + +### property Artifact.commit_hash + +この アーティファクト がコミットされたときに返されたハッシュです。 + + + +**Returns:** + - `str`: commit_hash プロパティの 値。 +--- + +### property Artifact.created_at + +アーティファクト が作成されたタイムスタンプです。 + + + +**Returns:** + - `str`: created_at プロパティの 値。 +--- + +### property Artifact.description + +アーティファクト の説明です。 + + + +**Returns:** + - `str | None`: description プロパティの 値。 +--- + +### property Artifact.digest + +アーティファクト の論理ダイジェストです。 + +ダイジェストは、 アーティファクト のコンテンツのチェックサムです。 アーティファクト が現在の `latest` バージョン と同じダイジェストを持っている場合、 `log_artifact` は何も実行しません。 + + + +**Returns:** + - `str`: digest プロパティの 値。 +--- + + +### property Artifact.entity + +アーティファクト コレクションが属する Entity の名前です。 + +アーティファクト がリンクである場合、Entity はリンク先 アーティファクト の Entity になります。 + + + +**Returns:** + - `str`: entity プロパティの 値。 +--- + +### property Artifact.file_count + +ファイルの数(参照を含む)です。 + + + +**Returns:** + - `int`: file_count プロパティの 値。 +--- + +### property Artifact.history_step + +この アーティファクト のソース run の履歴 メトリクス を記録した最も近いステップです。 + + + +**Examples:** + ```python +run = artifact.logged_by() +if run and (artifact.history_step is not None): + history = run.sample_history( + min_step=artifact.history_step, + max_step=artifact.history_step + 1, + keys=["my_metric"], + ) +``` + + + +**Returns:** + - `int | None`: history_step プロパティの 値。 +--- + +### property Artifact.id + +アーティファクト の ID です。 + + + +**Returns:** + - `str | None`: id プロパティの 値。 +--- + + +### property Artifact.is_link + +アーティファクト がリンク アーティファクト かどうかを示すブールフラグです。 + +True: アーティファクト はソース アーティファクト へのリンク アーティファクト です。False: アーティファクト はソース アーティファクト です。 + + + +**Returns:** + - `bool`: is_link プロパティの 値。 +--- + +### property Artifact.linked_artifacts + +ソース アーティファクト のすべてのリンク アーティファクト のリストを返します。 + +この アーティファクト がリンク アーティファクト である場合(`artifact.is_link == True`)、空のリストを返します。 + +500 件の結果に制限されています。 + + + +**Returns:** + - `list[Artifact]`: linked_artifacts プロパティの 値。 +--- + +### property Artifact.manifest + +アーティファクト のマニフェストです。 + +マニフェストはそのすべてのコンテンツをリストし、 アーティファクト が ログ に記録された後は変更できません。 + + + +**Returns:** + - `ArtifactManifest`: manifest プロパティの 値。 +--- + +### property Artifact.metadata + +ユーザー 定義の アーティファクト メタデータ です。 + +アーティファクト に関連付けられた構造化 データ です。 + + + +**Returns:** + - `dict`: metadata プロパティの 値。 +--- + +### property Artifact.name + +アーティファクト 名と アーティファクト の バージョン です。 + +`{collection}:{alias}` 形式の文字列です。 アーティファクト が ログ /保存される前に取得された場合、名前には エイリアス が含まれません。 アーティファクト がリンクである場合、名前はリンク先 アーティファクト の名前になります。 + + + +**Returns:** + - `str`: name プロパティの 値。 +--- + +### property Artifact.project + +アーティファクト コレクションが属する プロジェクト の名前です。 + +アーティファクト がリンクである場合、 プロジェクト はリンク先 アーティファクト の プロジェクト になります。 + + + +**Returns:** + - `str`: project プロパティの 値。 +--- + +### property Artifact.qualified_name + +アーティファクト の Entity/ プロジェクト /名前です。 + +アーティファクト がリンクである場合、qualified name はリンクされた アーティファクト パスの qualified name になります。 + + + +**Returns:** + - `str`: qualified_name プロパティの 値。 +--- + +### property Artifact.size + +アーティファクト の合計サイズ(バイト単位)です。 + +この アーティファクト によって追跡されるすべての参照が含まれます。 + + + +**Returns:** + - `int`: size プロパティの 値。 +--- + +### property Artifact.source_artifact + +最初に ログ に記録された アーティファクト であるソース アーティファクト を返します。 + +この アーティファクト がソース アーティファクト である場合(`artifact.is_link == False`)、それ自体を返します。 + + + +**Returns:** + - `Artifact`: source_artifact プロパティの 値。 +--- + +### property Artifact.source_collection + +アーティファクト のソースコレクションです。 + +ソースコレクションは、 アーティファクト が ログ に記録された元のコレクションです。 + + + +**Returns:** + - `ArtifactCollection`: source_collection プロパティの 値。 +--- + +### property Artifact.source_entity + +ソース アーティファクト の Entity の名前です。 + + + +**Returns:** + - `str`: source_entity プロパティの 値。 +--- + +### property Artifact.source_name + +ソース アーティファクト の アーティファクト 名と バージョン です。 + +`{source_collection}:{alias}` 形式の文字列です。 アーティファクト が保存される前は、 バージョン がまだ不明なため、名前のみが含まれます。 + + + +**Returns:** + - `str`: source_name プロパティの 値。 +--- + +### property Artifact.source_project + +ソース アーティファクト の プロジェクト の名前です。 + + + +**Returns:** + - `str`: source_project プロパティの 値。 +--- + +### property Artifact.source_qualified_name + +ソース アーティファクト の source_entity/source_project/source_name です。 + + + +**Returns:** + - `str`: source_qualified_name プロパティの 値。 +--- + +### property Artifact.source_version + +ソース アーティファクト の バージョン です。 + +`v{number}` 形式の文字列です。 + + + +**Returns:** + - `str`: source_version プロパティの 値。 +--- + +### property Artifact.state + +アーティファクト のステータスです。"PENDING"、"COMMITTED"、または "DELETED" のいずれかです。 + + + +**Returns:** + - `str`: state プロパティの 値。 +--- + +### property Artifact.tags + +この アーティファクト バージョン に割り当てられた 1 つ以上のタグのリストです。 + + + +**Returns:** + - `list[str]`: tags プロパティの 値。 +--- + +### property Artifact.ttl + +アーティファクト の time-to-live (TTL) ポリシーです。 + +アーティファクト は、TTL ポリシーの期間が経過した後、まもなく削除されます。 `None` に設定すると、 アーティファクト は TTL ポリシーを無効化し、チームのデフォルト TTL があっても削除がスケジュールされません。チーム管理者がデフォルト TTL を定義しており、 アーティファクト にカスタムポリシーが設定されていない場合、 アーティファクト はチームのデフォルトから TTL ポリシーを継承します。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録または保存されていない場合、継承された TTL を取得できません。 + + + +**Returns:** + - `timedelta | None`: ttl プロパティの 値。 +--- + +### property Artifact.type + +アーティファクト のタイプです。一般的なタイプには `dataset` や `model` があります。 + + + +**Returns:** + - `str`: type プロパティの 値。 +--- + +### property Artifact.updated_at + +アーティファクト が最後に更新された時間です。 + + + +**Returns:** + - `str`: updated_at プロパティの 値。 +--- + +### property Artifact.url + +アーティファクト の URL を構築します。 + + + +**Returns:** + + - `str`: アーティファクト の URL。 + + + +**Returns:** + - `str`: url プロパティの 値。 +--- + +### property Artifact.use_as + +非推奨です。 + + + +**Returns:** + - `str | None`: use_as プロパティの 値。 +--- + +### property Artifact.version + +アーティファクト の バージョン です。 + +`v{number}` 形式の文字列です。これがリンク アーティファクト の場合、 バージョン はリンクされたコレクションからのものになります。 + + + + + +**Returns:** + - `str`: version プロパティの 値。 +--- + +### method `Artifact.add` + +```python +add( + obj: 'WBValue', + name: 'StrPath', + overwrite: 'bool' = False +) → ArtifactManifestEntry +``` + +wandb.WBValue `obj` を アーティファクト に追加します。 + + + +**Args:** + + - `obj`: 追加する オブジェクト。現在は Bokeh, JoinedTable, PartitionedTable, Table, Classes, ImageMask, BoundingBoxes2D, Audio, Image, Video, Html, Object3D のいずれかをサポートしています。 + - `name`: オブジェクトを追加する アーティファクト 内のパス。 + - `overwrite`: True の場合、該当する場合に同じファイルパスを持つ既存の オブジェクト を上書きします。 + + + +**Returns:** + 追加されたマニフェストエントリ。 + + + +**Raises:** + + - `ArtifactFinalizedError`: 現在の アーティファクト バージョン は確定されているため、変更を加えることはできません。代わりに新しい アーティファクト バージョン を ログ に記録してください。 + +--- + +### method `Artifact.add_dir` + +```python +add_dir( + local_path: 'str', + name: 'str | None' = None, + skip_cache: 'bool | None' = False, + policy: "Literal['mutable', 'immutable'] | None" = 'mutable', + merge: 'bool' = False +) → None +``` + +ローカル ディレクトリー を アーティファクト に追加します。 + + + +**Args:** + + - `local_path`: ローカル ディレクトリー のパス。 + - `name`: アーティファクト 内のサブディレクトリー名。指定した名前は W&B App UI で アーティファクト の `type` ごとにネストされて表示されます。デフォルトは アーティファクト のルートです。 + - `skip_cache`: `True` に設定すると、アップロード中にファイルをキャッシュにコピー/移動しません。 + - `policy`: デフォルトは "mutable" です。 + - mutable: アップロード中の破損を防ぐために、ファイルのテンポラリコピーを作成します。 + - immutable: 保護を無効にし、 ユーザー がファイルを削除または変更しないことに依存します。 + - `merge`: `False`(デフォルト)の場合、以前の add_dir 呼び出しで既に追加されたファイルの内容が変更されていると ValueError をスローします。 `True` の場合、変更された内容で既存のファイルを上書きします。常に新しいファイルを追加し、ファイルを削除することはありません。 ディレクトリー 全体を置き換えるには、 `add_dir(local_path, name=my_prefix)` を使用して ディレクトリー を追加するときに名前を渡し、 `remove(my_prefix)` を呼び出して ディレクトリー を削除してから、再度追加してください。 + + + +**Raises:** + + - `ArtifactFinalizedError`: 現在の アーティファクト バージョン は確定されているため、変更を加えることはできません。代わりに新しい アーティファクト バージョン を ログ に記録してください。 + - `ValueError`: ポリシーは "mutable" または "immutable" である必要があります。 + +--- + +### method `Artifact.add_file` + +```python +add_file( + local_path: 'str', + name: 'str | None' = None, + is_tmp: 'bool | None' = False, + skip_cache: 'bool | None' = False, + policy: "Literal['mutable', 'immutable'] | None" = 'mutable', + overwrite: 'bool' = False +) → ArtifactManifestEntry +``` + +ローカルファイルを アーティファクト に追加します。 + + + +**Args:** + + - `local_path`: 追加するファイルへのパス。 + - `name`: 追加されるファイルに使用する アーティファクト 内のパス。デフォルトはファイルのベース名です。 + - `is_tmp`: True の場合、衝突を避けるためにファイル名が決定論的に変更されます。 + - `skip_cache`: `True` の場合、アップロード後にファイルをキャッシュにコピーしません。 + - `policy`: デフォルトで "mutable" に設定されます。 "mutable" に設定されている場合、アップロード中の破損を防ぐためにファイルのテンポラリコピーを作成します。 "immutable" に設定されている場合、保護を無効にし、 ユーザー がファイルを削除または変更しないことに依存します。 + - `overwrite`: `True` の場合、ファイルが既に存在すれば上書きします。 + + + +**Returns:** + 追加されたマニフェストエントリ。 + + + +**Raises:** + + - `ArtifactFinalizedError`: 現在の アーティファクト バージョン は確定されているため、変更を加えることはできません。代わりに新しい アーティファクト バージョン を ログ に記録してください。 + - `ValueError`: ポリシーは "mutable" または "immutable" である必要があります。 + +--- + +### method `Artifact.add_reference` + +```python +add_reference( + uri: 'ArtifactManifestEntry | str', + name: 'StrPath | None' = None, + checksum: 'bool' = True, + max_objects: 'int | None' = None +) → Sequence[ArtifactManifestEntry] +``` + +URI で示される参照を アーティファクト に追加します。 + +アーティファクト に追加するファイルや ディレクトリー とは異なり、参照は W&B にアップロードされません。詳細については、 [Track external files](https://docs.wandb.ai/guides/artifacts/track-external-files) を参照してください。 + +デフォルトでは、以下のスキームがサポートされています: + + +- http(s): ファイルのサイズとダイジェストは、 サーバー から返される `Content-Length` および `ETag` レスポンスヘッダーから推測されます。 +- s3: チェックサムとサイズは オブジェクト メタデータ から取得されます。 バケット の バージョン管理 が有効な場合、 バージョン ID も追跡されます。 +- gs: チェックサムとサイズは オブジェクト メタデータ から取得されます。 バケット の バージョン管理 が有効な場合、 バージョン ID も追跡されます。 +- https, `*.blob.core.windows.net` に一致するドメイン +- Azure: チェックサムとサイズは blob メタデータ から取得されます。ストレージアカウントの バージョン管理 が有効な場合、 バージョン ID も追跡されます。 +- file: チェックサムとサイズはファイルシステムから取得されます。このスキームは、追跡したいが必ずしもアップロードしたくないファイルを含む NFS 共有やその他の外部マウントボリュームがある場合に便利です。 + +その他のスキームの場合、ダイジェストは URI のハッシュになり、サイズは空白のままになります。 + + + +**Args:** + + - `uri`: 追加する参照の URI パス。URI パスには、別の アーティファクト のエントリへの参照を保存するために `Artifact.get_entry` から返された オブジェクト を指定できます。 + - `name`: この参照のコンテンツを配置する アーティファクト 内のパス。 + - `checksum`: 参照 URI にあるリソースのチェックサムを実行するかどうか。完全性の自動検証が可能になるため、チェックサムの実行を強くお勧めします。チェックサムを無効にすると アーティファクト の作成速度は上がりますが、参照 ディレクトリー が反復処理されないため、 ディレクトリー 内の オブジェクト は アーティファクト に保存されません。参照 オブジェクト を追加する際は `checksum=False` に設定することをお勧めします。その場合、参照 URI が変更された場合にのみ新しい バージョン が作成されます。 + - `max_objects`: ディレクトリー または バケット ストアのプレフィックスを指す参照を追加するときに考慮する オブジェクト の最大数。デフォルトでは、Amazon S3、GCS、Azure、およびローカルファイルの最大許容 オブジェクト 数は 10,000,000 です。他の URI スキーマに最大数はありません。 + + + +**Returns:** + 追加されたマニフェストエントリ。 + + + +**Raises:** + + - `ArtifactFinalizedError`: 現在の アーティファクト バージョン は確定されているため、変更を加えることはできません。代わりに新しい アーティファクト バージョン を ログ に記録してください。 + +--- + +### method `Artifact.checkout` + +```python +checkout(root: 'str | None' = None) → str +``` + +指定したルート ディレクトリー を アーティファクト の内容で置き換えます。 + +警告:これにより、 アーティファクト に含まれていない `root` 内のすべてのファイルが削除されます。 + + + +**Args:** + + - `root`: この アーティファクト のファイルで置き換える ディレクトリー。 + + + +**Returns:** + チェックアウトされたコンテンツのパス。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + +--- + +### method `Artifact.delete` + +```python +delete(delete_aliases: 'bool' = False) → None +``` + +アーティファクト とそのファイルを削除します。 + +リンクされた アーティファクト に対して呼び出された場合、リンクのみが削除され、ソース アーティファクト は影響を受けません。 + +ソース アーティファクト とコレクションの間のリンクを削除するには、 `Artifact.delete()` の代わりに `Artifact.unlink()` を使用してください。 + + + +**Args:** + + - `delete_aliases`: `True` に設定すると、 アーティファクト に関連付けられたすべての エイリアス を削除します。 `False` の場合、 アーティファクト に既存の エイリアス があると例外を発生させます。この パラメータ は、 アーティファクト がリンク先のコレクションから取得された場合は無視されます。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + +--- + +### method `Artifact.download` + +```python +download( + root: 'StrPath | None' = None, + allow_missing_references: 'bool' = False, + skip_cache: 'bool | None' = None, + path_prefix: 'StrPath | None' = None, + multipart: 'bool | None' = None +) → FilePathStr +``` + +アーティファクト の内容を指定したルート ディレクトリー にダウンロードします。 + +`root` 内にある既存のファイルは変更されません。 `root` の内容を アーティファクト と完全に一致させたい場合は、 `download` を呼び出す前に `root` を明示的に削除してください。 + + + +**Args:** + + - `root`: W&B が アーティファクト のファイルを保存する ディレクトリー。 + - `allow_missing_references`: `True` に設定すると、参照ファイルのダウンロード中に無効な参照パスを無視します。 + - `skip_cache`: `True` に設定すると、ダウンロード時に アーティファクト キャッシュをスキップし、W&B は各ファイルをデフォルトのルートまたは指定されたダウンロード ディレクトリー にダウンロードします。 + - `path_prefix`: 指定した場合、指定されたプレフィックスで始まるパスを持つファイルのみがダウンロードされます。unix 形式(フォワードスラッシュ)を使用します。 + - `multipart`: `None`(デフォルト)に設定すると、個々のファイルサイズが 2GB を超える場合にマルチパートダウンロードを使用して並列にダウンロードされます。 `True` または `False` に設定すると、ファイルサイズに関係なく並列またはシリアルにダウンロードされます。 + + + +**Returns:** + ダウンロードされたコンテンツへのパス。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + +--- + +### method `Artifact.file` + +```python +file(root: 'str | None' = None) → StrPath +``` + +単一のファイル アーティファクト を `root` で指定した ディレクトリー にダウンロードします。 + + + +**Args:** + + - `root`: ファイルを保存するルート ディレクトリー。デフォルトは `./artifacts/self.name/` です。 + + + +**Returns:** + ダウンロードされたファイルのフルパス。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + - `ValueError`: アーティファクト に複数のファイルが含まれている場合。 + +--- + +### method `Artifact.files` + +```python +files(names: 'list[str] | None' = None, per_page: 'int' = 50) → ArtifactFiles +``` + +この アーティファクト に保存されているすべてのファイルを反復処理します。 + + + +**Args:** + + - `names`: リストしたい アーティファクト のルートからの相対ファイル名パス。 + - `per_page`: 1 回のリクエストで返すファイルの数。 + + + +**Returns:** + `File` オブジェクト を含むイテレータ。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + +--- + +### method `Artifact.finalize` + +```python +finalize() → None +``` + +アーティファクト バージョン を確定します。 + +アーティファクト は特定の アーティファクト バージョン として ログ に記録されるため、一度確定されると アーティファクト バージョン を変更することはできません。 アーティファクト にさらに データ を ログ 記録するには、新しい アーティファクト バージョン を作成してください。 `log_artifact` で アーティファクト を ログ 記録すると、 アーティファクト は自動的に確定されます。 + +--- + +### method `Artifact.get` + +```python +get(name: 'str') → WBValue | None +``` + +アーティファクト 相対の `name` にある WBValue オブジェクト を取得します。 + + + +**Args:** + + - `name`: 取得する アーティファクト 相対名。 + + + +**Returns:** + `run.log()` で ログ 記録でき、W&B UI で視覚化できる W&B オブジェクト。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていないか、 run がオフラインの場合。 + +--- + +### method `Artifact.get_added_local_path_name` + +```python +get_added_local_path_name(local_path: 'str') → str | None +``` + +ローカルファイルシステムパスによって追加されたファイルの アーティファクト 相対名を取得します。 + + + +**Args:** + + - `local_path`: アーティファクト 相対名に解決するローカルパス。 + + + +**Returns:** + アーティファクト 相対名。 + +--- + +### method `Artifact.get_entry` + +```python +get_entry(name: 'StrPath') → ArtifactManifestEntry +``` + +指定された名前のエントリを取得します。 + + + +**Args:** + + - `name`: 取得する アーティファクト 相対名。 + + + +**Returns:** + `W&B` オブジェクト。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていないか、 run がオフラインの場合。 + - `KeyError`: アーティファクト に指定された名前のエントリが含まれていない場合。 + +--- + +### method `Artifact.get_path` + +```python +get_path(name: 'StrPath') → ArtifactManifestEntry +``` + +非推奨です。 `get_entry(name)` を使用してください。 + +--- + +### method `Artifact.is_draft` + +```python +is_draft() → bool +``` + +アーティファクト が保存されていないかどうかを確認します。 + + + +**Returns:** + ブール値。 アーティファクト が保存されている場合は `False`、保存されていない場合は `True`。 + +--- + +### method `Artifact.json_encode` + +```python +json_encode() → dict[str, Any] +``` + +JSON 形式にエンコードされた アーティファクト を返します。 + + + +**Returns:** + アーティファクト の属性を表す `string` キー を持つ `dict`。 + +--- + +### method `Artifact.link` + +```python +link(target_path: 'str', aliases: 'Iterable[str] | None' = None) → Artifact +``` + +この アーティファクト をコレクションにリンクします。 + + + +**Args:** + + - `target_path`: コレクションのパス。パスは、プレフィックス "wandb-registry-" と レジストリ 名、およびコレクション名 `wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}` で構成されます。 + - `aliases`: リンクされた アーティファクト に 1 つ以上の エイリアス を追加します。 "latest" エイリアス は、リンクした最新の アーティファクト に自動的に適用されます。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + + + +**Returns:** + リンクされた アーティファクト。 + +--- + +### method `Artifact.logged_by` + +```python +logged_by() → Run | None +``` + +最初に アーティファクト を ログ 記録した W&B run を取得します。 + + + +**Returns:** + 最初に アーティファクト を ログ 記録した W&B run の名前。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + +--- + +### method `Artifact.new_draft` + +```python +new_draft() → Artifact +``` + +このコミット済み アーティファクト と同じコンテンツを持つ新しいドラフト アーティファクト を作成します。 + +既存の アーティファクト を修正すると、「増分 アーティファクト 」として知られる新しい アーティファクト バージョン が作成されます。返された アーティファクト は拡張または修正して、新しい バージョン として ログ 記録できます。 + + + +**Returns:** + `Artifact` オブジェクト。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + +--- + +### method `Artifact.new_file` + +```python +new_file( + name: 'str', + mode: 'str' = 'x', + encoding: 'str | None' = None +) → Iterator[IO] +``` + +新しいテンポラリファイルを開き、それを アーティファクト に追加します。 + + + +**Args:** + + - `name`: アーティファクト に追加する新しいファイルの名前。 + - `mode`: 新しいファイルを開くために使用するファイル アクセス モード。 + - `encoding`: 新しいファイルを開くために使用するエンコーディング。 + + + +**Returns:** + 書き込み可能な新しいファイル オブジェクト。閉じると、ファイルは自動的に アーティファクト に追加されます。 + + + +**Raises:** + + - `ArtifactFinalizedError`: 現在の アーティファクト バージョン は確定されているため、変更を加えることはできません。代わりに新しい アーティファクト バージョン を ログ に記録してください。 + +--- + +### method `Artifact.remove` + +```python +remove(item: 'StrPath | ArtifactManifestEntry') → None +``` + +アーティファクト からアイテムを削除します。 + + + +**Args:** + + - `item`: 削除するアイテム。特定のマニフェストエントリ、または アーティファクト 相対パスの名前を指定できます。アイテムが ディレクトリー に一致する場合、その ディレクトリー 内のすべてのアイテムが削除されます。 + + + +**Raises:** + + - `ArtifactFinalizedError`: 現在の アーティファクト バージョン は確定されているため、変更を加えることはできません。代わりに新しい アーティファクト バージョン を ログ に記録してください。 + - `FileNotFoundError`: アイテムが アーティファクト 内で見つからない場合。 + +--- + +### method `Artifact.save` + +```python +save( + project: 'str | None' = None, + settings: 'wandb.Settings | None' = None +) → None +``` + +アーティファクト に加えられた変更を永続化します。 + +現在 run 内にいる場合、その run がこの アーティファクト を ログ 記録します。現在 run 内にいない場合、この アーティファクト を追跡するためにタイプ "auto" の run が作成されます。 + + + +**Args:** + + - `project`: run がまだコンテキストにない場合に、 アーティファクト に使用する プロジェクト。 + - `settings`: 自動 run を初期化するときに使用する 設定 オブジェクト。テストハーネスで最も一般的に使用されます。 + +--- + +### method `Artifact.unlink` + +```python +unlink() → None +``` + +この アーティファクト が アーティファクト コレクションのリンクされたメンバーである場合、リンクを解除します。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + - `ValueError`: アーティファクト がどのコレクションにもリンクされていない場合。 + +--- + +### method `Artifact.used_by` + +```python +used_by() → list[Run] +``` + +この アーティファクト およびそのリンクされた アーティファクト を使用した run のリストを取得します。 + + + +**Returns:** + `Run` オブジェクト のリスト。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + +--- + +### method `Artifact.verify` + +```python +verify(root: 'str | None' = None) → None +``` + +アーティファクト の内容がマニフェストと一致することを確認します。 + +ディレクトリー 内のすべてのファイルのチェックサムが計算され、そのチェックサムが アーティファクト のマニフェストと照合されます。参照は検証されません。 + + + +**Args:** + + - `root`: 検証する ディレクトリー。None の場合、 アーティファクト は './artifacts/self.name/' にダウンロードされます。 + + + +**Raises:** + + - `ArtifactNotLoggedError`: アーティファクト が ログ に記録されていない場合。 + - `ValueError`: 検証に失敗した場合。 + +--- + +### method `Artifact.wait` + +```python +wait(timeout: 'int | None' = None) → Artifact +``` + +必要に応じて、この アーティファクト の ログ 記録が完了するまで待機します。 + + + +**Args:** + + - `timeout`: 待機する時間(秒単位)。 + + + +**Returns:** + `Artifact` オブジェクト。 \ No newline at end of file diff --git a/ja/models/ref/python/experiments/run.mdx b/ja/models/ref/python/experiments/run.mdx new file mode 100644 index 0000000000..c73b9a3aa6 --- /dev/null +++ b/ja/models/ref/python/experiments/run.mdx @@ -0,0 +1,1037 @@ +--- +title: Run +namespace: python_sdk_actions +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Run` +W&B によってログを記録される計算の単位です。通常、これは 1 つの ML 実験(Experiment)を指します。 + +新しい run を作成するには [`wandb.init()`](https://docs.wandb.ai/ref/python/init/) を呼び出します。`wandb.init()` は新しい run を開始し、`wandb.Run` オブジェクトを返します。各 run は固有の ID(run ID)に関連付けられています。W&B では、run を自動的に終了させるためにコンテキストマネージャ(`with` 文)の使用を推奨しています。 + +分散トレーニングの実験では、プロセスごとに 1 つの run を使用して各プロセスを個別に追跡するか、すべてのプロセスを 1 つの run で追跡することができます。詳細は [Log distributed training experiments](https://docs.wandb.ai/guides/track/log/distributed-training) を参照してください。 + +`wandb.Run.log()` を使用して run にデータをログ出力できます。`wandb.Run.log()` を使用してログに記録されたものはすべてその run に送信されます。詳細は [Create an experiment](https://docs.wandb.ai/guides/track/create-an-experiment/) または [`wandb.init`](https://docs.wandb.ai/ref/python/init/) の API リファレンスページを参照してください。 + +[`wandb.apis.public`](https://docs.wandb.ai/ref/python/public-api/api/) ネームスペースにも別の `Run` オブジェクトがあります。このオブジェクトは、すでに作成された run を操作するために使用します。 + +**Attributes:** + + - `summary`: (Summary) 辞書形式のオブジェクトである run のサマリーです。詳細については以下を参照してください。 + - `[Log summary metrics](https`: //docs.wandb.ai/guides/track/log/log-summary/)。 + +**Examples:** + `wandb.init()` で run を作成する: + +```python +import wandb + +# 新しい run を開始し、いくつかのデータをログに記録します +# コンテキストマネージャ(`with` 文)を使用して、run を自動的に終了させます +with wandb.init(entity="entity", project="project") as run: + run.log({"accuracy": acc, "loss": loss}) +``` + +### property Run.config + +この run に関連付けられた Config オブジェクト。 + +**Returns:** + - `wandb_config.Config`: config プロパティの値。 +--- + +### property Run.config_static + +この run に関連付けられた静的な Config オブジェクト。 + +**Returns:** + - `wandb_config.ConfigStatic`: config_static プロパティの値。 +--- + +### property Run.dir + +run に関連付けられたファイルが保存されるディレクトリー。 + +**Returns:** + - `str`: dir プロパティの値。 +--- + +### property Run.disabled + +run が無効な場合は True、それ以外の場合は False。 + +**Returns:** + - `bool`: disabled プロパティの値。 +--- + +### property Run.entity + +run に関連付けられた W&B Entity の名前。 + +Entity はユーザー名、またはチームや組織の名前です。 + +**Returns:** + - `str`: entity プロパティの値。 +--- + +### property Run.group + +この run に関連付けられたグループの名前を返します。 + +複数の run をグループ化することで、関連する実験を W&B UI 上でまとめて整理し、可視化することができます。これは、複数の run を統合された実験として表示・管理すべき分散トレーニングやクロスバリデーションなどのシナリオで特に便利です。 + +すべてのプロセスが同じ run オブジェクトを共有する共有モードでは、run は 1 つしかなくグループ化の必要がないため、通常グループの設定は不要です。 + +**Returns:** + - `str`: group プロパティの値。 +--- + +### property Run.id + +この run の識別子。 + +**Returns:** + - `str`: id プロパティの値。 +--- + +### property Run.job_type + +run に関連付けられたジョブタイプの名前。 + +run のジョブタイプは、W&B App の run の Overview ページで確認できます。 + +これを使用して、"training"、"evaluation"、"inference" などのジョブタイプごとに run を分類できます。これは、同じプロジェクト内に異なるジョブタイプの run が複数ある場合に、W&B UI で run を整理したりフィルタリングしたりするのに役立ちます。詳細は [Organize runs](https://docs.wandb.ai/guides/runs/#organize-runs) を参照してください。 + +**Returns:** + - `str`: job_type プロパティの値。 +--- + +### property Run.name + +run の表示名。 + +表示名は一意であるとは限らず、説明的な名前になる場合があります。デフォルトではランダムに生成されます。 + +**Returns:** + - `str | None`: name プロパティの値。 +--- + +### property Run.notes + +run に関連付けられたメモ(ある場合)。 + +メモは複数行の文字列にすることができ、`$$` 内で Markdown や LaTeX 数式(例: `$x + 3$`)を使用することも可能です。 + +**Returns:** + - `str | None`: notes プロパティの値。 +--- + +### property Run.offline + +run がオフラインの場合は True、それ以外の場合は False。 + +**Returns:** + - `bool`: offline プロパティの値。 +--- + +### property Run.path + +run へのパス。 + +run パスには、`entity/project/run_id` の形式で entity、project、run ID が含まれます。 + +**Returns:** + - `str`: path プロパティの値。 +--- + +### property Run.project + +run に関連付けられた W&B Project の名前。 + +**Returns:** + - `str`: project プロパティの値。 +--- + +### property Run.project_url + +run に関連付けられた W&B Project の URL(存在する場合)。 + +オフラインの run にはプロジェクト URL はありません。 + +**Returns:** + - `str | None`: project_url プロパティの値。 +--- + +### property Run.resumed + +run が再開(resume)された場合は True、それ以外の場合は False。 + +**Returns:** + - `bool`: resumed プロパティの値。 +--- + +### property Run.settings + +run の Settings オブジェクトのフリーズされたコピー。 + +**Returns:** + - `Settings`: settings プロパティの値。 +--- + +### property Run.start_time + +run が開始された時の Unix タイムスタンプ(秒単位)。 + +**Returns:** + - `float`: start_time プロパティの値。 +--- + +### property Run.sweep_id + +run に関連付けられた Sweep の識別子(存在する場合)。 + +**Returns:** + - `str | None`: sweep_id プロパティの値。 +--- + +### property Run.sweep_url + +run に関連付けられた Sweep の URL(存在する場合)。 + +オフラインの run には Sweep URL はありません。 + +**Returns:** + - `str | None`: sweep_url プロパティの値。 +--- + +### property Run.tags + +run に関連付けられたタグ(ある場合)。 + +**Returns:** + - `tuple | None`: tags プロパティの値。 +--- + +### property Run.url + +W&B run の URL(存在する場合)。 + +オフラインの run には URL はありません。 + +**Returns:** + - `str | None`: url プロパティの値。 +--- + +### method `Run.alert` + +```python +alert( + title: 'str', + text: 'str', + level: 'str | AlertLevel | None' = None, + wait_duration: 'int | float | timedelta | None' = None +) → None +``` + +指定されたタイトルとテキストでアラートを作成します。 + +**Args:** + + - `title`: アラートのタイトル。64 文字未満である必要があります。 + - `text`: アラートの本文。 + - `level`: 使用するアラートレベル。`INFO`、`WARN`、または `ERROR` のいずれか。 + - `wait_duration`: このタイトルの別のアラートを送信するまでの待機時間(秒単位)。 + +--- + +### method `Run.define_metric` + +```python +define_metric( + name: 'str', + step_metric: 'str | wandb_metric.Metric | None' = None, + step_sync: 'bool | None' = None, + hidden: 'bool | None' = None, + summary: 'str | None' = None, + goal: 'str | None' = None, + overwrite: 'bool | None' = None +) → wandb_metric.Metric +``` + +`wandb.Run.log()` で記録されるメトリクスをカスタマイズします。 + +**Args:** + + - `name`: カスタマイズするメトリクスの名前。 + - `step_metric`: 自動生成されたチャートで、このメトリクスの X 軸として機能する別のメトリクスの名前。 + - `step_sync`: `step_metric` が明示的に指定されていない場合、その最後の値を自動的に `wandb.Run.log()` に挿入します。`step_metric` が指定されている場合はデフォルトで True です。 + - `hidden`: このメトリクスを自動プロットから非表示にします。 + - `summary`: サマリーに追加される集計メトリクスを指定します。サポートされている集計には、"min", "max", "mean", "last", "first", "best", "copy", "none" があります。"none" はサマリーの生成を停止します。"best" は goal パラメータと共に使用されますが、"best" は非推奨であり、代わりに "min" または "max" を使用する必要があります。"copy" も非推奨であり使用すべきではありません。 + - `goal`: "best" サマリータイプの解釈方法を指定します。サポートされているオプションは "minimize" と "maximize" です。"goal" は非推奨であり、代わりに "min" または "max" を使用してください。 + - `overwrite`: False の場合、この呼び出しは同じメトリクスに対する以前の `define_metric` 呼び出しとマージされ、指定されていないパラメータには以前の値が使用されます。True の場合、指定されていないパラメータは以前の呼び出しで指定された値を上書きします。 + +**Returns:** + この呼び出しを表すオブジェクト(通常は破棄して問題ありません)。 + +--- + +### method `Run.display` + +```python +display(height: 'int' = 420, hidden: 'bool' = False) → bool +``` + +この run を Jupyter 内で表示します。 + +--- + +### method `Run.finish` + +```python +finish(exit_code: 'int | None' = None, quiet: 'bool | None' = None) → None +``` + +run を終了し、残りのデータをすべてアップロードします。 + +W&B run の完了をマークし、すべてのデータがサーバーに同期されることを保証します。run の最終的な状態は、終了条件と同期ステータスによって決まります。 + +Run の状態: +- Running: データをログに記録中、またはハートビートを送信中のアクティブな run。 +- Crashed: 予期せずハートビートの送信が停止した run。 +- Finished: すべてのデータが同期され、正常に終了した run (`exit_code=0`)。 +- Failed: エラーで終了した run (`exit_code!=0`)。 +- Killed: 終了前に強制停止された run。 + +**Args:** + + - `exit_code`: run の終了ステータスを示す整数。成功の場合は 0 を使用し、それ以外の値は run が失敗したことを示します。 + - `quiet`: 非推奨です。`wandb.Settings(quiet=...)` を使用してログの冗長性を設定してください。 + +--- + +### method `Run.finish_artifact` + +```python +finish_artifact( + artifact_or_path: 'Artifact | str', + name: 'str | None' = None, + type: 'str | None' = None, + aliases: 'list[str] | None' = None, + distributed_id: 'str | None' = None +) → Artifact +``` + +run の出力として、未完了のアーティファクトを完成させます。 + +同じ distributed ID を持つその後の "upsert" は、新しいバージョンを作成します。 + +**Args:** + + - `artifact_or_path`: このアーティファクトの内容へのパス。以下の形式が可能です: + - `/local/directory` + - `/local/directory/file.txt` + - `s3://bucket/path` + また、`wandb.Artifact` を呼び出して作成された Artifact オブジェクトを渡すこともできます。 + - `name`: アーティファクト名。entity/project をプレフィックスとして付けることができます。有効な名前の形式は以下の通りです: + - name:version + - name:alias + - digest + 指定しない場合、デフォルトで現在の run ID が先頭に付加されたパスのベース名になります。 + - `type`: ログに記録するアーティファクトのタイプ。例として `dataset` や `model` などがあります。 + - `aliases`: このアーティファクトに適用するエイリアス。デフォルトは `["latest"]` です。 + - `distributed_id`: すべての分散ジョブで共有される一意の文字列。None の場合、デフォルトで run のグループ名になります。 + +**Returns:** + `Artifact` オブジェクト。 + +--- + +### method `Run.link_artifact` + +```python +link_artifact( + artifact: 'Artifact', + target_path: 'str', + aliases: 'list[str] | None' = None +) → Artifact +``` + +アーティファクトをコレクションにリンクします。 + +「リンク」という用語は、W&B がアーティファクトを保存する場所と、レジストリ内でアーティファクトにアクセスできる場所を接続するポインタを指します。アーティファクトをコレクションにリンクしても、W&B はアーティファクトを複製しません。 + +リンクされたアーティファクトは、指定されたコレクションの Registry UI で確認できます。 + +**Args:** + + - `artifact`: コレクションにリンクするアーティファクトオブジェクト。 + - `target_path`: コレクションのパス。パスはプレフィックス "wandb-registry-" とレジストリ名、コレクション名で構成されます:`wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}`。 + - `aliases`: リンクされたアーティファクトに 1 つ以上のエイリアスを追加します。"latest" エイリアスは、リンクされた最新のアーティファクトに自動的に適用されます。 + +**Returns:** + リンクされたアーティファクト。 + +--- + +### method `Run.link_model` + +```python +link_model( + path: 'StrPath', + registered_model_name: 'str', + name: 'str | None' = None, + aliases: 'list[str] | None' = None +) → Artifact | None +``` + +モデルアーティファクトのバージョンをログに記録し、モデルレジストリ内の Registered Models にリンクします。 + +リンクされたモデルバージョンは、指定された登録済みモデルの UI で確認できます。 + +このメソッドは以下の動作を行います: +- 'name' というモデルアーティファクトがすでにログ記録されているか確認します。記録されている場合は、'path' にあるファイルと一致するアーティファクトバージョンを使用するか、新しいバージョンをログに記録します。記録されていない場合は、'path' 下のファイルを新しいモデルアーティファクト(タイプ 'model' の 'name')としてログに記録します。 +- 'model-registry' プロジェクト内に 'registered_model_name' という名前の Registered Models が存在するか確認します。存在しない場合は、新しく作成します。 +- モデルアーティファクト 'name' のバージョンを Registered Models 'registered_model_name' にリンクします。 +- 'aliases' リストのエイリアスを、新しくリンクされたモデルアーティファクトバージョンに付加します。 + +**Args:** + + - `path`: (str) このモデルの内容へのパス。以下の形式が可能です: + - `/local/directory` + - `/local/directory/file.txt` + - `s3://bucket/path` + - `registered_model_name`: モデルのリンク先となる Registered Models の名前。Registered Models はモデルレジストリにリンクされたモデルバージョンのコレクションであり、通常はチームの特定の ML タスクを表します。この登録済みモデルが属する Entity は run から導出されます。 + - `name`: 'path' 内のファイルがログ記録されるモデルアーティファクトの名前。指定しない場合、デフォルトで現在の run ID が先頭に付加されたパスのベース名になります。 + - `aliases`: 登録済みモデル内のこのリンクされたアーティファクトにのみ適用されるエイリアス。エイリアス "latest" は、リンクされたアーティファクトの最新バージョンに常に適用されます。 + +**Raises:** + + - `AssertionError`: registered_model_name がパスである場合、またはモデルアーティファクト 'name' のタイプに 'model' という文字列が含まれていない場合。 + - `ValueError`: name に無効な特殊文字が含まれている場合。 + +**Returns:** + リンクに成功した場合はリンクされたアーティファクト、それ以外の場合は `None`。 + +--- + +### method `Run.log` + +```python +log( + data: 'dict[str, Any]', + step: 'int | None' = None, + commit: 'bool | None' = None +) → None +``` + +run データをアップロードします。 + +スカラー、画像、ビデオ、ヒストグラム、プロット、テーブルなどのデータを run からログに記録するには `log` を使用します。コードスニペット、ベストプラクティスなどは、[Log objects and media](https://docs.wandb.ai/guides/track/log) を参照してください。 + +基本的な使い方: + +```python +import wandb + +with wandb.init() as run: + run.log({"train-loss": 0.5, "accuracy": 0.9}) +``` + +上記のコードスニペットは、loss と accuracy を run の history に保存し、これらのメトリクスの summary の値を更新します。 + +ログに記録されたデータは、[wandb.ai](https://wandb.ai) の Workspace、または W&B アプリの [セルフホストインスタンス](https://docs.wandb.ai/guides/hosting) で視覚化できます。また、[Public API](https://docs.wandb.ai/guides/track/public-api-guide) を使用して、Jupyter ノートブックなどでローカルにデータをエクスポートして探索することも可能です。 + +ログに記録する値はスカラーである必要はありません。画像、オーディオ、ビデオなど、[W&B がサポートする任意のデータ型](https://docs.wandb.ai/ref/python/data-types/)をログに記録できます。例えば、`wandb.Table` を使用して構造化データをログに記録できます。詳細は [Log tables, visualize and query data](https://docs.wandb.ai/guides/models/tables/tables-walkthrough) チュートリアルを参照してください。 + +W&B は、名前にスラッシュ(`/`)が含まれるメトリクスを、最後のスラッシュの前のテキストを使用したセクションに整理します。例えば、以下は "train" と "validate" という 2 つのセクションを作成します: + +```python +with wandb.init() as run: + # "train" セクションにメトリクスを記録 + run.log( + { + "train/accuracy": 0.9, + "train/loss": 30, + "validate/accuracy": 0.8, + "validate/loss": 20, + } + ) +``` + +ネスティングは 1 レベルのみサポートされています。`run.log({"a/b/c": 1})` は "a" という名前のセクションを作成します。 + +`run.log()` は 1 秒間に数回以上呼び出されることを想定していません。最適なパフォーマンスを得るには、N 回のイテレーションごとに 1 回ログを記録するか、複数のイテレーションにわたってデータを収集し、単一のステップでログを記録するように制限してください。 + +デフォルトでは、`log` を呼び出すたびに新しい「ステップ」が作成されます。ステップは常に増加する必要があり、過去のステップにログを記録することはできません。チャートでは任意のメトリクスを X 軸として使用できます。詳細は [Custom log axes](https://docs.wandb.ai/guides/track/log/customize-logging-axes/) を参照してください。 + +多くの場合、W&B のステップをトレーニングステップとしてではなく、タイムスタンプのように扱うのがより適切です。 + +```python +with wandb.init() as run: + # 例:X 軸として使用するために "epoch" メトリクスをログに記録 + run.log({"epoch": 40, "train-loss": 0.5}) +``` + +`step` と `commit` パラメータを使用することで、複数の `wandb.Run.log()` 呼び出しで同じステップにログを記録することが可能です。以下はすべて同等です: + +```python +with wandb.init() as run: + # 通常の使用法: + run.log({"train-loss": 0.5, "accuracy": 0.8}) + run.log({"train-loss": 0.4, "accuracy": 0.9}) + + # 自動インクリメントなしの暗黙的なステップ: + run.log({"train-loss": 0.5}, commit=False) + run.log({"accuracy": 0.8}) + run.log({"train-loss": 0.4}, commit=False) + run.log({"accuracy": 0.9}) + + # 明示的なステップ: + run.log({"train-loss": 0.5}, step=current_step) + run.log({"accuracy": 0.8}, step=current_step) + current_step += 1 + run.log({"train-loss": 0.4}, step=current_step) + run.log({"accuracy": 0.9}, step=current_step, commit=True) +``` + +**Args:** + + - `data`: 文字列のキーとシリアライズ可能な値を保持する `dict`。 + - `シリアライズ可能な Python オブジェクト`: `int`、`float`、`string`、任意の `wandb.data_types`、シリアライズ可能な Python オブジェクトのリスト、タプル、NumPy 配列、およびこの構造を持つ他の `dict`。 + - `step`: ログを記録するステップ番号。`None` の場合、暗黙的な自動インクリメントステップが使用されます。説明文の注記を参照してください。 + - `commit`: True の場合、ステップを確定してアップロードします。False の場合、そのステップのデータを蓄積します。説明文の注記を参照してください。`step` が `None` の場合、デフォルトは `commit=True` です。それ以外の場合、デフォルトは `commit=False` です。 + +**Examples:** + より詳細な例については、[logging ガイド](https://docs.wandb.com/guides/track/log)を参照してください。 + +基本的な使い方 + +```python +import wandb + +with wandb.init() as run: + run.log({"train-loss": 0.5, "accuracy": 0.9}) +``` + +インクリメンタルなログ記録 + +```python +import wandb + +with wandb.init() as run: + run.log({"loss": 0.2}, commit=False) + # 準備が整った別の場所でこのステップを報告: + run.log({"accuracy": 0.8}) +``` + +ヒストグラム + +```python +import numpy as np +import wandb + +# 正規分布からランダムに勾配をサンプリング +gradients = np.random.randn(100, 100) +with wandb.init() as run: + run.log({"gradients": wandb.Histogram(gradients)}) +``` + +NumPy から画像 + +```python +import numpy as np +import wandb + +with wandb.init() as run: + examples = [] + for i in range(3): + pixels = np.random.randint(low=0, high=256, size=(100, 100, 3)) + image = wandb.Image(pixels, caption=f"random field {i}") + examples.append(image) + run.log({"examples": examples}) +``` + +PIL から画像 + +```python +import numpy as np +from PIL import Image as PILImage +import wandb + +with wandb.init() as run: + examples = [] + for i in range(3): + pixels = np.random.randint( + low=0, + high=256, + size=(100, 100, 3), + dtype=np.uint8, + ) + pil_image = PILImage.fromarray(pixels, mode="RGB") + image = wandb.Image(pil_image, caption=f"random field {i}") + examples.append(image) + run.log({"examples": examples}) +``` + +NumPy からビデオ + +```python +import numpy as np +import wandb + +with wandb.init() as run: + # 軸は (時間, チャンネル, 高さ, 幅) + frames = np.random.randint( + low=0, + high=256, + size=(10, 3, 100, 100), + dtype=np.uint8, + ) + run.log({"video": wandb.Video(frames, fps=4)}) +``` + +Matplotlib プロット + +```python +from matplotlib import pyplot as plt +import numpy as np +import wandb + +with wandb.init() as run: + fig, ax = plt.subplots() + x = np.linspace(0, 10) + y = x * x + ax.plot(x, y) # plot y = x^2 + run.log({"chart": fig}) +``` + +PR 曲線 + +```python +import wandb + +with wandb.init() as run: + run.log({"pr": wandb.plot.pr_curve(y_test, y_probas, labels)}) +``` + +3D オブジェクト + +```python +import wandb + +with wandb.init() as run: + run.log( + { + "generated_samples": [ + wandb.Object3D(open("sample.obj")), + wandb.Object3D(open("sample.gltf")), + wandb.Object3D(open("sample.glb")), + ] + } + ) +``` + +**Raises:** + + - `wandb.Error`: `wandb.init()` の前に呼び出された場合。 + - `ValueError`: 無効なデータが渡された場合。 + +--- + +### method `Run.log_artifact` + +```python +log_artifact( + artifact_or_path: 'Artifact | StrPath', + name: 'str | None' = None, + type: 'str | None' = None, + aliases: 'list[str] | None' = None, + tags: 'list[str] | None' = None +) → Artifact +``` + +アーティファクトを run の出力として宣言します。 + +**Args:** + + - `artifact_or_path`: (str または Artifact) このアーティファクトの内容へのパス。以下の形式が可能です: + - `/local/directory` + - `/local/directory/file.txt` + - `s3://bucket/path` + また、`wandb.Artifact` を呼び出して作成された Artifact オブジェクトを渡すこともできます。 + - `name`: (str, optional) アーティファクト名。有効な名前の形式は以下の通りです: + - name:version + - name:alias + - digest + 指定しない場合、デフォルトで現在の run ID が先頭に付加されたパスのベース名になります。 + - `type`: (str) ログに記録するアーティファクトのタイプ。例として `dataset` や `model` などがあります。 + - `aliases`: (list, optional) このアーティファクトに適用するエイリアス。デフォルトは `["latest"]` です。 + - `tags`: (list, optional) このアーティファクトに適用するタグ(ある場合)。 + +**Returns:** + `Artifact` オブジェクト。 + +--- + +### method `Run.log_code` + +```python +log_code( + root: 'str | None' = '.', + name: 'str | None' = None, + include_fn: 'Callable[[str, str], bool] | Callable[[str], bool]' = , + exclude_fn: 'Callable[[str, str], bool] | Callable[[str], bool]' = +) → Artifact | None +``` + +コードの現在の状態を W&B Artifact として保存します。 + +デフォルトでは、現在のディレクトリーをスキャンし、`.py` で終わるすべてのファイルをログに記録します。 + +**Args:** + + - `root`: コードを再帰的に検索するための相対パス(`os.getcwd()` からの相対)または絶対パス。 + - `name`: (str, optional) コードアーティファクトの名前。デフォルトでは、アーティファクト名は `source-$PROJECT_ID-$ENTRYPOINT_RELPATH` になります。多くの run で同じアーティファクトを共有したいシナリオがあるかもしれません。name を指定することでそれを実現できます。 + - `include_fn`: ファイルパスと(オプションで)ルートパスを受け取り、含めるべき場合に True を、そうでない場合に False を返す呼び出し可能オブジェクト。 + - `デフォルト`: `lambda path, root: path.endswith(".py")`。 + - `exclude_fn`: ファイルパスと(オプションで)ルートパスを受け取り、除外すべき場合に `True` を、そうでない場合に `False` を返す呼び出し可能オブジェクト。デフォルトでは、`/.wandb/` および `/wandb/` ディレクトリー内のすべてのファイルを除外する関数になります。 + +**Examples:** + 基本的な使い方 + +```python +import wandb + +with wandb.init() as run: + run.log_code() +``` + +高度な使い方 + +```python +import wandb + +with wandb.init() as run: + run.log_code( + root="../", + include_fn=lambda path: path.endswith(".py") or path.endswith(".ipynb"), + exclude_fn=lambda path, root: os.path.relpath(path, root).startswith( + "cache/" + ), + ) +``` + +**Returns:** + コードがログに記録された場合は `Artifact` オブジェクト。 + +--- + +### method `Run.log_model` + +```python +log_model( + path: 'StrPath', + name: 'str | None' = None, + aliases: 'list[str] | None' = None +) → None +``` + +'path' 内のコンテンツを含むモデルアーティファクトを run にログ記録し、この run の出力としてマークします。 + +モデルアーティファクトの名前には、英数字、アンダースコア、ハイフンのみを使用できます。 + +**Args:** + + - `path`: (str) このモデルの内容へのパス。以下の形式が可能です: + - `/local/directory` + - `/local/directory/file.txt` + - `s3://bucket/path` + - `name`: ファイルの内容が追加されるモデルアーティファクトに割り当てる名前。指定しない場合、デフォルトで現在の run ID が先頭に付加されたパスのベース名になります。 + - `aliases`: 作成されたモデルアーティファクトに適用するエイリアス。デフォルトは `["latest"]` です。 + +**Raises:** + + - `ValueError`: name に無効な特殊文字が含まれている場合。 + +**Returns:** + None + +--- + +### method `Run.mark_preempting` + +```python +mark_preempting() → None +``` + +この run をプリエンプト(preempting)中としてマークします。 + +また、内部プロセスに対し、これを直ちにサーバーに報告するよう指示します。 + +--- + +### method `Run.restore` + +```python +restore( + name: 'str', + run_path: 'str | None' = None, + replace: 'bool' = False, + root: 'str | None' = None +) → None | TextIO +``` + +クラウドストレージから指定されたファイルをダウンロードします。 + +ファイルは現在のディレクトリーまたは run ディレクトリーに配置されます。デフォルトでは、ファイルがまだ存在しない場合にのみダウンロードされます。 + +**Args:** + + - `name`: ファイルの名前。 + - `run_path`: ファイルを取得する run へのオプションのパス(例: `username/project_name/run_id`)。`wandb.init` が呼び出されていない場合は必須です。 + - `replace`: ローカルにすでに存在する場合でもファイルをダウンロードするかどうか。 + - `root`: ファイルをダウンロードするディレクトリー。デフォルトは、現在のディレクトリー、または `wandb.init` が呼び出されている場合は run ディレクトリーです。 + +**Returns:** + ファイルが見つからない場合は None、それ以外の場合は読み取り用に開かれたファイルオブジェクト。 + +**Raises:** + + - `CommError`: W&B バックエンドに接続できない場合。 + - `ValueError`: ファイルが見つからない、または run_path が見つからない場合。 + +--- + +### method `Run.save` + +```python +save( + glob_str: 'str | os.PathLike', + base_path: 'str | os.PathLike | None' = None, + policy: 'PolicyName' = 'live' +) → bool | list[str] +``` + +1 つ以上のファイルを W&B に同期します。 + +相対パスは、現在の作業ディレクトリーからの相対パスです。 + +"myfiles/*" などの Unix glob は、`policy` に関係なく `save` が呼び出された時点で展開されます。特に、新しいファイルが自動的に取得されることはありません。 + +アップロードされたファイルのディレクトリー構造を制御するために、`base_path` を指定できます。これは `glob_str` のプレフィックスである必要があり、その下のディレクトリー構造が保持されます。 + +絶対パスまたは glob が指定され、`base_path` が指定されていない場合、上記の例のように 1 つのディレクトリーレベルが保持されます。 + +ファイルは自動的に重複排除されます。変更なしで同じファイルに対して `save()` を複数回呼び出しても、再アップロードは行われません。 + +**Args:** + + - `glob_str`: 相対パス、絶対パス、または Unix glob。 + - `base_path`: ディレクトリー構造を推論するために使用するパス。例を参照してください。 + - `policy`: `live`、`now`、`end` のいずれか。 + - live: ファイルが変更されるたびにアップロードし、以前のバージョンを上書きします。 + - now: 今すぐ一度だけファイルをアップロードします。 + - end: run が終了したときにファイルをアップロードします。 + +**Returns:** + 一致したファイルに対して作成されたシンボリックリンクへのパス。 + +歴史的な理由により、レガシーコードではブール値を返す場合があります。 + +```python +import wandb + +run = wandb.init() + +run.save("these/are/myfiles/*") +# => run 内の "these/are/myfiles/" フォルダにファイルを保存します。 + +run.save("these/are/myfiles/*", base_path="these") +# => run 内の "are/myfiles/" フォルダにファイルを保存します。 + +run.save("/Users/username/Documents/run123/*.txt") +# => run 内の "run123/" フォルダにファイルを保存します。以下の注意を参照。 + +run.save("/Users/username/Documents/run123/*.txt", base_path="/Users") +# => run 内の "username/Documents/run123/" フォルダにファイルを保存します。 + +run.save("files/*/saveme.txt") +# => 各 "saveme.txt" ファイルを "files/" の適切なサブディレクトリーに保存します。 + +# コンテキストマネージャを使用していないため、明示的に run を終了します。 +run.finish() +``` + +--- + +### method `Run.status` + +```python +status() → RunStatus +``` + +内部バックエンドから、現在の run の同期ステータスに関する同期情報を取得します。 + +--- + +### method `Run.unwatch` + +```python +unwatch( + models: 'torch.nn.Module | Sequence[torch.nn.Module] | None' = None +) → None +``` + +PyTorch モデルのトポロジー、勾配、およびパラメータのフックを削除します。 + +**Args:** + + - `models`: `watch` が呼び出された PyTorch モデルのオプションのリスト。 + +--- + +### method `Run.upsert_artifact` + +```python +upsert_artifact( + artifact_or_path: 'Artifact | str', + name: 'str | None' = None, + type: 'str | None' = None, + aliases: 'list[str] | None' = None, + distributed_id: 'str | None' = None +) → Artifact +``` + +run の出力として、未完了のアーティファクトを宣言(または追加)します。 + +アーティファクトを完成させるには `run.finish_artifact()` を呼び出す必要があることに注意してください。これは、分散ジョブがすべて同じアーティファクトに貢献する必要がある場合に便利です。 + +**Args:** + + - `artifact_or_path`: このアーティファクトの内容へのパス。以下の形式が可能です: + - `/local/directory` + - `/local/directory/file.txt` + - `s3://bucket/path` + - `name`: アーティファクト名。"entity/project" をプレフィックスとして付けることができます。指定しない場合、デフォルトで現在の run ID が先頭に付加されたパスのベース名になります。有効な名前の形式は以下の通りです: + - name:version + - name:alias + - digest + - `type`: ログに記録するアーティファクトのタイプ。一般的な例として `dataset` や `model` があります。 + - `aliases`: このアーティファクトに適用するエイリアス。デフォルトは `["latest"]` です。 + - `distributed_id`: すべての分散ジョブで共有される一意の文字列。None の場合、デフォルトで run のグループ名になります。 + +**Returns:** + `Artifact` オブジェクト。 + +--- + +### method `Run.use_artifact` + +```python +use_artifact( + artifact_or_name: 'str | Artifact', + type: 'str | None' = None, + aliases: 'list[str] | None' = None, + use_as: 'str | None' = None +) → Artifact +``` + +アーティファクトを run の入力として宣言します。 + +返されたオブジェクトに対して `download` または `file` を呼び出すことで、内容をローカルに取得できます。 + +**Args:** + + - `artifact_or_name`: 使用するアーティファクトの名前。アーティファクトがログ記録されたプロジェクト名("entity" または "entity/project")をプレフィックスとして付けることができます。名前に entity が指定されていない場合、Run または API 設定の entity が使用されます。有効な名前の形式は以下の通りです: + - name:version + - name:alias + - `type`: 使用するアーティファクトのタイプ。 + - `aliases`: このアーティファクトに適用するエイリアス。 + - `use_as`: この引数は非推奨であり、何もしません。 + +**Returns:** + `Artifact` オブジェクト。 + +**Examples:** + ```python +import wandb + +run = wandb.init(project="") + +# 名前とエイリアスでアーティファクトを使用 +artifact_a = run.use_artifact(artifact_or_name=":") + +# 名前とバージョンでアーティファクトを使用 +artifact_b = run.use_artifact(artifact_or_name=":v") + +# entity/project/name:alias でアーティファクトを使用 +artifact_c = run.use_artifact( + artifact_or_name="//:" +) + +# entity/project/name:version でアーティファクトを使用 +artifact_d = run.use_artifact( + artifact_or_name="//:v" +) + +# コンテキストマネージャを使用していないため、明示的に run を終了します。 +run.finish() +``` + +--- + +### method `Run.use_model` + +```python +use_model(name: 'str') → FilePathStr +``` + +モデルアーティファクト 'name' にログ記録されたファイルをダウンロードします。 + +**Args:** + + - `name`: モデルアーティファクト名。'name' は既存のログ記録されたモデルアーティファクトの名前と一致する必要があります。`entity/project/` をプレフィックスとして付けることができます。有効な名前の形式は以下の通りです: + - model_artifact_name:version + - model_artifact_name:alias + +**Returns:** + + - `path` (str): ダウンロードされたモデルアーティファクトファイルへのパス。 + +**Raises:** + + - `AssertionError`: モデルアーティファクト 'name' のタイプに 'model' という文字列が含まれていない場合。 + +--- + +### method `Run.watch` + +```python +watch( + models: 'torch.nn.Module | Sequence[torch.nn.Module]', + criterion: 'torch.F | None' = None, + log: "Literal['gradients', 'parameters', 'all'] | None" = 'gradients', + log_freq: 'int' = 1000, + idx: 'int | None' = None, + log_graph: 'bool' = False +) → None +``` + +指定された PyTorch モデルにフックして、勾配とモデルの計算グラフを監視します。 + +この関数は、トレーニング中のパラメータ、勾配、またはその両方を追跡できます。 + +**Args:** + + - `models`: 監視対象となる単一のモデルまたはモデルのシーケンス。 + - `criterion`: 最適化される損失関数(オプション)。 + - `log`: "gradients"、"parameters"、または "all" のどれをログに記録するかを指定します。ログ記録を無効にするには None を設定します。(デフォルト="gradients")。 + - `log_freq`: 勾配とパラメータをログに記録する頻度(バッチ単位)。(デフォルト=1000) + - `idx`: `wandb.watch` で複数のモデルを追跡する際に使用されるインデックス。(デフォルト=None) + - `log_graph`: モデルの計算グラフをログに記録するかどうか。(デフォルト=False) + +**Raises:** + ValueError: `wandb.init()` が呼び出されていない場合、またはモデルのいずれかが `torch.nn.Module` のインスタンスではない場合。 \ No newline at end of file diff --git a/ja/models/ref/python/experiments/settings.mdx b/ja/models/ref/python/experiments/settings.mdx new file mode 100644 index 0000000000..fcbf9c272a --- /dev/null +++ b/ja/models/ref/python/experiments/settings.mdx @@ -0,0 +1,455 @@ +--- +title: 設定 +namespace: python_sdk_actions +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Settings` +W&B SDKの設定。 + +このクラスはW&B SDKの設定を管理し、すべての設定の型安全性とバリデーションを保証します。設定は属性としてアクセスでき、プログラム、環境変数(`WANDB_` プレフィックス)、または設定ファイルを通じて初期化できます。 + +設定は以下の3つのカテゴリーに分類されます: +1. 公開設定:ユーザーが特定のニーズに合わせてW&Bの振る舞いをカスタマイズするために安全に変更できるコア設定オプション。 +2. 内部設定:低レベルのSDKの振る舞いを処理する、'x_' プレフィックスが付いた設定。これらは主に内部利用およびデバッグ用です。変更は可能ですが、公開APIの一部とは見なされず、将来のバージョンで予告なく変更される可能性があります。 +3. 計算済み設定:他の設定や環境から自動的に派生する読み取り専用の設定。 + +### method `Settings.__init__` + +```python +__init__( + allow_offline_artifacts: 'bool' = True, + allow_val_change: 'bool' = False, + anonymous: 'object' = , + api_key: 'str | None' = None, + azure_account_url_to_access_key: 'dict[str, str] | None' = None, + app_url_override: 'str | None' = None, + base_url: 'str' = 'https://api.wandb.ai', + code_dir: 'str | None' = None, + config_paths: 'Sequence | None' = None, + console: 'Literal['auto', 'off', 'wrap', 'redirect', 'wrap_raw', 'wrap_emu']' = 'auto', + console_multipart: 'bool' = False, + console_chunk_max_bytes: 'int' = 0, + console_chunk_max_seconds: 'int' = 0, + credentials_file: 'str' = None, + disable_code: 'bool' = False, + disable_git: 'bool' = False, + disable_job_creation: 'bool' = True, + docker: 'str | None' = None, + email: 'str | None' = None, + entity: 'str | None' = None, + organization: 'str | None' = None, + force: 'bool' = False, + fork_from: 'RunMoment | None' = None, + git_commit: 'str | None' = None, + git_remote: 'str' = 'origin', + git_remote_url: 'str | None' = None, + git_root: 'str | None' = None, + heartbeat_seconds: 'int' = 30, + host: 'str | None' = None, + http_proxy: 'str | None' = None, + https_proxy: 'str | None' = None, + identity_token_file: 'str | None' = None, + ignore_globs: 'Sequence' = (), + init_timeout: 'float' = 90.0, + insecure_disable_ssl: 'bool' = False, + job_name: 'str | None' = None, + job_source: 'Literal['repo', 'artifact', 'image'] | None' = None, + label_disable: 'bool' = False, + launch: 'bool' = False, + launch_config_path: 'str | None' = None, + login_timeout: 'float | None' = None, + mode: 'Literal['online', 'offline', 'shared', 'disabled', 'dryrun', 'run']' = 'online', + notebook_name: 'str | None' = None, + program: 'str | None' = None, + program_abspath: 'str | None' = None, + program_relpath: 'str | None' = None, + project: 'str | None' = None, + quiet: 'bool' = False, + reinit: 'Literal['default', 'return_previous', 'finish_previous', 'create_new'] | bool' = 'default', + relogin: 'bool' = False, + resume: 'Literal['allow', 'must', 'never', 'auto'] | None' = None, + resume_from: 'RunMoment | None' = None, + resumed: 'bool' = False, + root_dir: 'str' = None, + run_group: 'str | None' = None, + run_id: 'str | None' = None, + run_job_type: 'str | None' = None, + run_name: 'str | None' = None, + run_notes: 'str | None' = None, + run_tags: 'tuple[str, Ellipsis] | None' = None, + sagemaker_disable: 'bool' = False, + save_code: 'bool | None' = None, + settings_system: 'str | None' = None, + max_end_of_run_history_metrics: 'int' = 10, + max_end_of_run_summary_metrics: 'int' = 10, + show_colors: 'bool | None' = None, + show_emoji: 'bool | None' = None, + show_errors: 'bool' = True, + show_info: 'bool' = True, + show_warnings: 'bool' = True, + silent: 'bool' = False, + start_method: 'str | None' = None, + strict: 'bool | None' = None, + summary_timeout: 'int' = 60, + summary_warnings: 'int' = 5, + sweep_id: 'str | None' = None, + sweep_param_path: 'str | None' = None, + symlink: 'bool' = None, + sync_tensorboard: 'bool | None' = None, + table_raise_on_max_row_limit_exceeded: 'bool' = False, + use_dot_wandb: 'bool | None' = None, + username: 'str | None' = None, + x_cli_only_mode: 'bool' = False, + x_disable_meta: 'bool' = False, + x_disable_stats: 'bool' = False, + x_disable_viewer: 'bool' = False, + x_disable_machine_info: 'bool' = False, + x_executable: 'str | None' = None, + x_extra_http_headers: 'dict[str, str] | None' = None, + x_file_stream_max_bytes: 'int | None' = None, + x_file_stream_max_line_bytes: 'int | None' = None, + x_file_stream_transmit_interval: 'float | None' = None, + x_file_stream_retry_max: 'int | None' = None, + x_file_stream_retry_wait_min_seconds: 'float | None' = None, + x_file_stream_retry_wait_max_seconds: 'float | None' = None, + x_file_stream_timeout_seconds: 'float | None' = None, + x_file_transfer_retry_max: 'int | None' = None, + x_file_transfer_retry_wait_min_seconds: 'float | None' = None, + x_file_transfer_retry_wait_max_seconds: 'float | None' = None, + x_file_transfer_timeout_seconds: 'float | None' = None, + x_files_dir: 'str | None' = None, + x_flow_control_custom: 'bool | None' = None, + x_flow_control_disabled: 'bool | None' = None, + x_graphql_retry_max: 'int | None' = None, + x_graphql_retry_wait_min_seconds: 'float | None' = None, + x_graphql_retry_wait_max_seconds: 'float | None' = None, + x_graphql_timeout_seconds: 'float | None' = None, + x_internal_check_process: 'float' = 8.0, + x_jupyter_name: 'str | None' = None, + x_jupyter_path: 'str | None' = None, + x_jupyter_root: 'str | None' = None, + x_label: 'str | None' = None, + x_live_policy_rate_limit: 'int | None' = None, + x_live_policy_wait_time: 'int | None' = None, + x_log_level: 'int' = 20, + x_network_buffer: 'int | None' = None, + x_primary: 'bool' = True, + x_proxies: 'dict[str, str] | None' = None, + x_runqueue_item_id: 'str | None' = None, + x_save_requirements: 'bool' = True, + x_server_side_derived_summary: 'bool' = False, + x_server_side_expand_glob_metrics: 'bool' = True, + x_service_transport: 'str | None' = None, + x_service_wait: 'float' = 30.0, + x_skip_transaction_log: 'bool' = False, + x_start_time: 'float | None' = None, + x_stats_pid: 'int' = 30457, + x_stats_sampling_interval: 'float' = 15.0, + x_stats_neuron_monitor_config_path: 'str | None' = None, + x_stats_dcgm_exporter: 'str | None' = None, + x_stats_open_metrics_endpoints: 'dict[str, str] | None' = None, + x_stats_open_metrics_filters: 'dict[str, dict[str, str]] | Sequence | None' = None, + x_stats_open_metrics_http_headers: 'dict[str, str] | None' = None, + x_stats_disk_paths: 'Sequence | None' = ('/',), + x_stats_cpu_count: 'int | None' = None, + x_stats_cpu_logical_count: 'int | None' = None, + x_stats_gpu_count: 'int | None' = None, + x_stats_gpu_type: 'str | None' = None, + x_stats_gpu_device_ids: 'Sequence | None' = None, + x_stats_buffer_size: 'int' = 0, + x_stats_coreweave_metadata_base_url: 'str' = 'http://169.254.169.254', + x_stats_coreweave_metadata_endpoint: 'str' = '/api/v2/cloud-init/meta-data', + x_stats_track_process_tree: 'bool' = False, + x_sync: 'bool' = False, + x_sync_dir_suffix: 'str' = '', + x_update_finish_state: 'bool' = True +) → None +``` + +**Args:** + + - `allow_offline_artifacts` (bool): オフラインモードでテーブルの Artifacts を同期可能にするフラグ。以前の振る舞いに戻すには、これを False に設定してください。 + - `allow_val_change` (bool): 設定後の `Config` 値の変更を許可するフラグ。 + - `anonymous` (object): 非推奨であり、削除される予定です。 + - `api_key` (Optional[str]): W&B APIキー。 + - `azure_account_url_to_access_key` (Optional[Dict[str, str]]): Azure インテグレーションのための、Azure アカウント URL と対応するアクセスキーのマッピング。 + - `app_url_override` (Optional[str]): W&B UI の 'app' URL のオーバーライド。`app_url` は通常 `base_url` に基づいて計算されますが、これを明示的に設定するために使用できます。対応する環境変数は WANDB_APP_URL です。 + - `base_url` (str): データ同期のための W&B バックエンドの URL。 + - `code_dir` (Optional[str]): W&B によって追跡されるコードを含むディレクトリー。 + - `config_paths` (Optional[Sequence]): `Config` オブジェクトに設定を読み込むためのファイルへのパス。 + - `console` (Literal['auto', 'off', 'wrap', 'redirect', 'wrap_raw', 'wrap_emu']): 適用されるコンソールキャプチャのタイプ。利用可能な値: + - "auto" - システム環境と設定に基づいてコンソールキャプチャ方法を自動的に選択します。 + - "off" - コンソールキャプチャを無効にします。 + - "redirect" - 出力をキャプチャするために低レベルのファイル記述子をリダイレクトします。 + - "wrap" - sys.stdout/sys.stderr の書き込みメソッドをオーバーライドします。システムの状況に応じて "wrap_raw" または "wrap_emu" にマッピングされます。 + - "wrap_raw" - "wrap" と同じですが、エミュレータを通さず直接生の出力をキャプチャします。`wrap` 設定から派生し、手動で設定すべきではありません。 + - "wrap_emu" - "wrap" と同じですが、エミュレータを通じて出力をキャプチャします。`wrap` 設定から派生し、手動で設定すべきではありません。 + - `console_multipart` (bool): マルチパートコンソールログを有効にします。True の場合、SDK はコンソール出力を単一の `output.log` ではなく、`logs/` ディレクトリー下のタイムスタンプ付きファイルに書き込みます。各パートは閉じられるとすぐにアップロードされ、Run がアクティブな間にログへのライブアクセスが可能になります。ローテーションの周期は `console_chunk_max_bytes` や `console_chunk_max_seconds` で制御されます。両方の制限が `0` の場合、すべてのログは Run の終了時に一度にアップロードされます。注意:アップロードされたチャンクは不変です。前の行を変更するターミナル制御シーケンス(キャリッジリターンを使用するプログレスバーなど)は、現在のチャンクにのみ影響します。 + - `console_chunk_max_bytes` (int): マルチパートコンソールログのサイズベースのローテーションしきい値(バイト単位)。現在のパートがこのサイズに達すると、新しいコンソールログファイルを開始します。`console_multipart` が `True` の場合にのみ効果があります。`console_chunk_max_seconds` と組み合わせることができ、どちらかの制限に先に達した方がローテーションをトリガーします。`0` の場合はサイズベースの制限を無効にします。 + - `console_chunk_max_seconds` (int): マルチパートコンソールログの時間ベースのローテーションしきい値(秒単位)。現在のパートが開始されてからこの秒数が経過すると、新しいコンソールログファイルを開始します。`console_multipart` が `True` である必要があります。`console_chunk_max_bytes` と併用でき、最初の制限に達した時点でパートが閉じられます。`0` の場合は時間ベースの制限を無効にします。 + - `credentials_file` (str): 一時的なアクセスキーを書き込むためのファイルパス。 + - `disable_code` (bool): コードのキャプチャを無効にするかどうか。 + - `disable_git` (bool): git の状態のキャプチャを無効にするかどうか。 + - `disable_job_creation` (bool): W&B Launch のジョブアーティファクト作成を無効にするかどうか。 + - `docker` (Optional[str]): スクリプトの実行に使用される Docker イメージ。 + - `email` (Optional[str]): ユーザーのメールアドレス。 + - `entity` (Optional[str]): ユーザーやチームなどの W&B entity。 + - `organization` (Optional[str]): W&B organization。 + - `force` (bool): `wandb.login()` に `force` フラグを渡すかどうか。 + - `fork_from` (Optional[RunMoment]): フォーク元の以前の Run 実行のポイントを指定します。ポイントは Run ID、メトリクス、およびその値によって定義されます。現在、メトリクスは '_step' のみがサポートされています。 + - `git_commit` (Optional[str]): Run に関連付ける git コミットハッシュ。 + - `git_remote` (str): Run に関連付ける git remote。 + - `git_remote_url` (Optional[str]): git remote リポジトリの URL。 + - `git_root` (Optional[str]): git リポジトリのルートディレクトリー。 + + - `host` (Optional[str]): スクリプトを実行しているマシンのホスト名。 + - `http_proxy` (Optional[str]): W&B への HTTP リクエスト用のカスタムプロキシサーバー。 + - `https_proxy` (Optional[str]): W&B への HTTPS リクエスト用のカスタムプロキシサーバー。 + - `identity_token_file` (Optional[str]): 認証用の識別トークン (JWT) を含むファイルへのパス。 + - `ignore_globs` (Sequence): アップロードから除外するファイルを指定する、`files_dir` からの相対的な Unix グロブパターン。 + - `init_timeout` (float): `wandb.init` 呼び出しが完了するまで待機するタイムアウト時間(秒)。 + - `insecure_disable_ssl` (bool): SSL 検証を安全でない方法で無効にするかどうか。 + - `job_name` (Optional[str]): スクリプトを実行している Launch ジョブの名前。 + - `job_source` (Optional[Literal['repo', 'artifact', 'image']]): Launch のソースタイプ。 + - `label_disable` (bool): 自動ラベル付け機能を無効にするかどうか。 + + - `launch_config_path` (Optional[str]): ローンチ設定ファイルへのパス。 + - `login_timeout` (Optional[float]): ログイン操作のタイムアウトまでの待機時間(秒)。 + - `mode` (Literal['online', 'offline', 'shared', 'disabled', 'dryrun', 'run']): W&B のロギングおよび同期の動作モード。 + - `notebook_name` (Optional[str]): Jupyter のような環境で実行している場合のノートブック名。 + - `program` (Optional[str]): 利用可能な場合、Run を作成したスクリプトへのパス。 + - `program_abspath` (Optional[str]): リポジトリのルートディレクトリーから、Run を作成したスクリプトまでの絶対パス。ルートリポジトリディレクトリーは、.git ディレクトリーが存在する場合はそれを含むディレクトリー、存在しない場合は現在の作業ディレクトリーとして定義されます。 + - `program_relpath` (Optional[str]): Run を作成したスクリプトへの相対パス。 + - `project` (Optional[str]): W&B プロジェクト ID。 + - `quiet` (bool): 非必須の出力を抑制するフラグ。 + - `reinit` (Union[Literal['default', 'return_previous', 'finish_previous', 'create_new'], bool]): Run がアクティブな間に `wandb.init()` が呼び出された場合の処理。 + オプション: + - "default": ノートブックでは "finish_previous"、それ以外では "return_previous" を使用します。 + - "return_previous": まだ終了していない直近に作成された Run を返します。これは `wandb.run` を更新しません。"create_new" オプションを参照してください。 + - "finish_previous": すべてのアクティブな Run を終了させ、新しい Run を返します。 + - "create_new": 他のアクティブな Run を変更せずに新しい Run を作成します。`wandb.run` や `wandb.log` のようなトップレベル関数は更新されません。このため、グローバルな Run に依存する古いインテグレーションの一部は動作しません。 + ブール値も指定可能ですが、非推奨です。False は "return_previous" と同じ、True は "finish_previous" と同じです。 + - `relogin` (bool): 新しいログイン試行を強制するフラグ。 + - `resume` (Optional[Literal['allow', 'must', 'never', 'auto']]): Run の再開(resume)動作を指定します。 + オプション: + - "must": 同じ ID を持つ既存の Run から再開します。そのような Run が存在しない場合は失敗します。 + - "allow": 同じ ID を持つ既存の Run からの再開を試みます。見つからない場合は、新しい Run が作成されます。 + - "never": 常に新しい Run を開始します。同じ ID の Run が既に存在する場合は失敗します。 + - "auto": 同じマシン上の直近の失敗した Run から自動的に再開します。 + - `resume_from` (Optional[RunMoment]): 再開元の以前の Run 実行のポイントを指定します。ポイントは Run ID、メトリクス、およびその値によって定義されます。現在、メトリクスは '_step' のみがサポートされています。 + + - `root_dir` (str): すべての Run 関連パスのベースとして使用するルートディレクトリー。特に、wandb ディレクトリーと Run ディレクトリーの派生に使用されます。 + - `run_group` (Optional[str]): 関連する Runs のグループ識別子。UI で Runs をグループ化するために使用されます。 + - `run_id` (Optional[str]): Run の ID。 + - `run_job_type` (Optional[str]): 実行中のジョブのタイプ(例:training, evaluation)。 + - `run_name` (Optional[str]): Run の人間が読める名前。 + - `run_notes` (Optional[str]): Run に関する追加のノートまたは説明。 + - `run_tags` (Optional[Tuple[str, Ellipsis]]): 整理やフィルタリングのために Run に関連付けるタグ。 + - `sagemaker_disable` (bool): SageMaker 固有の機能を無効にするフラグ。 + - `save_code` (Optional[bool]): Run に関連付けられたコードを保存するかどうか。 + - `settings_system` (Optional[str]): システム全体の設定ファイルへのパス。 + - `max_end_of_run_history_metrics` (int): Run の終了時に表示する履歴スパークラインの最大数。 + - `max_end_of_run_summary_metrics` (int): Run の終了時に表示するサマリーメトリクスの最大数。 + + - `show_errors` (bool): エラーメッセージを表示するかどうか。 + - `show_info` (bool): 情報メッセージを表示するかどうか。 + - `show_warnings` (bool): 警告メッセージを表示するかどうか。 + - `silent` (bool): すべての出力を抑制するフラグ。 + + - `strict` (Optional[bool]): バリデーションとエラーチェックのために厳格モードを有効にするかどうか。 + - `summary_timeout` (int): サマリー操作のタイムアウトまでの待機時間(秒)。 + + - `sweep_id` (Optional[str]): この Run が属する Sweep の識別子。 + - `sweep_param_path` (Optional[str]): Sweep パラメータ設定へのパス。 + - `symlink` (bool): シンボリックリンクを使用するかどうか(Windows を除きデフォルトで True)。 + - `sync_tensorboard` (Optional[bool]): TensorBoard ログを W&B と同期するかどうか。 + - `table_raise_on_max_row_limit_exceeded` (bool): テーブルの行制限を超えたときに例外を発生させるかどうか。 + - `use_dot_wandb` (Optional[bool]): Run データに隠しディレクトリー `.wandb` または可視ディレクトリー `wandb` を使用するかどうか。True の場合、SDK は `.wandb` を使用します。False の場合は `wandb` です。未設定の場合、`.wandb` が既に存在すればそれを使用し、そうでなければ `wandb` を使用します。 + - `username` (Optional[str]): ユーザー名。 + + - `x_disable_meta` (bool): システムメタデータの収集を無効にするフラグ。 + - `x_disable_stats` (bool): システムメトリクスの収集を無効にするフラグ。 + + - `x_extra_http_headers` (Optional[Dict[str, str]]): すべての送信 HTTP リクエストに追加するヘッダー。 + + - `x_label` (Optional[str]): Run に対して収集されたシステムメトリクスとコンソールログに割り当てるラベル。これはフロントエンドでデータをグループ化するために使用され、分散トレーニングジョブで異なるプロセスのデータを区別するために使用できます。 + + - `x_primary` (bool): 内部の wandb ファイルとメタデータを保存するかどうかを決定します。分散環境において、プライマリプロセスがメインのロギングを処理し、セカンダリプロセスからはシステムメトリクスとログのみが必要な場合に、ファイルの上書きを避けるために役立ちます。 + + - `x_save_requirements` (bool): requirements ファイルを保存するフラグ。 + - `x_server_side_derived_summary` (bool): 履歴からのサマリーの自動計算をサーバーに委任するフラグ。ユーザー提供のサマリー更新は無効になりません。 + + - `x_service_wait` (float): wandb-core 内部サービスが開始されるまで待機する時間(秒)。 + - `x_skip_transaction_log` (bool): Run イベントのトランザクションログへの保存をスキップするかどうか。これはオンライン Run にのみ関連します。ディスクへの書き込みデータ量を減らすために使用できます。回復可能性に関する保証が失われるため、注意して使用する必要があります。 + + - `x_stats_sampling_interval` (float): システムモニターのサンプリング間隔(秒)。 + + - `x_stats_dcgm_exporter` (Optional[str]): Nvidia DCGM メトリクスを抽出するエンドポイント。 + オプション: + - Prometheus の `/api/v1/query` エンドポイントへのクエリから DCGM 関連のメトリクスを抽出します。クラスター内の異なるノードで実行されている DCGM Exporter のインスタンスによって報告されたメトリクスを Prometheus を使用して集計するのが一般的です。 + - TODO: DCGM Exporter の `/metrics` エンドポイントから直接メトリクスを解析します。 + 例: + - `http://localhost:9400/api/v1/query?query=DCGM_FI_DEV_GPU_TEMP{node="l1337", cluster="globular"}`。 + + - `x_stats_open_metrics_endpoints` (Optional[Dict[str, str]]): システムメトリクスを監視するための OpenMetrics `/metrics` エンドポイント。 + - `x_stats_open_metrics_filters` (Union[Dict[str, Dict[str, str]], Sequence, None]): OpenMetrics `/metrics` エンドポイントから収集されたメトリクスに適用するフィルター。2つの形式をサポートします: + - `{"エンドポイント名をプレフィックスとして含むメトリクス正規表現パターン": {"ラベル": "ラベル値正規表現パターン"}}` + - `("メトリクス正規表現パターン 1", "メトリクス正規表現パターン 2", ...)` + - `x_stats_open_metrics_http_headers` (Optional[Dict[str, str]]): OpenMetrics リクエストに追加する HTTP ヘッダー。 + - `x_stats_disk_paths` (Optional[Sequence]): ディスク使用量を監視するシステムパス。 + - `x_stats_cpu_count` (Optional[int]): システムの CPU 数。設定された場合、Run メタデータ内の自動検出値をオーバーライドします。 + - `x_stats_cpu_logical_count` (Optional[int]): 論理 CPU 数。設定された場合、Run メタデータ内の自動検出値をオーバーライドします。 + - `x_stats_gpu_count` (Optional[int]): GPU デバイス数。設定された場合、Run メタデータ内の自動検出値をオーバーライドします。 + - `x_stats_gpu_type` (Optional[str]): GPU デバイスタイプ。設定された場合、Run メタデータ内の自動検出値をオーバーライドします。 + - `x_stats_gpu_device_ids` (Optional[Sequence]): 監視する GPU デバイスインデックス。未設定の場合、システムモニターはすべての GPU のメトリクスをキャプチャします。CUDA/ROCm デバイスの列挙と一致する 0 から始まるインデックスを想定します。 + + - `x_stats_track_process_tree` (bool): `x_stats_pid` から始まるプロセスツリー全体の計算リソース使用量を監視します。`True` の場合、システムモニターは PID `x_stats_pid` のプロセスとそのすべての末端プロセスから RSS、CPU%、およびスレッド数を集計します。これにはパフォーマンスのオーバーヘッドが発生する可能性があり、デフォルトでは無効になっています。 + + - `x_sync_dir_suffix` (str): Run のディレクトリー名 (sync_dir) に追加するサフィックス。名前の衝突を避けるために wandb.init() で設定されます。設定されている場合、デフォルト名にダッシュで結合されます。 + - `x_update_finish_state` (bool): このプロセスがサーバー上の Run の最終状態を更新できるかどうかを示すフラグ。分散トレーニングでメインプロセスのみが最終状態を決定すべき場合に False に設定します。 + +**Returns:** + `Settings` オブジェクト。 + +### property `Settings.app_url` + +W&B UI の URL。通常は https://wandb.ai。 + +これは、プログラムで W&B API にアクセスするために使用される `base_url` (https://api.wandb.ai など) とは異なります。 + +**Returns:** + - `str`: app_url プロパティの値。 + +### property `Settings.colab_url` + +Colab で実行されている場合の Colab ノートブックへの URL。 + +**Returns:** + - `Optional[str]`: colab_url プロパティの値。 + +### property `Settings.deployment` + +### property `Settings.files_dir` + +Run のファイルが保存されるローカルディレクトリーへの絶対パス。 + +**Returns:** + - `str`: files_dir プロパティの値。 + +### property `Settings.is_local` + +### property `Settings.log_dir` + +ログファイルを保存するためのディレクトリー。 + +**Returns:** + - `str`: log_dir プロパティの値。 + +### property `Settings.log_internal` + +内部ログに使用するファイルへのパス。 + +**Returns:** + - `str`: log_internal プロパティの値。 + +### property `Settings.log_symlink_internal` + +最新の Run の内部ログファイルへのシンボリックリンクのパス。 + +**Returns:** + - `str`: log_symlink_internal プロパティの値。 + +### property `Settings.log_symlink_user` + +最新の Run のユーザープロセスログファイルへのシンボリックリンクのパス。 + +**Returns:** + - `str`: log_symlink_user プロパティの値。 + +### property `Settings.log_user` + +ユーザープロセスログに使用するファイルへのパス。 + +**Returns:** + - `str`: log_user プロパティの値。 + +### property `Settings.project_url` + +プロジェクトを表示できる W&B の URL。 + +**Returns:** + - `str`: project_url プロパティの値。 + +### property `Settings.resume_fname` + +再開(resume)ファイルへのパス。 + +**Returns:** + - `str`: resume_fname プロパティの値。 + +### property `Settings.run_mode` + +Run のモード。"run" または "offline-run" のいずれか。 + +**Returns:** + - `Literal['run', 'offline-run']`: run_mode プロパティの値。 + +### property `Settings.run_url` + +Run を表示できる W&B の URL。 + +**Returns:** + - `str`: run_url プロパティの値。 + +### property `Settings.settings_workspace` + +ワークスペース設定ファイルへのパス。 + +**Returns:** + - `str`: settings_workspace プロパティの値。 + +### property `Settings.sweep_url` + +Sweep を表示できる W&B の URL。 + +**Returns:** + - `str`: sweep_url プロパティの値。 + +### property `Settings.sync_dir` + +Run のファイルを保存するためのディレクトリー。 + +**Returns:** + - `str`: sync_dir プロパティの値。 + +### property `Settings.sync_file` + +追加専用のバイナリトランザクションログファイルへのパス。 + +**Returns:** + - `str`: sync_file プロパティの値。 + +### property `Settings.sync_symlink_latest` + +最新の Run のトランザクションログファイルへのシンボリックリンクのパス。 + +**Returns:** + - `str`: sync_symlink_latest プロパティの値。 + +### property `Settings.timespec` + +Run の時間指定。 + +**Returns:** + - `str`: timespec プロパティの値。 + +### property `Settings.wandb_dir` + +wandb ディレクトリーへのフルパス。 + +**Returns:** + - `str`: wandb_dir プロパティの値。 \ No newline at end of file diff --git a/ja/models/ref/python/experiments/system-metrics.mdx b/ja/models/ref/python/experiments/system-metrics.mdx new file mode 100644 index 0000000000..3ebc9f8c59 --- /dev/null +++ b/ja/models/ref/python/experiments/system-metrics.mdx @@ -0,0 +1,389 @@ +--- +title: システムメトリクス・リファレンス +description: W&B によって自動的にログが記録されるメトリクス。 +aliases: +- /platform/app/settings-page/system-metrics/ +- /guides/ref/system-metrics +--- + +このページでは、W&B SDKによって追跡されるシステムメトリクスに関する詳細な情報を提供します。 + + +`wandb` は15秒ごとにシステムメトリクスを自動的にログに記録します。 + + +## システムメトリクスの表示 +W&B App または `wandb beta leet` ターミナルUIを使用して、システムメトリクスを表示および監視できます。 + + + + +W&B Appでシステムメトリクスを表示するには: + +1. W&B Appでプロジェクトに移動します。 +2. **Runs** テーブルから run を選択します。 +3. Workspace 内で、以下のチャートを表示する **System** セクションを探します: + - GPU の使用率とメモリ + - CPU 使用率 + - メモリ使用率 + - ディスク I/O + - ネットワークトラフィック + +Workspace にパネルを追加することで、表示するシステムメトリクスをカスタマイズできます。可視化の作成とカスタマイズの詳細については、[Panels](/models/app/features/panels/) を参照してください。 + + + + +`wandb beta leet` ターミナルUIを使用して、ターミナルで run のシステムメトリクスを表示するには: + +1. スクリプトからローカルで run を開始した場合、コードを実行したディレクトリーに移動します。そこには `wandb/` ディレクトリーがあり、run ごとのサブディレクトリーと `latest-run/` シンボリックリンクが含まれています。各 run ディレクトリーには、`run-.wandb` という形式の名前のトランザクションログが含まれています。 + + ローカルで run を開始せずに、代わりに `.wandb` トランザクションログファイルをダウンロードした場合は、その場所をメモしておいてください。 +2. 以下のいずれかのコマンドを使用して `wandb beta leet` を開始します: + + ```bash + # ./wandb/latest-run/ に保存されている最新の run を表示 + wandb beta leet + + # run ディレクトリーを指定 + wandb beta leet ./wandb/run-20250813_124246-n67z9ude + + # .wandb ファイルを指定 + wandb beta leet ./wandb/run-20250813_124246-n67z9ude/run-n67z9ude.wandb + ``` + +![LEET ターミナルUIで run を表示するスクリーンショット](/images/leet/leet-tui.png) + +LEET は **右サイドバー** にシステムメトリクスを表示し、以下を示します: +- GPU 使用率 (%) とメモリ使用量 (GB) +- CPU 使用率 +- RAM 使用量 (GB) +- ディスク I/O +- ネットワークアクティビティ + +以下のキーボードショートカットで操作を開始できます: +- `h` または `?` - すべてのキーボードショートカットを表示 +- `/` - パターンでメトリクスをフィルタリング +- `[` / `]` - 左右のサイドバーの切り替え +- `n` / `N` - メトリクスページ間の移動 +- `q` / `CMD+C` - 終了 + +詳細は [`wandb beta leet`](/models/ref/cli/wandb-beta/wandb-beta-leet) を参照してください。 + + + + +## CPU + +### プロセス CPU 使用率 (CPU) +プロセスによる CPU 使用率の割合。利用可能な CPU 数で正規化されています。 + +W&B はこのメトリクスに `cpu` タグを割り当てます。 + +### プロセス CPU スレッド +プロセスによって利用されているスレッドの数。 + +W&B はこのメトリクスに `proc.cpu.threads` タグを割り当てます。 + +{/* New section */} + +## ディスク + +デフォルトでは、使用量メトリクスは `/` パスに対して収集されます。監視するパスを設定するには、以下の設定を使用します: + +```python +run = wandb.init( + settings=wandb.Settings( + x_stats_disk_paths=("/System/Volumes/Data", "/home", "/mnt/data"), + ), +) +``` + +### ディスク使用率 +指定されたパスにおけるシステム全体のディスク使用率をパーセントで表します。 + +W&B はこのメトリクスに `disk.{path}.usagePercent` タグを割り当てます。 + +### ディスク使用量 +指定されたパスにおけるシステム全体のディスク使用量をギガバイト (GB) で表します。 +アクセス可能なパスがサンプリングされ、各パスのディスク使用量 (GB) がサンプルに追加されます。 + +W&B はこのメトリクスに `disk.{path}.usageGB` タグを割り当てます。 + +### ディスク入力 (Disk In) +システム全体のディスク読み取り合計をメガバイト (MB) で示します。 +最初のサンプル取得時に初期ディスク読み取りバイト数が記録されます。それ以降のサンプルでは、現在の読み取りバイト数と初期値の差分が計算されます。 + +W&B はこのメトリクスに `disk.in` タグを割り当てます。 + +### ディスク出力 (Disk Out) +システム全体のディスク書き込み合計をメガバイト (MB) で表します。 +[ディスク入力]() と同様に、最初のサンプル取得時に初期ディスク書き込みバイト数が記録されます。それ以降のサンプルでは、現在の書き込みバイト数と初期値の差分が計算されます。 + +W&B はこのメトリクスに `disk.out` タグを割り当てます。 + + +{/* New section */} + +## メモリ + +### プロセスメモリ RSS +プロセスのメモリ常駐セットサイズ (RSS) をメガバイト (MB) で表します。RSS は、プロセスによって占有されているメモリのうち、メインメモリ (RAM) に保持されている部分です。 + +W&B はこのメトリクスに `proc.memory.rssMB` タグを割り当てます。 + +### プロセスメモリ使用率 +利用可能な全メモリに対するプロセスのメモリ使用量の割合を示します。 + +W&B はこのメトリクスに `proc.memory.percent` タグを割り当てます。 + +### メモリ使用率 +利用可能な全メモリに対するシステム全体のメモリ使用率を表します。 + +W&B はこのメトリクスに `memory_percent` タグを割り当てます。 + +### 利用可能メモリ +システム全体の利用可能な合計メモリをメガバイト (MB) で示します。 + +W&B はこのメトリクスに `proc.memory.availableMB` タグを割り当てます。 + +{/* New section */} + +## ネットワーク + +### ネットワーク送信量 (Network Sent) +ネットワーク経由で送信された合計バイト数を表します。 +メトリクスが最初に初期化されたときに、初期送信バイト数が記録されます。それ以降のサンプルでは、現在の送信バイト数と初期値の差分が計算されます。 + +W&B はこのメトリクスに `network.sent` タグを割り当てます。 + +### ネットワーク受信量 (Network Received) + +ネットワーク経由で受信した合計バイト数を示します。 +[ネットワーク送信量]() と同様に、メトリクスが最初に初期化されたときに初期受信バイト数が記録されます。それ以降のサンプルでは、現在の受信バイト数と初期値の差分が計算されます。 + +W&B はこのメトリクスに `network.recv` タグを割り当てます。 + +{/* New section */} + +## NVIDIA GPU + +以下に説明するメトリクスに加えて、プロセスまたはその子孫が特定の GPU を使用している場合、W&B は対応するメトリクスを `gpu.process.{gpu_index}.{metric_name}` として取得します。 + +### GPU メモリ使用率 +各 GPU の GPU メモリ使用率をパーセントで表します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.memory` タグを割り当てます。 + +### GPU 割り当て済みメモリ +各 GPU の全利用可能メモリに対する、割り当て済み GPU メモリの割合を示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.memoryAllocated` タグを割り当てます。 + +### GPU 割り当て済みメモリ (バイト) +各 GPU の割り当て済み GPU メモリをバイト単位で指定します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.memoryAllocatedBytes` タグを割り当てます。 + +### GPU 使用率 +各 GPU の GPU 使用率をパーセントで反映します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.gpu` タグを割り当てます。 + +### GPU 温度 +各 GPU の GPU 温度を摂氏で示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.temp` タグを割り当てます。 + +### GPU 消費電力 (ワット) +各 GPU の GPU 消費電力をワットで示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.powerWatts` タグを割り当てます。 + +### GPU 消費電力率 + +各 GPU の電力容量に対する GPU 消費電力の割合を反映します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.powerPercent` タグを割り当てます。 + +### GPU SM クロック速度 +GPU 上のストリーミングマルチプロセッサ (SM) のクロック速度を MHz で表します。このメトリクスは、計算タスクを担当する GPU コア内の処理速度を示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.smClock` タグを割り当てます。 + +### GPU メモリクロック速度 +GPU メモリのクロック速度を MHz で表します。これは GPU メモリと処理コア間のデータ転送速度に影響します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.memoryClock` タグを割り当てます。 + +### GPU グラフィックスクロック速度 + +GPU でのグラフィックスレンダリング操作のベースクロック速度を MHz で表します。このメトリクスは、可視化やレンダリングタスク中のパフォーマンスを反映することがよくあります。 + +W&B はこのメトリクスに `gpu.{gpu_index}.graphicsClock` タグを割り当てます。 + +### GPU 修正済みメモリ書き込みエラー + +W&B がエラーチェックプロトコルによって自動的に修正した GPU 上のメモリエラーの数を追跡し、回復可能なハードウェア問題を示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.correctedMemoryErrors` タグを割り当てます。 + +### GPU 未修正メモリ書き込みエラー +W&B が修正できなかった GPU 上のメモリエラーの数を追跡し、処理の信頼性に影響を与える可能性のある回復不可能なエラーを示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.unCorrectedMemoryErrors` タグを割り当てます。 + +### GPU エンコーダー使用率 + +GPU のビデオエンコーダーの使用率をパーセントで表し、エンコーディングタスク(ビデオレンダリングなど)が実行されているときの負荷を示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.encoderUtilization` タグを割り当てます。 + +{/* New section */} + +## AMD GPU +W&B は、AMD が提供する `rocm-smi` ツールの出力 (`rocm-smi -a --json`) からメトリクスを抽出します。 + +ROCm [6.x (最新)](https://rocm.docs.amd.com/en/latest/) および [5.x](https://rocm.docs.amd.com/en/docs-5.6.0/) 形式がサポートされています。ROCm 形式の詳細については、[AMD ROCm ドキュメント](https://rocm.docs.amd.com/en/latest/compatibility/compatibility-matrix.html) を参照してください。新しい形式にはより多くの詳細が含まれています。 + +### AMD GPU 使用率 +各 AMD GPU デバイスの GPU 使用率をパーセントで表します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.gpu` タグを割り当てます。 + +### AMD GPU 割り当て済みメモリ +各 AMD GPU デバイスの全利用可能メモリに対する、割り当て済み GPU メモリの割合を示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.memoryAllocated` タグを割り当てます。 + +### AMD GPU 温度 +各 AMD GPU デバイスの GPU 温度を摂氏で示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.temp` タグを割り当てます。 + +### AMD GPU 消費電力 (ワット) +各 AMD GPU デバイスの GPU 消費電力をワットで示します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.powerWatts` タグを割り当てます。 + +### AMD GPU 消費電力率 +各 AMD GPU デバイスの電力容量に対する GPU 消費電力の割合を反映します。 + +W&B はこのメトリクスに `gpu.{gpu_index}.powerPercent` を割り当てます。 + +{/* New section */} + +## Apple ARM Mac GPU + +### Apple GPU 使用率 +Apple GPU デバイス(特に ARM Mac)の GPU 使用率をパーセントで示します。 + +W&B はこのメトリクスに `gpu.0.gpu` タグを割り当てます。 + +### Apple GPU 割り当て済みメモリ +ARM Mac 上の Apple GPU デバイスの全利用可能メモリに対する、割り当て済み GPU メモリの割合。 + +W&B はこのメトリクスに `gpu.0.memoryAllocated` タグを割り当てます。 + +### Apple GPU 温度 +ARM Mac 上の Apple GPU デバイスの GPU 温度(摂氏)。 + +W&B はこのメトリクスに `gpu.0.temp` タグを割り当てます。 + +### Apple GPU 消費電力 (ワット) +ARM Mac 上の Apple GPU デバイスの GPU 消費電力(ワット)。 + +W&B はこのメトリクスに `gpu.0.powerWatts` タグを割り当てます。 + +### Apple GPU 消費電力率 +ARM Mac 上の Apple GPU デバイスの電力容量に対する GPU 消費電力の割合。 + +W&B はこのメトリクスに `gpu.0.powerPercent` タグを割り当てます。 + +{/* New section */} + +## Graphcore IPU +Graphcore IPU (Intelligence Processing Units) は、機械知能タスク専用に設計された独自のハードウェアアクセラレータです。 + +### IPU デバイスメトリクス +これらのメトリクスは、特定の IPU デバイスに関するさまざまな統計情報を表します。各メトリクスには、それを識別するためのデバイス ID (`device_id`) とメトリクスキー (`metric_key`) があります。W&B はこのメトリクスに `ipu.{device_id}.{metric_key}` タグを割り当てます。 + +メトリクスは、Graphcore の `gcipuinfo` バイナリと対話する独自の `gcipuinfo` ライブラリを使用して抽出されます。`sample` メソッドは、プロセス ID (`pid`) に関連付けられた各 IPU デバイスのこれらのメトリクスを取得します。冗長なデータのログ記録を避けるため、時間の経過とともに変化するメトリクス、またはデバイスのメトリクスが最初に取得されたときのみログに記録されます。 + +各メトリクスについて、`parse_metric` メソッドを使用して、生の文字列表現からメトリクスの値を抽出します。その後、`aggregate` メソッドを使用して、複数のサンプルにわたってメトリクスが集計されます。 + +利用可能なメトリクスとその単位の一覧は以下の通りです: + +- **ボード平均温度** (`average board temp (C)`): IPU ボードの温度(摂氏)。 +- **ダイ平均温度** (`average die temp (C)`): IPU ダイの温度(摂氏)。 +- **クロック速度** (`clock (MHz)`): IPU のクロック速度 (MHz)。 +- **IPU 電力** (`ipu power (W)`): IPU の消費電力(ワット)。 +- **IPU 使用率** (`ipu utilisation (%)`): IPU 使用率の割合。 +- **IPU セッション使用率** (`ipu utilisation (session) (%)`): 現在のセッションに特有の IPU 使用率の割合。 +- **データリンク速度** (`speed (GT/s)`): 1秒あたりのギガ転送単位でのデータ転送速度。 + + +{/* New section */} + +## Google Cloud TPU +Tensor Processing Units (TPUs) は、機械学習ワークロードを加速するために使用される Google 独自開発の ASIC (Application Specific Integrated Circuits) です。 + + +### TPU メモリ使用量 +TPU コアあたりの現在の広帯域メモリ使用量(バイト)。 + +W&B はこのメトリクスに `tpu.{tpu_index}.memoryUsageBytes` タグを割り当てます。 + +### TPU メモリ使用率 +TPU コアあたりの現在の広帯域メモリ使用率(パーセント)。 + +W&B はこのメトリクスに `tpu.{tpu_index}.memoryUsageBytes` タグを割り当てます。 + +### TPU デューティサイクル +TPU デバイスあたりの TensorCore デューティサイクル率。サンプル期間中にアクセラレータ TensorCore がアクティブに処理を行っていた時間の割合を追跡します。値が大きいほど、TensorCore の利用効率が良いことを意味します。 + +W&B はこのメトリクスに `tpu.{tpu_index}.dutyCycle` タグを割り当てます。 + + +{/* New section */} + +## AWS Trainium +[AWS Trainium](https://aws.amazon.com/machine-learning/trainium/) は、機械学習ワークロードの加速に焦点を当てた AWS 提供の特殊なハードウェアプラットフォームです。AWS Trainium のメトリクスを取得するには、AWS の `neuron-monitor` ツールが使用されます。 + +### Trainium Neuron Core 使用率 +各 NeuronCore の使用率(コアごとに報告)。 + +W&B はこのメトリクスに `trn.{core_index}.neuroncore_utilization` タグを割り当てます。 + +### Trainium ホストメモリ使用量、合計 +ホスト上の合計メモリ消費量(バイト)。 + +W&B はこのメトリクスに `trn.host_total_memory_usage` タグを割り当てます。 + +### Trainium Neuron デバイス合計メモリ使用量 +Neuron デバイス上の合計メモリ使用量(バイト)。 + +W&B はこのメトリクスに `trn.neuron_device_total_memory_usage)` タグを割り当てます。 + +### Trainium ホストメモリ使用量の内訳: + +ホスト上のメモリ使用量の内訳は以下の通りです: + +- **アプリケーションメモリ** (`trn.host_total_memory_usage.application_memory`): アプリケーションによって使用されるメモリ。 +- **定数** (`trn.host_total_memory_usage.constants`): 定数に使用されるメモリ。 +- **DMA バッファ** (`trn.host_total_memory_usage.dma_buffers`): 直接メモリ制御 (DMA) バッファに使用されるメモリ。 +- **テンソル** (`trn.host_total_memory_usage.tensors`): テンソルに使用されるメモリ。 + +### Trainium Neuron Core メモリ使用量の内訳 +各 NeuronCore の詳細なメモリ使用量情報: + +- **定数** (`trn.{core_index}.neuroncore_memory_usage.constants`) +- **モデルコード** (`trn.{core_index}.neuroncore_memory_usage.model_code`) +- **モデル共有スクラッチパッド** (`trn.{core_index}.neuroncore_memory_usage.model_shared_scratchpad`) +- **ランタイムメモリ** (`trn.{core_index}.neuroncore_memory_usage.runtime_memory`) +- **テンソル** (`trn.{core_index}.neuroncore_memory_usage.tensors`) + +## OpenMetrics +OpenMetrics / Prometheus 互換のデータを公開する外部エンドポイントからメトリクスを取得してログに記録します。取得したエンドポイントに適用するカスタム正規表現ベースのメトリクスフィルターをサポートしています。 + +[NVIDIA DCGM-Exporter](https://docs.nvidia.com/datacenter/cloud-native/gpu-telemetry/latest/dcgm-exporter.html) を使用して GPU クラスターのパフォーマンスを監視する特定のケースでのこの機能の使用例については、[W&B での GPU クラスターパフォーマンスの監視](https://wandb.ai/dimaduev/dcgm/reports/Monitoring-GPU-cluster-performance-with-NVIDIA-DCGM-Exporter-and-Weights-Biases--Vmlldzo0MDYxMTA1) を参照してください。 \ No newline at end of file diff --git a/ja/models/ref/python/functions.mdx b/ja/models/ref/python/functions.mdx new file mode 100644 index 0000000000..d0aa0973af --- /dev/null +++ b/ja/models/ref/python/functions.mdx @@ -0,0 +1,49 @@ +--- +title: Global Functions の概要 +description: W&B Python SDK におけるグローバル関数 +module: null +no_list: true +--- + +W&B におけるグローバル関数は、`wandb.init()` や `wandb.login()` のように直接呼び出すトップレベルの関数です。特定のクラスに属するメソッドとは異なり、これらの関数はオブジェクトをインスタンス化することなく、W&B のコア機能に直接アクセスできるようにします。 + +## 利用可能な関数 + +| 関数 | 説明 | +|----------|-------------| +| [`init()`](/models/ref/python/functions/init) | W&B でトラッキングとログ記録を行うための新しい Runs を開始します。これは通常、ML トレーニングパイプラインで最初に呼び出す関数です。 | +| [`login()`](/models/ref/python/functions/login) | W&B のログイン認証情報を設定し、マシンをプラットフォームに対して認証します。 | +| [`setup()`](/models/ref/python/functions/setup) | 現在のプロセスとその子プロセスで W&B を使用するための準備を行います。マルチプロセスアプリケーションで有用です。 | +| [`teardown()`](/models/ref/python/functions/teardown) | W&B のリソースをクリーンアップし、バックエンドプロセスを終了します。 | +| [`sweep()`](/models/ref/python/functions/sweep) | 最適なモデル設定を探索するためのハイパーパラメーター探索( Sweeps )を初期化します。 | +| [`agent()`](/models/ref/python/functions/agent) | ハイパーパラメーター最適化の実験を実行するための sweep agent を作成します。 | +| [`controller()`](/models/ref/python/functions/controller) | sweep agent とその実行を管理および制御します。 | +| [`restore()`](/models/ref/python/functions/restore) | 作業を再開するために、以前の run や実験の状態を復元します。 | +| [`finish()`](/models/ref/python/functions/finish) | run を終了し、リソースをクリーンアップします。 | + +## 例 + +最も一般的なワークフローは、W&B での認証、run の初期化、そしてトレーニングループからの値(精度や損失など)のログ記録で始まります。最初のステップは `wandb` をインポートし、グローバル関数である `login()` と `init()` を使用することです。 + +```python +import wandb + +# W&Bで認証 +wandb.login() + +# ハイパーパラメーターとメタデータ +config = { + "learning_rate": 0.01, + "epochs": 10, +} + +# runが記録されるプロジェクト +project = "my-awesome-project" + +# 新しい run を初期化 +with wandb.init(project=project, config=config) as run: + # ここにトレーニングコードを記述... + + # W&Bに値をログ記録 + run.log({"accuracy": 0.9, "loss": 0.1}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/functions/agent.mdx b/ja/models/ref/python/functions/agent.mdx new file mode 100644 index 0000000000..a3e7587ae0 --- /dev/null +++ b/ja/models/ref/python/functions/agent.mdx @@ -0,0 +1,34 @@ +--- +title: agent() +namespace: python_sdk_actions +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `agent` + +```python +agent( + sweep_id: str, + function: Optional[Callable] = None, + entity: Optional[str] = None, + project: Optional[str] = None, + count: Optional[int] = None, + forward_signals: bool = False +) → None +``` + +1 つ以上の sweep agent を起動します。 + +sweep agent は `sweep_id` を使用して、自身がどの Sweeps の一部であるか、どの関数を実行すべきか、そして(オプションで)何個のエージェントを実行するかを判断します。 + +**Args:** + + - `sweep_id`: Sweeps の一意の識別子。 sweep ID は W&B CLI または Python SDK によって生成されます。 + - `function`: sweep config で指定された "program" の代わりに呼び出す関数。 + - `entity`: Sweeps によって作成された W&B Runs の送信先となるユーザー名またはチーム名。指定する Entities があらかじめ存在することを確認してください。エンティティを指定しない場合、 run は通常ユーザー名であるデフォルトのエンティティに送信されます。 + - `project`: Sweeps から作成された W&B Runs の送信先となる Projects の名前。プロジェクトが指定されていない場合、 run は "Uncategorized" というラベルのプロジェクトに送信されます。 + - `count`: 試行する sweep config の トライアル 数。 + - `forward_signals`: エージェントが受信したシグナルを子 プロセス に転送するかどうか。CLI エージェントでのみサポートされています。 \ No newline at end of file diff --git a/ja/models/ref/python/functions/controller.mdx b/ja/models/ref/python/functions/controller.mdx new file mode 100644 index 0000000000..857f348448 --- /dev/null +++ b/ja/models/ref/python/functions/controller.mdx @@ -0,0 +1,39 @@ +--- +title: controller() +namespace: python_sdk_actions +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + + +### function `controller` + +```python +controller( + sweep_id_or_config: Optional[str, Dict] = None, + entity: Optional[str] = None, + project: Optional[str] = None +) → _WandbController +``` + +パブリックな sweep コントローラのコンストラクタです。 + + + +**Examples:** + ```python +import wandb + +# コントローラの初期化 +tuner = wandb.controller(...) +print(tuner.sweep_config) +print(tuner.sweep_id) +# 探索アルゴリズムの設定 +tuner.configure_search(...) +# 早期終了ルールの設定 +tuner.configure_stopping(...) +``` \ No newline at end of file diff --git a/ja/models/ref/python/functions/finish.mdx b/ja/models/ref/python/functions/finish.mdx new file mode 100644 index 0000000000..37de33df12 --- /dev/null +++ b/ja/models/ref/python/functions/finish.mdx @@ -0,0 +1,29 @@ +--- +title: finish() +namespace: python_sdk_actions +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `finish` + +```python +finish(exit_code: 'int | None' = None, quiet: 'bool | None' = None) → None +``` + +run を終了し、残っているすべてのデータをアップロードします。 + +W&B run の完了をマークし、すべてのデータが サーバー に同期されることを保証します。 run の最終的な状態は、その終了条件と同期ステータスによって決定されます。 + +Run の状態: +- Running: データの ログ 記録やハートビートの送信を行っているアクティブな run。 +- Crashed: 予期せずハートビートの送信が停止した run。 +- Finished: すべてのデータが同期され、正常に完了した(`exit_code=0`) run。 +- Failed: エラーで完了した(`exit_code!=0`) run。 + +**Args:** + +- `exit_code`: run の終了ステータスを示す整数。成功の場合は 0 を指定します。それ以外の 値 は run が失敗したとマークされます。 +- `quiet`: 非推奨です。 ログ の冗長性を設定するには `wandb.Settings(quiet=...)` を使用してください。 \ No newline at end of file diff --git a/ja/models/ref/python/functions/init.mdx b/ja/models/ref/python/functions/init.mdx new file mode 100644 index 0000000000..52487c7b98 --- /dev/null +++ b/ja/models/ref/python/functions/init.mdx @@ -0,0 +1,113 @@ +--- +title: ' thought + + init()' +namespace: python_sdk_actions +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `init` + +```python +init( + entity: 'str | None' = None, + project: 'str | None' = None, + dir: 'StrPath | None' = None, + id: 'str | None' = None, + name: 'str | None' = None, + notes: 'str | None' = None, + tags: 'Sequence[str] | None' = None, + config: 'dict[str, Any] | str | None' = None, + config_exclude_keys: 'list[str] | None' = None, + config_include_keys: 'list[str] | None' = None, + allow_val_change: 'bool | None' = None, + group: 'str | None' = None, + job_type: 'str | None' = None, + mode: "Literal['online', 'offline', 'disabled', 'shared'] | None" = None, + force: 'bool | None' = None, + reinit: "bool | Literal[None, 'default', 'return_previous', 'finish_previous', 'create_new']" = None, + resume: "bool | Literal['allow', 'never', 'must', 'auto'] | None" = None, + resume_from: 'str | None' = None, + fork_from: 'str | None' = None, + save_code: 'bool | None' = None, + tensorboard: 'bool | None' = None, + sync_tensorboard: 'bool | None' = None, + monitor_gym: 'bool | None' = None, + settings: 'Settings | dict[str, Any] | None' = None, + anonymous: 'DoNotSet' = +) → Run +``` + +W&B でトラッキングおよびログ記録を行うための新しい Runs を開始します。 + +ML トレーニングパイプラインにおいて、トレーニングスクリプトと評価スクリプトの両方の冒頭に `wandb.init()` を追加することで、それぞれのプロセスが W&B 上で個別の run として記録されます。 + +`wandb.init()` は、run にデータをログ記録するための新しいバックグラウンドプロセスを生成します。また、デフォルトで https://wandb.ai とデータを同期するため、リアルタイムで結果を確認できます。データのログ記録が完了したら、`wandb.Run.finish()` を呼び出して run を終了してください。`run.finish()` を呼び出さなかった場合、スクリプトの終了時に run が終了します。 + +Run ID には、次の特殊文字を含めることはできません:`/ \ # ? % :` + +**引数:** + + - `entity`: runs のログが記録されるユーザー名またはチーム名。entity はあらかじめ存在している必要があるため、ログ記録を開始する前に UI でアカウントまたはチームを作成してください。指定しない場合、run はデフォルトの entity に記録されます。デフォルトの entity を変更するには、設定(settings)の "Default team" にある "Default location to create new projects" を更新してください。 + - `project`: この run が記録される Projects の名前。指定しない場合、git のルートディレクトリや現在のプログラムファイルを確認するなど、システムに基づいたヒューリスティックな方法でプロジェクト名を推測します。プロジェクト名を推測できない場合、デフォルトで `"uncategorized"` に設定されます。 + - `dir`: 実験ログとメタデータファイルが保存されるディレクトリの絶対パス。指定しない場合、デフォルトで `./wandb` ディレクトリーになります。なお、これは `download()` を呼び出した際の Artifacts の保存先には影響しません。 + - `id`: run を再開(resume)する際に使用される一意の識別子。プロジェクト内で一意である必要があり、一度削除された run の ID を再利用することはできません。短い説明的な名前には `name` フィールドを、ハイパーパラメーターを保存して run 間で比較するには `config` を使用してください。 + - `name`: UI 上で識別しやすくするための、この run の短い表示名。デフォルトでは、テーブルからチャートへの参照を容易にするために、ランダムな2単語の名前が生成されます。チャートの凡例やテーブルでの視認性を高めるため、名前は簡潔に保つことをお勧めします。ハイパーパラメーターの保存には `config` フィールドの使用を推奨します。 + - `notes`: Git のコミットメッセージのような、run に関する詳細な説明。将来、この run の目的やセットアップを思い出すのに役立つコンテキストや詳細を記録するために使用します。 + - `tags`: UI でこの run にラベルを付けるためのタグのリスト。タグは run の整理や、"baseline"(ベースライン)や "production"(プロダクション)といった一時的な識別子の追加に便利です。UI 上でタグの追加、削除、フィルターを簡単に行うことができます。run を再開する場合、ここで提供されたタグが既存のタグを上書きします。既存のタグを上書きせずに再開された run にタグを追加するには、`run = wandb.init()` の呼び出し後に `run.tags += ("new_tag",)` を使用してください。 + - `config`: `wandb.config` を設定します。これは、モデルのハイパーパラメーターやデータの前処理設定など、run への入力パラメータを保存するための辞書形式のオブジェクトです。config は UI のオーバービューページに表示され、これらのパラメータに基づいて runs をグループ化、フィルタリング、ソートできます。キーにはピリオド(`.`)を含めないでください。また、値は 10 MB 未満である必要があります。`argparse.Namespace` や `absl.flags.FLAGS` が提供された場合、キーと値のペアは直接 `wandb.config` に読み込まれます。文字列が提供された場合は YAML ファイルへのパスとして解釈され、その設定値が `wandb.config` に読み込まれます。 + - `config_exclude_keys`: `wandb.config` から除外する特定のキーのリスト。 + - `config_include_keys`: `wandb.config` に含める特定のキーのリスト。 + - `allow_val_change`: 初期設定後に config の値を変更できるかどうかを制御します。デフォルトでは、config の値が上書きされると例外が発生します。学習率のようにトレーニング中に変化する変数を追跡する場合は、代わりに `wandb.log()` の使用を検討してください。デフォルトでは、スクリプト内では `False`、ノートブック環境では `True` です。 + - `group`: 個々の runs をより大きな実験の一部として整理するためのグループ名を指定します。これは、クロスバリデーションを行う場合や、異なるテストセットでモデルをトレーニングおよび評価する複数のジョブを実行する場合に便利です。グループ化により、関連する runs を UI 上でまとめて管理でき、結果を統合された実験として簡単に切り替えたり確認したりできます。 + - `job_type`: run のジョブタイプを指定します。特に、大きな実験の一部としてグループ内の runs を整理する際に役立ちます。例えば、グループ内で runs に "train"(トレーニング)や "eval"(評価)といったジョブタイプをラベル付けできます。ジョブタイプを定義することで、UI 上で同様の runs を簡単にフィルタリングしてグループ化し、直接比較することが可能になります。 + - `mode`: run データの管理方法を以下のオプションで指定します: + - `"online"` (デフォルト): ネットワーク接続が利用可能な場合に W&B とのライブ同期を有効にし、可視化をリアルタイムで更新します。 + - `"offline"`: インターネット接続のない環境やオフライン環境に適しています。データはローカルに保存され、後で同期できます。将来の同期を可能にするために、run フォルダを保持するようにしてください。 + - `"disabled"`: すべての W&B 機能を無効にし、run のメソッドを何もしない(no-ops)状態にします。通常、W&B の操作をスキップするテストで使用されます。 + - `"shared"`: (実験的な機能)。複数のプロセス(異なるマシン上にある可能性もあります)から同じ run に同時にログを記録することを可能にします。このアプローチでは、プライマリノードと1つ以上のワーカーノードを使用して同じ run にデータをログ記録します。プライマリノードで run を初期化し、各ワーカーノードではプライマリノードで使用された run ID を使用して run を初期化します。 + - `force`: スクリプトの実行に W&B へのログインを必須にするかどうかを決定します。`True` の場合、ユーザーは W&B にログインしている必要があります。そうでない場合、スクリプトは進行しません。`False` (デフォルト) の場合、ユーザーがログインしていなくてもスクリプトを続行でき、その場合はオフラインモードに切り替わります。 + - `reinit`: "reinit" 設定のショートハンドです。run がアクティブな状態での `wandb.init()` の振る舞いを決定します。 + - `resume`: 指定された `id` で run を再開する際の振る舞いを制御します。利用可能なオプションは以下の通りです: + - `"allow"`: 指定された `id` の run が存在すれば最後のステップから再開し、存在しなければ新しい run を作成します。 + - `"never"`: 指定された `id` の run が存在すればエラーを発生させます。見つからない場合は新しい run を作成します。 + - `"must"`: 指定された `id` の run が存在すれば最後のステップから再開します。見つからない場合はエラーを発生させます。 + - `"auto"`: このマシンでクラッシュした直前の run があれば自動的に再開し、そうでなければ新しい run を開始します。 + - `True`: 非推奨です。代わりに `"auto"` を使用してください。 + - `False`: 非推奨です。常に新しい run を開始するには、デフォルトの動作(`resume` を未設定のままにする)を使用してください。`resume` が設定されている場合、`fork_from` と `resume_from` は使用できません。`resume` が未設定の場合、システムは常に新しい run を開始します。 + - `resume_from`: 以前の run の特定の時点から run を再開することを指定します。形式は `{run_id}?_step={step}` です。これにより、ある中間ステップでログ記録された履歴を切り捨て、そのステップからログ記録を再開できます。対象の run は同じプロジェクト内にある必要があります。`id` 引数も提供されている場合、`resume_from` 引数が優先されます。`resume`、`resume_from`、`fork_from` は併用できず、一度に1つだけ使用できます。なお、この機能はベータ版であり、将来変更される可能性があります。 + - `fork_from`: 以前の run の特定のポイントから新しい run をフォークすることを指定します。形式は `{id}?_step={step}` です。これにより、対象の run の履歴内の指定されたステップからログ記録を再開する新しい run が作成されます。対象の run は現在のプロジェクトの一部である必要があります。`id` 引数も提供されている場合、それは `fork_from` 引数とは異なる必要があります。同じ場合はエラーが発生します。`resume`、`resume_from`、`fork_from` は併用できず、一度に1つだけ使用できます。なお、この機能はベータ版であり、将来変更される可能性があります。 + - `save_code`: メインスクリプトまたはノートブックを W&B に保存することを有効にします。これにより実験の再現性が向上し、UI 上で runs 間のコード比較が可能になります。デフォルトでは無効になっていますが、設定ページで有効に変更できます。 + - `tensorboard`: 非推奨です。代わりに `sync_tensorboard` を使用してください。 + - `sync_tensorboard`: TensorBoard または TensorBoardX からの W&B ログの自動同期を有効にし、W&B UI で表示するための関連イベントファイルを保存します。 + - `monitor_gym`: OpenAI Gym を使用している場合に、環境のビデオの自動ログ記録を有効にします。 + - `settings`: run の詳細設定を含む辞書または `wandb.Settings` オブジェクトを指定します。 + +**戻り値:** + `Run` オブジェクト。 + +**例外:** + + - `Error`: run の初期化中に不明なエラーまたは内部エラーが発生した場合。 + - `AuthenticationError`: ユーザーが有効な資格情報を提供できなかった場合。 + - `CommError`: WandB サーバーとの通信に問題が発生した場合。 + - `UsageError`: ユーザーが無効な引数を提供した場合。 + - `KeyboardInterrupt`: ユーザーが run を中断した場合。 + +**例:** + `wandb.init()` は `Run` オブジェクトを返します。この run オブジェクトを使用して、データのログ記録、Artifacts の保存、および run のライフサイクルの管理を行います。 + +```python +import wandb + +# コンフィグの設定 +config = {"lr": 0.01, "batch_size": 32} +with wandb.init(config=config) as run: + # accuracy と loss を run にログ記録する + acc = 0.95 # 例: 精度 + loss = 0.05 # 例: 損失 + run.log({"accuracy": acc, "loss": loss}) +``` \ No newline at end of file diff --git a/ja/models/ref/python/functions/login.mdx b/ja/models/ref/python/functions/login.mdx new file mode 100644 index 0000000000..9ec5a9994d --- /dev/null +++ b/ja/models/ref/python/functions/login.mdx @@ -0,0 +1,61 @@ +--- +title: ' start_thought + + login()' +namespace: python_sdk_actions +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `login` + +```python +login( + key: 'str | None' = None, + relogin: 'bool | None' = None, + host: 'str | None' = None, + force: 'bool | None' = None, + timeout: 'int | None' = None, + verify: 'bool' = False, + referrer: 'str | None' = None, + anonymous: 'DoNotSet' = +) → bool +``` + +W&B にログインします。 + +認証を必要とするほとんどの W&B メソッドは暗黙的にログインを実行できるため、通常このメソッドを直接使用する必要はありません。これは CLI の `wandb login` に対応するプログラム用のメソッドです。 + +このメソッドはセッションのグローバルな認証情報を更新し(この呼び出し以降、現在の Python プロセス内のすべての wandb の使用に影響します)、必要に応じて .netrc ファイルも更新します。 + +`WANDB_IDENTITY_TOKEN_FILE` 環境変数などを通じて `identity_token_file` 設定が指定されている場合、このメソッドは何もしません。 + +それ以外の場合で、明示的な APIキー が提供されたときは、そのキーが使用され、システムの .netrc ファイルに書き込まれます。キーが提供されず、すでにセッションが認証済みである場合は、そのセッションのキーが検証に使用され(`verify` が True の場合)、.netrc ファイルは更新されません。 + +上記のいずれにも当てはまらない場合、以下の優先順位で APIキー を取得します: + +- `WANDB_API_KEY` 環境変数 +- システムまたは Workspace 設定ファイルの `api_key` 設定 +- .netrc ファイル(`~/.netrc`、`~/_netrc`、または `NETRC` 環境変数で指定されたパス) +- インタラクティブなプロンプト(利用可能な場合) + +**Args:** + +- `key`: 使用する APIキー。 +- `relogin`: True の場合、.netrc や 環境変数などの読み取りをスキップし、インタラクティブなプロンプトから APIキー を取得します。 +- `host`: 接続する W&B サーバー の URL。 +- `force`: True の場合、インタラクティブなプロンプトでオフラインモードを選択できないようにします。 +- `timeout`: インタラクティブなプロンプトでユーザーの入力を待機する秒数。非インタラクティブな 環境 で誤ってプロンプトが表示された場合のフェイルセーフとして使用できます。 +- `verify`: W&B サーバー で認証情報を検証し、失敗した場合は `AuthenticationError` を発生させます。 +- `referrer`: 分析用の URL ログインリクエストで使用するリファラー。 + +**Returns:** + +- `bool`: `key` が設定されているかどうか。 + +**Raises:** + +- `AuthenticationError`: `api_key` の サーバー での検証に失敗した場合。 +- `UsageError`: `api_key` が設定できず、かつ tty が利用できない場合。 \ No newline at end of file diff --git a/ja/models/ref/python/functions/restore.mdx b/ja/models/ref/python/functions/restore.mdx new file mode 100644 index 0000000000..b78172b88c --- /dev/null +++ b/ja/models/ref/python/functions/restore.mdx @@ -0,0 +1,39 @@ +--- +title: restore() +namespace: python_sdk_actions +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `restore` + +```python +restore( + name: 'str', + run_path: 'str | None' = None, + replace: 'bool' = False, + root: 'str | None' = None +) → None | TextIO +``` + +クラウド ストレージから指定されたファイルをダウンロードします。 + +ファイルは現在の ディレクトリー または Run ディレクトリー に配置されます。デフォルトでは、ファイルがまだ存在しない場合にのみダウンロードされます。 + +**Args:** + +- `name`: ファイルの名前。 +- `run_path`: ファイルを取得する Run へのオプションのパス(例:`username/project_name/run_id`)。`wandb.init` が呼び出されていない場合は、この指定が必須です。 +- `replace`: ローカルに既に存在する場合でもファイルをダウンロードするかどうか。 +- `root`: ファイルをダウンロードする ディレクトリー。デフォルトは、現在の ディレクトリー または `wandb.init` が呼び出された場合は Run ディレクトリー です。 + +**Returns:** + +ファイルが見つからない場合は `None`。それ以外の場合は、読み取り用に開かれたファイル オブジェクト。 + +**Raises:** + +- `CommError`: W&B が W&B バックエンドに接続できない場合。 +- `ValueError`: ファイルが見つからない、または `run_path` が見つからない場合。 \ No newline at end of file diff --git a/ja/models/ref/python/functions/setup.mdx b/ja/models/ref/python/functions/setup.mdx new file mode 100644 index 0000000000..eea500695b --- /dev/null +++ b/ja/models/ref/python/functions/setup.mdx @@ -0,0 +1,67 @@ +--- +title: setup() +namespace: python_sdk_actions +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `setup` + +```python +setup(settings: 'Settings | None' = None) → _WandbSetup +``` + +現在のプロセスおよびその子プロセスで W&B を使用するための準備を行います。 + +通常、この関数は `wandb.init()` によって暗黙的に呼び出されるため、無視して構いません。 + +マルチプロセスで wandb を使用する場合、子プロセスを開始する前に親プロセスで `wandb.setup()` を呼び出すことで、パフォーマンスとリソースの利用効率が向上する場合があります。 + +`wandb.setup()` は `os.environ` を変更するため、子プロセスが変更後の 環境 変数を継承することが重要である点に注意してください。 + +`wandb.teardown()` も併せて参照してください。 + +**Args:** + + - `settings`: グローバルに適用する設定。これらは、その後の `wandb.init()` の呼び出しによって上書きされる可能性があります。 + +**Example:** + ```python +import multiprocessing + +import wandb + + +def run_experiment(params): + # wandb.init で実験を開始 + with wandb.init(config=params): + # 実験を実行 + pass + + +if __name__ == "__main__": + # バックエンドを開始し、グローバル設定を行う + wandb.setup(settings={"project": "my_project"}) + + # 実験パラメータを定義 + experiment_params = [ + {"learning_rate": 0.01, "epochs": 10}, + {"learning_rate": 0.001, "epochs": 20}, + ] + + # 複数のプロセスを開始し、それぞれで個別の実験を実行 + processes = [] + for params in experiment_params: + p = multiprocessing.Process(target=run_experiment, args=(params,)) + p.start() + processes.append(p) + + # すべてのプロセスが完了するのを待機 + for p in processes: + p.join() + + # オプション: 明示的にバックエンドを終了する + wandb.teardown() +``` \ No newline at end of file diff --git a/ja/models/ref/python/functions/sweep.mdx b/ja/models/ref/python/functions/sweep.mdx new file mode 100644 index 0000000000..d9255fd58b --- /dev/null +++ b/ja/models/ref/python/functions/sweep.mdx @@ -0,0 +1,38 @@ +--- +title: sweep() +namespace: python_sdk_actions +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `sweep` + +```python +sweep( + sweep: Union[dict, Callable], + entity: Optional[str] = None, + project: Optional[str] = None, + prior_runs: Optional[List[str]] = None +) → str +``` + +ハイパーパラメーター探索( Sweeps )を初期化します。 + +様々な組み合わせをテストすることで、 機械学習 モデル のコスト関数を最適化する ハイパーパラメーター を探索します。 + +返される一意の識別子である `sweep_id` をメモしておいてください。後続のステップで、この `sweep_id` を sweep agent に提供します。 + +Sweep の定義方法については、 [Sweep configuration structure](https://docs.wandb.ai/guides/sweeps/define-sweep-configuration) を参照してください。 + +**Args:** + + - `sweep`: ハイパーパラメーター探索の設定(または設定ジェネレーター)。呼び出し可能オブジェクト(callable)を指定する場合は、引数を取らず、W&B の sweep configuration 仕様に準拠した 辞書 を返すようにしてください。 + - `entity`: Sweep によって作成される W&B Runs の送信先となる、 ユーザー 名または チーム 名。指定する entity はあらかじめ存在している必要があります。entity を指定しない場合、 Run は通常は ユーザー 名であるデフォルトの entity に送信されます。 + - `project`: Sweep から作成された W&B Runs の送信先となる Projects の名前。プロジェクトが指定されていない場合、 Run は 'Uncategorized' というラベルのプロジェクトに送信されます。 + - `prior_runs`: この Sweep に追加する既存の Runs の Run ID リスト。 + +**Returns:** + + - `str`: Sweep の一意の識別子。 \ No newline at end of file diff --git a/ja/models/ref/python/functions/teardown.mdx b/ja/models/ref/python/functions/teardown.mdx new file mode 100644 index 0000000000..3f6e5f7a6a --- /dev/null +++ b/ja/models/ref/python/functions/teardown.mdx @@ -0,0 +1,22 @@ +--- +title: ' thoughtful_ some + + teardown()' +namespace: python_sdk_actions +python_object_type: function +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +### function `teardown` + +```python +teardown(exit_code: 'int | None' = None) → None +``` + +W&B の終了を待機し、リソースを解放します。 + +`run.finish()` を使用して明示的に終了されなかったすべての Runs を完了させ、すべての データ がアップロードされるまで待機します。 + +`wandb.setup()` を使用したセッションの最後で、この関数を呼び出すことを推奨します。通常は `atexit` フック で自動的に呼び出されますが、Python の `multiprocessing` モジュールを使用する場合など、特定の環境下では動作が不安定になる可能性があります。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api.mdx b/ja/models/ref/python/public-api.mdx index 843f661abc..104e7ea1c5 100644 --- a/ja/models/ref/python/public-api.mdx +++ b/ja/models/ref/python/public-api.mdx @@ -1,27 +1,135 @@ --- -title: インポート&エクスポート API +title: Public API の概要 +description: W&B Public API を使用して、プログラムから W&B データ への アクセス や管理を行うことができます。 +module: wandb.apis.public +no_list: true --- -## クラス +import PublicApiUse from "/snippets/en/_includes/public-api-use.mdx"; -[`class Api`](/ja/models/ref/python/public-api/api/): wandb サーバーをクエリするために使用されます。 +W&B Public APIは、W&Bに保存されたデータの照会、エクスポート、更新をプログラムから行うためのアクセス手段を提供します。このAPIは、事後分析、データエクスポート、および Runs 、 Artifacts 、 Sweeps のプログラムによる管理に使用します。メインの SDK がトレーニング中のリアルタイムの ログ を処理するのに対し、Public APIは過去のデータの取得、 メタデータ の更新、 Artifacts の管理、および完了した Experiments の分析を可能にします。メインの `Api` クラスが、ほとんどの機能へのエントリポイントとなります。 -[`class File`](/ja/models/ref/python/public-api/file/): File は wandb によって保存されたファイルに関連付けられているクラスです。 + -[`class Files`](/ja/models/ref/python/public-api/files/): `File` オブジェクトの反復可能なコレクション。 +## 利用可能なコンポーネント -[`class Job`](/ja/models/ref/python/public-api/job/) +| コンポーネント | 説明 | +|-----------|-------------| +| [`Api`](/models/ref/python/public-api/api/) | Public APIのメインエントリポイント。組織内の Runs 、 Projects 、 Artifacts を照会します。 | +| [`Runs`](/models/ref/python/public-api/runs/) | 個々のトレーニング Runs へのアクセスと管理(履歴、 ログ 、 メトリクス を含む)。 | +| [`Artifacts`](/models/artifacts/) | モデルの Artifacts 、 Datasets 、およびその他のバージョン管理されたファイルの照会とダウンロード。 | +| [`Sweeps`](/models/sweeps/) | ハイパーパラメーター Sweeps のデータへのアクセスと最適化結果の分析。 | +| [`Projects`](/models/ref/python/public-api/projects/) | Projects の管理と、プロジェクトレベルの メタデータ および 設定 へのアクセス。 | +| [`Reports`](/models/reports/create-a-report/) | W&B Reports へのプログラムによるアクセスと管理。 | +| [`Team`](/models/ref/python/public-api/team) | チーム情報の照会とチームレベルのリソース管理。 | +| [`User`](/models/ref/python/public-api/user) | ユーザープロファイルとユーザー固有のデータへのアクセス。 | +| [`Files`](/models/ref/python/public-api/files/) | Runs に関連付けられたファイルのダウンロードと管理。 | +| `History` | トレーニング中に記録された詳細な時系列 メトリクス へのアクセス(Run.historyを参照)。 | +| [`Automations`](./automations/) | 自動化された ワークフロー とアクションの管理。 | +| [`Integrations`](/models/integrations) | サードパーティ製 インテグレーション の 設定 と管理。 | -[`class Project`](/ja/models/ref/python/public-api/project/): プロジェクトは、run の名前空間です。 +## 一般的なユースケース -[`class Projects`](/ja/models/ref/python/public-api/projects/): `Project` オブジェクトの反復可能なコレクション。 +### データのエクスポートと分析 +- Run の履歴を DataFrame としてエクスポートし、Jupyter ノートブックで分析 +- カスタムの 可視化 やレポート作成のために メトリクス をダウンロード +- 複数の Experiments にわたる結果の集計 -[`class QueuedRun`](/ja/models/ref/python/public-api/queuedrun/): entity と project に関連付けられた単一のキューされた run。`run = queued_run.wait_until_running()` または `run = queued_run.wait_until_finished()` を呼び出して run にアクセスします。 +### 事後更新 +- 完了後の Run メタデータ の更新 +- 完了した Experiments への タグ や メモ の追加 +- Run の 設定 (configurations) や サマリー の変更 -[`class Run`](./run): entity と project に関連付けられた単一の run。 +### Artifact 管理 +- バージョンや エイリアス による Artifacts の照会 +- プログラムによるモデルの チェックポイント のダウンロード +- Artifact の リネージ と依存関係の追跡 -[`class RunQueue`](/ja/models/ref/python/public-api/runqueue/) +### Sweep 分析 +- Sweep の結果と最もパフォーマンスの高い Runs へのアクセス +- ハイパーパラメーター 探索結果のエクスポート +- パラメータの重要度 の分析 -[`class Runs`](/ja/models/ref/python/public-api/runs/): プロジェクトとオプションのフィルタに関連付けられたいくつかの run の反復可能なコレクション。 +## 認証 -[`class Sweep`](./sweep): sweep に関連付けられた一連の runs。 \ No newline at end of file +Public APIは Python SDK と同じ認証メカニズムを使用します。いくつかの方法で認証できます。 + +`WANDB_API_KEY` 環境変数を使用して APIキー を設定します。 + +```bash +export WANDB_API_KEY=your_api_key +``` + +`Api` クラスを初期化する際に直接 APIキー を渡します。 + +```python +api = Api(api_key="your_api_key") +``` + +または、`wandb.login()` を使用して現在のセッションを認証します。 +```python +import wandb + +wandb.login() +api = Api() +``` + + +## 使用例 + + +### 名前とエイリアスによる Artifact のダウンロード + +次の例は、W&Bに ログ 記録された Artifact をその名前と エイリアス で取得し、その内容をダウンロードする方法を示しています。 + +```python +import wandb + +api = wandb.Api() +# entity/project/artifact:alias を指定して取得 +artifact = api.artifact("entity/project/artifact:alias") +artifact.download() +``` + +### レジストリからの Artifact のダウンロード + +次の例は、W&B Registry からリンクされた Artifact を取得する方法を示しています。 + +```python +import wandb + +REGISTRY = "" +COLLECTION = "" +VERSION = "" + +api = wandb.Api() +artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{VERSION}" + +# Artifact を取得 +fetched_artifact = api.artifact(name = artifact_name) + +# Artifact をダウンロード。ダウンロードされたコンテンツへのパスを返します。 +downloaded_path = fetched_artifact.download() +``` + +### W&B Registry の照会 + +Mongo形式のフィルタを使用して、W&B Registries、Collections、および Artifacts を照会します。次の例では、正規表現を使用してコレクションを名前でフィルタリングする方法を示します。 + +```python +import wandb + +# wandb API を初期化 +api = wandb.Api() + +# レジストリに関わらず、コレクション名に `yolo` という文字列を含む +# すべてのコレクションをフィルタリング +collection_filters = { + "name": {"$regex": "yolo"} +} + +# フィルタに一致するすべてのコレクションのイテラブルを返します +collections = api.registries().collections(filter=collection_filters) +``` + +レジストリ、コレクション、または Artifact の照会方法の詳細については、[レジストリアイテムの検索](/models/registry/search_registry) を参照してください。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/api.mdx b/ja/models/ref/python/public-api/api.mdx index 819a67f9a9..69202ce9bd 100644 --- a/ja/models/ref/python/public-api/api.mdx +++ b/ja/models/ref/python/public-api/api.mdx @@ -1,661 +1,1013 @@ --- -title: 'Api +title: API +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + - API (Application Programming Interface) は、プログラム間でデータや機能をやり取りするためのインターフェースを提供します。W&B - API は、ユーザーがwandb を通じて**Projects**、**Entities**、**Runs**などのデータにアクセスし、管理することを可能にします。このAPIにより、**Experiments**の追跡や**Reports**の共有を自動化できます。W&B - APIはPythonを含むさまざまなプログラミング言語で利用可能です。これにより、カスタムスクリプトの作成や他のツールとの統合が簡単になります。APIの使用方法に関する詳細な情報は、[API - documentation](https://wandb.ai)を参照してください。' ---- +## class `Api` +W&B サーバーへのクエリ実行に使用されます。 - +**Examples:** + ```python +import wandb -wandb サーバーをクエリするために使用されます。 +wandb.Api() +``` + +### method `Api.__init__` ```python -Api( - overrides: Optional[Dict[str, Any]] = None, - timeout: Optional[int] = None, - api_key: Optional[str] = None -) -> None +__init__( + overrides: 'dict[str, Any] | None' = None, + timeout: 'int | None' = None, + api_key: 'str | None' = None +) → None ``` -#### 例: +API を初期化します。 -最も一般的な初期化方法 +**Args:** + + - `overrides`: `https://api.wandb.ai` 以外の W&B サーバーを使用している場合に `base_url` を設定できます。また、 `entity` 、 `project` 、 `run` のデフォルト値を設定することも可能です。 + - `timeout`: API リクエストの HTTP タイムアウト(秒)。指定しない場合はデフォルトのタイムアウトが使用されます。 + - `api_key`: 認証に使用する APIキー。提供されない場合は、現在の環境または設定からの APIキー が使用されます。環境に設定されていない場合は、 APIキー の入力を求めるプロンプトが表示されます。 -``` ->>> wandb.Api() -``` +--- + +### property Api.client + +クライアントオブジェクトを返します。 -| 引数 | Description | -| :--- | :--- | -| `overrides` | (dict) `https://api.wandb.ai` 以外の wandb サーバーを使用している場合に `base_url` を設定できます。また、`entity`、`project`、および `run` のデフォルト設定をすることができます。 | +**Returns:** + - `RetryingClient`: クライアントプロパティの値。 +--- + +### property Api.default_entity -| 属性 | Description | -| :--- | :--- | +デフォルトの W&B entity を返します。 -## メソッド +**Returns:** + - `str | None`: default_entity プロパティの値。 +--- -### `artifact` +### property Api.user_agent -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1299-L1321) +W&B 公開ユーザーエージェントを返します。 + +**Returns:** + - `str`: user_agent プロパティの値。 +--- + +### property Api.viewer + +viewer オブジェクトを返します。 + +**Raises:** + + - `ValueError`: W&B から viewer データを取得できない場合。 + - `requests.RequestException`: graphql リクエストの実行中にエラーが発生した場合。 + +**Returns:** + - `User`: viewer プロパティの値。 +--- + +### method `Api.artifact` ```python -artifact( - name: str, - type: Optional[str] = None -) +artifact(name: 'str', type: 'str | None' = None) ``` -`project/name` または `entity/project/name` の形式でパスを解析することにより、単一のアーティファクトを返します。 +単一の Artifact を返します。 + +**Args:** + + - `name`: Artifact の名前。Artifact の名前はファイルパスに似ており、最小構成として、Artifact がログ記録された Projects の名前、Artifact の名前、および Artifact のバージョンまたはエイリアスが含まれます。オプションとして、Artifact をログ記録した entity をプレフィックスとして追加し、その後にスラッシュを続けることができます。名前に entity が指定されていない場合は、 Runs または API 設定の entity が使用されます。 + - `type`: 取得する Artifact のタイプ。 + +**Returns:** + `Artifact` オブジェクト。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) アーティファクト名。project/ または entity/project/ で始まる場合があります。name に entity が指定されていない場合、Run または API 設定の entity が使用されます。有効な名前は次の形式になります: name:version name:alias | -| `type` | (str, オプション) 取得するアーティファクトのタイプ。 | +**Raises:** + + - `ValueError`: Artifact 名が指定されていない場合。 + - `ValueError`: Artifact タイプが指定されているが、取得された Artifact のタイプと一致しない場合。 + +**Examples:** + 以下のコードスニペットにおいて、"entity"、"project"、"artifact"、"version"、および "alias" は、それぞれあなたの W&B entity、Artifact が属する Projects の名前、Artifact の名前、および Artifact のバージョンを表すプレースホルダーです。 + +```python +import wandb -| 戻り値 | Description | -| :--- | :--- | -| `Artifact` オブジェクト。 | +# プロジェクト、アーティファクト名、アーティファクトのエイリアスを指定 +wandb.Api().artifact(name="project/artifact:alias") -| 例外 | Description | -| :--- | :--- | -| `ValueError` | アーティファクト名が指定されていない場合。 | -| `ValueError` | アーティファクトタイプが指定されているが、取得したアーティファクトのタイプと一致しない場合。 | +# プロジェクト、アーティファクト名、特定のアーティファクトバージョンを指定 +wandb.Api().artifact(name="project/artifact:version") -#### 注意: +# entity、プロジェクト、アーティファクト名、アーティファクトのエイリアスを指定 +wandb.Api().artifact(name="entity/project/artifact:alias") -このメソッドは外部利用のみを目的としています。wandb リポジトリコード内で `api.artifact()` を呼び出さないでください。 +# entity、プロジェクト、アーティファクト名、特定のアーティファクトバージョンを指定 +wandb.Api().artifact(name="entity/project/artifact:version") +``` -### `artifact_collection` +**Note:** -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1181-L1210) +> このメソッドは外部利用のみを目的としています。wandb リポジトリのコード内で `api.artifact()` を呼び出さないでください。 + +--- + +### method `Api.artifact_collection` ```python -artifact_collection( - type_name: str, - name: str -) -> "public.ArtifactCollection" +artifact_collection(type_name: 'str', name: 'str') → ArtifactCollection ``` -タイプと `entity/project/name` の形式でパスを解析することにより、単一のアーティファクトコレクションを返します。 +タイプ別に単一の Artifact コレクションを返します。 + +返された `ArtifactCollection` オブジェクトを使用して、そのコレクション内の特定の Artifact に関する情報の取得などを行うことができます。 + +**Args:** + + - `type_name`: 取得する Artifact コレクションのタイプ。 + - `name`: Artifact コレクションの名前。オプションとして、Artifact をログ記録した entity をプレフィックスとして追加し、その後にスラッシュを続けることができます。 + +**Returns:** + `ArtifactCollection` オブジェクト。 + +**Examples:** + 以下のコードスニペットにおいて、"type"、"entity"、"project"、および "artifact_name" は、それぞれコレクションのタイプ、あなたの W&B entity、Artifact が属する Projects の名前、および Artifact の名前を表すプレースホルダーです。 + +```python +import wandb -| 引数 | Description | -| :--- | :--- | -| `type_name` | (str) 取得するアーティファクトコレクションのタイプ。 | -| `name` | (str) アーティファクトコレクション名。entity/project で始まる場合があります。 | +collections = wandb.Api().artifact_collection( + type_name="type", name="entity/project/artifact_name" +) -| 戻り値 | Description | -| :--- | :--- | -| `ArtifactCollection` オブジェクト。 | +# コレクション内の最初のアーティファクトを取得 +artifact_example = collections.artifacts()[0] -### `artifact_collection_exists` +# アーティファクトの内容を指定したルートディレクトリにダウンロード +artifact_example.download() +``` + +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1442-L1459) +### method `Api.artifact_collection_exists` ```python -artifact_collection_exists( - name: str, - type: str -) -> bool +artifact_collection_exists(name: 'str', type: 'str') → bool ``` -指定されたプロジェクトとエンティティ内にアーティファクトコレクションが存在するかどうかを返します。 +指定された Projects および entity 内に Artifact コレクションが存在するかどうかを確認します。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) アーティファクトコレクション名。entity/project で始まる場合があります。entity または project が指定されていない場合、オーバーライドパラメーターから推測されます。その他の場合、entity はユーザー設定から取得され、project は "uncategorized" にデフォルト設定されます。 | -| `type` | (str) アーティファクトコレクションのタイプ | +**Args:** + + - `name`: Artifact コレクションの名前。オプションとして、Artifact をログ記録した entity をプレフィックスとして追加し、その後にスラッシュを続けることができます。entity または project が指定されていない場合、オーバーライドパラメータが存在すればそれらからコレクションを推測します。それ以外の場合、entity はユーザー設定から取得され、project はデフォルトで "uncategorized" になります。 + - `type`: Artifact コレクションのタイプ。 + +**Returns:** + Artifact コレクションが存在する場合は True、そうでない場合は False。 + +**Examples:** + 以下のコードスニペットにおいて、"type" および "collection_name" は、それぞれ Artifact コレクションのタイプおよびコレクションの名前を指します。 + +```python +import wandb -| 戻り値 | Description | -| :--- | :--- | -| アーティファクトコレクションが存在する場合は True、そうでない場合は False。 | +wandb.Api.artifact_collection_exists(type="type", name="collection_name") +``` -### `artifact_collections` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1154-L1179) +### method `Api.artifact_collections` ```python artifact_collections( - project_name: str, - type_name: str, - per_page: Optional[int] = 50 -) -> "public.ArtifactCollections" + project_name: 'str', + type_name: 'str', + per_page: 'int' = 50 +) → ArtifactCollections ``` -一致するアーティファクトコレクションのコレクションを返します。 +一致する Artifact コレクションの集合を返します。 -| 引数 | Description | -| :--- | :--- | -| `project_name` | (str) フィルタリングするプロジェクトの名前。 | -| `type_name` | (str) フィルタリングするアーティファクトタイプの名前。 | -| `per_page` | (int, オプション) クエリのページネーションのページサイズを設定します。None はデフォルトサイズを使用します。通常、これを変更する理由はありません。 | +**Args:** + + - `project_name`: フィルタリングする Projects の名前。 + - `type_name`: フィルタリングする Artifact タイプの名前。 + - `per_page`: クエリのページネーションにおけるページサイズを設定します。通常、これを変更する理由はありません。 -| 戻り値 | Description | -| :--- | :--- | -| イテラブルな `ArtifactCollections` オブジェクト。 | +**Returns:** + イテラブルな `ArtifactCollections` オブジェクト。 -### `artifact_exists` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1420-L1440) +### method `Api.artifact_exists` ```python -artifact_exists( - name: str, - type: Optional[str] = None -) -> bool +artifact_exists(name: 'str', type: 'str | None' = None) → bool ``` -指定されたプロジェクトとエンティティ内にアーティファクトバージョンが存在するかどうかを返します。 +指定された Projects および entity 内に Artifact バージョンが存在するかどうかを確認します。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) アーティファクト名。entity/project で始まる場合があります。entity または project が指定されていない場合、オーバーライドパラメータから推測されます。その他の場合、entity はユーザー設定から取得され、project は "uncategorized" にデフォルト設定されます。有効な名前は次の形式になります: name:version name:alias | -| `type` | (str, オプション) アーティファクトのタイプ | +**Args:** + + - `name`: Artifact の名前。Artifact の entity と project をプレフィックスとして追加します。Artifact のバージョンまたはエイリアスをコロンで末尾に付けます。entity または project が指定されていない場合、設定されているオーバーライドパラメータを使用します。それ以外の場合、entity はユーザー設定から取得され、project は "Uncategorized" に設定されます。 + - `type`: Artifact のタイプ。 -| 戻り値 | Description | -| :--- | :--- | -| アーティファクトバージョンが存在する場合は True、そうでない場合は False。 | +**Returns:** + Artifact バージョンが存在する場合は True、そうでない場合は False。 -### `artifact_type` +**Examples:** + 以下のコードスニペットにおいて、"entity"、"project"、"artifact"、"version"、および "alias" は、それぞれあなたの W&B entity、Artifact が属する Projects の名前、Artifact の名前、および Artifact のバージョンを表すプレースホルダーです。 + +```python +import wandb + +wandb.Api().artifact_exists("entity/project/artifact:version") +wandb.Api().artifact_exists("entity/project/artifact:alias") +``` + +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1130-L1152) +### method `Api.artifact_type` ```python -artifact_type( - type_name: str, - project: Optional[str] = None -) -> "public.ArtifactType" +artifact_type(type_name: 'str', project: 'str | None' = None) → ArtifactType ``` 一致する `ArtifactType` を返します。 -| 引数 | Description | -| :--- | :--- | -| `type_name` | (str) 取得するアーティファクトタイプの名前。 | -| `project` | (str, オプション) 指定されている場合、フィルタリングするプロジェクト名またはパス。 | +**Args:** + + - `type_name`: 取得する Artifact タイプの名前。 + - `project`: 指定された場合、フィルタリングする Projects 名またはパス。 -| 戻り値 | Description | -| :--- | :--- | -| `ArtifactType` オブジェクト。 | +**Returns:** + `ArtifactType` オブジェクト。 -### `artifact_types` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1109-L1128) +### method `Api.artifact_types` ```python -artifact_types( - project: Optional[str] = None -) -> "public.ArtifactTypes" +artifact_types(project: 'str | None' = None) → ArtifactTypes ``` -一致するアーティファクトタイプのコレクションを返します。 +一致する Artifact タイプの集合を返します。 -| 引数 | Description | -| :--- | :--- | -| `project` | (str, オプション) 指定されている場合、フィルタリングするプロジェクト名またはパス。 | +**Args:** + + - `project`: フィルタリングする Projects 名またはパス。 -| 戻り値 | Description | -| :--- | :--- | -| イテラブルな `ArtifactTypes` オブジェクト。 | +**Returns:** + イテラブルな `ArtifactTypes` オブジェクト。 -### `artifact_versions` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1212-L1222) +### method `Api.artifact_versions` ```python -artifact_versions( - type_name, name, per_page=50 -) +artifact_versions(type_name, name, per_page=50) ``` -非推奨、代わりに `artifacts(type_name, name)` を使用してください。 +非推奨。代わりに `Api.artifacts(type_name, name)` メソッドを使用してください。 -### `artifacts` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1224-L1260) +### method `Api.artifacts` ```python artifacts( - type_name: str, - name: str, - per_page: Optional[int] = 50, - tags: Optional[List[str]] = None -) -> "public.Artifacts" + type_name: 'str', + name: 'str', + per_page: 'int' = 50, + tags: 'list[str] | None' = None +) → Artifacts +``` + +`Artifacts` コレクションを返します。 + +**Args:** + type_name: 取得する Artifact のタイプ。 name: Artifact のコレクション名。オプションとして、Artifact をログ記録した entity をプレフィックスとして追加し、その後にスラッシュを続けることができます。 per_page: クエリのページネーションにおけるページサイズを設定します。通常、これを変更する理由はありません。 tags: これらのタグをすべて持つ Artifact のみを返します。 + +**Returns:** + イテラブルな `Artifacts` オブジェクト。 + +**Examples:** + 以下のコードスニペットにおいて、"type"、"entity"、"project"、および "artifact_name" は、それぞれ Artifact タイプ、W&B entity、Artifact がログ記録された Projects の名前、および Artifact の名前を表すプレースホルダーです。 + +```python +import wandb + +wandb.Api().artifacts(type_name="type", name="entity/project/artifact_name") +``` + +--- + +### method `Api.automation` + +```python +automation(name: 'str', entity: 'str | None' = None) → Automation +``` + +パラメータに一致する唯一の Automation を返します。 + +**Args:** + + - `name`: 取得するオートメーションの名前。 + - `entity`: オートメーションを取得する対象の entity。 + +**Raises:** + + - `ValueError`: 検索条件に一致する Automation が 0 個または複数存在する場合。 + +**Examples:** + "my-automation" という名前の既存のオートメーションを取得します: + +```python +import wandb + +api = wandb.Api() +automation = api.automation(name="my-automation") +``` + +entity "my-team" から "other-automation" という名前の既存のオートメーションを取得します: + +```python +automation = api.automation(name="other-automation", entity="my-team") +``` + +--- + +### method `Api.automations` + +```python +automations( + entity: 'str | None' = None, + name: 'str | None' = None, + per_page: 'int' = 50 +) → Iterator[Automation] ``` -指定されたパラメータから `Artifacts` コレクションを返します。 +指定されたパラメータに一致するすべての Automations に対するイテレータを返します。 + +パラメータが指定されない場合、返されるイテレータにはユーザーがアクセス権を持つすべての Automations が含まれます。 + +**Args:** + + - `entity`: オートメーションを取得する対象の entity。 + - `name`: 取得するオートメーションの名前。 + - `per_page`: 1ページあたりに取得するオートメーションの数。デフォルトは 50 です。通常、これを変更する理由はありません。 + +**Returns:** + オートメーションのリスト。 + +**Examples:** + entity "my-team" のすべての既存のオートメーションを取得します: + +```python +import wandb + +api = wandb.Api() +automations = api.automations(entity="my-team") +``` + +--- + +### method `Api.create_automation` + +```python +create_automation( + obj: 'NewAutomation', + fetch_existing: 'bool' = False, + **kwargs: 'Unpack[WriteAutomationsKwargs]' +) → Automation +``` + +新しい Automation を作成します。 + +**Args:** + obj: 作成するオートメーション。 fetch_existing: True の場合、競合するオートメーションが既に存在すると、エラーを発生させる代わりに既存のオートメーションの取得を試みます。 **kwargs: 作成前にオートメーションに割り当てる追加の値。指定された場合、これらはオートメーションに既に設定されている値を上書きします: + - `name`: オートメーションの名前。 + - `description`: オートメーションの説明。 + - `enabled`: オートメーションが有効かどうか。 + - `scope`: オートメーションのスコープ。 + - `event`: オートメーションをトリガーするイベント。 + - `action`: オートメーションによってトリガーされるアクション。 + +**Returns:** + 保存された Automation。 -| 引数 | Description | -| :--- | :--- | -| `type_name` | (str) 取得するアーティファクトのタイプ。 | -| `name` | (str) アーティファクトコレクションの名前。entity/project で始まる場合があります。 | -| `per_page` | (int, オプション) クエリのページネーションのページサイズを設定します。None はデフォルトサイズを使用します。通常、これを変更する理由はありません。 | -| `tags` | (list[str], オプション) これらのタグがすべて含まれているアーティファクトのみを返します。 | +**Examples:** + 特定のプロジェクト内の Run がカスタムしきい値を超えるメトリクスをログに記録したときに Slack 通知を送信する、"my-automation" という名前の新しいオートメーションを作成します: -| 戻り値 | Description | -| :--- | :--- | -| イテラブルな `Artifacts` オブジェクト。 | +```python +import wandb +from wandb.automations import OnRunMetric, RunEvent, SendNotification + +api = wandb.Api() + +project = api.project("my-project", entity="my-team") + +# チームの最初の Slack インテグレーションを使用 +slack_hook = next(api.slack_integrations(entity="my-team")) + +event = OnRunMetric( + scope=project, + filter=RunEvent.metric("custom-metric") > 10, +) +action = SendNotification.from_integration(slack_hook) + +automation = api.create_automation( + event >> action, + name="my-automation", + description="'custom-metric' が 10 を超えるたびに Slack メッセージを送信します。", +) +``` -### `create_project` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L294-L301) +### method `Api.create_custom_chart` ```python -create_project( - name: str, - entity: str -) -> None +create_custom_chart( + entity: 'str', + name: 'str', + display_name: 'str', + spec_type: "Literal['vega2']", + access: "Literal['private', 'public']", + spec: 'str | dict' +) → str +``` + +カスタムチャートのプリセットを作成し、その ID を返します。 + +**Args:** + + - `entity`: チャートを所有する entity (ユーザーまたはチーム)。 + - `name`: チャートプリセットの一意の識別子。 + - `display_name`: UI に表示される人間が読める名前。 + - `spec_type`: 仕様のタイプ。Vega-Lite v2 仕様の場合は "vega2" である必要があります。 + - `access`: チャートのアクセスレベル: + - "private": 作成した entity のみがチャートにアクセス可能。 + - "public": チャートが一般公開される。 + - `spec`: 辞書または JSON 文字列としての Vega/Vega-Lite 仕様。 + +**Returns:** + 作成されたチャートプリセットの ID。形式は "entity/name" です。 + +**Raises:** + + - `wandb.Error`: チャートの作成に失敗した場合。 + - `UnsupportedError`: サーバーがカスタムチャートをサポートしていない場合。 + +**Example:** + ```python + import wandb + + api = wandb.Api() + + # シンプルな棒グラフの仕様を定義 + vega_spec = { + "$schema": "https://vega.github.io/schema/vega-lite/v6.json", + "mark": "bar", + "data": {"name": "wandb"}, + "encoding": { + "x": {"field": "${field:x}", "type": "ordinal"}, + "y": {"field": "${field:y}", "type": "quantitative"}, + }, + } + + # カスタムチャートを作成 + chart_id = api.create_custom_chart( + entity="my-team", + name="my-bar-chart", + display_name="My Custom Bar Chart", + spec_type="vega2", + access="private", + spec=vega_spec, + ) + + # wandb.plot_table() で使用 + chart = wandb.plot_table( + vega_spec_name=chart_id, + data_table=my_table, + fields={"x": "category", "y": "value"}, + ) + ``` + +--- + +### method `Api.create_project` + +```python +create_project(name: 'str', entity: 'str') → None ``` 新しいプロジェクトを作成します。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) 新しいプロジェクトの名前。 | -| `entity` | (str) 新しいプロジェクトのエンティティ。 | +**Args:** + + - `name`: 新しいプロジェクトの名前。 + - `entity`: 新しいプロジェクトの entity。 -### `create_run` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L303-L323) +### method `Api.create_registry` + +```python +create_registry( + name: 'str', + visibility: "Literal['organization', 'restricted']", + organization: 'str | None' = None, + description: 'str | None' = None, + artifact_types: 'list[str] | None' = None +) → Registry +``` + +新しいレジストリを作成します。 + +**Args:** + + - `name`: レジストリの名前。名前は組織内で一意である必要があります。 + - `visibility`: レジストリの公開範囲。 + - `organization`: 組織内の誰でもこのレジストリを閲覧できます。役割は後で UI の設定から編集可能です。 + - `restricted`: UI 経由で招待されたメンバーのみがこのレジストリにアクセスできます。公開共有は無効になります。 + - `organization`: レジストリの組織。設定に組織が設定されていない場合、entity が1つの組織にのみ属しているなら、その entity から組織が取得されます。 + - `description`: レジストリの説明。 + - `artifact_types`: レジストリで受け入れられる Artifact タイプ。タイプは 128 文字以内で、`/` または `:` 文字を含めることはできません。指定しない場合、すべてのタイプが受け入れられます。レジストリに追加された許可タイプは後で削除することはできません。 + +**Returns:** + レジストリオブジェクト。 + +**Examples:** + ```python +import wandb + +api = wandb.Api() +registry = api.create_registry( + name="my-registry", + visibility="restricted", + organization="my-org", + description="これはテストレジストリです", + artifact_types=["model"], +) +``` + +--- + +### method `Api.create_run` ```python create_run( - *, - run_id: Optional[str] = None, - project: Optional[str] = None, - entity: Optional[str] = None -) -> "public.Run" + run_id: 'str | None' = None, + project: 'str | None' = None, + entity: 'str | None' = None +) → public.Run ``` -新しい run を作成します。 +新しい Run を作成します。 -| 引数 | Description | -| :--- | :--- | -| `run_id` | (str, オプション) 指定された場合、run に割り当てられる ID。run ID はデフォルトで自動生成されますので、通常はこれを指定する必要はありません。指定する場合はリスクを負ってください。 | -| `project` | (str, オプション) 指定された場合、新しい run のプロジェクト。 | -| `entity` | (str, オプション) 指定された場合、新しい run のエンティティ。 | +**Args:** + + - `run_id`: Run に割り当てる ID。指定しない場合、W&B はランダムな ID を作成します。 + - `project`: Run をログに記録する Projects。プロジェクトが指定されていない場合、"Uncategorized" という名前のプロジェクトにログを記録します。 + - `entity`: プロジェクトを所有する entity。entity が指定されていない場合、デフォルトの entity に Run をログ記録します。 -| 戻り値 | Description | -| :--- | :--- | -| 新たに作成された `Run`。 | +**Returns:** + 新しく作成された `Run`。 -### `create_run_queue` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L325-L435) +### method `Api.create_run_queue` ```python create_run_queue( - name: str, - type: "public.RunQueueResourceType", - entity: Optional[str] = None, - prioritization_mode: Optional['public.RunQueuePrioritizationMode'] = None, - config: Optional[dict] = None, - template_variables: Optional[dict] = None -) -> "public.RunQueue" + name: 'str', + type: 'public.RunQueueResourceType', + entity: 'str | None' = None, + prioritization_mode: 'public.RunQueuePrioritizationMode | None' = None, + config: 'dict | None' = None, + template_variables: 'dict | None' = None +) → public.RunQueue ``` -新しい run キュー (launch) を作成します。 +W&B Launch で新しい Run キューを作成します。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) 作成するキューの名前 | -| `type` | (str) キューに使用されるリソースのタイプ。"local-container"、"local-process"、"kubernetes"、"sagemaker"、または "gcp-vertex" のいずれか。 | -| `entity` | (str) キューを作成するエンティティのオプションの名前。None の場合、設定されたまたはデフォルトのエンティティが使用されます。 | -| `prioritization_mode` | (str) オプションのプライオリティバージョン。"V0" または None | -| `config` | (dict) キューに使用されるデフォルトのリソース設定のオプション。テンプレート変数を指定するにはハンドルバー(例:`{{var}}`)を使用します。 | -| `template_variables` | (dict) 設定内で使用されるテンプレート変数のスキーマの辞書。期待される形式: `{ "var-name": { "schema": { "type": ("string", "number", or "integer"), "default": (optional value), "minimum": (optional minimum), "maximum": (optional maximum), "enum": [..."(options)"] } } }` | +**Args:** + + - `name`: 作成するキューの名前 + - `type`: キューに使用されるリソースのタイプ。"local-container"、"local-process"、"kubernetes"、"sagemaker"、または "gcp-vertex" のいずれか。 + - `entity`: キューを作成する entity の名前。 `None` の場合、設定された entity またはデフォルトの entity を使用します。 + - `prioritization_mode`: 使用する優先順位付けのバージョン。"V0" または `None`。 + - `config`: キューに使用されるデフォルトのリソース設定。テンプレート変数を指定するにはハンドルバー(例: `{{var}}`)を使用します。 + - `template_variables`: 設定で使用するテンプレート変数スキーマの辞書。 -| 戻り値 | Description | -| :--- | :--- | -| 新しく作成された `RunQueue` | +**Returns:** + 新しく作成された `RunQueue`。 -| 例外 | Description | -| :--- | :--- | -| ValueError: パラメーターのいずれかが無効な場合 wandb.Error: wandb API のエラー | +**Raises:** + パラメータのいずれかが無効な場合は `ValueError` 、W&B API エラーの場合は `wandb.Error`。 -### `create_team` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L843-L853) +### method `Api.create_team` ```python -create_team( - team, admin_username=None -) +create_team(team: 'str', admin_username: 'str | None' = None) → Team ``` 新しいチームを作成します。 -| 引数 | Description | -| :--- | :--- | -| `team` | (str) チーム名 | -| `admin_username` | (str) チームの管理ユーザーのオプションのユーザー名、デフォルトは現在のユーザーです。 | +**Args:** + + - `team`: チームの名前 + - `admin_username`: チームの管理者ユーザーのユーザー名。デフォルトは現在のユーザーです。 -| 戻り値 | Description | -| :--- | :--- | -| `Team` オブジェクト | +**Returns:** + `Team` オブジェクト。 -### `create_user` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L552-L562) +### method `Api.create_user` ```python -create_user( - email, admin=(False) -) +create_user(email: 'str', admin: 'bool | None' = False) → User ``` 新しいユーザーを作成します。 -| 引数 | Description | -| :--- | :--- | -| `email` | (str) ユーザーのメールアドレス | -| `admin` | (bool) このユーザーがグローバルインスタンス管理者であるかどうか | +**Args:** + + - `email`: ユーザーのメールアドレス。 + - `admin`: ユーザーをグローバルインスタンス管理者として設定します。 -| 戻り値 | Description | -| :--- | :--- | -| `User` オブジェクト | +**Returns:** + `User` オブジェクト。 -### `flush` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L629-L636) +### method `Api.delete_automation` ```python -flush() +delete_automation(obj: 'Automation | str') → Literal[True] ``` -ローカルキャッシュをフラッシュします。 +オートメーションを削除します。 -API オブジェクトは run のローカルキャッシュを保持するため、スクリプトを実行中に run の状態が変更される可能性がある場合、`api.flush()` を使用してローカルキャッシュをクリアし、run に関連付けられた最新の値を取得します。 +**Args:** + + - `obj`: 削除するオートメーション、またはその ID。 -### `from_path` +**Returns:** + オートメーションが正常に削除された場合は True。 + +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L638-L692) +### method `Api.flush` ```python -from_path( - path -) +flush() ``` -パスから run、sweep、プロジェクト、またはレポートを返します。 +ローカルキャッシュをフラッシュ(消去)します。 + +API オブジェクトは Runs のローカルキャッシュを保持しているため、スクリプトの実行中に Run の状態が変化する可能性がある場合は、 `api.flush()` を使用してローカルキャッシュをクリアし、Run に関連付けられた最新の値を取得する必要があります。 + +--- -#### 例: +### method `Api.from_path` +```python +from_path(path: 'str') ``` -project = api.from_path("my_project") -team_project = api.from_path("my_team/my_project") -run = api.from_path("my_team/my_project/runs/id") -sweep = api.from_path("my_team/my_project/sweeps/id") -report = api.from_path("my_team/my_project/reports/My-Report-Vm11dsdf") + +パスから Run、Sweep、Projects、または Report を返します。 + +**Args:** + + - `path`: プロジェクト、Run、Sweep、または Report へのパス。 + +**Returns:** + `Project`、`Run`、`Sweep`、または `BetaReport` のインスタンス。 + +**Raises:** + パスが無効であるか、オブジェクトが存在しない場合は `wandb.Error`。 + +**Examples:** + 以下のコードスニペットにおいて、"project"、"team"、"run_id"、"sweep_id"、および "report_name" は、それぞれプロジェクト、チーム、Run ID、Sweep ID、および特定の Report の名前を表すプレースホルダーです。 + +```python +import wandb + +api = wandb.Api() + +project = api.from_path("project") +team_project = api.from_path("team/project") +run = api.from_path("team/project/runs/run_id") +sweep = api.from_path("team/project/sweeps/sweep_id") +report = api.from_path("team/project/reports/report_name") +``` + +--- + +### method `Api.integrations` + +```python +integrations( + entity: 'str | None' = None, + per_page: 'int' = 50 +) → Iterator[Integration] ``` -| 引数 | Description | -| :--- | :--- | -| `path` | (str) プロジェクト、run、sweep、またはレポートへのパス | +entity のすべてのインテグレーションのイテレータを返します。 -| 戻り値 | Description | -| :--- | :--- | -| `Project`、`Run`、`Sweep`、または `BetaReport` インスタンス。 | +**Args:** + + - `entity`: インテグレーションを取得する entity (チーム名など)。提供されない場合、ユーザーのデフォルト entity が使用されます。 + - `per_page`: 1ページあたりに取得するインテグレーションの数。デフォルトは 50 です。通常、これを変更する理由はありません。 -| 例外 | Description | -| :--- | :--- | -| wandb.Error: パスが無効、またはオブジェクトが存在しない場合 | +**Yields:** + + - `Iterator[SlackIntegration | WebhookIntegration]`: サポートされているインテグレーションのイテレータ。 -### `job` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1323-L1340) +### method `Api.job` ```python -job( - name: Optional[str], - path: Optional[str] = None -) -> "public.Job" +job(name: 'str | None', path: 'str | None' = None) → public.Job ``` -指定されたパラメーターから `Job` を返します。 +`Job` オブジェクトを返します。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) ジョブの名前。 | -| `path` | (str, オプション) 指定された場合、ジョブアーティファクトをダウンロードするルートパス。 | +**Args:** + + - `name`: ジョブの名前。 + - `path`: ジョブ Artifact をダウンロードするためのルートパス。 -| 戻り値 | Description | -| :--- | :--- | -| `Job` オブジェクト。 | +**Returns:** + `Job` オブジェクト。 -### `list_jobs` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1342-L1418) +### method `Api.list_jobs` ```python -list_jobs( - entity: str, - project: str -) -> List[Dict[str, Any]] +list_jobs(entity: 'str', project: 'str') → list[dict[str, Any]] ``` -指定されたエンティティとプロジェクトに対して、利用可能なジョブのリストを返します。 +指定された entity と Projects に対してジョブがある場合、そのリストを返します。 -| 引数 | Description | -| :--- | :--- | -| `entity` | (str) リストされたジョブのエンティティ。 | -| `project` | (str) リストされたジョブのプロジェクト。 | +**Args:** + + - `entity`: リストされるジョブの entity。 + - `project`: リストされるジョブの Projects。 -| 戻り値 | Description | -| :--- | :--- | -| 一致するジョブのリスト。 | +**Returns:** + 一致するジョブのリスト。 -### `project` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L785-L808) +### method `Api.project` ```python -project( - name: str, - entity: Optional[str] = None -) -> "public.Project" +project(name: 'str', entity: 'str | None' = None) → public.Project ``` -指定された名前 (および指定された場合はエンティティ) の `Project` を返します。 +指定された名前(および指定されていれば entity)を持つ `Project` を返します。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) プロジェクト名。 | -| `entity` | (str) リクエストされたエンティティ名。None の場合、`Api` に渡されたデフォルトのエンティティにフォールバックします。デフォルトのエンティティがない場合は、`ValueError` をスローします。 | +**Args:** + + - `name`: プロジェクト名。 + - `entity`: 要求された entity の名前。 `None` の場合、 `Api` に渡されたデフォルトの entity にフォールバックします。デフォルトの entity がない場合は `ValueError` を発生させます。 -| 戻り値 | Description | -| :--- | :--- | -| `Project` オブジェクト。 | +**Returns:** + `Project` オブジェクト。 -### `projects` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L759-L783) +### method `Api.projects` ```python -projects( - entity: Optional[str] = None, - per_page: Optional[int] = 200 -) -> "public.Projects" +projects(entity: 'str | None' = None, per_page: 'int' = 200) → public.Projects ``` -指定されたエンティティのプロジェクトを取得します。 +指定された entity の Projects を取得します。 -| 引数 | Description | -| :--- | :--- | -| `entity` | (str) リクエストされたエンティティ名。None の場合、`Api` に渡されたデフォルトのエンティティにフォールバックします。デフォルトのエンティティがない場合は、`ValueError` をスローします。 | -| `per_page` | (int) クエリのページネーションのページサイズを設定します。None はデフォルトサイズを使用します。通常、これを変更する理由はありません。 | +**Args:** + + - `entity`: 要求された entity の名前。 `None` の場合、 `Api` に渡されたデフォルトの entity にフォールバックします。デフォルトの entity がない場合は `ValueError` を発生させます。 + - `per_page`: クエリのページネーションにおけるページサイズを設定します。通常、これを変更する理由はありません。 -| 戻り値 | Description | -| :--- | :--- | -| `Projects` オブジェクトで、`Project` オブジェクトのイテラブルなコレクションです。 | +**Returns:** + `Project` オブジェクトのイテラブルなコレクションである `Projects` オブジェクト。 -### `queued_run` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1054-L1075) +### method `Api.queued_run` ```python queued_run( - entity, project, queue_name, run_queue_item_id, project_queue=None, + entity: 'str', + project: 'str', + queue_name: 'str', + run_queue_item_id: 'str', + project_queue=None, priority=None ) ``` -パスに基づいて単一のキューされた run を返します。 +パスに基づいて、単一のキューに入れられた Run を返します。 -`entity/project/queue_id/run_queue_item_id` の形式のパスを解析します。 +`entity/project/queue_id/run_queue_item_id` 形式のパスを解析します。 -### `registries` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1461-L1524) +### method `Api.registries` ```python registries( - organization: Optional[str] = None, - filter: Optional[Dict[str, Any]] = None -) -> Registries + organization: 'str | None' = None, + filter: 'dict[str, Any] | None' = None, + per_page: 'int' = 100 +) → Registries ``` -レジストリのイテレータを返します。 +`Registry` オブジェクトのレイジーイテレータを返します。 + +イテレータを使用して、組織のレジストリ全体でレジストリ、コレクション、または Artifact バージョンを検索およびフィルタリングします。 -イテレータを使用して、組織のレジストリ内のレジストリ、コレクション、またはアーティファクトバージョンを検索およびフィルタリングします。 +**Args:** + + - `organization`: (str, オプション) 取得するレジストリの組織。指定しない場合、ユーザー設定で指定された組織が使用されます。 + - `filter`: (dict, オプション) レイジーレジストリイテレータの各オブジェクトに適用する MongoDB スタイルのフィルター。レジストリのフィルタリングに使用できるフィールドは `name`、`description`、`created_at`、`updated_at` です。コレクションのフィルタリングに使用できるフィールドは `name`、`tag`、`description`、`created_at`、`updated_at` です。バージョンのフィルタリングに使用できるフィールドは `tag`、`alias`、`created_at`、`updated_at`、`metadata` です。 + - `per_page`: クエリのページネーションにおけるページサイズを設定します。 -#### 例: +**Returns:** + `Registry` オブジェクトのレイジーイテレータ。 -"model" を含む名前のすべてのレジストリを見つけます。 +**Examples:** + 名前が "model" を含むすべてのレジストリを検索します。 ```python import wandb -api = wandb.Api() # エンティティが複数の組織に属する場合、組織を指定します。 +api = wandb.Api() # 自分の entity が複数の組織に属している場合は、組織を指定してください api.registries(filter={"name": {"$regex": "model"}}) -``` +``` -"my_collection" という名前と "my_tag" というタグのあるコレクションをレジストリで見つけます。 +名前が "my_collection" でタグが "my_tag" のレジストリ内のすべてのコレクションを検索します。 ```python api.registries().collections(filter={"name": "my_collection", "tag": "my_tag"}) -``` +``` -"my_collection" を含むコレクション名と "best" というエイリアスを持つバージョンのあるすべてのアーティファクトバージョンを見つけます。 +コレクション名に "my_collection" を含み、エイリアスが "best" であるバージョンを持つレジストリ内のすべての Artifact バージョンを検索します。 ```python api.registries().collections( filter={"name": {"$regex": "my_collection"}} ).versions(filter={"alias": "best"}) -``` +``` -"model" を含み、タグ "prod" またはエイリアス "best" を持つすべてのアーティファクトバージョンをレジストリで見つけます。 +名前が "model" を含み、タグが "prod" またはエイリアスが "best" である、レジストリ内のすべての Artifact バージョンを検索します。 ```python api.registries(filter={"name": {"$regex": "model"}}).versions( filter={"$or": [{"tag": "prod"}, {"alias": "best"}]} ) +``` + +--- + +### method `Api.registry` + +```python +registry(name: 'str', organization: 'str | None' = None) → Registry ``` -| 引数 | Description | -| :--- | :--- | -| `organization` | (str, オプション) 取得するレジストリの組織。指定されていない場合、ユーザー設定で指定された組織を使用します。 | -| `filter` | (dict, オプション) レジストリイテレータ内の各オブジェクトに適用する MongoDB スタイルのフィルタ。コレクションをフィルタリングする際に利用可能なフィールド: `name`, `description`, `created_at`, `updated_at`。コレクションをフィルタリングする際に利用可能なフィールド: `name`, `tag`, `description`, `created_at`, `updated_at`。バージョンをフィルタリングする際に利用可能なフィールド: `tag`, `alias`, `created_at`, `updated_at`, `metadata` | +レジストリ名を指定してレジストリを返します。 + +**Args:** + + - `name`: レジストリの名前。これには `wandb-registry-` プレフィックスは含まれません。 + - `organization`: レジストリの組織。設定に組織が設定されていない場合、entity が1つの組織にのみ属しているなら、その entity から組織が取得されます。 + +**Returns:** + レジストリオブジェクト。 + +**Examples:** + レジストリを取得して更新する -| 戻り値 | Description | -| :--- | :--- | -| レジストリのイテレータ。 | +```python +import wandb -### `reports` +api = wandb.Api() +registry = api.registry(name="my-registry", organization="my-org") +registry.description = "これは更新された説明です" +registry.save() +``` -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L810-L841) +--- + +### method `Api.reports` ```python reports( - path: str = "", - name: Optional[str] = None, - per_page: Optional[int] = 50 -) -> "public.Reports" + path: 'str' = '', + name: 'str | None' = None, + per_page: 'int' = 50 +) → public.Reports ``` -指定されたプロジェクトパスのレポートを取得します。 +指定されたプロジェクトパスの Reports を取得します。 -警告: この API はベータ版であり、将来のリリースで変更される可能性があります。 +注意: `wandb.Api.reports()` API はベータ版であり、将来のリリースで変更される可能性があります。 -| 引数 | Description | -| :--- | :--- | -| `path` | (str) レポートが存在するプロジェクトのパス、形式は: "entity/project" となります。 | -| `name` | (str, オプション) リクエストされたレポートのオプションの名前。 | -| `per_page` | (int) クエリのページネーションのページサイズを設定します。None はデフォルトサイズを使用します。通常、これを変更する理由はありません。 | +**Args:** + + - `path`: Report が存在する Projects へのパス。プロジェクトを作成した entity をプレフィックスとして追加し、その後にスラッシュを続けます。 + - `name`: 要求された Report の名前。 + - `per_page`: クエリのページネーションにおけるページサイズを設定します。通常、これを変更する理由はありません。 -| 戻り値 | Description | -| :--- | :--- | -| `Reports` オブジェクトで、`BetaReport` オブジェクトのイテラブルなコレクションです。 | +**Returns:** + `BetaReport` オブジェクトのイテラブルなコレクションである `Reports` オブジェクト。 -### `run` +**Examples:** + ```python +import wandb -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1037-L1052) +wandb.Api.reports("entity/project") +``` + +--- + +### method `Api.run` ```python -run( - path="" -) +run(path='') ``` -`entity/project/run_id` の形式でパスを解析することにより、単一の run を返します。 +`entity/project/run_id` 形式のパスを解析して、単一の Run を返します。 -| 引数 | Description | -| :--- | :--- | -| `path` | (str) `entity/project/run_id` 形式の run へのパス。`api.entity` が設定されている場合、この形式は `project/run_id` となり、`api.project` が設定されている場合、run_id のみです。 | +**Args:** + + - `path`: `entity/project/run_id` 形式の Run へのパス。 `api.entity` が設定されている場合は `project/run_id` 形式に、 `api.project` が設定されている場合は単に `run_id` にすることができます。 -| 戻り値 | Description | -| :--- | :--- | -| `Run` オブジェクト。 | +**Returns:** + `Run` オブジェクト。 -### `run_queue` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1077-L1090) +### method `Api.run_queue` ```python -run_queue( - entity, name -) +run_queue(entity: 'str', name: 'str') ``` -エンティティの名前付き `RunQueue` を返します。 +entity の指定された名前の `RunQueue` を返します。 -新しい `RunQueue` を作成するには、`wandb.Api().create_run_queue(...)` を使用してください。 +Run キューの作成方法の詳細については、 `Api.create_run_queue` を参照してください。 -### `runs` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L904-L1035) +### method `Api.runs` ```python runs( - path: Optional[str] = None, - filters: Optional[Dict[str, Any]] = None, - order: str = "+created_at", - per_page: int = 50, - include_sweeps: bool = (True) + path: 'str | None' = None, + filters: 'dict[str, Any] | None' = None, + order: 'str' = '+created_at', + per_page: 'int' = 50, + include_sweeps: 'bool' = True, + lazy: 'bool' = True ) ``` -指定されたフィルターに一致するプロジェクトからの一連の run を返します。 - -フィルターに使用できるフィールドには以下のものがあります: - -- `createdAt`: run が作成されたタイムスタンプ。(ISO 8601 フォーマット、例: "2023-01-01T12:00:00Z") -- `displayName`: run の人間が読みやすい表示名。(例: "eager-fox-1") -- `duration`: run の合計実行時間(秒単位)。 -- `group`: 関連する run をまとめるために使用されるグループ名。 -- `host`: run が実行されたホスト名。 -- `jobType`: ジョブのタイプまたは run の目的。 -- `name`: run の一意の識別子。(例: "a1b2cdef") -- `state`: run の現在の状態。 -- `tags`: run に関連付けられたタグ。 -- `username`: run を開始したユーザーのユーザー名。 +`Run` オブジェクトをレイジーに反復する `Runs` オブジェクトを返します。 -さらに、run の設定や要約メトリクス内の項目によるフィルタリングが可能です。例: `config.experiment_name`, `summary_metrics.loss` など。 +フィルタリングに使用できるフィールドには、以下が含まれます: +- `createdAt`: Run が作成されたタイムスタンプ(ISO 8601 形式、例: "2023-01-01T12:00:00Z")。 +- `displayName`: Run の人間が読める表示名(例: "eager-fox-1")。 +- `duration`: Run の総実行時間(秒)。 +- `group`: 関連する Runs をまとめて整理するために使用されるグループ名。 +- `host`: Run が実行されたホスト名。 +- `jobType`: ジョブのタイプまたは Run の目的。 +- `name`: Run の一意識別子(例: "a1b2cdef")。 +- `state`: Run の現在の状態。 +- `tags`: Run に関連付けられたタグ。 +- `username`: Run を開始したユーザーのユーザー名。 -より複雑なフィルタリングには、MongoDB クエリオペレーターを使用できます。詳細は、以下を参照してください: https://docs.mongodb.com/manual/reference/operator/query サポートされている操作には以下のものがあります: +さらに、Run 設定(config)やサマリーメトリクス内の項目でフィルタリングすることもできます( `config.experiment_name`、`summary_metrics.loss` など)。 +より複雑なフィルタリングには、MongoDB クエリ演算子を使用できます。詳細については、https://docs.mongodb.com/manual/reference/operator/query を参照してください。以下の操作がサポートされています: - `$and` - `$or` - `$nor` @@ -670,220 +1022,319 @@ runs( - `$exists` - `$regex` -#### 例: - -設定されている foo という experiment_name を持つ my_project 内の run を見つけます - -``` -api.runs( - path="my_entity/my_project", - filters={"config.experiment_name": "foo"}, -) -``` +**Args:** + + - `path`: (str) プロジェクトへのパス。"entity/project" の形式である必要があります。 + - `filters`: (dict) MongoDB クエリ言語を使用した特定の Runs のクエリ。config.key、summary_metrics.key、state、entity、createdAt などの Run プロパティでフィルタリングできます。 + - `例`: `{"config.experiment_name": "foo"}` は、設定項目の experiment name が "foo" に設定されている Runs を検索します。 + - `order`: (str) 並び順は `created_at`、`heartbeat_at`、`config.*.value`、または `summary_metrics.*` を指定できます。 `+` を先頭に付けると昇順(デフォルト)、 `-` を先頭に付けると降順になります。デフォルトの順序は run.created_at の古い順です。 + - `per_page`: (int) クエリのページネーションにおけるページサイズを設定します。 + - `include_sweeps`: (bool) 結果に Sweep の Runs を含めるかどうか。 + - `lazy`: (bool) 高速化のためにレイジーローディングを使用するかどうか。True(デフォルト)の場合、最初は必須の Run メタデータのみが読み込まれます。config、summaryMetrics、systemMetrics などの重いフィールドは、アクセスされたときにオンデマンドで読み込まれます。最初からすべてのデータを取得するには False に設定します。 + +**Returns:** + `Run` オブジェクトのイテラブルなコレクションである `Runs` オブジェクト。 + +**Examples:** + ```python +import wandb +from wandb.apis.public import Api -設定されている foo または bar という experiment_name を持つ my_project 内の run を見つけます +# config.experiment_name が "foo" に設定されているプロジェクト内の Runs を検索 +Api.runs(path="my_entity/project", filters={"config.experiment_name": "foo"}) +``` -``` -api.runs( - path="my_entity/my_project", +```python +# config.experiment_name が "foo" または "bar" に設定されているプロジェクト内の Runs を検索 +Api.runs( + path="my_entity/project", filters={ - "$or": [ - {"config.experiment_name": "foo"}, - {"config.experiment_name": "bar"}, - ] + "$or": [ + {"config.experiment_name": "foo"}, + {"config.experiment_name": "bar"}, + ] }, ) -``` - -experiment_name が正規表現に一致する my_project 内の run を見つけます(アンカーはサポートされていません) +``` -``` -api.runs( - path="my_entity/my_project", +```python +# config.experiment_name が正規表現に一致するプロジェクト内の Runs を検索 +# (アンカーはサポートされていません) +Api.runs( + path="my_entity/project", filters={"config.experiment_name": {"$regex": "b.*"}}, ) -``` - -run の名前が正規表現に一致する my_project 内の run を見つけます(アンカーはサポートされていません) +``` -``` -api.runs( - path="my_entity/my_project", - filters={"display_name": {"$regex": "^foo.*"}}, +```python +# Run の表示名が正規表現に一致するプロジェクト内の Runs を検索 +# (アンカーはサポートされていません) +Api.runs( + path="my_entity/project", filters={"display_name": {"$regex": "^foo.*"}} ) -``` +``` -実験に "category" というネストされたフィールドを持つ run を探します +```python +# loss の昇順でソートされたプロジェクト内の Runs を検索 +Api.runs(path="my_entity/project", order="+summary_metrics.loss") +``` -``` -api.runs( - path="my_entity/my_project", - filters={"config.experiment.category": "testing"}, -) -``` +--- -要約メトリクスの model1 下に辞書としてネストされている損失値0.5を持つ run を探します +### method `Api.slack_integrations` -``` -api.runs( - path="my_entity/my_project", - filters={"summary_metrics.model1.loss": 0.5}, -) +```python +slack_integrations( + entity: 'str | None' = None, + per_page: 'int' = 50 +) → Iterator[SlackIntegration] ``` -上昇損失に基づいて my_project 内の run を探します +entity の Slack インテグレーションのイテレータを返します。 -``` -api.runs(path="my_entity/my_project", order="+summary_metrics.loss") -``` +**Args:** + + - `entity`: インテグレーションを取得する entity (チーム名など)。提供されない場合、ユーザーのデフォルト entity が使用されます。 + - `per_page`: 1ページあたりに取得するインテグレーションの数。デフォルトは 50 です。通常、これを変更する理由はありません。 + +**Yields:** + + - `Iterator[SlackIntegration]`: Slack インテグレーションのイテレータ。 -| 引数 | Description | -| :--- | :--- | -| `path` | (str) プロジェクトへのパス。形式は: "entity/project" | -| `filters` | (dict) MongoDB クエリ言語を使用して特定の run をクエリします。run のプロパティ(config.key、summary_metrics.key、state、entity、createdAt など)でフィルタリングできます。例: `{"config.experiment_name": "foo"}` は、実験名に foo が設定されている run を見つけます。 | -| `order` | (str) 並び順は `created_at`、`heartbeat_at`、`config.*.value`、`summary_metrics.*` にできます。order の前に + を付けると昇順になります。order の前に - を付けると降順(デフォルト)になります。デフォルトの並び順は、run の created_at で、古い順から新しい順です。 | -| `per_page` | (int) クエリのページネーションのページサイズを設定します。 | -| `include_sweeps` | (bool) 結果に sweep run を含めるかどうか。 | +**Examples:** + チーム "my-team" に登録されているすべての Slack インテグレーションを取得します: -| 戻り値 | Description | -| :--- | :--- | -| `Runs` オブジェクトで、`Run` オブジェクトのイテラブルなコレクションです。 | +```python +import wandb -### `sweep` +api = wandb.Api() +slack_integrations = api.slack_integrations(entity="my-team") +``` -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L1092-L1107) +"team-alerts-" で始まるチャンネル名に投稿する Slack インテグレーションのみを検索します: ```python -sweep( - path="" -) +slack_integrations = api.slack_integrations(entity="my-team") +team_alert_integrations = [ + ig + for ig in slack_integrations + if ig.channel_name.startswith("team-alerts-") +] +``` + +--- + +### method `Api.sweep` + +```python +sweep(path='') ``` -`sweep_id` の形式でパスを解析することにより、sweep を返します。 +`entity/project/sweep_id` 形式のパスを解析して Sweep を返します。 -| 引数 | Description | -| :--- | :--- | -| `path` | (str, オプション) エンティティまたはプロジェクトの設定がされていない場合、sweep に対するパスの形式は entity/project/sweep_id である必要があります。`api.entity` が設定されている場合、この形式は project/sweep_id になり、`api.project` が設定されている場合、sweep_id のみです。 | +**Args:** + + - `path`: entity/project/sweep_id 形式の Sweep へのパス。 `api.entity` が設定されている場合は project/sweep_id 形式に、 `api.project` が設定されている場合は単に sweep_id にすることができます。 -| 戻り値 | Description | -| :--- | :--- | -| `Sweep` オブジェクト。 | +**Returns:** + `Sweep` オブジェクト。 -### `sync_tensorboard` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L564-L586) +### method `Api.sync_tensorboard` ```python -sync_tensorboard( - root_dir, run_id=None, project=None, entity=None -) +sync_tensorboard(root_dir, run_id=None, project=None, entity=None) ``` tfevent ファイルを含むローカルディレクトリを wandb に同期します。 -### `team` +--- + +### method `Api.team` + +```python +team(team: 'str') → Team +``` + +指定された名前を持つ一致する `Team` を返します。 + +**Args:** + + - `team`: チームの名前。 + +**Returns:** + `Team` オブジェクト。 + +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L855-L864) +### method `Api.update_automation` ```python -team( - team: str -) -> "public.Team" +update_automation( + obj: 'Automation', + create_missing: 'bool' = False, + **kwargs: 'Unpack[WriteAutomationsKwargs]' +) → Automation ``` -指定された名前の `Team` を返します。 +既存のオートメーションを更新します。 + +**Args:** + + - `obj`: 更新するオートメーション。既存のオートメーションである必要があります。 create_missing (bool): True の場合、オートメーションが存在しないときは作成します。 **kwargs: 更新前にオートメーションに割り当てる追加の値。指定された場合、これらはオートメーションに既に設定されている値を上書きします: + - `name`: オートメーションの名前。 + - `description`: オートメーションの説明。 + - `enabled`: オートメーションが有効かどうか。 + - `scope`: オートメーションのスコープ。 + - `event`: オートメーションをトリガーするイベント。 + - `action`: オートメーションによってトリガーされるアクション。 + +**Returns:** + 更新されたオートメーション。 + +**Examples:** + 既存のオートメーション ("my-automation") を無効にし、説明を編集します: + +```python +import wandb + +api = wandb.Api() + +automation = api.automation(name="my-automation") +automation.enabled = False +automation.description = "参照用に保持しますが、現在は使用されていません。" -| 引数 | Description | -| :--- | :--- | -| `team` | (str) チーム名。 | +updated_automation = api.update_automation(automation) +``` -| 戻り値 | Description | -| :--- | :--- | -| `Team` オブジェクト。 | +または -### `upsert_run_queue` +```python +import wandb + +api = wandb.Api() -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L437-L550) +automation = api.automation(name="my-automation") + +updated_automation = api.update_automation( + automation, + enabled=False, + description="参照用に保持しますが、現在は使用されていません。", +) +``` + +--- + +### method `Api.upsert_run_queue` ```python upsert_run_queue( - name: str, - resource_config: dict, - resource_type: "public.RunQueueResourceType", - entity: Optional[str] = None, - template_variables: Optional[dict] = None, - external_links: Optional[dict] = None, - prioritization_mode: Optional['public.RunQueuePrioritizationMode'] = None + name: 'str', + resource_config: 'dict', + resource_type: 'public.RunQueueResourceType', + entity: 'str | None' = None, + template_variables: 'dict | None' = None, + external_links: 'dict | None' = None, + prioritization_mode: 'public.RunQueuePrioritizationMode | None' = None ) ``` -run キュー (launch) をアップサートします。 +W&B Launch で Run キューをアップサート(更新または挿入)します。 -| 引数 | Description | -| :--- | :--- | -| `name` | (str) 作成するキューの名前 | -| `entity` | (str) 作成するキューのエンティティのオプションの名前。None の場合、設定されたまたはデフォルトのエンティティを使用します。 | -| `resource_config` | (dict) キューに使用されるデフォルトのリソース設定のオプション。テンプレート変数を指定するにはハンドルバー(例:`{{var}}`)を使用します。 | -| `resource_type` | (str) キューに使用されるリソースのタイプ。"local-container"、"local-process"、"kubernetes"、"sagemaker"、または "gcp-vertex" のいずれか。 | -| `template_variables` | (dict) 設定内で使用されるテンプレート変数のスキーマの辞書。期待される形式: `{ "var-name": { "schema": { "type": ("string", "number", or "integer"), "default": (optional value), "minimum": (optional minimum), "maximum": (optional maximum), "enum": [..."(options)"] } } }` | -| `external_links` | (dict) キューで使用される外部リンクのオプションの辞書。期待される形式: `{ "name": "url" }` | -| `prioritization_mode` | (str) 使用するプライオリティのバージョン。 "V0" または None | +**Args:** + + - `name`: 作成するキューの名前 + - `entity`: オプション。キューを作成する entity の名前。 `None` の場合、設定された entity またはデフォルトの entity を使用します。 + - `resource_config`: オプション。キューに使用されるデフォルトのリソース設定。テンプレート変数を指定するにはハンドルバー(例: `{{var}}`)を使用します。 + - `resource_type`: キューに使用されるリソースのタイプ。"local-container"、"local-process"、"kubernetes"、"sagemaker"、または "gcp-vertex" のいずれか。 + - `template_variables`: 設定で使用するテンプレート変数スキーマの辞書。 + - `external_links`: オプション。キューで使用する外部リンクの辞書。 + - `prioritization_mode`: オプション。使用する優先順位付けのバージョン。"V0" または None。 -| 戻り値 | Description | -| :--- | :--- | -| アップサートされた `RunQueue`。 | +**Returns:** + アップサートされた `RunQueue`。 -| 例外 | Description | -| :--- | :--- | -| ValueError: パラメーターのいずれかが無効な場合 wandb.Error: wandb API のエラー | +**Raises:** + パラメータのいずれかが無効な場合は ValueError、W&B API エラーの場合は wandb.Error。 -### `user` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L866-L886) +### method `Api.user` ```python -user( - username_or_email: str -) -> Optional['public.User'] +user(username_or_email: 'str') → User | None ``` ユーザー名またはメールアドレスからユーザーを返します。 -注意: この関数はローカル管理者のみ機能します。 自分のユーザーオブジェクトを取得しようとしている場合は `api.viewer` を使用してください。 +この関数は、ローカル管理者に対してのみ機能します。自身のユーザーオブジェクトを取得するには、 `api.viewer` を使用してください。 -| 引数 | Description | -| :--- | :--- | -| `username_or_email` | (str) ユーザーのユーザー名またはメールアドレス | +**Args:** + + - `username_or_email`: ユーザーのユーザー名またはメールアドレス。 -| 戻り値 | Description | -| :--- | :--- | -| `User` オブジェクトまたはユーザーが見つからない場合は None | +**Returns:** + `User` オブジェクト。ユーザーが見つからない場合は None。 -### `users` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/api.py#L888-L902) +### method `Api.users` ```python -users( - username_or_email: str -) -> List['public.User'] +users(username_or_email: 'str') → list[User] ``` -部分的なユーザー名またはメールアドレスクエリからすべてのユーザーを返します。 +部分的なユーザー名またはメールアドレスのクエリからすべてのユーザーを返します。 + +この関数は、ローカル管理者に対してのみ機能します。自身のユーザーオブジェクトを取得するには、 `api.viewer` を使用してください。 + +**Args:** + + - `username_or_email`: 検索したいユーザーのプレフィックスまたはサフィックス。 -注意: この関数はローカル管理者のみ機能します。 自分のユーザーオブジェクトを取得しようとしている場合は `api.viewer` を使用してください。 +**Returns:** + `User` オブジェクトの配列。 + +--- + +### method `Api.webhook_integrations` + +```python +webhook_integrations( + entity: 'str | None' = None, + per_page: 'int' = 50 +) → Iterator[WebhookIntegration] +``` -| 引数 | Description | -| :--- | :--- | -| `username_or_email` | (str) 検索したいユーザーのプレフィックスまたはサフィックス | +entity の Webhook インテグレーションのイテレータを返します。 -| 戻り値 | Description | -| :--- | :--- | -| `User` オブジェクトの配列 | +**Args:** + + - `entity`: インテグレーションを取得する entity (チーム名など)。提供されない場合、ユーザーのデフォルト entity が使用されます。 + - `per_page`: 1ページあたりに取得するインテグレーションの数。デフォルトは 50 です。通常、これを変更する理由はありません。 -| クラス変数 | Description | -| :--- | :--- | -| `CREATE_PROJECT` | | -| `DEFAULT_ENTITY_QUERY` | | -| `USERS_QUERY` | | -| `VIEWER_QUERY` | | \ No newline at end of file +**Yields:** + + - `Iterator[WebhookIntegration]`: Webhook インテグレーションのイテレータ。 + +**Examples:** + チーム "my-team" に登録されているすべての Webhook インテグレーションを取得します: + +```python +import wandb + +api = wandb.Api() +webhook_integrations = api.webhook_integrations(entity="my-team") +``` + +"https://my-fake-url.com" にリクエストを送信する Webhook インテグレーションのみを検索します: + +```python +webhook_integrations = api.webhook_integrations(entity="my-team") +my_webhooks = [ + ig + for ig in webhook_integrations + if ig.url_endpoint.startswith("https://my-fake-url.com") +] +``` \ No newline at end of file diff --git a/ja/models/ref/python/public-api/artifactcollection.mdx b/ja/models/ref/python/public-api/artifactcollection.mdx new file mode 100644 index 0000000000..e0e42b28b0 --- /dev/null +++ b/ja/models/ref/python/public-api/artifactcollection.mdx @@ -0,0 +1,139 @@ +--- +title: ArtifactCollection +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `ArtifactCollection` +関連する アーティファクト のグループを表す アーティファクト コレクションです。 + +**Args:** + + - `client`: W&B へのクエリに使用するクライアントインスタンス。 + - `entity`: プロジェクト を所有する エンティティ (ユーザー または チーム)。 + - `project`: アーティファクト コレクションを照会する プロジェクト の名前。 + - `name`: アーティファクト コレクションの名前。 + - `type`: アーティファクト コレクションのタイプ (例: "dataset"、"model")。 + - `organization`: 該当する場合、オプションの組織名。 + - `attrs`: アーティファクト コレクションを初期化するためのオプションの属性マッピング。指定しない場合、オブジェクト は初期化時に W&B から属性をロードします。 + +### property ArtifactCollection.aliases + +このコレクションに含まれるすべての アーティファクト バージョン の エイリアス。 + +**Returns:** + - `list[str]`: aliases プロパティの 値。 +--- + +### property ArtifactCollection.created_at + +アーティファクト コレクションの作成日。 + +**Returns:** + - `str`: created_at プロパティの 値。 +--- + +### property ArtifactCollection.description + +アーティファクト コレクションの説明。 + +**Returns:** + - `str | None`: description プロパティの 値。 +--- + +### property ArtifactCollection.entity + +プロジェクト を所有する エンティティ (ユーザー または チーム)。 + +**Returns:** + - `str`: entity プロパティの 値。 +--- + +### property ArtifactCollection.id + +アーティファクト コレクションの一意識別子。 + +**Returns:** + - `str`: id プロパティの 値。 +--- + +### property ArtifactCollection.name + +アーティファクト コレクションの名前。 + +**Returns:** + - `str`: name プロパティの 値。 +--- + +### property ArtifactCollection.project + +アーティファクト コレクションが含まれる プロジェクト。 + +**Returns:** + - `str`: project プロパティの 値。 +--- + +### property ArtifactCollection.tags + +アーティファクト コレクションに関連付けられたタグ。 + +**Returns:** + - `list[str]`: tags プロパティの 値。 +--- + +### property ArtifactCollection.type + +アーティファクト コレクションのタイプを返します。 + +--- + +### method `ArtifactCollection.artifacts` + +```python +artifacts(per_page: 'int' = 50) → Artifacts +``` + +コレクション内のすべての アーティファクト を取得します。 + +--- + +### method `ArtifactCollection.change_type` + +```python +change_type(new_type: 'str') → None +``` + +非推奨です。代わりに `save` を使用して直接タイプを変更してください。 + +--- + +### method `ArtifactCollection.delete` + +```python +delete() → None +``` + +アーティファクト コレクション全体を削除します。 + +--- + +### method `ArtifactCollection.is_sequence` + +```python +is_sequence() → bool +``` + +アーティファクト コレクションがシーケンスであるかどうかを返します。 + +--- + +### method `ArtifactCollection.save` + +```python +save() → None +``` + +アーティファクト コレクションに加えられた変更を保存します。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/artifactcollections.mdx b/ja/models/ref/python/public-api/artifactcollections.mdx new file mode 100644 index 0000000000..2cfa5c38f7 --- /dev/null +++ b/ja/models/ref/python/public-api/artifactcollections.mdx @@ -0,0 +1,25 @@ +--- +title: ArtifactCollections +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `ArtifactCollections` +Projects 内の特定のタイプを持つ Artifact コレクション。 + +**Args:** + + - `client`: W&B へのクエリに使用するクライアントインスタンス。 + - `entity`: Projects を所有する Entity (Users または Teams)。 + - `project`: Artifact コレクションを照会する Projects の名前。 + - `type_name`: コレクションを取得する Artifact タイプの名前。 + - `per_page`: 1ページあたりに取得する Artifact コレクションの数。デフォルトは 50。 + +### property ArtifactCollections.cursor + +--- + +### property ArtifactCollections.more \ No newline at end of file diff --git a/ja/models/ref/python/public-api/artifactfiles.mdx b/ja/models/ref/python/public-api/artifactfiles.mdx new file mode 100644 index 0000000000..a310f8d7d4 --- /dev/null +++ b/ja/models/ref/python/public-api/artifactfiles.mdx @@ -0,0 +1,27 @@ +--- +title: ArtifactFiles +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `ArtifactFiles` + +Artifact 内のファイルを操作するためのページネーターです。 + +### property ArtifactFiles.cursor + +--- + +### property ArtifactFiles.more + +--- + +### property ArtifactFiles.path + +Artifact のパスを返します。 + +**Returns:** + - `list[str]`: path プロパティの値。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/artifacts.mdx b/ja/models/ref/python/public-api/artifacts.mdx new file mode 100644 index 0000000000..34e2da1ba1 --- /dev/null +++ b/ja/models/ref/python/public-api/artifacts.mdx @@ -0,0 +1,33 @@ +--- +title: アーティファクト +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Artifacts` +Project に関連付けられた Artifact バージョンのイテラブルなコレクションです。 + +オプションでフィルタを渡すことで、特定の条件に基づいて結果を絞り込むことができます。 + +**Args:** + + - `client`: W&B へのクエリに使用するクライアントインスタンス。 + - `entity`: Project を所有する Entity(Users または Teams)。 + - `project`: Artifact を検索する Projects の名前。 + - `collection_name`: クエリ対象の Artifact コレクションの名前。 + - `type`: クエリ対象の Artifact のタイプ。一般的な例として "dataset" や "model" があります。 + - `filters`: クエリに適用するフィルタのオプションのマッピング。 + - `order`: 結果の順序を指定するオプションの文字列。 + - `per_page`: 1ページあたりに取得する Artifact バージョンの数。デフォルトは 50。 + - `tags`: Artifact をタグでフィルタリングするためのオプションの文字列または文字列のリスト。 + +### property Artifacts.cursor + +--- + +### property Artifacts.more + +--- \ No newline at end of file diff --git a/ja/models/ref/python/public-api/artifacttype.mdx b/ja/models/ref/python/public-api/artifacttype.mdx new file mode 100644 index 0000000000..9a920fe529 --- /dev/null +++ b/ja/models/ref/python/public-api/artifacttype.mdx @@ -0,0 +1,63 @@ +--- +title: ArtifactType +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `ArtifactType` +指定されたタイプに基づいてクエリ条件を満たす Artifacts オブジェクト。 + +**Args:** + + - `client`: W&B へのクエリに使用するクライアントインスタンス。 + - `entity`: Projects を所有する Entity(Users または Teams)。 + - `project`: アーティファクトタイプをクエリする Projects の名前。 + - `type_name`: アーティファクトタイプの名前。 + - `attrs`: ArtifactType を初期化するためのオプションの属性。省略された場合、オブジェクトは初期化時に W&B から属性を読み込みます。 + +### property ArtifactType.id + +アーティファクトタイプのユニークな識別子。 + +**Returns:** + - `str`: id プロパティの値。 +--- + +### property ArtifactType.name + +アーティファクトタイプの名前。 + +**Returns:** + - `str`: name プロパティの値。 +--- + +### method `ArtifactType.collection` + +```python +collection(name: 'str') → ArtifactCollection +``` + +名前を指定して特定のアーティファクトコレクションを取得します。 + +**Args:** + + - `name` (str): 取得するアーティファクトコレクションの名前。 + +--- + +### method `ArtifactType.collections` + +```python +collections(per_page: 'int' = 50) → ArtifactCollections +``` + +このアーティファクトタイプに関連付けられているすべてのアーティファクトコレクションを取得します。 + +**Args:** + + - `per_page` (int): 1ページあたりに取得するアーティファクトコレクションの数。デフォルトは 50 です。 + +--- \ No newline at end of file diff --git a/ja/models/ref/python/public-api/artifacttypes.mdx b/ja/models/ref/python/public-api/artifacttypes.mdx new file mode 100644 index 0000000000..355b29c635 --- /dev/null +++ b/ja/models/ref/python/public-api/artifacttypes.mdx @@ -0,0 +1,17 @@ +--- +title: ArtifactTypes +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `ArtifactTypes` +特定の Projects における `ArtifactType` オブジェクトのレイジーイテレータです。 + +### property ArtifactTypes.cursor + +--- + +### property ArtifactTypes.more \ No newline at end of file diff --git a/ja/models/ref/python/public-api/automations.mdx b/ja/models/ref/python/public-api/automations.mdx new file mode 100644 index 0000000000..b4e03abe79 --- /dev/null +++ b/ja/models/ref/python/public-api/automations.mdx @@ -0,0 +1,8 @@ +--- +title: オートメーション +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + \ No newline at end of file diff --git a/ja/models/ref/python/public-api/betareport.mdx b/ja/models/ref/python/public-api/betareport.mdx new file mode 100644 index 0000000000..e5da379a11 --- /dev/null +++ b/ja/models/ref/python/public-api/betareport.mdx @@ -0,0 +1,93 @@ +--- +title: BetaReport +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `BetaReport` +BetaReport は、 W&B で作成された Reports に関連付けられたクラスです。 + +レポートの属性(名前、説明、ユーザー、 spec 、タイムスタンプ)へのアクセスや、関連する Runs やセクションの取得、レポートを HTML としてレンダリングするためのメソッドを提供します。 + +**Attributes:** + + - `id` (string): レポートの一意識別子。 + - `display_name` (string): 人間が読みやすいレポートの表示名。 + - `name` (string): レポートの名前。よりユーザーフレンドリーな名前が必要な場合は `display_name` を使用してください。 + - `description` (string): レポートの説明。 + - `user` (User): レポートを作成した Users 情報(ユーザー名、メールアドレス)を含む辞書。 + - `spec` (dict): レポートの spec 。 + - `url` (string): レポートの URL 。 + - `updated_at` (string): 最終更新時のタイムスタンプ。 + - `created_at` (string): レポート作成時のタイムスタンプ。 + +### method `BetaReport.__init__` + +```python +__init__(client, attrs, entity=None, project=None) +``` + +--- + +### property BetaReport.created_at + +--- + +### property BetaReport.description + +--- + +### property BetaReport.display_name + +--- + +### property BetaReport.id + +--- + +### property BetaReport.name + +--- + +### property BetaReport.sections + +レポートからパネルセクション(グループ)を取得します。 + +--- + +### property BetaReport.spec + +--- + +### property BetaReport.updated_at + +--- + +### property BetaReport.url + +--- + +### property BetaReport.user + +--- + +### method `BetaReport.runs` + +```python +runs(section, per_page=50, only_selected=True) +``` + +レポートのセクションに関連付けられた Runs を取得します。 + +--- + +### method `BetaReport.to_html` + +```python +to_html(height=1024, hidden=False) +``` + +このレポートを表示する iframe を含む HTML を生成します。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/file.mdx b/ja/models/ref/python/public-api/file.mdx index 123ba2c71d..46efc256ca 100644 --- a/ja/models/ref/python/public-api/file.mdx +++ b/ja/models/ref/python/public-api/file.mdx @@ -1,82 +1,82 @@ --- -title: 申し訳ありませんが、私は提供された文書の翻訳を行うためのテキストが不足しています。何か特定のテキストまたは文書を提供していただければ、それを翻訳いたします。それに基づいて正確な翻訳を提供できますので、どうぞよろしくお願いします。 +title: File +namespace: public_apis_namespace +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -File は wandb によって保存されたファイルに関連付けられているクラスです。 +## class `File` +W&B に保存されたファイル。 -```python -File( - client, attrs, run=None -) -``` +W&B に格納されている単一のファイルを表します。ファイルの メタデータ への アクセス が含まれます。ファイルは特定の Run に関連付けられており、テキストファイル、 モデル の重み、 Datasets 、 可視化 、その他の Artifacts を含めることができます。ファイルのダウンロード、ファイルの削除、およびファイルプロパティへの アクセス が可能です。 -| 属性 | Description | -| :--- | :--- | -| `path_uri` | ストレージバケット内のファイルへの URI パスを返します。 | +特定の Run に ログ 記録された特定のファイルを特定するために、 辞書 で1つ以上の属性を指定します。以下の キー を使用して検索できます: -## メソッド +- id (str): ファイルを含む Run の ID +- name (str): ファイル名 +- url (str): ファイルへのパス +- direct_url (str): バケット 内のファイルへのパス +- sizeBytes (int): バイト単位のファイルサイズ +- md5 (str): ファイルの md5 +- mimetype (str): ファイルの mimetype +- updated_at (str): 最終更新のタイムスタンプ +- path_uri (str): バケット 内のファイルへのパス。現在は S3 オブジェクト とリファレンスファイルのみ利用可能です。 -### `delete` +**Args:** -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/files.py#L193-L223) + - `client`: ファイルを含む Run オブジェクト + - `attrs` (dict): ファイルを定義する属性の 辞書 + - `run`: ファイルを含む Run オブジェクト -```python -delete() -``` +### property File.path_uri -### `display` +ストレージ バケット 内のファイルへの URI パスを返します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/attrs.py#L16-L37) +**Returns:** -```python -display( - height=420, hidden=(False) -) -> bool -``` + - `str`: ファイルが S3 に保存されている場合は S3 URI (例: 's3://bucket/path/to/file')、リファレンスファイルの場合は直接 URL、利用不可の場合は空の文字列。 -このオブジェクトを jupyter で表示します。 +**Returns:** + - `str`: path_uri プロパティの 値 。 +--- -### `download` +### property File.size -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/files.py#L152-L191) +バイト単位のファイルサイズを返します。 -```python -download( - root: str = ".", - replace: bool = (False), - exist_ok: bool = (False), - api: Optional[Api] = None -) -> io.TextIOWrapper -``` +--- -wandb サーバーから run によって以前に保存されたファイルをダウンロードします。 +### method `File.delete` -| 引数 | Description | -| :--- | :--- | -| replace (boolean): `True` の場合、ローカルファイルが存在するときにダウンロードがそのファイルを上書きします。デフォルトは `False`。root (str): ファイルを保存するローカルディレクトリー。デフォルトは "."。exist_ok (boolean): `True` の場合、ファイルが既に存在しているときに ValueError を発生させず、replace=True でない限り再ダウンロードしません。デフォルトは `False`。api (Api, optional): 指定された場合、ファイルをダウンロードするのに使用される `Api` インスタンス。 | +```python +delete() +``` -| Raises | Description | -| :--- | :--- | -| ファイルが既に存在し、replace=False でかつ exist_ok=False の場合に `ValueError` を発生させます。 | +W&B サーバー からファイルを削除します。 -### `snake_to_camel` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/attrs.py#L12-L14) +### method `File.download` ```python -snake_to_camel( - string -) +download( + root: 'str' = '.', + replace: 'bool' = False, + exist_ok: 'bool' = False, + api: 'Api | None' = None +) → io.TextIOWrapper ``` -### `to_html` +以前に Run によって保存されたファイルを wandb サーバー からダウンロードします。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/attrs.py#L39-L40) +**Args:** -```python -to_html( - *args, **kwargs -) -``` \ No newline at end of file + - `root`: ファイルを保存するローカル ディレクトリー 。デフォルトはカレントワーキング ディレクトリー (".") です。 + - `replace`: `True` の場合、ローカルファイルが存在すればダウンロードで上書きします。デフォルトは `False` です。 + - `exist_ok`: `True` の場合、ファイルが既に存在しても ValueError を発生させず、 `replace=True` でない限り再ダウンロードもしません。デフォルトは `False` です。 + - `api`: 指定された場合、ファイルのダウンロードに使用される `Api` インスタンス。 + +**Raises:** + ファイルが既に存在し、 `replace=False` かつ `exist_ok=False` の場合に `ValueError` を発生させます。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/files.mdx b/ja/models/ref/python/public-api/files.mdx index 0507e6e2c4..4eaae6905d 100644 --- a/ja/models/ref/python/public-api/files.mdx +++ b/ja/models/ref/python/public-api/files.mdx @@ -1,72 +1,66 @@ --- title: ファイル +namespace: public_apis_namespace +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -`File` オブジェクトの反復可能なコレクション。 +## class `Files` +`File` オブジェクトのコレクションに対するレイジーイテレーター(遅延イテレーター)です。 -```python -Files( - client, run, names=None, per_page=50, upload=(False) -) -``` - -| 属性 | Description | -| :--- | :--- | - -## メソッド - -### `convert_objects` - -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/files.py#L100-L104) - -```python -convert_objects() -``` - -### `next` +Runs の実行中に W&B にアップロードされたファイルへのアクセスと管理を行います。大量のファイルコレクションを反復処理する際、ページネーションを自動的に処理します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L72-L79) +**Example:** + ```python +from wandb.apis.public.files import Files +from wandb.apis.public.api import Api -```python -next() -``` - -### `update_variables` +# Run オブジェクトの例 +run = Api().run("entity/project/run-id") -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/files.py#L97-L98) +# Run 内のファイルを反復処理するための Files オブジェクトを作成 +files = Files(api.client, run) -```python -update_variables() -``` +# ファイルを反復処理 +for file in files: + print(file.name) + print(file.url) + print(file.size) -### `__getitem__` + # ファイルをダウンロード + file.download(root="download_directory", replace=True) +``` -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L65-L70) +### method `Files.__init__` ```python -__getitem__( - index +__init__( + client: 'RetryingClient', + run: 'Run', + names: 'list[str] | None' = None, + per_page: 'int' = 50, + upload: 'bool' = False, + pattern: 'str | None' = None ) ``` -### `__iter__` +`File` オブジェクトのコレクションに対するレイジーイテレーターを初期化します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L26-L28) +ファイルは必要に応じて W&B サーバー からページ単位で取得されます。 -```python -__iter__() -``` - -### `__len__` +**Args:** + + - `client`: ファイルを含む Run オブジェクト + - `run`: ファイルを含む Run オブジェクト + - `names` (list, optional): ファイルをフィルタリングするためのファイル名のリスト + - `per_page` (int, optional): 1ページあたりに取得するファイル数 + - `upload` (bool, optional): `True` の場合、各ファイルのアップロード URL を取得します + - `pattern` (str, optional): W&B からファイルを返す際に一致させるパターン。このパターンは MySQL の LIKE 構文を使用するため、たとえば ".json" で終わるすべてのファイルに一致させるには "%.json" となります。`names` と `pattern` の両方が指定された場合、ValueError が発生します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L30-L35) +--- -```python -__len__() -``` +### property Files.length -| クラス変数 | Description | -| :--- | :--- | -| `QUERY` | | \ No newline at end of file +--- \ No newline at end of file diff --git a/ja/models/ref/python/public-api/member.mdx b/ja/models/ref/python/public-api/member.mdx new file mode 100644 index 0000000000..d8c5590126 --- /dev/null +++ b/ja/models/ref/python/public-api/member.mdx @@ -0,0 +1,36 @@ +--- +title: メンバー +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Member` +Team のメンバーです。 + +### method `Member.__init__` + +```python +__init__(client: 'RetryingClient', team: 'str', attrs: 'Mapping[str, Any]') +``` + +**Args:** + + - `client` (`wandb.apis.internal.Api`): 使用するクライアントインスタンス + - `team` (str): このメンバーが所属する Team の名前 + - `attrs` (dict): メンバーの属性 + +--- + +### method `Member.delete` + +```python +delete() +``` + +Team からメンバーを削除します。 + +**Returns:** + 成功したかどうかを示すブール値 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/project.mdx b/ja/models/ref/python/public-api/project.mdx index 34b3a3595f..5866bcc09d 100644 --- a/ja/models/ref/python/public-api/project.mdx +++ b/ja/models/ref/python/public-api/project.mdx @@ -1,70 +1,104 @@ --- title: プロジェクト +namespace: public_apis_namespace +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -プロジェクトは、run のための名前空間です。 +## class `Project` +Project は Runs のネームスペースです。 + +### method `Project.__init__` ```python -Project( - client, entity, project, attrs -) +__init__( + client: 'RetryingClient', + entity: 'str', + project: 'str', + attrs: 'Mapping[str, Any]' +) → Project ``` -| 属性 | Description | -| :--- | :--- | +**Args:** + + - `client`: W&B API クライアントのインスタンス。 + - `name` (str): プロジェクト名。 + - `entity` (str): プロジェクトを所有する Entity 名。 -## メソッド -### `artifacts_types` +Entity に関連付けられた単一のプロジェクト。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/projects.py#L112-L114) -```python -artifacts_types( - per_page=50 -) -``` -### `display` +**Args:** + + - `client`: W&B へのクエリに使用される API クライアント。 + - `entity`: プロジェクトを所有する Entity。 + - `project`: クエリ対象のプロジェクト名。 + - `attrs`: プロジェクトの属性。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/attrs.py#L16-L37) -```python -display( - height=420, hidden=(False) -) -> bool -``` +--- -jupyter でこのオブジェクトを表示します。 +### property Project.id -### `snake_to_camel` -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/attrs.py#L12-L14) -```python -snake_to_camel( - string -) -``` -### `sweeps` -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/projects.py#L116-L154) +--- + +### property Project.path + +プロジェクトのパスを返します。パスは Entity とプロジェクト名を含むリストです。 + + + +**Returns:** + - `list[str]`: path プロパティの値。 +--- + +### property Project.url + +プロジェクトの URL を返します。 + + + + + +**Returns:** + - `str`: url プロパティの値。 +--- + +### method `Project.artifacts_types` ```python -sweeps() +artifacts_types(per_page: 'int' = 50) → public.ArtifactTypes ``` -### `to_html` +このプロジェクトに関連付けられているすべての Artifacts タイプを返します。 + +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/projects.py#L96-L104) +### method `Project.sweeps` ```python -to_html( - height=420, hidden=(False) -) +sweeps(per_page: 'int' = 50) → Sweeps ``` -このプロジェクトを表示する iframe を含む HTML を生成します。 \ No newline at end of file +このプロジェクト内の Sweeps のページネーションされたコレクションを返します。 + + + +**Args:** + + - `per_page`: API へのリクエストごとに取得する Sweeps の数。 + + + +**Returns:** + `Sweeps` オブジェクト。これは `Sweep` オブジェクトの反復可能なコレクションです。 + +--- \ No newline at end of file diff --git a/ja/models/ref/python/public-api/projects.mdx b/ja/models/ref/python/public-api/projects.mdx index 6a5875f2b0..3413c94b17 100644 --- a/ja/models/ref/python/public-api/projects.mdx +++ b/ja/models/ref/python/public-api/projects.mdx @@ -1,72 +1,60 @@ --- title: プロジェクト +namespace: public_apis_namespace +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -`Project` オブジェクトの反復可能なコレクション。 +## class `Projects` +`Project` オブジェクトのレイジーイテレータです。 -```python -Projects( - client, entity, per_page=50 -) -``` - -| 属性 | Description | -| :--- | :--- | +特定の Entity によって作成・保存された Projects にアクセスするためのイテレータインターフェースを提供します。 -## メソッド - -### `convert_objects` - -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/projects.py#L69-L73) +### method `Projects.__init__` ```python -convert_objects() +__init__( + client: 'RetryingClient', + entity: 'str', + per_page: 'int' = 50 +) → Projects ``` -### `next` +**Args:** -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L72-L79) + - `client` (`wandb.apis.internal.Api`): 使用する API クライアントインスタンス。 + - `entity` (str): Projects を取得する Entity 名(ユーザー名または Team 名)。 + - `per_page` (int): 1リクエストあたりに取得する Projects の数(デフォルトは 50)。 -```python -next() -``` +**Example:** + ```python +from wandb.apis.public.api import Api -### `update_variables` +# この Entity に属する Projects を検索する +projects = Api().projects(entity="entity") -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L52-L53) +# 各プロジェクトを反復処理する +for project in projects: + print(f"Project: {project.name}") + print(f"- URL: {project.url}") + print(f"- Created at: {project.created_at}") + print(f"- Is benchmark: {project.is_benchmark}") +``` -```python -update_variables() -``` +`Project` オブジェクトのイテラブルなコレクションです。 -### `__getitem__` +**Args:** -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L65-L70) + - `client`: W&B へのクエリに使用される API クライアント。 + - `entity`: Projects を所有する Entity。 + - `per_page`: API への1リクエストあたりに取得する Projects の数。 -```python -__getitem__( - index -) -``` - -### `__iter__` - -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L26-L28) - -```python -__iter__() -``` - -### `__len__` +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L30-L35) +### property Projects.cursor -```python -__len__() -``` +--- -| クラス変数 | Description | -| :--- | :--- | -| `QUERY` | | \ No newline at end of file +### property Projects.more \ No newline at end of file diff --git a/ja/models/ref/python/public-api/registry.mdx b/ja/models/ref/python/public-api/registry.mdx new file mode 100644 index 0000000000..45baf0991d --- /dev/null +++ b/ja/models/ref/python/public-api/registry.mdx @@ -0,0 +1,385 @@ +--- +title: Registry +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Registry` +Registry 内の単一の registry オブジェクトです。 + +### method `Registry.__init__` + +```python +__init__( + client: 'RetryingClient', + organization: 'str', + entity: 'str', + name: 'str', + attrs: 'RegistryFragment | None' = None +) +``` + +--- + +### property Registry.allow_all_artifact_types + +Registry 内ですべての Artifacts タイプが許可されているかどうかを返します。 + +`True` の場合、任意のタイプの Artifacts を追加できます。`False` の場合、Artifacts は `artifact_types` にリストされているタイプに制限されます。 + +**Returns:** + - `bool`: allow_all_artifact_types プロパティの 値。 +--- + +### property Registry.artifact_types + +Registry で許可されている Artifacts タイプを返します。 + +`allow_all_artifact_types` が `True` の場合、`artifact_types` は以前に保存された、または現在 Registry で使用されているタイプを反映します。`allow_all_artifact_types` が `False` の場合、Artifacts は `artifact_types` 内のタイプに制限されます。 + +**Note:** + +> 以前に保存された Artifacts タイプは削除できません。 +> + +**Example:** + ```python +import wandb + +registry = wandb.Api().create_registry() +registry.artifact_types.append("model") +registry.save() # 一度保存されると、artifact type `model` は削除できません +registry.artifact_types.append("accidentally_added") +registry.artifact_types.remove( + "accidentally_added" +) # 保存される前であればタイプを削除できます +``` + +**Returns:** + - `AddOnlyArtifactTypesList`: artifact_types プロパティの 値。 +--- + +### property Registry.created_at + +Registry が作成された日時のタイムスタンプ。 + +**Returns:** + - `str`: created_at プロパティの 値。 +--- + +### property Registry.description + +Registry の説明。 + +**Returns:** + - `str | None`: description プロパティの 値。 +--- + +### property Registry.entity + +Registry の組織(Entity)。 + +**Returns:** + - `str`: entity プロパティの 値。 +--- + +### property Registry.full_name + +`wandb-registry-` プレフィックスを含む Registry のフルネーム。 + +**Returns:** + - `str`: full_name プロパティの 値。 +--- + +### property Registry.id + +この Registry の一意な ID。 + +**Returns:** + - `str`: id プロパティの 値。 +--- + +### property Registry.name + +`wandb-registry-` プレフィックスを除いた Registry の名前。 + +**Returns:** + - `str`: name プロパティの 値。 +--- + +### property Registry.organization + +Registry の組織名。 + +**Returns:** + - `str`: organization プロパティの 値。 +--- + +### property Registry.path + +--- + +### property Registry.updated_at + +Registry が最後に更新された日時のタイムスタンプ。 + +**Returns:** + - `str`: updated_at プロパティの 値。 +--- + +### property Registry.visibility + +Registry の 公開範囲(visibility)。 + +**Returns:** + + - `Literal["organization", "restricted"]`: 公開レベル。 + - "organization": 組織内の誰でもこの Registry を閲覧できます。ロールは後で UI の 設定 から編集可能です。 + - "restricted": UI を通じて招待されたメンバーのみがこの Registry に アクセス できます。パブリック共有は無効です。 + +**Returns:** + - `Literal['organization', 'restricted']`: visibility プロパティの 値。 +--- + +### method `Registry.add_members` + +```python +add_members(*members: 'User | UserMember | Team | TeamMember | str') → Self +``` + +この Registry に Users または Teams を追加します。 + +**Args:** + + - `members`: Registry に追加する Users または Teams。`User` オブジェクト、`Team` オブジェクト、またはそれらの文字列 ID を受け入れます。 + +**Returns:** + 必要に応じてメソッドチェーンを行うための、この Registry オブジェクト。 + +**Raises:** + + - `TypeError`: 引数 としてメンバーが渡されなかった場合。 + - `ValueError`: User または Team の ID を推論または解析できなかった場合。 + +**Examples:** + ```python +import wandb + +api = wandb.Api() + +# 既存の Registry を取得 +registry = api.registry(name="my-registry", organization="my-org") + +user1 = api.user(username="some-user") +user2 = api.user(username="other-user") +registry.add_members(user1, user2) + +my_team = api.team(name="my-team") +registry.add_members(my_team) +``` + +--- + +### method `Registry.collections` + +```python +collections( + filter: 'dict[str, Any] | None' = None, + per_page: 'PositiveInt' = 100 +) → Collections +``` + +Registry に属するコレクションを返します。 + +--- + +### classmethod `Registry.create` + +```python +create( + client: 'RetryingClient', + organization: 'str', + name: 'str', + visibility: "Literal['organization', 'restricted']", + description: 'str | None' = None, + artifact_types: 'list[str] | None' = None +) → Self +``` + +新しい Registry を作成します。 + +Registry 名は組織内で一意である必要があります。この関数は `api.create_registry()` を使用して呼び出す必要があります。 + +**Args:** + + - `client`: GraphQL クライアント。 + - `organization`: 組織の名前。 + - `name`: Registry の名前(`wandb-registry-` プレフィックスなし)。 + - `visibility`: 公開レベル ('organization' または 'restricted')。 + - `description`: Registry のオプションの説明。 + - `artifact_types`: 許可される Artifacts タイプのオプションリスト。 + +**Returns:** + + - `Registry`: 新しく作成された Registry オブジェクト。 + +**Raises:** + + - `ValueError`: 同じ名前の Registry が組織内に既に存在する場合、または作成に失敗した場合。 + +--- + +### method `Registry.delete` + +```python +delete() → None +``` + +Registry を削除します。この操作は取り消せません。 + +--- + +### method `Registry.load` + +```python +load() → None +``` + +バックエンドから Registry の属性を読み込みます。 + +--- + +### method `Registry.members` + +```python +members() → list[UserMember | TeamMember] +``` + +この Registry の現在のメンバー(Users および Teams)を返します。 + +--- + +### method `Registry.remove_members` + +```python +remove_members(*members: 'User | UserMember | Team | TeamMember | str') → Self +``` + +この Registry から Users または Teams を削除します。 + +**Args:** + + - `members`: Registry から削除する Users または Teams。`User` オブジェクト、`Team` オブジェクト、またはそれらの文字列 ID を受け入れます。 + +**Returns:** + 必要に応じてメソッドチェーンを行うための、この Registry オブジェクト。 + +**Raises:** + + - `TypeError`: 引数 としてメンバーが渡されなかった場合。 + - `ValueError`: User または Team の ID を推論または解析できなかった場合。 + +**Examples:** + ```python +import wandb + +api = wandb.Api() + +# 既存の Registry を取得 +registry = api.registry(name="my-registry", organization="my-org") + +user1 = api.user(username="some-user") +user2 = api.user(username="other-user") +registry.remove_members(user1, user2) + +old_team = api.team(name="old-team") +registry.remove_members(old_team) +``` + +--- + +### method `Registry.save` + +```python +save() → None +``` + +Registry の属性をバックエンドに保存します。 + +--- + +### method `Registry.team_members` + +```python +team_members() → list[TeamMember] +``` + +この Registry の現在のメンバーである Teams を返します。 + +--- + +### method `Registry.update_member` + +```python +update_member( + member: 'User | UserMember | Team | TeamMember | str', + role: 'MemberRole | str' +) → Self +``` + +この Registry 内のメンバー(User または Team)のロールを更新します。 + +**Args:** + + - `member`: ロールを更新する User または Team。`User` オブジェクト、`Team` オブジェクト、またはそれらの文字列 ID を受け入れます。 + - `role`: メンバーに割り当てる新しいロール。以下のいずれかです: + - "admin" + - "member" + - "viewer" + - "restricted_viewer" (W&B サーバー でサポートされている場合) + +**Returns:** + 必要に応じてメソッドチェーンを行うための、この Registry オブジェクト。 + +**Raises:** + + - `ValueError`: User または Team の ID を推論できなかった場合。 + +**Examples:** + Registry 内のすべての Users を admin に設定します: ```python +import wandb + +api = wandb.Api() + +# 既存の Registry を取得 +registry = api.registry(name="my-registry", organization="my-org") + +for member in registry.user_members(): + registry.update_member(member.user, role="admin") +``` + +--- + +### method `Registry.user_members` + +```python +user_members() → list[UserMember] +``` + +この Registry の現在のメンバーである Users を返します。 + +--- + +### method `Registry.versions` + +```python +versions( + filter: 'dict[str, Any] | None' = None, + per_page: 'PositiveInt' = 100 +) → Versions +``` + +Registry に属するバージョンを返します。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/reports.mdx b/ja/models/ref/python/public-api/reports.mdx new file mode 100644 index 0000000000..1f2994b0fd --- /dev/null +++ b/ja/models/ref/python/public-api/reports.mdx @@ -0,0 +1,49 @@ +--- +title: Reports +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Reports` +Reports は、 `BetaReport` オブジェクト のレイジーイテレータ(遅延イテレータ)です。 + +### method `Reports.__init__` + +```python +__init__(client, project, name=None, entity=None, per_page=50) +``` + +**Args:** + + - `client` (`wandb.apis.internal.Api`): 使用する API クライアントインスタンス。 + - `project` (`wandb.sdk.internal.Project`): レポートを取得する Projects 。 + - `name` (str, optional): フィルタリングに使用するレポート名。 `None` の場合、すべてのレポートを取得します。 + - `entity` (str, optional): プロジェクトの Entities 名。デフォルトはプロジェクトのエンティティです。 + - `per_page` (int): 1ページあたりに取得するレポート数(デフォルトは50)。 + +--- + +### property Reports.length + +--- + +### method `Reports.convert_objects` + +```python +convert_objects() +``` + +GraphQL の edge を File オブジェクト に変換します。 + +--- + +### method `Reports.update_variables` + +```python +update_variables() +``` + +ページネーションのための GraphQL クエリ変数を更新します。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/run.mdx b/ja/models/ref/python/public-api/run.mdx index 2a8dd5d58b..b62db0b064 100644 --- a/ja/models/ref/python/public-api/run.mdx +++ b/ja/models/ref/python/public-api/run.mdx @@ -1,357 +1,564 @@ --- title: Run +namespace: public_apis_namespace +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -エンティティおよびプロジェクトに関連付けられた単一の run。 +## class `Run` +Entity および Project に関連付けられた単一の Run です。 + +### method `Run.__init__` ```python -Run( - client: "RetryingClient", - entity: str, - project: str, - run_id: str, - attrs: Optional[Mapping] = None, - include_sweeps: bool = (True) +__init__( + client: 'RetryingClient', + entity: 'str', + project: 'str', + run_id: 'str', + attrs: 'Mapping | None' = None, + include_sweeps: 'bool' = True, + lazy: 'bool' = True, + api: 'public.Api | None' = None ) ``` -| 属性 | Description | -| :--- | :--- | +**引数:** + + - `client`: W&B API クライアント。 + - `entity`: Run に関連付けられた Entity。 + - `project`: Run に関連付けられた Project。 + - `run_id`: Run の一意識別子。 + - `attrs`: Run の属性。 + - `include_sweeps`: Run に Sweeps を含めるかどうか。 + +**Attributes:** + + - `tags` ([str]): Run に関連付けられたタグのリスト + - `url` (str): この Run の URL + - `id` (str): Run の一意識別子(デフォルトは8文字) + - `name` (str): Run の名前 + - `state` (str): 状態。running, finished, crashed, killed, preempting, preempted のいずれか + - `config` (dict): Run に関連付けられたハイパーパラメーターの辞書 + - `created_at` (str): Run が開始されたときの ISO タイムスタンプ + - `system_metrics` (dict): Run に対して記録された最新のシステムメトリクス + - `summary` (dict): 現在のサマリーを保持する、変更可能な辞書形式のプロパティ。update を呼び出すと変更が保存されます。 + - `project` (str): Run に関連付けられた Project + - `entity` (str): Run に関連付けられた Entity の名前 + - `project_internal_id` (int): Project の内部 ID + - `user` (str): Run を作成した User の名前 + - `path` (str): 一意識別子 [entity]/[project]/[run_id] + - `notes` (str): Run に関するノート + - `read_only` (boolean): Run が編集可能かどうか + - `history_keys` (str): `wandb.Run.log({"key": "value"})` でログ記録された履歴メトリクスキー + - `metadata` (str): wandb-metadata.json からの Run に関するメタデータ + +Run オブジェクトを初期化します。 + +Run は常に、wandb.Api のインスタンスである api から api.runs() を呼び出すことによって初期化されます。 + +--- + +### property Run.config + +Run の config を取得します。レイジーモード(lazy mode)の場合は、自動的に全データをロードします。 + +**戻り値:** + - `dict[str, Any]`: config プロパティの値。 +--- + +### property Run.entity + +Run に関連付けられた Entity。 + +**戻り値:** + - `str`: entity プロパティの値。 +--- + +### property Run.id + +Run の一意識別子。 + +**戻り値:** + - `str`: id プロパティの値。 +--- + +### property Run.lastHistoryStep + +Run の履歴に記録された最後のステップを返します。 + +**戻り値:** + - `int`: lastHistoryStep プロパティの値。 +--- + +### property Run.metadata + +wandb-metadata.json から取得した Run に関するメタデータ。 + +メタデータには、Run の説明、タグ、開始時間、メモリ使用量などが含まれます。 + +**戻り値:** + - `dict[str, Any] | None`: metadata プロパティの値。 +--- + +### property Run.name + +Run の名前。 + +**戻り値:** + - `str | None`: name プロパティの値。 +--- + +### property Run.path + +Run のパス。パスは entity、project、run_id を含むリストです。 + +**戻り値:** + - `list[str]`: path プロパティの値。 +--- + +### property Run.rawconfig + +内部キーを含む生の Run config を取得します。レイジーモードの場合は、自動的に全データをロードします。 + +**戻り値:** + - `dict[str, Any]`: rawconfig プロパティの値。 +--- + +### property Run.state + +Run の状態。Finished, Failed, Crashed, Running のいずれかになります。 + +**戻り値:** + - `str`: state プロパティの値。 +--- + +### property Run.storage_id + +Run の一意のストレージ識別子。 + +**戻り値:** + - `str`: storage_id プロパティの値。 +--- + +### property Run.summary + +Run のサマリーメトリクスを取得します。レイジーモードの場合は、自動的に全データをロードします。 + +**戻り値:** + - `HTTPSummary`: summary プロパティの値。 +--- + +### property Run.summary_metrics + +Run のサマリーメトリクスを取得します。レイジーモードの場合は、自動的に全データをロードします。 + +**戻り値:** + - `dict[str, Any]`: summary_metrics プロパティの値。 +--- + +### property Run.sweep_name + +Sweep 名を取得します。sweepName は軽量なフラグメントに含まれているため、常に利用可能です。 -## メソッド +**戻り値:** + - `str | None`: sweep_name プロパティの値。 +--- + +### property Run.system_metrics + +Run のシステムメトリクスを取得します。レイジーモードの場合は、自動的に全データをロードします。 + +**戻り値:** + - `dict[str, Any]`: system_metrics プロパティの値。 +--- + +### property Run.url + +Run の URL。 + +Run の URL は、entity、project、run_id から生成されます。SaaS ユーザーの場合、`https://wandb.ai/entity/project/run_id` という形式になります。 + +**戻り値:** + - `str`: url プロパティの値。 +--- + +### property Run.username -### `create` +この API は非推奨です。代わりに `entity` を使用してください。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L377-L417) +**戻り値:** + - `str`: username プロパティの値。 +--- + +### method `Run.beta_scan_history` ```python -@classmethod -create( - api, run_id=None, project=None, entity=None -) +beta_scan_history( + keys: 'list[str] | None' = None, + page_size: 'int' = 1000, + min_step: 'int' = 0, + max_step: 'int | None' = None, + use_cache: 'bool' = True +) → public.BetaHistoryScan ``` -指定されたプロジェクトのために run を作成します。 +Run のすべての履歴レコードのイテラブルなコレクションを返します。 + +この関数はまだ開発中であり、期待通りに動作しない可能性があります。wandb-core を使用して、ローカルにエクスポートされた Run の parquet 履歴から履歴を読み取ります。 -### `delete` +**引数:** -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L540-L568) + - `keys`: Run の履歴から読み取るメトリクスのリスト。キーが指定されない場合、すべてのメトリクスが返されます。 + - `page_size`: 一度に読み取る履歴レコードの数。 + - `min_step`: 履歴の読み取りを開始する最小ステップ(含む)。 + - `max_step`: 履歴を読み取る最大ステップ(含まない)。 + - `use_cache`: True に設定すると、WANDB_CACHE_DIR に Run の履歴があるか確認します。キャッシュに履歴が見つからない場合は、サーバーからダウンロードされます。False に設定すると、履歴は毎回ダウンロードされます。 + +**戻り値:** + 履歴レコードを取得するために反復処理可能な BetaHistoryScan オブジェクト。 + +--- + +### classmethod `Run.create` ```python -delete( - delete_artifacts=(False) -) +create( + api: 'public.Api', + run_id: 'str | None' = None, + project: 'str | None' = None, + entity: 'str | None' = None, + state: "Literal['running', 'pending']" = 'running' +) → Self ``` -指定された run を wandb バックエンドから削除します。 +指定された Project に対して Run を作成します。 -### `display` +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/attrs.py#L16-L37) +### method `Run.delete` ```python -display( - height=420, hidden=(False) -) -> bool +delete(delete_artifacts: 'bool' = False) → None ``` -このオブジェクトを Jupyter で表示します。 +wandb バックエンドから指定された Run を削除します。 -### `file` +**引数:** -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L632-L642) + - `delete_artifacts` (bool, オプション): Run に関連付けられた Artifacts も削除するかどうか。 + +--- + +### method `Run.file` ```python -file( - name -) +file(name: 'str') → public.File ``` -指定された名前のファイルのパスをアーティファクトで返します。 +Artifact 内の指定された名前を持つファイルのパスを返します。 -| 引数 | Description | -| :--- | :--- | -| name (str): 要求されたファイルの名前。 | +**引数:** -| 戻り値 | Description | -| :--- | :--- | -| 指定された name 引数と一致する `File`。 | + - `name` (str): 要求されたファイルの名前。 -### `files` +**戻り値:** + name 引数に一致する `File`。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L619-L630) +--- + +### method `Run.files` ```python files( - names=None, per_page=50 -) + names: 'list[str] | None' = None, + pattern: 'str | None' = None, + per_page: 'int' = 50 +) → public.Files ``` -指定された名前のすべてのファイルのファイルパスを返します。 +指定された条件に一致する Run 内のすべてのファイルに対して `Files` オブジェクトを返します。 -| 引数 | Description | -| :--- | :--- | -| names (list): 要求されたファイルの名前、指定されていない場合はすべてのファイルを返す。 per_page (int): ページあたりの結果数。 | +一致させる正確なファイル名のリスト、または照合するパターンを指定できます。両方が指定された場合、パターンは無視されます。 -| 戻り値 | Description | -| :--- | :--- | -| `Files` オブジェクトで、これは `File` オブジェクトのイテレータです。 | +**引数:** -### `history` + - `names` (list): 要求されたファイルの名前。空の場合はすべてのファイルを返します。 + - `pattern` (str, オプション): W&B からファイルを返す際に一致させるパターン。このパターンは MySQL の LIKE 構文を使用するため、.json で終わるすべてのファイルに一致させるには "%.json" となります。names と pattern の両方が指定された場合、ValueError が発生します。 + - `per_page` (int): 1ページあたりの結果数。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L668-L708) +**戻り値:** + `File` オブジェクトを反復処理するイテレータである `Files` オブジェクト。 + +--- + +### method `Run.history` ```python history( - samples=500, keys=None, x_axis="_step", pandas=(True), stream="default" -) + samples: 'int' = 500, + keys: 'list[str] | None' = None, + x_axis: 'str' = '_step', + pandas: 'bool' = True, + stream: "Literal['default', 'system']" = 'default' +) → list[dict[str, Any]] | pd.DataFrame ``` -run のサンプル化された履歴メトリクスを返します。 +Run のサンプリングされた履歴メトリクスを返します。 + +履歴レコードがサンプリングされても問題ない場合は、この方法がよりシンプルで高速です。 + +**引数:** -履歴レコードがサンプリングされることを許容できる場合、こちらの方が簡単で高速です。 + - `samples `: (int, オプション) 返すサンプルの数 + - `pandas `: (bool, オプション) pandas dataframe を返すかどうか + - `keys `: (list, オプション) 特定のキーのメトリクスのみを返す + - `x_axis `: (str, オプション) xAxis として使用するメトリクス。デフォルトは _step + - `stream `: (str, オプション) メトリクスには "default"、マシンメトリクスには "system" を指定 -| 引数 | Description | -| :--- | :--- | -| `samples` | (int, オプション) 返すサンプル数 | -| `pandas` | (bool, オプション) パンダのデータフレームを返す | -| `keys` | (list, オプション) 特定のキーのメトリクスのみを返す | -| `x_axis` | (str, オプション) xAxis として使用するメトリクス、デフォルトは _step | -| `stream` | (str, オプション) メトリクス用の "default"、マシンメトリクス用の "system" | +**戻り値:** -| 戻り値 | Description | -| :--- | :--- | -| `pandas.DataFrame` | pandas=True の場合は歴史メトリクスの `pandas.DataFrame` を返します。 pandas=False の場合は歴史メトリクスの辞書のリストを返します。 | + - `pandas.DataFrame`: pandas=True の場合、履歴メトリクスの `pandas.DataFrame` を返します。 + - `list of dicts`: pandas=False の場合、履歴メトリクスの辞書のリストを返します。 -### `load` +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L419-L488) +### method `Run.load` ```python -load( - force=(False) -) +load(force: 'bool' = False) → dict[str, Any] ``` -### `log_artifact` +レイジーモードに基づいた適切なフラグメントを使用して Run データをロードします。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L860-L905) +--- + +### method `Run.load_full_data` ```python -log_artifact( - artifact: "wandb.Artifact", - aliases: Optional[Collection[str]] = None, - tags: Optional[Collection[str]] = None -) +load_full_data(force: 'bool' = False) → dict[str, Any] ``` -アーティファクトを run の出力として宣言します。 +config, systemMetrics, summaryMetrics などの重いフィールドを含む、すべての Run データをロードします。 + +このメソッドは、最初に lazy=True を使用して Run をリストしたが、特定の Run の全データにアクセスする必要がある場合に便利です。 -| 引数 | Description | -| :--- | :--- | -| artifact (`Artifact`): `wandb.Api().artifact(name)` から返されたアーティファクト。 aliases (list, オプション): このアーティファクトに適用するエイリアス。 | -| `tags` | (list, オプション) このアーティファクトに適用するタグ。 | +**引数:** -| 戻り値 | Description | -| :--- | :--- | -| `Artifact` オブジェクト。 | + - `force`: データが既にロードされている場合でも強制的に再ロードします -### `logged_artifacts` +**戻り値:** + ロードされた Run 属性 + +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L766-L798) +### method `Run.log_artifact` ```python -logged_artifacts( - per_page: int = 100 -) -> public.RunArtifacts +log_artifact( + artifact: 'wandb.Artifact', + aliases: 'Collection[str] | None' = None, + tags: 'Collection[str] | None' = None +) → wandb.Artifact ``` -この run によってログされているすべてのアーティファクトを取得します。 +Artifact を Run の出力として宣言します。 -run 中にログされたすべての出力アーティファクトを取得します。取得した結果はページネーションされ、イテレートするか、単一のリストにまとめることができます。 +**引数:** -| 引数 | Description | -| :--- | :--- | -| `per_page` | API リクエストごとに取得するアーティファクトの数。 | + - `artifact` (`Artifact`): `wandb.Api().artifact(name)` から返された Artifact。 + - `aliases` (list, オプション): この Artifact に適用するエイリアス。 + - `tags`: (list, オプション) この Artifact に適用するタグ(ある場合)。 -| 戻り値 | Description | -| :--- | :--- | -| この run 中に出力として記録されたすべての Artifact オブジェクトのイテレート可能なコレクション。 | +**戻り値:** + `Artifact` オブジェクト。 -#### 例: +--- -``` ->>> import wandb ->>> import tempfile ->>> with tempfile.NamedTemporaryFile( -... mode="w", delete=False, suffix=".txt" -... ) as tmp: -... tmp.write("これはテストアーティファクトです") -... tmp_path = tmp.name ->>> run = wandb.init(project="artifact-example") ->>> artifact = wandb.Artifact("test_artifact", type="dataset") ->>> artifact.add_file(tmp_path) ->>> run.log_artifact(artifact) ->>> run.finish() ->>> api = wandb.Api() ->>> finished_run = api.run(f"{run.entity}/{run.project}/{run.id}") ->>> for logged_artifact in finished_run.logged_artifacts(): -... print(logged_artifact.name) -test_artifact +### method `Run.logged_artifacts` + +```python +logged_artifacts(per_page: 'int' = 100) → public.RunArtifacts ``` -### `save` +この Run によってログ記録されたすべての Artifacts を取得します。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L570-L571) +Run 中にログ記録されたすべての出力 Artifacts を取得します。反復処理したり、単一のリストに収集したりできるページ分割された結果を返します。 -```python -save() -``` +**引数:** + + - `per_page`: 1回の API リクエストで取得する Artifact の数。 -### `scan_history` +**戻り値:** + この Run 中に出力としてログ記録されたすべての Artifact オブジェクトのイテラブルなコレクション。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L710-L764) +**例:** + ```python +import wandb +import tempfile + +with tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=".txt") as tmp: + tmp.write("This is a test artifact") + tmp_path = tmp.name +run = wandb.init(project="artifact-example") +artifact = wandb.Artifact("test_artifact", type="dataset") +artifact.add_file(tmp_path) +run.log_artifact(artifact) +run.finish() + +api = wandb.Api() + +finished_run = api.run(f"{run.entity}/{run.project}/{run.id}") + +for logged_artifact in finished_run.logged_artifacts(): + print(logged_artifact.name) +``` + +--- + +### method `Run.save` ```python -scan_history( - keys=None, page_size=1000, min_step=None, max_step=None -) +save() → None ``` -run のすべての履歴レコードをイテレート可能なコレクションで返します。 +Run オブジェクトへの変更を W&B バックエンドに保存します。 -#### 例: +--- -例として全ての損失値をエクスポート +### method `Run.scan_history` ```python -run = api.run("l2k2/examples-numpy-boston/i0wt6xua") -history = run.scan_history(keys=["Loss"]) -losses = [row["Loss"] for row in history] +scan_history( + keys: 'list[str] | None' = None, + page_size: 'int' = 1000, + min_step: 'int | None' = None, + max_step: 'int | None' = None +) → Iterator[dict[str, Any]] ``` -| 引数 | Description | -| :--- | :--- | -| keys ([str], オプション): これらのキーのみをフェッチし、これらの定義されたすべてのキーを含む行のみをフェッチします。 page_size (int, オプション): API からフェッチするページのサイズ。 min_step (int, オプション): 一度にスキャンするページの最小数。 max_step (int, オプション): 一度にスキャンするページの最大数。 | +Run のすべての履歴レコードのイテラブルなコレクションを返します。 + +**引数:** -| 戻り値 | Description | -| :--- | :--- | -| 履歴レコード (辞書) のイテレート可能なコレクション。 | + - `keys` ([str], オプション): これらのキーのみを取得し、すべてのキーが定義されている行のみを取得します。 + - `page_size` (int, オプション): API から取得するページのサイズ。 + - `min_step` (int, オプション): 一度にスキャンする最小ページ数。 + - `max_step` (int, オプション): 一度にスキャンする最大ページ数。 -### `snake_to_camel` +**戻り値:** + 履歴レコード(dict)を反復処理するイテラブルなコレクション。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/attrs.py#L12-L14) +**例:** + サンプル Run のすべての loss 値をエクスポートする ```python -snake_to_camel( - string -) -``` +run = api.run("entity/project-name/run-id") +history = run.scan_history(keys=["Loss"]) +losses = [row["Loss"] for row in history] +``` -### `to_html` +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L993-L1001) +### method `Run.to_html` ```python -to_html( - height=420, hidden=(False) -) +to_html(height: 'int' = 420, hidden: 'bool' = False) → str ``` -この run を表示する iframe を含む HTML を生成します。 +この Run を表示する iframe を含む HTML を生成します。 -### `update` +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L512-L538) +### method `Run.update` ```python -update() +update() → None ``` -run オブジェクトに対する変更を wandb バックエンドに保存します。 +Run オブジェクトへの変更を wandb バックエンドに保存します。 -### `upload_file` +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L644-L666) +### method `Run.upload_file` ```python -upload_file( - path, root="." -) +upload_file(path: 'str', root: 'str' = '.') → public.File ``` -ファイルをアップロードします。 +ローカルファイルを W&B にアップロードし、この Run に関連付けます。 -| 引数 | Description | -| :--- | :--- | -| path (str): アップロードするファイルの名前。 root (str): ファイルを保存するルートパス。例: ファイルを "my_dir/file.txt" として保存したい場合で、現在 "my_dir" にいる場合は、 root を "../" に設定します。 | +**引数:** -| 戻り値 | Description | -| :--- | :--- | -| 指定された name 引数に一致する `File`。 | + - `path` (str): アップロードするファイルへのパス。絶対パスまたは相対パスを指定できます。 + - `root` (str): ファイルを保存する際の基準となるルートパス。例えば、ファイルを Run 内で "my_dir/file.txt" として保存したく、現在 "my_dir" にいる場合は、root を "../" に設定します。デフォルトはカレントディレクトリ (".") です。 -### `use_artifact` +**戻り値:** + アップロードされたファイルを表す `File` オブジェクト。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L827-L858) +--- + +### method `Run.use_artifact` ```python use_artifact( - artifact, use_as=None -) + artifact: 'wandb.Artifact', + use_as: 'str | None' = None +) → wandb.Artifact ``` -アーティファクトを run への入力として宣言します。 +Artifact を Run の入力として宣言します。 -| 引数 | Description | -| :--- | :--- | -| artifact (`Artifact`): `wandb.Api().artifact(name)` から返されたアーティファクト。 use_as (string, オプション): スクリプトでアーティファクトがどのように使用されるかを識別する文字列。 run で使用されるアーティファクトを簡単に識別するために、ベータ版の wandb launch 機能のアーティファクト交換機能を使用します。 | +**引数:** -| 戻り値 | Description | -| :--- | :--- | -| `Artifact` オブジェクト。 | + - `artifact` (`Artifact`): `wandb.Api().artifact(name)` から返された Artifact + - `use_as` (string, オプション): スクリプト内で Artifact がどのように使用されるかを識別する文字列。ベータ版の wandb launch 機能の Artifact 入れ替え機能を使用する際に、Run で使用される Artifact を簡単に区別するために使用されます。 -### `used_artifacts` +**戻り値:** + `Artifact` オブジェクト。 -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L800-L825) +--- + +### method `Run.used_artifacts` ```python -used_artifacts( - per_page: int = 100 -) -> public.RunArtifacts +used_artifacts(per_page: 'int' = 100) → public.RunArtifacts ``` -この run で明示的に使用されているアーティファクトを取得します。 +この Run で明示的に使用された Artifacts を取得します。 -run 中に明示的に使用された入力アーティファクトのみを取得します。通常は `run.use_artifact()` を通じて宣言される。取得した結果はページネーションされ、イテレートするか、単一のリストにまとめることができます。 +Run 中に明示的に使用が宣言された入力 Artifacts(通常は `run.use_artifact()` 経由)のみを取得します。反復処理したり、単一のリストに収集したりできるページ分割された結果を返します。 -| 引数 | Description | -| :--- | :--- | -| `per_page` | API リクエストごとに取得するアーティファクトの数。 | +**引数:** -| 戻り値 | Description | -| :--- | :--- | -| この run 中に入力として明示的に使用された Artifact オブジェクトのイテレート可能なコレクション。 | + - `per_page`: 1回の API リクエストで取得する Artifact の数。 -#### 例: +**戻り値:** + この Run で入力として明示的に使用された Artifact オブジェクトのイテラブルなコレクション。 -``` ->>> import wandb ->>> run = wandb.init(project="artifact-example") ->>> run.use_artifact("test_artifact:latest") ->>> run.finish() ->>> api = wandb.Api() ->>> finished_run = api.run(f"{run.entity}/{run.project}/{run.id}") ->>> for used_artifact in finished_run.used_artifacts(): -... print(used_artifact.name) +**例:** + ```python +import wandb + +run = wandb.init(project="artifact-example") +run.use_artifact("test_artifact:latest") +run.finish() + +api = wandb.Api() +finished_run = api.run(f"{run.entity}/{run.project}/{run.id}") +for used_artifact in finished_run.used_artifacts(): + print(used_artifact.name) test_artifact -``` +``` -### `wait_until_finished` +--- -[ソースを見る](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L490-L510) +### method `Run.wait_until_finished` ```python -wait_until_finished() -``` \ No newline at end of file +wait_until_finished() → None +``` + +Run が終了するまでその状態を確認します。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/runartifacts.mdx b/ja/models/ref/python/public-api/runartifacts.mdx new file mode 100644 index 0000000000..dae0050089 --- /dev/null +++ b/ja/models/ref/python/public-api/runartifacts.mdx @@ -0,0 +1,25 @@ +--- +title: RunArtifacts +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + + + +## class `RunArtifacts` +特定の Run に関連付けられた Artifacts のイテレーション可能なコレクションです。 + + +### property RunArtifacts.cursor + + + + + +--- + +### property RunArtifacts.more \ No newline at end of file diff --git a/ja/models/ref/python/public-api/runs.mdx b/ja/models/ref/python/public-api/runs.mdx index 2d5ff2feca..5511af3c4c 100644 --- a/ja/models/ref/python/public-api/runs.mdx +++ b/ja/models/ref/python/public-api/runs.mdx @@ -1,109 +1,87 @@ --- -title: run +title: Runs +namespace: public_apis_namespace +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -プロジェクトに関連付けられた runs の反復可能なコレクションとオプションフィルター。 +## class `Runs` +プロジェクトに関連付けられ、オプションでフィルタリングされた `Run` オブジェクトのレイジーイテレータです。 -```python -Runs( - client: "RetryingClient", - entity: str, - project: str, - filters: Optional[Dict[str, Any]] = None, - order: Optional[str] = None, - per_page: int = 50, - include_sweeps: bool = (True) -) -``` - -これは通常、`Api`.runs メソッドを介して間接的に使用されます。 - -| 属性 | Description | -| :--- | :--- | - -## メソッド - -### `convert_objects` +Runs は、必要に応じて W&B サーバーからページ単位で取得されます。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L141-L173) +通常、これは `Api.runs` ネームスペースを介して間接的に使用されます。 -```python -convert_objects() -``` - -### `histories` - -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/runs.py#L175-L270) +### method `Runs.__init__` ```python -histories( - samples: int = 500, - keys: Optional[List[str]] = None, - x_axis: str = "_step", - format: Literal['default', 'pandas', 'polars'] = "default", - stream: Literal['default', 'system'] = "default" +__init__( + client: 'RetryingClient', + entity: 'str', + project: 'str', + filters: 'dict[str, Any] | None' = None, + order: 'str' = '+created_at', + per_page: 'int' = 50, + include_sweeps: 'bool' = True, + lazy: 'bool' = True, + api: 'public.Api | None' = None ) ``` -フィルター条件に適合するすべての runs のサンプル履歴メトリクスを返します。 - -| 引数 | Description | -| :--- | :--- | -| `samples` | (int, オプション) 各 run に対して返されるサンプルの数 | -| `keys` | (list[str], オプション) 特定のキーのメトリクスのみを返します | -| `x_axis` | (str, オプション) このメトリクスを x 軸として使用します。デフォルトは _step | -| `format` | (Literal, オプション) データを返すフォーマット、オプションは "default", "pandas", "polars" | -| `stream` | (Literal, オプション) メトリクスの "default", マシンメトリクスの "system" | - -| 戻り値 | Description | -| :--- | :--- | -| `pandas.DataFrame` | format="pandas" の場合、履歴メトリクスの `pandas.DataFrame` を返します。 | -| `polars.DataFrame` | format="polars" の場合、履歴メトリクスの `polars.DataFrame` を返します。リスト of dicts: format="default" の場合、履歴メトリクスを含む dicts のリストを run_id キー付きで返します。 | +**Args:** -### `next` + - `client`: (`wandb.apis.public.RetryingClient`) リクエストに使用する API クライアント。 + - `entity`: (str) プロジェクトを所有する Entities(ユーザー名またはチーム)。 + - `project`: (str) Runs を取得する Projects の名前。 + - `filters`: (Optional[Dict[str, Any]]) Runs クエリに適用するフィルタの辞書。 + - `order`: (str) ソート順。`created_at`、`heartbeat_at`、`config.*.value`、または `summary_metrics.*` が指定可能です。先頭に `+` を付けると昇順(デフォルト)、`-` を付けると降順になります。デフォルトの順序は `run.created_at` で、古いものから新しい順です。 + - `per_page`: (int) 1回のリクエストで取得する Runs の数(デフォルトは 50)。 + - `include_sweeps`: (bool) Runs に Sweeps の情報を含めるかどうか。デフォルトは True です。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L72-L79) +--- -```python -next() -``` +### property Runs.length -### `update_variables` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L52-L53) +### method `Runs.histories` ```python -update_variables() +histories( + samples: 'int' = 500, + keys: 'list[str] | None' = None, + x_axis: 'str' = '_step', + format: "Literal['default', 'pandas', 'polars']" = 'default', + stream: "Literal['default', 'system']" = 'default' +) → list[dict[str, Any]] | pd.DataFrame | pl.DataFrame ``` -### `__getitem__` +フィルタ条件に一致するすべての Runs について、サンプリングされた履歴メトリクスを返します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L65-L70) +**Args:** -```python -__getitem__( - index -) -``` - -### `__iter__` + - `samples`: 各 Run ごとに返されるサンプル数。 + - `keys`: 特定のキーのメトリクスのみを返します。 + - `x_axis`: X軸として使用するメトリクス。デフォルトは `_step` です。 + - `format`: データを返す形式。オプションは "default"、"pandas"、"polars" です。 + - `stream`: メトリクスの場合は "default"、マシンメトリクスの場合は "system" を指定します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L26-L28) +**Returns:** -```python -__iter__() -``` + - `pandas.DataFrame`: `format="pandas"` の場合、履歴メトリクスの `pandas.DataFrame` を返します。 + - `polars.DataFrame`: `format="polars"` の場合、履歴メトリクスの `polars.DataFrame` を返します。 + - `list of dicts`: `format="default"` の場合、`run_id` キーを含む履歴メトリクスの辞書のリストを返します。 -### `__len__` +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/paginator.py#L30-L35) +### method `Runs.upgrade_to_full` ```python -__len__() +upgrade_to_full() → None ``` -| クラス変数 | Description | -| :--- | :--- | -| `QUERY` | | \ No newline at end of file +この Runs コレクションを lazy モードから full モードにアップグレードします。 + +これにより、完全な Run データの取得に切り替わり、すでにロードされている Run オブジェクトも完全なデータを持つようにアップグレードされます。複数の Runs をアップグレードする際のパフォーマンスを向上させるために、並列ロードを使用します。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/sweep.mdx b/ja/models/ref/python/public-api/sweep.mdx index cdd7b5f282..f4ed4cf728 100644 --- a/ja/models/ref/python/public-api/sweep.mdx +++ b/ja/models/ref/python/public-api/sweep.mdx @@ -1,107 +1,145 @@ --- title: Sweep +namespace: public_apis_namespace +python_object_type: class --- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; - + -スイープに関連付けられた一連の runs。 +## class `Sweep` +Sweep に関連付けられた Runs のセットです。 + +**Attributes:** + + - `runs` (Runs): Runs のリスト + - `id` (str): Sweep ID + - `project` (str): Sweep が属する Project の名前 + - `config` (dict): sweep configuration を含む辞書 + - `state` (str): Sweep の状態。"Finished"、"Failed"、"Crashed"、または "Running" のいずれかです。 + - `expected_run_count` (int): Sweep で期待される想定 Run 数 + +### method `Sweep.__init__` ```python -Sweep( - client, entity, project, sweep_id, attrs=None +__init__( + client: 'RetryingClient', + entity: 'str', + project: 'str', + sweep_id: 'str', + attrs: 'Mapping[str, Any] | None' = None ) ``` -#### 例: +--- -次のようにインスタンス化します: +### property Sweep.config -``` -api = wandb.Api() -sweep = api.sweep(path / to / sweep) -``` +Sweep に使用される sweep configuration です。 -| 属性 | Description | -| :--- | :--- | -| `runs` | (`Runs`) run のリスト | -| `id` | (str) スイープの id | -| `project` | (str) プロジェクトの名前 | -| `config` | (str) スイープ設定の辞書 | -| `state` | (str) スイープの状態 | -| `expected_run_count` | (int) スイープの予想される run の数 | +--- -## メソッド +### property Sweep.entity -### `best_run` +Sweep に関連付けられた Entity です。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/sweeps.py#L125-L148) +**Returns:** + - `str`: entity プロパティの値。 -```python -best_run( - order=None -) -``` +--- -設定で定義されたメトリックまたは渡された順序でソートされた最良の run を返します。 +### property Sweep.expected_run_count -### `display` +Sweep で期待される Run 数を返します。無限の場合は None を返します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/attrs.py#L16-L37) +**Returns:** + - `int | None`: expected_run_count プロパティの値。 -```python -display( - height=420, hidden=(False) -) -> bool -``` +--- -このオブジェクトを jupyter に表示します。 +### property Sweep.name -### `get` +Sweep の名前です。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/sweeps.py#L173-L222) +以下の優先順位で最初に存在する名前を返します: -```python -@classmethod -get( - client, entity=None, project=None, sid=None, order=None, query=None, **kwargs -) -``` +1. ユーザーが編集した表示名 2. 作成時に設定された名前 3. Sweep ID + +--- + +### property Sweep.order + +Sweep の順序(order)キーを返します。 + +--- -クラウドバックエンドに対してクエリを実行します。 +### property Sweep.path -### `load` +Project のパスを返します。 -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/sweeps.py#L106-L114) +パスは、Entity、Project 名、および Sweep ID を含むリストです。 + +--- + +### property Sweep.url + +Sweep の URL です。 + +Sweep の URL は、Entity、Project、"sweeps" という用語、および Sweep ID から生成されます。 SaaS Users の場合、`https://wandb.ai/entity/project/sweeps/sweeps_ID` という形式になります。 + +--- + +### property Sweep.username + +非推奨です。代わりに `Sweep.entity` を使用してください。 + +**Returns:** + - `str`: username プロパティの値。 + +--- + +### method `Sweep.best_run` ```python -load( - force: bool = (False) -) +best_run(order=None) ``` -### `snake_to_camel` +config で定義されたメトリクス、または渡された order に基づいてソートされた最高の Run を返します。 + +--- -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/attrs.py#L12-L14) +### classmethod `Sweep.get` ```python -snake_to_camel( - string +get( + client: 'RetryingClient', + entity: 'str | None' = None, + project: 'str | None' = None, + sid: 'str | None' = None, + order: 'str | None' = None, + query: 'Document | None' = None, + **kwargs ) ``` -### `to_html` +クラウドのバックエンドに対してクエリを実行します。 + +**Args:** -[ソースを表示](https://www.github.com/wandb/wandb/tree/637bddf198525810add5804059001b1b319d6ad1/wandb/apis/public/sweeps.py#L224-L232) + - `client`: クエリの実行に使用するクライアント。 + - `entity`: Project を所有する Entity (Users 名または Teams)。 + - `project`: Sweep を取得する Project の名前。 + - `sid`: クエリ対象の Sweep ID。 + - `order`: Sweep の Runs が返される順序。 + - `query`: 実行に使用するクエリ。 + - `**kwargs`: クエリに渡す追加のキーワード引数。 + +--- + +### method `Sweep.to_html` ```python -to_html( - height=420, hidden=(False) -) +to_html(height: 'int' = 420, hidden: 'bool' = False) → str ``` -このスイープを表示する iframe を含む HTML を生成します。 - -| クラス変数 | Description | -| :--- | :--- | -| `LEGACY_QUERY` | | -| `QUERY` | | \ No newline at end of file +この Sweep を表示する iframe を含む HTML を生成します。 \ No newline at end of file diff --git a/ja/models/ref/python/public-api/sweeps.mdx b/ja/models/ref/python/public-api/sweeps.mdx new file mode 100644 index 0000000000..aff8a409ba --- /dev/null +++ b/ja/models/ref/python/public-api/sweeps.mdx @@ -0,0 +1,52 @@ +--- +title: Sweeps +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Sweeps` +`Sweep` オブジェクトのコレクションに対するレイジーイテレータです。 + +**Examples:** + ```python +from wandb.apis.public import Api + +# 指定したプロジェクトとエンティティから sweeps を取得 +sweeps = Api().project(name="project_name", entity="entity").sweeps() + +# sweep をループして詳細を表示 +for sweep in sweeps: + print(f"Sweep name: {sweep.name}") + print(f"Sweep ID: {sweep.id}") + print(f"Sweep URL: {sweep.url}") + print("----------") +``` + +### method `Sweeps.__init__` + +```python +__init__( + client: 'RetryingClient', + entity: 'str', + project: 'str', + per_page: 'int' = 50 +) → Sweeps +``` + +`Sweep` オブジェクトの反復可能なコレクション。 + +**Args:** + + - `client`: W&B へのクエリに使用される API クライアント。 + - `entity`: Sweeps を所有する Entities 。 + - `project`: Sweeps を含む Projects 。 + - `per_page`: API への 1 回のリクエストで取得する Sweeps の数。 + +--- + +### property Sweeps.length + +--- \ No newline at end of file diff --git a/ja/models/ref/python/public-api/team.mdx b/ja/models/ref/python/public-api/team.mdx new file mode 100644 index 0000000000..41ef2a2527 --- /dev/null +++ b/ja/models/ref/python/public-api/team.mdx @@ -0,0 +1,111 @@ +--- +title: チーム +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `Team` +W&B Teams を表すクラスです。 + +このクラスは、 Teams の作成、メンバーの招待、サービスアカウントの管理など、W&B Teams を管理するための メソッド を提供します。チーム属性を処理するために Attrs を継承しています。 + +### method `Team.__init__` + +```python +__init__( + client: 'RetryingClient', + name: 'str', + attrs: 'Mapping[str, Any] | None' = None +) +``` + +**Args:** + + - `client` (`wandb.apis.public.Api`): 使用する API インスタンス + - `name` (str): チームの名前 + - `attrs` (dict): チーム属性のオプション 辞書 + + + +**Note:** + +> Teams の管理には適切な権限が必要です。 + + + + + + + + + +--- + +### classmethod `Team.create` + +```python +create(api: 'Api', team: 'str', admin_username: 'str | None' = None) → Self +``` + +新しいチームを作成します。 + + + +**Args:** + + - `api`: (`Api`) 使用する API インスタンス + - `team`: (str) チームの名前 + - `admin_username`: (str) チームの管理者 ユーザー のオプションのユーザー名。デフォルトは現在の ユーザー です。 + + + +**Returns:** + `Team` オブジェクト + +--- + +### method `Team.create_service_account` + +```python +create_service_account(description: 'str') → Member | None +``` + +チームのサービスアカウントを作成します。 + + + +**Args:** + + - `description`: (str) このサービスアカウントの説明 + + + +**Returns:** + サービスアカウントの `Member` オブジェクト 、失敗した場合は None + +--- + +### method `Team.invite` + +```python +invite(username_or_email: 'str', admin: 'bool' = False) → bool +``` + +ユーザー をチームに招待します。 + + + +**Args:** + + - `username_or_email`: (str) 招待したい ユーザー のユーザー名またはメール アドレス + - `admin`: (bool) この ユーザー をチーム管理者に設定するかどうか。デフォルトは `False` です。 + + + +**Returns:** + 成功した場合は `True` 、 ユーザー が既に招待されているか存在しない場合は `False` + +--- \ No newline at end of file diff --git a/ja/models/ref/python/public-api/user.mdx b/ja/models/ref/python/public-api/user.mdx new file mode 100644 index 0000000000..b2be58dde1 --- /dev/null +++ b/ja/models/ref/python/public-api/user.mdx @@ -0,0 +1,148 @@ +--- +title: Users +namespace: public_apis_namespace +python_object_type: class +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + +## class `User` +認証および管理機能を備えた W&B Users を表すクラスです。 + +このクラスは、ユーザーの作成、API キーの管理、チーム メンバーシップへのアクセスなど、W&B Users を管理するためのメソッドを提供します。ユーザー属性を処理するために Attrs から継承しています。 + +### method `User.__init__` + +```python +__init__(client: 'RetryingClient', attrs: 'MutableMapping[str, Any]') +``` + +**Args:** + + - `client`: (`wandb.apis.internal.Api`) 使用するクライアントインスタンス + - `attrs`: (dict) ユーザー属性 + + + +**Note:** + +> 一部の操作には管理者権限が必要です。 + + + + + + + +--- + +### property User.api_keys + +ユーザーに関連付けられている API キー名のリスト。 + + + +**Returns:** + ユーザーに関連付けられている API キーの名前。ユーザーが API キーを持っていない場合、または API キー データが読み込まれていない場合は空のリストを返します。 + + + +**Returns:** + - `list[str]`: api_keys プロパティの値。 +--- + +### property User.teams + +ユーザーがメンバーとして所属している Teams 名のリスト。 + + + +**Returns:** + ユーザーが所属する Teams の名前。ユーザーがチームメンバーシップを持っていない場合、またはチームデータが読み込まれていない場合は空のリストを返します。 + + + +**Returns:** + - `list[str]`: teams プロパティの値。 +--- + +### property User.user_api + +ユーザーの資格情報を使用した API のインスタンス。 + + + + + +**Returns:** + - `Api | None`: user_api プロパティの値。 +--- + +### classmethod `User.create` + +```python +create(api: 'Api', email: 'str', admin: 'bool' = False) → Self +``` + +新しいユーザーを作成します。 + + + +**Args:** + + - `api` (`Api`): 使用する API インスタンス + - `email` (str): チームの名前 + - `admin` (bool): このユーザーをグローバルなインスタンス管理者にするかどうか + + + +**Returns:** + `User` オブジェクト + +--- + +### method `User.delete_api_key` + +```python +delete_api_key(api_key: 'str') → bool +``` + +ユーザーの API キーを削除します。 + + + +**Args:** + + - `api_key` (str): 削除する API キーの名前。これは `api_keys` プロパティによって返される名前のいずれかである必要があります。 + + + +**Returns:** + 成功したかどうかを示すブール値 + + + +**Raises:** + api_key が見つからない場合は ValueError + +--- + +### method `User.generate_api_key` + +```python +generate_api_key(description: 'str | None' = None) → str | None +``` + +新しい API キーを生成します。 + + + +**Args:** + + - `description` (str, optional): 新しい API キーの説明。これは API キーの目的を特定するために使用できます。 + + + +**Returns:** + 新しい API キー。失敗した場合は None \ No newline at end of file diff --git a/ja/models/ref/query-panel.mdx b/ja/models/ref/query-panel.mdx index 3a788ef7cd..78585f0af2 100644 --- a/ja/models/ref/query-panel.mdx +++ b/ja/models/ref/query-panel.mdx @@ -1,33 +1,34 @@ --- -title: クエリ式言語 +title: Query Expression Language の概要 +description: W&B におけるデータの選択と集約のためのベータ版クエリ言語 --- -クエリエクスプレッションを使用して、Runs と Projects にまたがるデータを選択および集計します。 -[クエリパネル](/ja/models/app/features/panels/query-panels/)についてさらに学びましょう。 +クエリ式を使用して、 Runs や Projects を横断してデータの選択や集計を行います。 +[query panels](/models/app/features/panels/query-panels/) の詳細についてはこちらをご覧ください。 ## データ型 -* [artifact](./query-panel/artifact/) -* [artifactType](./query-panel/artifact-type/) -* [artifactVersion](./query-panel/artifact-version/) -* [audio-file](./query-panel/audio-file/) -* [bokeh-file](./query-panel/bokeh-file/) -* [boolean](./query-panel/boolean/) -* [entity](./query-panel/entity/) -* [file](./query-panel/file/) -* [float](./query-panel/float/) -* [html-file](./query-panel/html-file/) -* [image-file](./query-panel/image-file/) -* [int](./query-panel/int/) -* [joined-table](./query-panel/joined-table/) -* [molecule-file](./query-panel/molecule-file/) -* [number](./query-panel/number/) -* [object3D-file](./query-panel/object-3-d-file/) -* [partitioned-table](./query-panel/partitioned-table/) -* [project](./query-panel/project/) -* [pytorch-model-file](./query-panel/pytorch-model-file/) -* [run](./query-panel/run/) -* [string](./query-panel/string/) -* [table](./query-panel/table/) -* [user](./query-panel/user/) -* [video-file](./query-panel/video-file/) +* [artifact](./query-panel/artifact) +* [artifactType](./query-panel/artifact-type) +* [artifactVersion](./query-panel/artifact-version) +* [audio-file](./query-panel/audio-file) +* [bokeh-file](./query-panel/bokeh-file) +* [boolean](./query-panel/boolean) +* [entity](./query-panel/entity) +* [file](./query-panel/file) +* [float](./query-panel/float) +* [html-file](./query-panel/html-file) +* [image-file](./query-panel/image-file) +* [int](./query-panel/int) +* [joined-table](./query-panel/joined-table) +* [molecule-file](./query-panel/molecule-file) +* [number](./query-panel/number) +* [object3D-file](./query-panel/object-3-d-file) +* [partitioned-table](./query-panel/partitioned-table) +* [project](./query-panel/project) +* [pytorch-model-file](./query-panel/pytorch-model-file) +* [run](./query-panel/run) +* [string](./query-panel/string) +* [table](./query-panel/table) +* [user](./query-panel/user) +* [video-file](./query-panel/video-file) \ No newline at end of file diff --git a/ja/models/ref/query-panel/artifact-type.mdx b/ja/models/ref/query-panel/artifact-type.mdx index 611ddf66ab..6e4b81dd65 100644 --- a/ja/models/ref/query-panel/artifact-type.mdx +++ b/ja/models/ref/query-panel/artifact-type.mdx @@ -1,74 +1,72 @@ --- -title: 'artifactType - - - アーティファクトの種類' +title: artifactType --- ## Chainable Ops -

artifactType-artifactVersions

+### `artifactType-artifactVersions` -すべての[artifacts](/ja/models/ref/query-panel/artifact/)の[artifactVersions](/ja/models/ref/query-panel/artifact-version/)を[artifactType](/ja/models/ref/query-panel/artifact-type/)から返します。 +[artifactType](/models/ref/query-panel/artifact-type) に属するすべての [artifacts](/models/ref/query-panel/artifact) の [artifactVersions](/models/ref/query-panel/artifact-version) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactType` | [artifactType](/ja/models/ref/query-panel/artifact-type/) | +| `artifactType` | [artifactType](/models/ref/query-panel/artifact-type) | -#### Return Value -すべての[artifacts](/ja/models/ref/query-panel/artifact/)の[artifactVersions](/ja/models/ref/query-panel/artifact-version/)を[artifactType](/ja/models/ref/query-panel/artifact-type/)から返します。 +#### 返り値 +[artifactType](/models/ref/query-panel/artifact-type/) に属するすべての [artifacts](/models/ref/query-panel/artifact/) の [artifactVersions](/models/ref/query-panel/artifact-version/) -

artifactType-artifacts

+### `artifactType-artifacts` -[artifactType](/ja/models/ref/query-panel/artifact-type/)の[artifacts](/ja/models/ref/query-panel/artifact/)を返します。 +[artifactType](/models/ref/query-panel/artifact-type/) に属する [artifacts](/models/ref/query-panel/artifact) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactType` | [artifactType](/ja/models/ref/query-panel/artifact-type/) | +| `artifactType` | [artifactType](/models/ref/query-panel/artifact-type/) | -#### Return Value -[artifactType](/ja/models/ref/query-panel/artifact-type/)の[artifacts](/ja/models/ref/query-panel/artifact/)を返します。 +#### 返り値 +[artifactType](/models/ref/query-panel/artifact-type/) の [artifacts](/models/ref/query-panel/artifact) -

artifactType-name

+### `artifactType-name` -[artifactType](/ja/models/ref/query-panel/artifact-type/)の名前を返します。 +[artifactType](/models/ref/query-panel/artifact-type/) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactType` | [artifactType](/ja/models/ref/query-panel/artifact-type/) | +| `artifactType` | [artifactType](/models/ref/query-panel/artifact-type) | + +#### 返り値 +[artifactType](/models/ref/query-panel/artifact-type) の名前 -#### Return Value -[artifactType](/ja/models/ref/query-panel/artifact-type/)の名前を返します。 ## List Ops -

artifactType-artifactVersions

+### `artifactType-artifactVersions` -すべての[artifacts](/ja/models/ref/query-panel/artifact/)の[artifactVersions](/ja/models/ref/query-panel/artifact-version/)を[artifactType](/ja/models/ref/query-panel/artifact-type/)から返します。 +[artifactType](/models/ref/query-panel/artifact-type) に属するすべての [artifacts](/models/ref/query-panel/artifact) の [artifactVersions](/models/ref/query-panel/artifact-version) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactType` | [artifactType](/ja/models/ref/query-panel/artifact-type/) | +| `artifactType` | [artifactType](/models/ref/query-panel/artifact-type) | -#### Return Value -すべての[artifacts](/ja/models/ref/query-panel/artifact/)の[artifactVersions](/ja/models/ref/query-panel/artifact-version/)を[artifactType](/ja/models/ref/query-panel/artifact-type/)から返します。 +#### 返り値 +[artifactType](/models/ref/query-panel/artifact-type) に属するすべての [artifacts](/models/ref/query-panel/artifact) の [artifactVersions](/models/ref/query-panel/artifact-version) -

artifactType-artifacts

+### `artifactType-artifacts` -[artifactType](/ja/models/ref/query-panel/artifact-type/)の[artifacts](/ja/models/ref/query-panel/artifact/)を返します。 +[artifactType](/models/ref/query-panel/artifact-type) に属する [artifacts](/models/ref/query-panel/artifact) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactType` | [artifactType](/ja/models/ref/query-panel/artifact-type/) | +| `artifactType` | [artifactType](/models/ref/query-panel/artifact-type) | -#### Return Value -[artifactType](/ja/models/ref/query-panel/artifact-type/)の[artifacts](/ja/models/ref/query-panel/artifact/)を返します。 +#### 返り値 +[artifactType](/models/ref/query-panel/artifact-type) の [artifacts](/models/ref/query-panel/artifact) -

artifactType-name

+### `artifactType-name` -[artifactType](/ja/models/ref/query-panel/artifact-type/)の名前を返します。 +[artifactType](/models/ref/query-panel/artifact-type) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactType` | [artifactType](/ja/models/ref/query-panel/artifact-type/) | +| `artifactType` | [artifactType](/models/ref/query-panel/artifact-type) | -#### Return Value -[artifactType](/ja/models/ref/query-panel/artifact-type/)の名前を返します。 \ No newline at end of file +#### 返り値 +[artifactType](/models/ref/query-panel/artifact-type) の名前 \ No newline at end of file diff --git a/ja/models/ref/query-panel/artifact-version.mdx b/ja/models/ref/query-panel/artifact-version.mdx index 2f1bc083f9..3620ed79b2 100644 --- a/ja/models/ref/query-panel/artifact-version.mdx +++ b/ja/models/ref/query-panel/artifact-version.mdx @@ -1,228 +1,228 @@ --- -title: artifact バージョン +title: artifactVersion --- ## Chainable Ops -

artifactVersion-aliases

+### `artifactVersion-aliases` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のエイリアスを返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の エイリアス を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のエイリアス +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の エイリアス -

artifactVersion-createdAt

+### `artifactVersion-createdAt` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) が作成された日時を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) が作成された日時を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) が作成された日時 +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) が作成された日時 -

artifactVersion-file

+### `artifactVersion-file` -指定されたパスの [artifactVersion](/ja/models/ref/query-panel/artifact-version/) の_ファイル_を返します +指定されたパスの [artifactVersion](/models/ref/query-panel/artifact-version/) の _ファイル_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | -| `path` | _ファイル_のパス | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | +| `path` | _ファイル_ のパス | -#### 戻り値 -指定されたパスの [artifactVersion](/ja/models/ref/query-panel/artifact-version/) の_ファイル_ +#### 返り値 +指定されたパスの [artifactVersion](/models/ref/query-panel/artifact-version/) の _ファイル_ -

artifactVersion-files

+### `artifactVersion-files` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の_ファイル_の_リスト_を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の _ファイル一覧_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の_ファイル_の_リスト_ +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の _ファイル一覧_ - +### `artifactVersion-link` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の URL を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の URL を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の URL +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の URL -

artifactVersion-metadata

+### `artifactVersion-metadata` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のメタデータ辞書を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の メタデータ 辞書 を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のメタデータ辞書 +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の メタデータ 辞書 -

artifactVersion-name

+### `artifactVersion-name` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の名前を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の名前 +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の名前 -

artifactVersion-size

+### `artifactVersion-size` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のサイズを返します +[artifactVersion](/models/ref/query-panel/artifact-version/) のサイズを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のサイズ +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) のサイズ -

artifactVersion-usedBy

+### `artifactVersion-usedBy` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) を使用する [runs](/ja/models/ref/query-panel/run/) を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) を使用している [Runs](/models/ref/query-panel/run/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) を使用する [runs](/ja/models/ref/query-panel/run/) +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) を使用している [Runs](/models/ref/query-panel/run/) -

artifactVersion-versionId

+### `artifactVersion-versionId` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の versionId を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の versionId を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の versionId +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の versionId ## List Ops -

artifactVersion-aliases

+### `artifactVersion-aliases` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のエイリアスを返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の エイリアス を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のエイリアス +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の エイリアス -

artifactVersion-createdAt

+### `artifactVersion-createdAt` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) が作成された日時を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) が作成された日時を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) が作成された日時 +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) が作成された日時 -

artifactVersion-file

+### `artifactVersion-file` -指定されたパスの [artifactVersion](/ja/models/ref/query-panel/artifact-version/) の_ファイル_を返します +指定されたパスの [artifactVersion](/models/ref/query-panel/artifact-version/) の _ファイル_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | -| `path` | _ファイル_のパス | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | +| `path` | _ファイル_ のパス | -#### 戻り値 -指定されたパスの [artifactVersion](/ja/models/ref/query-panel/artifact-version/) の_ファイル_ +#### 返り値 +指定されたパスの [artifactVersion](/models/ref/query-panel/artifact-version/) の _ファイル_ -

artifactVersion-files

+### `artifactVersion-files` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の_ファイル_の_リスト_を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の _ファイル一覧_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の_ファイル_の_リスト_ +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の _ファイル一覧_ - +### `artifactVersion-link` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の URL を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の URL を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の URL +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の URL -

artifactVersion-metadata

+### `artifactVersion-metadata` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のメタデータ辞書を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の メタデータ 辞書 を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のメタデータ辞書 +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の メタデータ 辞書 -

artifactVersion-name

+### `artifactVersion-name` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の名前を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の名前 +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の名前 -

artifactVersion-size

+### `artifactVersion-size` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のサイズを返します +[artifactVersion](/models/ref/query-panel/artifact-version/) のサイズを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) のサイズ +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) のサイズ -

artifactVersion-usedBy

+### `artifactVersion-usedBy` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) を使用する [runs](/ja/models/ref/query-panel/run/) を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) を使用している [Runs](/models/ref/query-panel/run/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) を使用する [runs](/ja/models/ref/query-panel/run/) +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) を使用している [Runs](/models/ref/query-panel/run/) -

artifactVersion-versionId

+### `artifactVersion-versionId` -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の versionId を返します +[artifactVersion](/models/ref/query-panel/artifact-version/) の versionId を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifactVersion` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `artifactVersion` | [artifactVersion](/models/ref/query-panel/artifact-version/) | -#### 戻り値 -[artifactVersion](/ja/models/ref/query-panel/artifact-version/) の versionId \ No newline at end of file +#### 返り値 +[artifactVersion](/models/ref/query-panel/artifact-version/) の versionId \ No newline at end of file diff --git a/ja/models/ref/query-panel/artifact.mdx b/ja/models/ref/query-panel/artifact.mdx index cb5d98311e..fb36f62c20 100644 --- a/ja/models/ref/query-panel/artifact.mdx +++ b/ja/models/ref/query-panel/artifact.mdx @@ -3,70 +3,70 @@ title: アーティファクト --- ## Chainable Ops - +### `artifact-link` -[Artifact](/ja/models/ref/query-panel/artifact/) の URL を返します +[Artifact](/models/ref/query-panel/artifact/) の URL を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifact` | [artifact](/ja/models/ref/query-panel/artifact/) | +| `artifact` | [Artifact](/models/ref/query-panel/artifact/) | -#### 返される値 -[Artifact](/ja/models/ref/query-panel/artifact/) の URL +#### 返り値 +[Artifact](/models/ref/query-panel/artifact/) の URL -

artifact-name

+### `artifact-name` -[Artifact](/ja/models/ref/query-panel/artifact/) の名前を返します +[Artifact](/models/ref/query-panel/artifact/) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifact` | [artifact](/ja/models/ref/query-panel/artifact/) | +| `artifact` | [Artifact](/models/ref/query-panel/artifact/) | -#### 返される値 -[Artifact](/ja/models/ref/query-panel/artifact/) の名前 +#### 返り値 +[Artifact](/models/ref/query-panel/artifact/) の名前 -

artifact-versions

+### `artifact-versions` -[Artifact](/ja/models/ref/query-panel/artifact/) のバージョンを返します +[Artifact](/models/ref/query-panel/artifact/) のバージョン一覧を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifact` | [artifact](/ja/models/ref/query-panel/artifact/) | +| `artifact` | [Artifact](/models/ref/query-panel/artifact/) | -#### 返される値 -[Artifact](/ja/models/ref/query-panel/artifact/) のバージョン +#### 返り値 +[Artifact](/models/ref/query-panel/artifact/) のバージョン一覧 ## List Ops - +### `artifact-link` -[Artifact](/ja/models/ref/query-panel/artifact/) の URL を返します +[Artifact](/models/ref/query-panel/artifact/) の URL を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifact` | [artifact](/ja/models/ref/query-panel/artifact/) | +| `artifact` | [Artifact](/models/ref/query-panel/artifact/) | -#### 返される値 -[Artifact](/ja/models/ref/query-panel/artifact/) の URL +#### 返り値 +[Artifact](/models/ref/query-panel/artifact/) の URL -

artifact-name

+### `artifact-name` -[Artifact](/ja/models/ref/query-panel/artifact/) の名前を返します +[Artifact](/models/ref/query-panel/artifact/) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifact` | [artifact](/ja/models/ref/query-panel/artifact/) | +| `artifact` | [Artifact](/models/ref/query-panel/artifact/) | -#### 返される値 -[Artifact](/ja/models/ref/query-panel/artifact/) の名前 +#### 返り値 +[Artifact](/models/ref/query-panel/artifact/) の名前 -

artifact-versions

+### `artifact-versions` -[Artifact](/ja/models/ref/query-panel/artifact/) のバージョンを返します +[Artifact](/models/ref/query-panel/artifact/) のバージョン一覧を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `artifact` | [artifact](/ja/models/ref/query-panel/artifact/) | +| `artifact` | [Artifact](/models/ref/query-panel/artifact/) | -#### 返される値 -[Artifact](/ja/models/ref/query-panel/artifact/) のバージョン \ No newline at end of file +#### 返り値 +[Artifact](/models/ref/query-panel/artifact/) のバージョン一覧 \ No newline at end of file diff --git a/ja/models/ref/query-panel/audio-file.mdx b/ja/models/ref/query-panel/audio-file.mdx index 0f5e858854..f25569fc6b 100644 --- a/ja/models/ref/query-panel/audio-file.mdx +++ b/ja/models/ref/query-panel/audio-file.mdx @@ -1,28 +1,28 @@ --- -title: audio-file +title: オーディオファイル --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの_file_を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの_file_ +#### 返り値 +アセットの _file_ ## List Ops -

asset-file

+### `asset-file` -アセットの_file_を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの_file_ \ No newline at end of file +#### 返り値 +アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/query-panel/bokeh-file.mdx b/ja/models/ref/query-panel/bokeh-file.mdx index 45c3ab39c1..7f9c1e2d78 100644 --- a/ja/models/ref/query-panel/bokeh-file.mdx +++ b/ja/models/ref/query-panel/bokeh-file.mdx @@ -3,25 +3,26 @@ title: bokeh-file --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 +#### 返り値 アセットの _file_ + ## List Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 +#### 返り値 アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/query-panel/boolean.mdx b/ja/models/ref/query-panel/boolean.mdx index b08466fae8..c9564cdad2 100644 --- a/ja/models/ref/query-panel/boolean.mdx +++ b/ja/models/ref/query-panel/boolean.mdx @@ -1,98 +1,98 @@ --- -title: ブール値 +title: boolean --- ## Chainable Ops -

and

+### `and` -2つの値の論理 `and` を返します +2つの 値 の論理積( `and` )を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 第一のバイナリ値 | -| `rhs` | 第二のバイナリ値 | +| `lhs` | 1つ目のバイナリ 値 | +| `rhs` | 2つ目のバイナリ 値 | -#### 戻り値 -2つの値の論理 `and` +#### 返り値 +2つの 値 の論理積 -

or

+### `or` -2つの値の論理 `or` を返します +2つの 値 の論理和( `or` )を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 第一のバイナリ値 | -| `rhs` | 第二のバイナリ値 | +| `lhs` | 1つ目のバイナリ 値 | +| `rhs` | 2つ目のバイナリ 値 | -#### 戻り値 -2つの値の論理 `or` +#### 返り値 +2つの 値 の論理和 -

boolean-not

+### `boolean-not` -値の論理的反転を返します +値 の論理否定を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `bool` | ブール値 | +| `bool` | boolean 値 | -#### 戻り値 -値の論理的反転 +#### 返り値 +値 の論理否定 -

boolean-not

+### `boolean-not` -値の論理的反転を返します +値 の論理否定を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `bool` | ブール値 | +| `bool` | boolean 値 | -#### 戻り値 -値の論理的反転 +#### 返り値 +値 の論理否定 ## List Ops -

and

+### `and` -2つの値の論理 `and` を返します +2つの 値 の論理積( `and` )を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 第一のバイナリ値 | -| `rhs` | 第二のバイナリ値 | +| `lhs` | 1つ目のバイナリ 値 | +| `rhs` | 2つ目のバイナリ 値 | -#### 戻り値 -2つの値の論理 `and` +#### 返り値 +2つの 値 の論理積 -

or

+### `or` -2つの値の論理 `or` を返します +2つの 値 の論理和( `or` )を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 第一のバイナリ値 | -| `rhs` | 第二のバイナリ値 | +| `lhs` | 1つ目のバイナリ 値 | +| `rhs` | 2つ目のバイナリ 値 | -#### 戻り値 -2つの値の論理 `or` +#### 返り値 +2つの 値 の論理和 -

boolean-not

+### `boolean-not` -値の論理的反転を返します +値 の論理否定を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `bool` | ブール値 | +| `bool` | boolean 値 | -#### 戻り値 -値の論理的反転 +#### 返り値 +値 の論理否定 -

boolean-not

+### `boolean-not` -値の論理的反転を返します +値 の論理否定を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `bool` | ブール値 | +| `bool` | boolean 値 | -#### 戻り値 -値の論理的反転 \ No newline at end of file +#### 返り値 +値 の論理否定 \ No newline at end of file diff --git a/ja/models/ref/query-panel/entity.mdx b/ja/models/ref/query-panel/entity.mdx index f218653039..f6ae44d233 100644 --- a/ja/models/ref/query-panel/entity.mdx +++ b/ja/models/ref/query-panel/entity.mdx @@ -1,50 +1,52 @@ --- -title: エンティティ +title: Entity --- ## Chainable Ops - +### `entity-link` -[Entity](/ja/models/ref/query-panel/entity/) のリンクを返します。 +[Entities](/models/ref/query-panel/entity/) のリンクを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `entity` | [Entity](/ja/models/ref/query-panel/entity/) | +| `entity` | [Entities](/models/ref/query-panel/entity/) | -#### 戻り値 -[Entity](/ja/models/ref/query-panel/entity/) のリンク +#### 返り値 +[Entities](/models/ref/query-panel/entity/) のリンク -

entity-name

-[Entity](/ja/models/ref/query-panel/entity/) の名前を返します。 +### `entity-name` -| 引数 | | +[Entities](/models/ref/query-panel/entity/) の名前を返します。 + +| 引数 | 説明 | | :--- | :--- | -| `entity` | [Entity](/ja/models/ref/query-panel/entity/) | +| `entity` | [Entities](/models/ref/query-panel/entity/) | -#### 戻り値 -[Entity](/ja/models/ref/query-panel/entity/) の名前 +#### 返り値 +[Entities](/models/ref/query-panel/entity/) の名前 ## List Ops - +### `entity-link` -[Entity](/ja/models/ref/query-panel/entity/) のリンクを返します。 +[Entities](/models/ref/query-panel/entity/) のリンクを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `entity` | [Entity](/ja/models/ref/query-panel/entity/) | +| `entity` | [Entities](/models/ref/query-panel/entity/) | + +#### 返り値 +[Entities](/models/ref/query-panel/entity/) のリンク -#### 戻り値 -[Entity](/ja/models/ref/query-panel/entity/) のリンク -

entity-name

+### `entity-name` -[Entity](/ja/models/ref/query-panel/entity/) の名前を返します。 +[Entities](/models/ref/query-panel/entity/) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `entity` | [Entity](/ja/models/ref/query-panel/entity/) | +| `entity` | [Entities](/models/ref/query-panel/entity/) | -#### 戻り値 -[Entity](/ja/models/ref/query-panel/entity/) の名前 \ No newline at end of file +#### 返り値 +[Entities](/models/ref/query-panel/entity/) の名前 \ No newline at end of file diff --git a/ja/models/ref/query-panel/file.mdx b/ja/models/ref/query-panel/file.mdx index c3a75a7637..5d36cedf8d 100644 --- a/ja/models/ref/query-panel/file.mdx +++ b/ja/models/ref/query-panel/file.mdx @@ -1,93 +1,119 @@ --- -title: 申し訳ありませんが、コンテンツを提供することはできません。代わりに翻訳を提供してください。 +title: 'file + + + W&B の中核となる構成要素は以下の通りです: + + + 1. [**Projects**]({{< relref path="/guides/core/projects" >}}): W&B における最上位の組織単位です。同じ目的や課題に取り組む + Run をグループ化します。 + + 2. [**Runs**]({{< relref path="/guides/core/runs" >}}): 単一のトレーニングプロセス、データ処理ステップ、または機械学習ワークフローにおける個別の計算単位を指します。 + + 3. [**Experiments**]({{< relref path="/guides/core/experiments" >}}): 関連する Run を論理的にグループ化したもので、ハイパーパラメータの調整、異なるアーキテクチャの比較、あるいは同じモデルの異なる反復などを整理するために使用されます。 + + 4. [**Artifacts**]({{< relref path="/guides/core/artifacts" >}}): データセット、モデルのチェックポイント、分析結果など、機械学習パイプラインの入出力を保存・管理します。 + + 5. [**Sweeps**]({{< relref path="/guides/core/sweeps" >}}): ハイパーパラメータ探索を自動化し、モデルの最適な構成を効率的に見つけ出します。 + + 6. [**Reports**]({{< relref path="/guides/core/reports" >}}): 視覚化されたデータや分析結果をまとめ、知見を共有するためのドキュメント機能です。 + + 7. [**Workspace**]({{< relref path="/guides/core/workspace" >}}): Run のメトリクス、ログ、システム情報のチャートを表示・カスタマイズするインタラクティブなダッシュボードです。 + + 8. [**Tables**]({{< relref path="/guides/core/tables" >}}): 表形式のデータ、画像、オーディオ、ビデオ、3D + オブジェクトなどを可視化し、インタラクティブに分析します。 + + 9. [**Registered Models**]({{< relref path="/guides/core/registered-models" >}}): + モデルのライフサイクル(ステージングからプロダクションまで)を管理し、バージョニングを行うための中央リポジトリです。' --- ## Chainable Ops -

file-contents

+### `file-contents` -ファイルの内容を返します +_file_ の内容を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `file` | ファイル | +| `file` | _file_ | -#### 戻り値 -ファイルの内容 +#### 返り値 +_file_ の内容 -

file-digest

+### `file-digest` -ファイルのダイジェストを返します +_file_ のダイジェストを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `file` | ファイル | +| `file` | _file_ | -#### 戻り値 -ファイルのダイジェスト +#### 返り値 +_file_ のダイジェスト -

file-size

+### `file-size` -ファイルのサイズを返します +_file_ のサイズを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `file` | ファイル | +| `file` | _file_ | -#### 戻り値 -ファイルのサイズ +#### 返り値 +_file_ のサイズ -

file-table

+### `file-table` -ファイルの内容をテーブルとして返します +_file_ の内容を _table_ として返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `file` | ファイル | +| `file` | _file_ | + +#### 返り値 +_table_ 形式の _file_ の内容 -#### 戻り値 -ファイルの内容をテーブルとして ## List Ops -

file-contents

+### `file-contents` -ファイルの内容を返します +_file_ の内容を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `file` | ファイル | +| `file` | _file_ | -#### 戻り値 -ファイルの内容 +#### 返り値 +_file_ の内容 -

file-digest

+### `file-digest` -ファイルのダイジェストを返します +_file_ のダイジェストを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `file` | ファイル | +| `file` | _file_ | -#### 戻り値 -ファイルのダイジェスト +#### 返り値 +_file_ のダイジェスト -

file-size

+### `file-size` -ファイルのサイズを返します +_file_ のサイズを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `file` | ファイル | +| `file` | _file_ | -#### 戻り値 -ファイルのサイズ +#### 返り値 +_file_ のサイズ -

file-table

+### `file-table` -ファイルの内容をテーブルとして返します +_file_ の内容を _table_ として返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `file` | ファイル | +| `file` | _file_ | -#### 戻り値 -ファイルの内容をテーブルとして \ No newline at end of file +#### 返り値 +_table_ 形式の _file_ の内容 \ No newline at end of file diff --git a/ja/models/ref/query-panel/float.mdx b/ja/models/ref/query-panel/float.mdx index 17c86ce686..ef0da899be 100644 --- a/ja/models/ref/query-panel/float.mdx +++ b/ja/models/ref/query-panel/float.mdx @@ -1,461 +1,459 @@ --- -title: "`float`\n\n`float` の指定は、スカラー値を小数として wandb に記録するために使用されます。このシンプルな型は、実数を wandb\ - \ のデータスペースに格納し、視覚化や追跡に利用する際に便利です。\n\n### 使用例\n\n```python\nimport wandb\n\n# wandb\ - \ の初期化\nrun = wandb.init()\n\n# スカラー値を float 型でログに記録\nrun.log({\"accuracy\": float(0.93)})\n\ - \n# 実行の終了\nrun.finish()\n```\n\n### パラメータ\n\n- **value**: `float` \n ログに記録する数値。浮動小数点数を指定します。" +title: float --- ## Chainable Ops -

number-notEqual

+### `number-notEqual` -2つの値の不等性を決定します。 +2つの値が等しくないかどうかを判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `lhs` | 比較する最初の値。 | | `rhs` | 比較する2番目の値。 | -#### 戻り値 -2つの値が等しくないか。 +#### 返り値 +2つの値が等しくないかどうか。 -

number-modulo

+### `number-modulo` -ある [number](/ja/models/ref/query-panel/number/) を別のもので割り、余りを返します +ある [number](/models/ref/query-panel/number/) を別の数で割り、その余りを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割る [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 割る相手の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 割られる [number](/models/ref/query-panel/number/) | +| `rhs` | 割る数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の剰余 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の剰余(モジュロ) -

number-mult

+### `number-mult` -2つの [number](/ja/models/ref/query-panel/number/) を掛ける +2つの [numbers](/models/ref/query-panel/number/) を掛け合わせます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 2番目の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 1つ目の [number](/models/ref/query-panel/number/) | +| `rhs` | 2つ目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の積 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の積 -

number-powBinary

+### `number-powBinary` -ある [number](/ja/models/ref/query-panel/number/) を指数に上げる +[number](/models/ref/query-panel/number/) を指数で累乗します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 基数の [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 指数の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 底となる [number](/models/ref/query-panel/number/) | +| `rhs` | 指数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -基数の [number](/ja/models/ref/query-panel/number/) がn乗される +#### 返り値 +底となる [numbers](/models/ref/query-panel/number/) をn乗した値 -

number-add

+### `number-add` -2つの [number](/ja/models/ref/query-panel/number/) を加える +2つの [numbers](/models/ref/query-panel/number/) を足し合わせます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 2番目の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 1つ目の [number](/models/ref/query-panel/number/) | +| `rhs` | 2つ目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の和 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の和 -

number-sub

+### `number-sub` -ある [number](/ja/models/ref/query-panel/number/) を別のものから引く +ある [number](/models/ref/query-panel/number/) から別の数を引きます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 引く対象の [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 引く [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 引かれる [number](/models/ref/query-panel/number/) | +| `rhs` | 引く [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の差 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の差 -

number-div

+### `number-div` -ある [number](/ja/models/ref/query-panel/number/) を別のもので割る +ある [number](/models/ref/query-panel/number/) を別の数で割ります。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割る [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 割る相手の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 割られる [number](/models/ref/query-panel/number/) | +| `rhs` | 割る数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の商 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の商 -

number-less

+### `number-less` -ある [number](/ja/models/ref/query-panel/number/) が別のものより少ないかを確認する +ある [number](/models/ref/query-panel/number/) が別の数より小さいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [number](/ja/models/ref/query-panel/number/) が2番目より少ないか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より小さいかどうか -

number-lessEqual

+### `number-lessEqual` -ある [number](/ja/models/ref/query-panel/number/) が別のものより小さいか等しいかを確認する +ある [number](/models/ref/query-panel/number/) が別の数以下であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [number](/ja/models/ref/query-panel/number/) が2番目より小さいか等しいか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以下であるかどうか -

number-equal

+### `number-equal` -2つの値の等価性を決定します。 +2つの値が等しいかどうかを判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `lhs` | 比較する最初の値。 | | `rhs` | 比較する2番目の値。 | -#### 戻り値 -2つの値が等しいか。 +#### 返り値 +2つの値が等しいかどうか。 -

number-greater

+### `number-greater` -ある [number](/ja/models/ref/query-panel/number/) が別のものより大きいかを確認する +ある [number](/models/ref/query-panel/number/) が別の数より大きいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [number](/ja/models/ref/query-panel/number/) が2番目より大きいか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より大きいかどうか -

number-greaterEqual

+### `number-greaterEqual` -ある [number](/ja/models/ref/query-panel/number/) が別のものより大きいか等しいかを確認する +ある [number](/models/ref/query-panel/number/) が別の数以上であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [number](/ja/models/ref/query-panel/number/) が2番目より大きいか等しいか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以上であるかどうか -

number-negate

+### `number-negate` -ある [number](/ja/models/ref/query-panel/number/) を否定する +[number](/models/ref/query-panel/number/) の符号を反転させます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `val` | 否定する [number](/ja/models/ref/query-panel/number/) | +| `val` | 符号を反転させる数 | -#### 戻り値 -否定された [number](/ja/models/ref/query-panel/number/) +#### 返り値 +符号が反転した [number](/models/ref/query-panel/number/) -

number-toString

+### `number-toString` -ある [number](/ja/models/ref/query-panel/number/) を文字列に変換する +[number](/models/ref/query-panel/number/) を文字列に変換します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `in` | 変換する [number](/ja/models/ref/query-panel/number/) | +| `in` | 変換する数 | -#### 戻り値 -その [number](/ja/models/ref/query-panel/number/) の文字列表現 +#### 返り値 +[number](/models/ref/query-panel/number/) の文字列表現 -

number-toTimestamp

+### `number-toTimestamp` -ある [number](/ja/models/ref/query-panel/number/) を _timestamp_ に変換します。31536000000 未満の値は秒に変換され、31536000000000 未満の値はミリ秒に、31536000000000000 未満の値はマイクロ秒に、31536000000000000000 未満の値はナノ秒に変換されます。 +[number](/models/ref/query-panel/number/) を _timestamp_ に変換します。31,536,000,000 未満の値は秒、31,536,000,000,000 未満の値はミリ秒、31,536,000,000,000,000 未満の値はマイクロ秒、31,536,000,000,000,000,000 未満の値はナノ秒として変換されます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `val` | タイムスタンプに変換する [number](/ja/models/ref/query-panel/number/) | +| `val` | タイムスタンプに変換する数 | -#### 戻り値 -タイムスタンプ +#### 返り値 +Timestamp -

number-abs

+### `number-abs` -ある [number](/ja/models/ref/query-panel/number/) の絶対値を計算する +[number](/models/ref/query-panel/number/) の絶対値を計算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `n` | ある [number](/ja/models/ref/query-panel/number/) | +| `n` | [number](/models/ref/query-panel/number/) | + +#### 返り値 +その [number](/models/ref/query-panel/number/) の絶対値 -#### 戻り値 -その [number](/ja/models/ref/query-panel/number/) の絶対値 ## List Ops -

number-notEqual

+### `number-notEqual` -2つの値の不等性を決定します。 +2つの値が等しくないかどうかを判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `lhs` | 比較する最初の値。 | | `rhs` | 比較する2番目の値。 | -#### 戻り値 -2つの値が等しくないか。 +#### 返り値 +2つの値が等しくないかどうか。 -

number-modulo

+### `number-modulo` -ある [number](/ja/models/ref/query-panel/number/) を別のもので割り、余りを返します +ある [number](/models/ref/query-panel/number/) を別の数で割り、その余りを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割る [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 割る相手の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 割られる [number](/models/ref/query-panel/number/) | +| `rhs` | 割る数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の剰余 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の剰余(モジュロ) -

number-mult

+### `number-mult` -2つの [number](/ja/models/ref/query-panel/number/) を掛ける +2つの [numbers](/models/ref/query-panel/number/) を掛け合わせます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 2番目の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 1つ目の [number](/models/ref/query-panel/number/) | +| `rhs` | 2つ目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の積 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の積 -

number-powBinary

+### `number-powBinary` -ある [number](/ja/models/ref/query-panel/number/) を指数に上げる +[number](/models/ref/query-panel/number/) を指数で累乗します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 基数の [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 指数の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 底となる [number](/models/ref/query-panel/number/) | +| `rhs` | 指数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -基数の [number](/ja/models/ref/query-panel/number/) がn乗される +#### 返り値 +底となる [numbers](/models/ref/query-panel/number/) をn乗した値 -

number-add

+### `number-add` -2つの [number](/ja/models/ref/query-panel/number/) を加える +2つの [numbers](/models/ref/query-panel/number/) を足し合わせます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 2番目の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 1つ目の [number](/models/ref/query-panel/number/) | +| `rhs` | 2つ目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の和 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の和 -

number-sub

+### `number-sub` -ある [number](/ja/models/ref/query-panel/number/) を別のものから引く +ある [number](/models/ref/query-panel/number/) から別の数を引きます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 引く対象の [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 引く [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 引かれる [number](/models/ref/query-panel/number/) | +| `rhs` | 引く [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の差 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の差 -

number-div

+### `number-div` -ある [number](/ja/models/ref/query-panel/number/) を別のもので割る +ある [number](/models/ref/query-panel/number/) を別の数で割ります。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割る [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 割る相手の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 割られる [number](/models/ref/query-panel/number/) | +| `rhs` | 割る数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの [number](/ja/models/ref/query-panel/number/) の商 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の商 -

number-less

+### `number-less` -ある [number](/ja/models/ref/query-panel/number/) が別のものより少ないかを確認する +ある [number](/models/ref/query-panel/number/) が別の数より小さいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [number](/ja/models/ref/query-panel/number/) が2番目より少ないか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より小さいかどうか -

number-lessEqual

+### `number-lessEqual` -ある [number](/ja/models/ref/query-panel/number/) が別のものより小さいか等しいかを確認する +ある [number](/models/ref/query-panel/number/) が別の数以下であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [number](/ja/models/ref/query-panel/number/) が2番目より小さいか等しいか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以下であるかどうか -

number-equal

+### `number-equal` -2つの値の等価性を決定します。 +2つの値が等しいかどうかを判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `lhs` | 比較する最初の値。 | | `rhs` | 比較する2番目の値。 | -#### 戻り値 -2つの値が等しいか。 +#### 返り値 +2つの値が等しいかどうか。 -

number-greater

+### `number-greater` -ある [number](/ja/models/ref/query-panel/number/) が別のものより大きいかを確認する +ある [number](/models/ref/query-panel/number/) が別の数より大きいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [number](/ja/models/ref/query-panel/number/) が2番目より大きいか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より大きいかどうか -

number-greaterEqual

+### `number-greaterEqual` -ある [number](/ja/models/ref/query-panel/number/) が別のものより大きいか等しいかを確認する +ある [number](/models/ref/query-panel/number/) が別の数以上であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する [number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の [number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [number](/ja/models/ref/query-panel/number/) が2番目より大きいか等しいか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以上であるかどうか -

number-negate

+### `number-negate` -ある [number](/ja/models/ref/query-panel/number/) を否定する +[number](/models/ref/query-panel/number/) の符号を反転させます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `val` | 否定する [number](/ja/models/ref/query-panel/number/) | +| `val` | 符号を反転させる数 | -#### 戻り値 -否定された [number](/ja/models/ref/query-panel/number/) +#### 返り値 +符号が反転した [number](/models/ref/query-panel/number/) -

numbers-argmax

+### `numbers-argmax` -最も大きい [number](/ja/models/ref/query-panel/number/) のインデックスを見つける +最大の [number](/models/ref/query-panel/number/) のインデックスを見つけます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最大の [number](/ja/models/ref/query-panel/number/) のインデックスを見つけるための _list_ of [numbers](/ja/models/ref/query-panel/number/) | +| `numbers` | 最大の [number](/models/ref/query-panel/number/) のインデックスを探すための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最大の [number](/ja/models/ref/query-panel/number/) のインデックス +#### 返り値 +最大の [number](/models/ref/query-panel/number/) のインデックス -

numbers-argmin

+### `numbers-argmin` -最も小さい [number](/ja/models/ref/query-panel/number/) のインデックスを見つける +最小の [number](/models/ref/query-panel/number/) のインデックスを見つけます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最小の [number](/ja/models/ref/query-panel/number/) のインデックスを見つけるための _list_ of [numbers](/ja/models/ref/query-panel/number/) | +| `numbers` | 最小の [number](/models/ref/query-panel/number/) のインデックスを探すための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最小の [number](/ja/models/ref/query-panel/number/) のインデックス +#### 返り値 +最小の [number](/models/ref/query-panel/number/) のインデックス -

numbers-avg

+### `numbers-avg` -[numbers](/ja/models/ref/query-panel/number/) の平均 +[numbers](/models/ref/query-panel/number/) の平均。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 平均を計算する [numbers](/ja/models/ref/query-panel/number/) の _list_ | +| `numbers` | 平均を算出する [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -[numbers](/ja/models/ref/query-panel/number/) の平均 +#### 返り値 +[numbers](/models/ref/query-panel/number/) の平均 -

numbers-max

+### `numbers-max` -最大の数値 +最大値。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最大の [number](/ja/models/ref/query-panel/number/) を見つける _list_ of [numbers](/ja/models/ref/query-panel/number/) | +| `numbers` | 最大の [number](/models/ref/query-panel/number/) を探すための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最大の [number](/ja/models/ref/query-panel/number/) +#### 返り値 +最大の [number](/models/ref/query-panel/number/) -

numbers-min

+### `numbers-min` -最小の数値 +最小値。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最小の [number](/ja/models/ref/query-panel/number/) を見つける _list_ of [numbers](/ja/models/ref/query-panel/number/) | +| `numbers` | 最小の [number](/models/ref/query-panel/number/) を探すための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最小の [number](/ja/models/ref/query-panel/number/) +#### 返り値 +最小の [number](/models/ref/query-panel/number/) -

numbers-stddev

+### `numbers-stddev` -[numbers](/ja/models/ref/query-panel/number/) の標準偏差 +[numbers](/models/ref/query-panel/number/) の標準偏差。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 標準偏差を計算する [numbers](/ja/models/ref/query-panel/number/) の _list_ | +| `numbers` | 標準偏差を計算する [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -[numbers](/ja/models/ref/query-panel/number/) の標準偏差 +#### 返り値 +[numbers](/models/ref/query-panel/number/) の標準偏差 -

numbers-sum

+### `numbers-sum` -[numbers](/ja/models/ref/query-panel/number/) の合計 +[numbers](/models/ref/query-panel/number/) の合計。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 合計を計算する [numbers](/ja/models/ref/query-panel/number/) の _list_ | +| `numbers` | 合計を算出する [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -[numbers](/ja/models/ref/query-panel/number/) の合計 +#### 返り値 +[numbers](/models/ref/query-panel/number/) の合計 -

number-toString

+### `number-toString` -ある [number](/ja/models/ref/query-panel/number/) を文字列に変換する +[number](/models/ref/query-panel/number/) を文字列に変換します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `in` | 変換する [number](/ja/models/ref/query-panel/number/) | +| `in` | 変換する数 | -#### 戻り値 -その [number](/ja/models/ref/query-panel/number/) の文字列表現 +#### 返り値 +[number](/models/ref/query-panel/number/) の文字列表現 -

number-toTimestamp

+### `number-toTimestamp` -ある [number](/ja/models/ref/query-panel/number/) を _timestamp_ に変換します。31536000000 未満の値は秒に変換され、31536000000000 未満の値はミリ秒に、31536000000000000 未満の値はマイクロ秒に、31536000000000000000 未満の値はナノ秒に変換されます。 +[number](/models/ref/query-panel/number/) を _timestamp_ に変換します。31,536,000,000 未満の値は秒、31,536,000,000,000 未満の値はミリ秒、31,536,000,000,000,000 未満の値はマイクロ秒、31,536,000,000,000,000,000 未満の値はナノ秒として変換されます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `val` | タイムスタンプに変換する [number](/ja/models/ref/query-panel/number/) | +| `val` | タイムスタンプに変換する数 | -#### 戻り値 -タイムスタンプ +#### 返り値 +Timestamp -

number-abs

+### `number-abs` -ある [number](/ja/models/ref/query-panel/number/) の絶対値を計算する +[number](/models/ref/query-panel/number/) の絶対値を計算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `n` | ある [number](/ja/models/ref/query-panel/number/) | +| `n` | [number](/models/ref/query-panel/number/) | -#### 戻り値 -その [number](/ja/models/ref/query-panel/number/) の絶対値 \ No newline at end of file +#### 返り値 +その [number](/models/ref/query-panel/number/) の絶対値 \ No newline at end of file diff --git a/ja/models/ref/query-panel/html-file.mdx b/ja/models/ref/query-panel/html-file.mdx index ac15f3422b..4dc152f4ac 100644 --- a/ja/models/ref/query-panel/html-file.mdx +++ b/ja/models/ref/query-panel/html-file.mdx @@ -1,29 +1,28 @@ --- -title: I'm sorry, but could you kindly provide the chunk of documentation that needs - to be translated? +title: html-file --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### Return 値 +#### 返り値 アセットの _file_ ## List Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### Return 値 +#### 返り値 アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/query-panel/image-file.mdx b/ja/models/ref/query-panel/image-file.mdx index e8feed100b..1208190424 100644 --- a/ja/models/ref/query-panel/image-file.mdx +++ b/ja/models/ref/query-panel/image-file.mdx @@ -1,27 +1,28 @@ --- -title: 画像ファイル +title: image-file --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 +#### 返り値 アセットの _file_ + ## List Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの _file_ \ No newline at end of file +#### 返り値 +アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/query-panel/int.mdx b/ja/models/ref/query-panel/int.mdx index fe96eeee35..8a8e603a2a 100644 --- a/ja/models/ref/query-panel/int.mdx +++ b/ja/models/ref/query-panel/int.mdx @@ -3,457 +3,457 @@ title: int --- ## Chainable Ops -

number-notEqual

+### `number-notEqual` -2 つの値が等しくないかを判定します。 +2つの 値 の不等性を判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する最初の値。 | -| `rhs` | 比較する2番目の値。 | +| `lhs` | 比較する最初の 値。 | +| `rhs` | 比較する2番目の 値。 | -#### 戻り値 -2 つの値が等しくないかどうか。 +#### 返り値 +2つの 値 が等しくないかどうか。 -

number-modulo

+### `number-modulo` -[数値](/ja/models/ref/query-panel/number/) を別の数値で割り、余りを返します。 +[number](/models/ref/query-panel/number/) を別の数で除算し、余りを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割られる[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 割る[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 除算される [number](/models/ref/query-panel/number/) | +| `rhs` | 除数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) のモジュロ +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の剰余(モジュロ) -

number-mult

+### `number-mult` -2 つの [数値](/ja/models/ref/query-panel/number/) を掛け算します。 +2つの [numbers](/models/ref/query-panel/number/) を乗算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 2 番目の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 最初の [number](/models/ref/query-panel/number/) | +| `rhs` | 2番目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) の積 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の積 -

number-powBinary

+### `number-powBinary` -[数値](/ja/models/ref/query-panel/number/) を指定した指数で累乗します。 +[number](/models/ref/query-panel/number/) を指定した指数で累乗します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 底の[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 指数の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 底となる [number](/models/ref/query-panel/number/) | +| `rhs` | 指数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -底の[数値](/ja/models/ref/query-panel/number/)が n 乗された値 +#### 返り値 +底の [numbers](/models/ref/query-panel/number/) をn乗した 値 -

number-add

+### `number-add` -2 つの [数値](/ja/models/ref/query-panel/number/) を加えます。 +2つの [numbers](/models/ref/query-panel/number/) を加算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 2 番目の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 最初の [number](/models/ref/query-panel/number/) | +| `rhs` | 2番目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) の和 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の和 -

number-sub

+### `number-sub` -1 つの [数値](/ja/models/ref/query-panel/number/) から別の数値を引きます。 +ある [number](/models/ref/query-panel/number/) から別の数を減算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 引かれる[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 引く[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 減算される側の [number](/models/ref/query-panel/number/) | +| `rhs` | 減算する [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) の差 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の差 -

number-div

+### `number-div` -[数値](/ja/models/ref/query-panel/number/) を別の数値で割ります。 +[number](/models/ref/query-panel/number/) を別の数で除算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割られる[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 割る[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 除算される [number](/models/ref/query-panel/number/) | +| `rhs` | 除数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) の商 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の商 -

number-less

+### `number-less` -1 つの [数値](/ja/models/ref/query-panel/number/) が別の数値より小さいかどうかを確認します。 +ある [number](/models/ref/query-panel/number/) が別の数より小さいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [数値](/ja/models/ref/query-panel/number/) が 2 番目の数値より小さいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より小さいかどうか。 -

number-lessEqual

+### `number-lessEqual` -1 つの [数値](/ja/models/ref/query-panel/number/) が別の数値以下であるかどうかを確認します。 +ある [number](/models/ref/query-panel/number/) が別の数以下であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [数値](/ja/models/ref/query-panel/number/) が 2 番目の数値以下であるかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以下であるかどうか。 -

number-equal

+### `number-equal` -2 つの値が等しいかどうかを判定します。 +2つの 値 の等価性を判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する最初の値。 | -| `rhs` | 比較する2番目の値。 | +| `lhs` | 比較する最初の 値。 | +| `rhs` | 比較する2番目の 値。 | -#### 戻り値 -2 つの値が等しいかどうか。 +#### 返り値 +2つの 値 が等しいかどうか。 -

number-greater

+### `number-greater` -1 つの [数値](/ja/models/ref/query-panel/number/) が別の数値より大きいかどうかを確認します。 +ある [number](/models/ref/query-panel/number/) が別の数より大きいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [数値](/ja/models/ref/query-panel/number/) が 2 番目の数値より大きいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より大きいかどうか。 -

number-greaterEqual

+### `number-greaterEqual` -1 つの [数値](/ja/models/ref/query-panel/number/) が別の数値以上であるかどうかを確認します。 +ある [number](/models/ref/query-panel/number/) が別の数以上であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [数値](/ja/models/ref/query-panel/number/) が 2 番目の数値以上であるかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以上であるかどうか。 -

number-negate

+### `number-negate` -[数値](/ja/models/ref/query-panel/number/) を負にします。 +[number](/models/ref/query-panel/number/) の符号を反転させます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `val` | 負にする数値 | +| `val` | 符号を反転させる数値 | -#### 戻り値 -[数値](/ja/models/ref/query-panel/number/) +#### 返り値 +[number](/models/ref/query-panel/number/) -

number-toString

+### `number-toString` -[数値](/ja/models/ref/query-panel/number/) を文字列に変換します。 +[number](/models/ref/query-panel/number/) を文字列に変換します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `in` | 変換する数値 | -#### 戻り値 -[数値](/ja/models/ref/query-panel/number/) の文字列表現 +#### 返り値 +[number](/models/ref/query-panel/number/) の文字列表現 -

number-toTimestamp

+### `number-toTimestamp` -[数値](/ja/models/ref/query-panel/number/) を _タイムスタンプ_ に変換します。31536000000 未満の値は秒に、31536000000000 未満の値はミリ秒に、31536000000000000 未満の値はマイクロ秒に、31536000000000000000 未満の値はナノ秒に変換されます。 +[number](/models/ref/query-panel/number/) を _timestamp_ に変換します。31,536,000,000 未満の 値 は秒、31,536,000,000,000 未満はミリ秒、31,536,000,000,000,000 未満はマイクロ秒、31,536,000,000,000,000,000 未満はナノ秒として変換されます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `val` | タイムスタンプに変換する数値 | -#### 戻り値 +#### 返り値 タイムスタンプ -

number-abs

+### `number-abs` -[数値](/ja/models/ref/query-panel/number/) の絶対値を計算します。 +[number](/models/ref/query-panel/number/) の絶対値を計算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `n` | [数値](/ja/models/ref/query-panel/number/) | +| `n` | [number](/models/ref/query-panel/number/) | -#### 戻り値 -[数値](/ja/models/ref/query-panel/number/) の絶対値 +#### 返り値 +[number](/models/ref/query-panel/number/) の絶対値 ## List Ops -

number-notEqual

+### `number-notEqual` -2 つの値が等しくないかを判定します。 +2つの 値 の不等性を判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する最初の値。 | -| `rhs` | 比較する2番目の値。 | +| `lhs` | 比較する最初の 値。 | +| `rhs` | 比較する2番目の 値。 | -#### 戻り値 -2 つの値が等しくないかどうか。 +#### 返り値 +2つの 値 が等しくないかどうか。 -

number-modulo

+### `number-modulo` -[数値](/ja/models/ref/query-panel/number/) を別の数値で割り、余りを返します。 +[number](/models/ref/query-panel/number/) を別の数で除算し、余りを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割られる[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 割る[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 除算される [number](/models/ref/query-panel/number/) | +| `rhs` | 除数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) のモジュロ +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の剰余(モジュロ) -

number-mult

+### `number-mult` -2 つの [数値](/ja/models/ref/query-panel/number/) を掛け算します。 +2つの [numbers](/models/ref/query-panel/number/) を乗算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 2 番目の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 最初の [number](/models/ref/query-panel/number/) | +| `rhs` | 2番目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) の積 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の積 -

number-powBinary

+### `number-powBinary` -[数値](/ja/models/ref/query-panel/number/) を指定した指数で累乗します。 +[number](/models/ref/query-panel/number/) を指定した指数で累乗します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 底の[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 指数の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 底となる [number](/models/ref/query-panel/number/) | +| `rhs` | 指数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -底の[数値](/ja/models/ref/query-panel/number/)が n 乗された値 +#### 返り値 +底の [numbers](/models/ref/query-panel/number/) をn乗した 値 -

number-add

+### `number-add` -2 つの [数値](/ja/models/ref/query-panel/number/) を加えます。 +2つの [numbers](/models/ref/query-panel/number/) を加算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 2 番目の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 最初の [number](/models/ref/query-panel/number/) | +| `rhs` | 2番目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) の和 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の和 -

number-sub

+### `number-sub` -1 つの [数値](/ja/models/ref/query-panel/number/) から別の数値を引きます。 +ある [number](/models/ref/query-panel/number/) から別の数を減算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 引かれる[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 引く[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 減算される側の [number](/models/ref/query-panel/number/) | +| `rhs` | 減算する [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) の差 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の差 -

number-div

+### `number-div` -[数値](/ja/models/ref/query-panel/number/) を別の数値で割ります。 +[number](/models/ref/query-panel/number/) を別の数で除算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割られる[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 割る[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 除算される [number](/models/ref/query-panel/number/) | +| `rhs` | 除数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2 つの [数値](/ja/models/ref/query-panel/number/) の商 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の商 -

number-less

+### `number-less` -1 つの [数値](/ja/models/ref/query-panel/number/) が別の数値より小さいかどうかを確認します。 +ある [number](/models/ref/query-panel/number/) が別の数より小さいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [数値](/ja/models/ref/query-panel/number/) が 2 番目の数値より小さいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より小さいかどうか。 -

number-lessEqual

+### `number-lessEqual` -1 つの [数値](/ja/models/ref/query-panel/number/) が別の数値以下であるかどうかを確認します。 +ある [number](/models/ref/query-panel/number/) が別の数以下であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [数値](/ja/models/ref/query-panel/number/) が 2 番目の数値以下であるかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以下であるかどうか。 -

number-equal

+### `number-equal` -2 つの値が等しいかどうかを判定します。 +2つの 値 の等価性を判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する最初の値。 | -| `rhs` | 比較する2番目の値。 | +| `lhs` | 比較する最初の 値。 | +| `rhs` | 比較する2番目の 値。 | -#### 戻り値 -2 つの値が等しいかどうか。 +#### 返り値 +2つの 値 が等しいかどうか。 -

number-greater

+### `number-greater` -1 つの [数値](/ja/models/ref/query-panel/number/) が別の数値より大きいかどうかを確認します。 +ある [number](/models/ref/query-panel/number/) が別の数より大きいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [数値](/ja/models/ref/query-panel/number/) が 2 番目の数値より大きいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より大きいかどうか。 -

number-greaterEqual

+### `number-greaterEqual` -1 つの [数値](/ja/models/ref/query-panel/number/) が別の数値以上であるかどうかを確認します。 +ある [number](/models/ref/query-panel/number/) が別の数以上であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[数値](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[数値](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の [数値](/ja/models/ref/query-panel/number/) が 2 番目の数値以上であるかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以上であるかどうか。 -

number-negate

+### `number-negate` -[数値](/ja/models/ref/query-panel/number/) を負にします。 +[number](/models/ref/query-panel/number/) の符号を反転させます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `val` | 負にする数値 | +| `val` | 符号を反転させる数値 | -#### 戻り値 -[数値](/ja/models/ref/query-panel/number/) +#### 返り値 +[number](/models/ref/query-panel/number/) -

numbers-argmax

+### `numbers-argmax` -最大の [数値](/ja/models/ref/query-panel/number/) のインデックスを見つけます。 +最大 [number](/models/ref/query-panel/number/) のインデックスを見つけます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最大の [数値](/ja/models/ref/query-panel/number/) のインデックスを見つけるための[数値](/ja/models/ref/query-panel/number/)の_リスト_ | +| `numbers` | 最大の [number](/models/ref/query-panel/number/) のインデックスを検索するための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最大の [数値](/ja/models/ref/query-panel/number/) のインデックス +#### 返り値 +最大 [number](/models/ref/query-panel/number/) のインデックス -

numbers-argmin

+### `numbers-argmin` -最小の [数値](/ja/models/ref/query-panel/number/) のインデックスを見つけます。 +最小 [number](/models/ref/query-panel/number/) のインデックスを見つけます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最小の [数値](/ja/models/ref/query-panel/number/) のインデックスを見つけるための[数値](/ja/models/ref/query-panel/number/)の_リスト_ | +| `numbers` | 最小の [number](/models/ref/query-panel/number/) のインデックスを検索するための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最小の [数値](/ja/models/ref/query-panel/number/) のインデックス +#### 返り値 +最小 [number](/models/ref/query-panel/number/) のインデックス -

numbers-avg

+### `numbers-avg` -[数値](/ja/models/ref/query-panel/number/) の平均 +[numbers](/models/ref/query-panel/number/) の平均。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 平均を取るための[数値](/ja/models/ref/query-panel/number/)の_リスト_ | +| `numbers` | 平均を算出する [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -[数値](/ja/models/ref/query-panel/number/) の平均 +#### 返り値 +[numbers](/models/ref/query-panel/number/) の平均 -

numbers-max

+### `numbers-max` -最大の数値 +最大数。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最大の [数値](/ja/models/ref/query-panel/number/) を見つけるための[数値](/ja/models/ref/query-panel/number/)の_リスト_ | +| `numbers` | 最大の [number](/models/ref/query-panel/number/) を検索するための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最大の [数値](/ja/models/ref/query-panel/number/) +#### 返り値 +最大 [number](/models/ref/query-panel/number/) -

numbers-min

+### `numbers-min` -最小の数値 +最小数。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最小の [数値](/ja/models/ref/query-panel/number/) を見つけるための[数値](/ja/models/ref/query-panel/number/)の_リスト_ | +| `numbers` | 最小の [number](/models/ref/query-panel/number/) を検索するための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最小の [数値](/ja/models/ref/query-panel/number/) +#### 返り値 +最小 [number](/models/ref/query-panel/number/) -

numbers-stddev

+### `numbers-stddev` -[数値](/ja/models/ref/query-panel/number/) の標準偏差 +[numbers](/models/ref/query-panel/number/) の標準偏差。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 標準偏差を計算するための[数値](/ja/models/ref/query-panel/number/)の_リスト_ | +| `numbers` | 標準偏差を計算する [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -[数値](/ja/models/ref/query-panel/number/) の標準偏差 +#### 返り値 +[numbers](/models/ref/query-panel/number/) の標準偏差 -

numbers-sum

+### `numbers-sum` -[数値](/ja/models/ref/query-panel/number/) の和 +[numbers](/models/ref/query-panel/number/) の合計。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 合計を求めるための[数値](/ja/models/ref/query-panel/number/)の_リスト_ | +| `numbers` | 合計する [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -[数値](/ja/models/ref/query-panel/number/) の合計 +#### 返り値 +[numbers](/models/ref/query-panel/number/) の合計 -

number-toString

+### `number-toString` -[数値](/ja/models/ref/query-panel/number/) を文字列に変換します。 +[number](/models/ref/query-panel/number/) を文字列に変換します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `in` | 変換する数値 | -#### 戻り値 -[数値](/ja/models/ref/query-panel/number/) の文字列表現 +#### 返り値 +[number](/models/ref/query-panel/number/) の文字列表現 -

number-toTimestamp

+### `number-toTimestamp` -[数値](/ja/models/ref/query-panel/number/) を _タイムスタンプ_ に変換します。31536000000 未満の値は秒に、31536000000000 未満の値はミリ秒に、31536000000000000 未満の値はマイクロ秒に、31536000000000000000 未満の値はナノ秒に変換されます。 +[number](/models/ref/query-panel/number/) を _timestamp_ に変換します。31,536,000,000 未満の 値 は秒、31,536,000,000,000 未満はミリ秒、31,536,000,000,000,000 未満はマイクロ秒、31,536,000,000,000,000,000 未満はナノ秒として変換されます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `val` | タイムスタンプに変換する数値 | -#### 戻り値 +#### 返り値 タイムスタンプ -

number-abs

+### `number-abs` -[数値](/ja/models/ref/query-panel/number/) の絶対値を計算します。 +[number](/models/ref/query-panel/number/) の絶対値を計算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `n` | [数値](/ja/models/ref/query-panel/number/) | +| `n` | [number](/models/ref/query-panel/number/) | -#### 戻り値 -[数値](/ja/models/ref/query-panel/number/) の絶対値 +#### 返り値 +[number](/models/ref/query-panel/number/) の絶対値 \ No newline at end of file diff --git a/ja/models/ref/query-panel/joined-table.mdx b/ja/models/ref/query-panel/joined-table.mdx index 5ce03cd276..fffa4d012d 100644 --- a/ja/models/ref/query-panel/joined-table.mdx +++ b/ja/models/ref/query-panel/joined-table.mdx @@ -3,50 +3,50 @@ title: joined-table --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの _ファイル_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの _ファイル_ +#### 返り値 +アセットの _file_ -

joinedtable-file

+### `joinedtable-file` -_joined-table_ の _ファイル_ を返します +_joined-table_ の _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `joinedTable` | _joined-table_ | -#### 戻り値 -_joined-table_ の _ファイル_ +#### 返り値 +_joined-table_ の _file_ -

joinedtable-rows

+### `joinedtable-rows` -_joined-table_ の行を返します +_joined-table_ の行を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `joinedTable` | _joined-table_ | -| `leftOuter` | 右のテーブルに一致する行がない場合でも左のテーブルからの行を含めるかどうか | -| `rightOuter` | 左のテーブルに一致する行がない場合でも右のテーブルからの行を含めるかどうか | +| `leftOuter` | 右側のテーブルに一致する行がない左側のテーブルの行を含めるかどうか | +| `rightOuter` | 左側のテーブルに一致する行がない右側のテーブルの行を含めるかどうか | -#### 戻り値 +#### 返り値 _joined-table_ の行 ## List Ops -

asset-file

+### `asset-file` -アセットの _ファイル_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの _ファイル_ \ No newline at end of file +#### 返り値 +アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/query-panel/molecule-file.mdx b/ja/models/ref/query-panel/molecule-file.mdx index c260915c77..6c6105a5aa 100644 --- a/ja/models/ref/query-panel/molecule-file.mdx +++ b/ja/models/ref/query-panel/molecule-file.mdx @@ -3,25 +3,26 @@ title: molecule-file --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 +#### 返り値 アセットの _file_ + ## List Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの _file_ \ No newline at end of file +#### 返り値 +アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/query-panel/number.mdx b/ja/models/ref/query-panel/number.mdx index 5a8ec2f50f..dda083e880 100644 --- a/ja/models/ref/query-panel/number.mdx +++ b/ja/models/ref/query-panel/number.mdx @@ -1,459 +1,459 @@ --- -title: 数字 +title: number --- ## Chainable Ops -

number-notEqual

+### `number-notEqual` -2つの値が等しくないかどうかを判断します。 +2つの値が等しくないかどうかを判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `lhs` | 比較する最初の値。 | | `rhs` | 比較する2番目の値。 | -#### 戻り値 +#### 返り値 2つの値が等しくないかどうか。 -

number-modulo

+### `number-modulo` -1つの [number](/ja/models/ref/query-panel/number/) を別のもので割り、余りを返します +ある [number](/models/ref/query-panel/number/) を別の数で割り、その余りを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割られる[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 割るための[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 割られる [number](/models/ref/query-panel/number/) | +| `rhs` | 割る数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の剰余 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の剰余(モジュロ) -

number-mult

+### `number-mult` -2つの[numbers](/ja/models/ref/query-panel/number/) を掛けます +2つの [numbers](/models/ref/query-panel/number/) を掛け合わせます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 2番目の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 最初の [number](/models/ref/query-panel/number/) | +| `rhs` | 2番目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の積 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の積 -

number-powBinary

+### `number-powBinary` -1つの[number](/ja/models/ref/query-panel/number/)を指数に上げます +[number](/models/ref/query-panel/number/) を指数で累乗します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | ベース[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 指数[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 底となる [number](/models/ref/query-panel/number/) | +| `rhs` | 指数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -ベースの[numbers](/ja/models/ref/query-panel/number/)がn乗されます +#### 返り値 +底となる [numbers](/models/ref/query-panel/number/) をn乗した値 -

number-add

+### `number-add` -2つの[numbers](/ja/models/ref/query-panel/number/)を加えます +2つの [numbers](/models/ref/query-panel/number/) を加算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 2番目の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 最初の [number](/models/ref/query-panel/number/) | +| `rhs` | 2番目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の合計 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の和 -

number-sub

+### `number-sub` -1つの[number](/ja/models/ref/query-panel/number/)を別のものから引きます +ある [number](/models/ref/query-panel/number/) から別の数を引きます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 引かれる[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 引くための[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 引かれる方の [number](/models/ref/query-panel/number/) | +| `rhs` | 引く方の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の差 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の差 -

number-div

+### `number-div` -1つの[number](/ja/models/ref/query-panel/number/)を別のもので割ります +ある [number](/models/ref/query-panel/number/) を別の数で割ります。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割られる[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 割るための[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 割られる [number](/models/ref/query-panel/number/) | +| `rhs` | 割る数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の商 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の商 -

number-less

+### `number-less` -1つの[number](/ja/models/ref/query-panel/number/)が別のものより小さいかどうかを確認します +ある [number](/models/ref/query-panel/number/) が別の数より小さいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の[number](/ja/models/ref/query-panel/number/)が2番目より小さいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より小さいかどうか -

number-lessEqual

+### `number-lessEqual` -1つの[number](/ja/models/ref/query-panel/number/)が別のものと等しいかまたは小さいかどうかを確認します +ある [number](/models/ref/query-panel/number/) が別の数以下であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の[number](/ja/models/ref/query-panel/number/)が2番目と等しいかまたは小さいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以下であるかどうか -

number-equal

+### `number-equal` -2つの値が等しいかどうかを判断します。 +2つの値が等しいかどうかを判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `lhs` | 比較する最初の値。 | | `rhs` | 比較する2番目の値。 | -#### 戻り値 +#### 返り値 2つの値が等しいかどうか。 -

number-greater

+### `number-greater` -1つの[number](/ja/models/ref/query-panel/number/)が別のものより大きいかどうかを確認します +ある [number](/models/ref/query-panel/number/) が別の数より大きいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の[number](/ja/models/ref/query-panel/number/)が2番目より大きいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より大きいかどうか -

number-greaterEqual

+### `number-greaterEqual` -1つの[number](/ja/models/ref/query-panel/number/)が別のものと等しいかまたは大きいかどうかを確認します +ある [number](/models/ref/query-panel/number/) が別の数以上であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の[number](/ja/models/ref/query-panel/number/)が2番目と等しいかまたは大きいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以上であるかどうか -

number-negate

+### `number-negate` -[number](/ja/models/ref/query-panel/number/)を否定します +[number](/models/ref/query-panel/number/) を符号反転します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `val` | 否定する番号 | +| `val` | 符号反転する数 | -#### 戻り値 -[number](/ja/models/ref/query-panel/number/) +#### 返り値 +[number](/models/ref/query-panel/number/) -

number-toString

+### `number-toString` -[number](/ja/models/ref/query-panel/number/)を文字列に変換します +[number](/models/ref/query-panel/number/) を文字列に変換します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `in` | 変換する数 | -#### 戻り値 -[number](/ja/models/ref/query-panel/number/)の文字列表現 +#### 返り値 +[number](/models/ref/query-panel/number/) の文字列表現 -

number-toTimestamp

+### `number-toTimestamp` -[number](/ja/models/ref/query-panel/number/)を _timestamp_ に変換します。31536000000未満の値は秒に、31536000000000未満の値はミリ秒に、31536000000000000未満の値はマイクロ秒に、31536000000000000000未満の値はナノ秒に変換されます。 +[number](/models/ref/query-panel/number/) を _timestamp_ に変換します。31,536,000,000 未満の値は秒に、31,536,000,000,000 未満の値はミリ秒に、31,536,000,000,000,000 未満の値はマイクロ秒に、31,536,000,000,000,000,000 未満の値はナノ秒に変換されます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `val` | タイムスタンプに変換する数 | -#### 戻り値 -タイムスタンプ +#### 返り値 +Timestamp -

number-abs

+### `number-abs` -[number](/ja/models/ref/query-panel/number/)の絶対値を計算します +[number](/models/ref/query-panel/number/) の絶対値を計算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `n` | A [number](/ja/models/ref/query-panel/number/) | +| `n` | [number](/models/ref/query-panel/number/) | -#### 戻り値 -その[number](/ja/models/ref/query-panel/number/)の絶対値 +#### 返り値 +その [number](/models/ref/query-panel/number/) の絶対値 ## List Ops -

number-notEqual

+### `number-notEqual` -2つの値が等しくないかどうかを判断します。 +2つの値が等しくないかどうかを判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `lhs` | 比較する最初の値。 | | `rhs` | 比較する2番目の値。 | -#### 戻り値 +#### 返り値 2つの値が等しくないかどうか。 -

number-modulo

+### `number-modulo` -1つの[number](/ja/models/ref/query-panel/number/)を別のもので割り、余りを返します +ある [number](/models/ref/query-panel/number/) を別の数で割り、その余りを返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割られる[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 割るための[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 割られる [number](/models/ref/query-panel/number/) | +| `rhs` | 割る数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の剰余 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の剰余(モジュロ) -

number-mult

+### `number-mult` -2つの[numbers](/ja/models/ref/query-panel/number/)を掛けます +2つの [numbers](/models/ref/query-panel/number/) を掛け合わせます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 2番目の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 最初の [number](/models/ref/query-panel/number/) | +| `rhs` | 2番目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の積 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の積 -

number-powBinary

+### `number-powBinary` -1つの[number](/ja/models/ref/query-panel/number/)を指数に上げます +[number](/models/ref/query-panel/number/) を指数で累乗します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | ベース[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 指数[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 底となる [number](/models/ref/query-panel/number/) | +| `rhs` | 指数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -ベースの[numbers](/ja/models/ref/query-panel/number/)がn乗されます +#### 返り値 +底となる [numbers](/models/ref/query-panel/number/) をn乗した値 -

number-add

+### `number-add` -2つの[numbers](/ja/models/ref/query-panel/number/)を加えます +2つの [numbers](/models/ref/query-panel/number/) を加算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 最初の[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 2番目の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 最初の [number](/models/ref/query-panel/number/) | +| `rhs` | 2番目の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の合計 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の和 -

number-sub

+### `number-sub` -1つの[number](/ja/models/ref/query-panel/number/)を別のものから引きます +ある [number](/models/ref/query-panel/number/) から別の数を引きます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 引かれる[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 引くための[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 引かれる方の [number](/models/ref/query-panel/number/) | +| `rhs` | 引く方の [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の差 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の差 -

number-div

+### `number-div` -1つの[number](/ja/models/ref/query-panel/number/)を別のもので割ります +ある [number](/models/ref/query-panel/number/) を別の数で割ります。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 割られる[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 割るための[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 割られる [number](/models/ref/query-panel/number/) | +| `rhs` | 割る数となる [number](/models/ref/query-panel/number/) | -#### 戻り値 -2つの[numbers](/ja/models/ref/query-panel/number/)の商 +#### 返り値 +2つの [numbers](/models/ref/query-panel/number/) の商 -

number-less

+### `number-less` -1つの[number](/ja/models/ref/query-panel/number/)が別のものより小さいかどうかを確認します +ある [number](/models/ref/query-panel/number/) が別の数より小さいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の[number](/ja/models/ref/query-panel/number/)が2番目より小さいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より小さいかどうか -

number-lessEqual

+### `number-lessEqual` -1つの[number](/ja/models/ref/query-panel/number/)が別のものと等しいかまたは小さいかどうかを確認します +ある [number](/models/ref/query-panel/number/) が別の数以下であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の[number](/ja/models/ref/query-panel/number/)が2番目と等しいかまたは小さいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以下であるかどうか -

number-equal

+### `number-equal` -2つの値が等しいかどうかを判断します。 +2つの値が等しいかどうかを判定します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `lhs` | 比較する最初の値。 | | `rhs` | 比較する2番目の値。 | -#### 戻り値 +#### 返り値 2つの値が等しいかどうか。 -

number-greater

+### `number-greater` -1つの[number](/ja/models/ref/query-panel/number/)が別のものより大きいかどうかを確認します +ある [number](/models/ref/query-panel/number/) が別の数より大きいかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の[number](/ja/models/ref/query-panel/number/)が2番目より大きいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数より大きいかどうか -

number-greaterEqual

+### `number-greaterEqual` -1つの[number](/ja/models/ref/query-panel/number/)が別のものと等しいかまたは大きいかどうかを確認します +ある [number](/models/ref/query-panel/number/) が別の数以上であるかどうかをチェックします。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `lhs` | 比較する[number](/ja/models/ref/query-panel/number/) | -| `rhs` | 比較対象の[number](/ja/models/ref/query-panel/number/) | +| `lhs` | 比較する [number](/models/ref/query-panel/number/) | +| `rhs` | 比較対象の [number](/models/ref/query-panel/number/) | -#### 戻り値 -最初の[number](/ja/models/ref/query-panel/number/)が2番目と等しいかまたは大きいかどうか +#### 返り値 +最初の [number](/models/ref/query-panel/number/) が2番目の数以上であるかどうか -

number-negate

+### `number-negate` -[number](/ja/models/ref/query-panel/number/)を否定します +[number](/models/ref/query-panel/number/) を符号反転します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `val` | 否定する数 | +| `val` | 符号反転する数 | -#### 戻り値 -[number](/ja/models/ref/query-panel/number/) +#### 返り値 +[number](/models/ref/query-panel/number/) -

numbers-argmax

+### `numbers-argmax` -最大の[number](/ja/models/ref/query-panel/number/)のインデックスを見つけます +最大の [number](/models/ref/query-panel/number/) のインデックスを見つけます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最大の[number](/ja/models/ref/query-panel/number/)のインデックスを見つけるための[numbers](/ja/models/ref/query-panel/number/)のリスト | +| `numbers` | 最大の [number](/models/ref/query-panel/number/) のインデックスを探すための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最大の[number](/ja/models/ref/query-panel/number/)のインデックス +#### 返り値 +最大 [number](/models/ref/query-panel/number/) のインデックス -

numbers-argmin

+### `numbers-argmin` -最小の[number](/ja/models/ref/query-panel/number/)のインデックスを見つけます +最小の [number](/models/ref/query-panel/number/) のインデックスを見つけます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最小の[number](/ja/models/ref/query-panel/number/)のインデックスを見つけるための[numbers](/ja/models/ref/query-panel/number/)のリスト | +| `numbers` | 最小の [number](/models/ref/query-panel/number/) のインデックスを探すための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最小の[number](/ja/models/ref/query-panel/number/)のインデックス +#### 返り値 +最小 [number](/models/ref/query-panel/number/) のインデックス -

numbers-avg

+### `numbers-avg` -[numbers](/ja/models/ref/query-panel/number/)の平均 +[numbers](/models/ref/query-panel/number/) の平均。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 平均を取る[numbers](/ja/models/ref/query-panel/number/)のリスト | +| `numbers` | 平均を算出する [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -[numbers](/ja/models/ref/query-panel/number/)の平均 +#### 返り値 +[numbers](/models/ref/query-panel/number/) の平均 -

numbers-max

+### `numbers-max` -最大値 +最大値。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最大の[number](/ja/models/ref/query-panel/number/)を見つけるための[numbers](/ja/models/ref/query-panel/number/)のリスト | +| `numbers` | 最大の [number](/models/ref/query-panel/number/) を探すための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最大の[number](/ja/models/ref/query-panel/number/) +#### 返り値 +最大の [number](/models/ref/query-panel/number/) -

numbers-min

+### `numbers-min` -最小値 +最小値。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 最小の[number](/ja/models/ref/query-panel/number/)を見つけるための[numbers](/ja/models/ref/query-panel/number/)のリスト | +| `numbers` | 最小の [number](/models/ref/query-panel/number/) を探すための [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -最小の[number](/ja/models/ref/query-panel/number/) +#### 返り値 +最小の [number](/models/ref/query-panel/number/) -

numbers-stddev

+### `numbers-stddev` -[numbers](/ja/models/ref/query-panel/number/)の標準偏差 +[numbers](/models/ref/query-panel/number/) の標準偏差。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 標準偏差を計算するための[numbers](/ja/models/ref/query-panel/number/)のリスト | +| `numbers` | 標準偏差を計算する [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -[numbers](/ja/models/ref/query-panel/number/)の標準偏差 +#### 返り値 +[numbers](/models/ref/query-panel/number/) の標準偏差 -

numbers-sum

+### `numbers-sum` -[numbers](/ja/models/ref/query-panel/number/)の合計 +[numbers](/models/ref/query-panel/number/) の合計。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `numbers` | 合計を求める[numbers](/ja/models/ref/query-panel/number/)のリスト | +| `numbers` | 合計を算出する [numbers](/models/ref/query-panel/number/) の _list_ | -#### 戻り値 -[numbers](/ja/models/ref/query-panel/number/)の合計 +#### 返り値 +[numbers](/models/ref/query-panel/number/) の合計 -

number-toString

+### `number-toString` -[number](/ja/models/ref/query-panel/number/)を文字列に変換します +[number](/models/ref/query-panel/number/) を文字列に変換します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `in` | 変換する数 | -#### 戻り値 -[number](/ja/models/ref/query-panel/number/)の文字列表現 +#### 返り値 +[number](/models/ref/query-panel/number/) の文字列表現 -

number-toTimestamp

+### `number-toTimestamp` -[number](/ja/models/ref/query-panel/number/)を _timestamp_ に変換します。31536000000未満の値は秒に、31536000000000未満の値はミリ秒に、31536000000000000未満の値はマイクロ秒に、31536000000000000000未満の値はナノ秒に変換されます。 +[number](/models/ref/query-panel/number/) を _timestamp_ に変換します。31,536,000,000 未満の値は秒に、31,536,000,000,000 未満の値はミリ秒に、31,536,000,000,000,000 未満の値はマイクロ秒に、31,536,000,000,000,000,000 未満の値はナノ秒に変換されます。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `val` | タイムスタンプに変換する数 | -#### 戻り値 -タイムスタンプ +#### 返り値 +Timestamp -

number-abs

+### `number-abs` -[number](/ja/models/ref/query-panel/number/)の絶対値を計算します +[number](/models/ref/query-panel/number/) の絶対値を計算します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `n` | A [number](/ja/models/ref/query-panel/number/) | +| `n` | [number](/models/ref/query-panel/number/) | -#### 戻り値 -その[number](/ja/models/ref/query-panel/number/)の絶対値 \ No newline at end of file +#### 返り値 +その [number](/models/ref/query-panel/number/) の絶対値 \ No newline at end of file diff --git a/ja/models/ref/query-panel/object-3-d-file.mdx b/ja/models/ref/query-panel/object-3-d-file.mdx index 77c4f83c67..ba5225d1f9 100644 --- a/ja/models/ref/query-panel/object-3-d-file.mdx +++ b/ja/models/ref/query-panel/object-3-d-file.mdx @@ -1,28 +1,28 @@ --- -title: object3D-ファイル +title: 3D オブジェクトファイル --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの*ファイル*を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの*ファイル* +#### 返り値 +アセットの _file_ ## List Ops -

asset-file

+### `asset-file` -アセットの*ファイル*を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの*ファイル* \ No newline at end of file +#### 返り値 +アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/query-panel/partitioned-table.mdx b/ja/models/ref/query-panel/partitioned-table.mdx index fd56c26c74..3c3ed6220c 100644 --- a/ja/models/ref/query-panel/partitioned-table.mdx +++ b/ja/models/ref/query-panel/partitioned-table.mdx @@ -1,50 +1,50 @@ --- -title: パーティションテーブル +title: パーティション化されたテーブル --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの _ファイル_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの _ファイル_ +#### 返り値 +アセットの _file_ -

partitionedtable-file

+### `partitionedtable-file` -_パーティションテーブル_ の _ファイル_ を返します +_partitioned-table_ の _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `partitionedTable` | _パーティションテーブル_ | +| `partitionedTable` | _partitioned-table_ | -#### 戻り値 -_パーティションテーブル_ の _ファイル_ +#### 返り値 +_partitioned-table_ の _file_ -

partitionedtable-rows

+### `partitionedtable-rows` -_パーティションテーブル_ の行を返します +_partitioned-table_ の行を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `partitionedTable` | 行を取得するための _パーティションテーブル_ | +| `partitionedTable` | 行を取得する対象の _partitioned-table_ | -#### 戻り値 -_パーティションテーブル_ の行 +#### 返り値 +_partitioned-table_ の行 ## List Ops -

asset-file

+### `asset-file` -アセットの _ファイル_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの _ファイル_ \ No newline at end of file +#### 返り値 +アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/query-panel/project.mdx b/ja/models/ref/query-panel/project.mdx index faae48a372..64b4c21f44 100644 --- a/ja/models/ref/query-panel/project.mdx +++ b/ja/models/ref/query-panel/project.mdx @@ -3,165 +3,166 @@ title: プロジェクト --- ## Chainable Ops -

project-artifact

+### `project-artifact` -指定された名前の [artifact](/ja/models/ref/query-panel/artifact/) を [project](/ja/models/ref/query-panel/project/) から返します。 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前の [artifact](/models/ref/query-panel/artifact/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | -| `artifactName` | The name of the [artifact](/ja/models/ref/query-panel/artifact/) | +| `project` | [project](/models/ref/query-panel/project/) | +| `artifactName` | [artifact](/models/ref/query-panel/artifact/) の名前 | -#### 戻り値 -指定された名前の [artifact](/ja/models/ref/query-panel/artifact/) を [project](/ja/models/ref/query-panel/project/) から返します。 +#### 返り値 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前の [artifact](/models/ref/query-panel/artifact/) -

project-artifactType

+### `project-artifactType` -指定された名前の [artifactType](/ja/models/ref/query-panel/artifact-type/) を [project](/ja/models/ref/query-panel/project/) から返します。 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前の [artifactType](/models/ref/query-panel/artifact-type) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | -| `artifactType` | The name of the [artifactType](/ja/models/ref/query-panel/artifact-type/) | +| `project` | [project](/models/ref/query-panel/project/) | +| `artifactType` | [artifactType](/models/ref/query-panel/artifact-type) の名前 | -#### 戻り値 -指定された名前の [artifactType](/ja/models/ref/query-panel/artifact-type/) を [project](/ja/models/ref/query-panel/project/) から返します。 +#### 返り値 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前の [artifactType](/models/ref/query-panel/artifact-type) -

project-artifactTypes

+### `project-artifactTypes` -[project](/ja/models/ref/query-panel/project/) の [artifactTypes](/ja/models/ref/query-panel/artifact-type/) を返します。 +[project](/models/ref/query-panel/project/) の [artifactType](/models/ref/query-panel/artifact-type) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | +| `project` | [project](/models/ref/query-panel/project/) | -#### 戻り値 -[project](/ja/models/ref/query-panel/project/) の [artifactTypes](/ja/models/ref/query-panel/artifact-type/) を返します。 +#### 返り値 +[project](/models/ref/query-panel/project/) の [artifactType](/models/ref/query-panel/artifact-type) -

project-artifactVersion

+### `project-artifactVersion` -指定された名前とバージョンの [artifactVersion](/ja/models/ref/query-panel/artifact-version/) を [project](/ja/models/ref/query-panel/project/) から返します。 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前とバージョンの [artifactVersion](/models/ref/query-panel/artifact-version) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | -| `artifactName` | The name of the [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | -| `artifactVersionAlias` | The version alias of the [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `project` | [project](/models/ref/query-panel/project/) | +| `artifactName` | [artifactVersion](/models/ref/query-panel/artifact-version) の名前 | +| `artifactVersionAlias` | [artifactVersion](/models/ref/query-panel/artifact-version) のバージョンエイリアス | -#### 戻り値 -指定された名前とバージョンの [artifactVersion](/ja/models/ref/query-panel/artifact-version/) を [project](/ja/models/ref/query-panel/project/) から返します。 +#### 返り値 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前とバージョンの [artifactVersion](/models/ref/query-panel/artifact-version) -

project-createdAt

+### `project-createdAt` -[project](/ja/models/ref/query-panel/project/) の作成日時を返します。 +[project](/models/ref/query-panel/project/) の作成日時を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | +| `project` | [project](/models/ref/query-panel/project/) | -#### 戻り値 -[project](/ja/models/ref/query-panel/project/) の作成日時を返します。 +#### 返り値 +[project](/models/ref/query-panel/project/) の作成日時 -

project-name

+### `project-name` -[project](/ja/models/ref/query-panel/project/) の名前を返します。 +[project](/models/ref/query-panel/project/) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | +| `project` | [project](/models/ref/query-panel/project/) | -#### 戻り値 -[project](/ja/models/ref/query-panel/project/) の名前を返します。 +#### 返り値 +[project](/models/ref/query-panel/project/) の名前 -

project-runs

+### `project-runs` -[project](/ja/models/ref/query-panel/project/) からの [runs](/ja/models/ref/query-panel/run/) を返します。 +[project](/models/ref/query-panel/project/) の [runs](/models/ref/query-panel/run/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | +| `project` | [project](/models/ref/query-panel/project/) | + +#### 返り値 +[project](/models/ref/query-panel/project/) の [runs](/models/ref/query-panel/run/) -#### 戻り値 -[project](/ja/models/ref/query-panel/project/) からの [runs](/ja/models/ref/query-panel/run/) を返します。 ## List Ops -

project-artifact

+### `project-artifact` -指定された名前の [artifact](/ja/models/ref/query-panel/artifact/) を [project](/ja/models/ref/query-panel/project/) から返します。 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前の [artifact](/models/ref/query-panel/artifact/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | -| `artifactName` | The name of the [artifact](/ja/models/ref/query-panel/artifact/) | +| `project` | [project](/models/ref/query-panel/project/) | +| `artifactName` | [artifact](/models/ref/query-panel/artifact/) の名前 | -#### 戻り値 -指定された名前の [artifact](/ja/models/ref/query-panel/artifact/) を [project](/ja/models/ref/query-panel/project/) から返します。 +#### 返り値 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前の [artifact](/models/ref/query-panel/artifact/) -

project-artifactType

+### `project-artifactType` -指定された名前の [artifactType](/ja/models/ref/query-panel/artifact-type/) を [project](/ja/models/ref/query-panel/project/) から返します。 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前の [artifactType](/models/ref/query-panel/artifact-type) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | -| `artifactType` | The name of the [artifactType](/ja/models/ref/query-panel/artifact-type/) | +| `project` | [project](/models/ref/query-panel/project/) | +| `artifactType` | [artifactType](/models/ref/query-panel/artifact-type) の名前 | -#### 戻り値 -指定された名前の [artifactType](/ja/models/ref/query-panel/artifact-type/) を [project](/ja/models/ref/query-panel/project/) から返します。 +#### 返り値 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前の [artifactType](/models/ref/query-panel/artifact-type) -

project-artifactTypes

+### `project-artifactTypes` -[project](/ja/models/ref/query-panel/project/) の [artifactTypes](/ja/models/ref/query-panel/artifact-type/) を返します。 +[project](/models/ref/query-panel/project/) の [artifactType](/models/ref/query-panel/artifact-type) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | +| `project` | [project](/models/ref/query-panel/project/) | -#### 戻り値 -[project](/ja/models/ref/query-panel/project/) の [artifactTypes](/ja/models/ref/query-panel/artifact-type/) を返します。 +#### 返り値 +[project](/models/ref/query-panel/project/) の [artifactType](/models/ref/query-panel/artifact-type) -

project-artifactVersion

+### `project-artifactVersion` -指定された名前とバージョンの [artifactVersion](/ja/models/ref/query-panel/artifact-version/) を [project](/ja/models/ref/query-panel/project/) から返します。 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前とバージョンの [artifactVersion](/models/ref/query-panel/artifact-version) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | -| `artifactName` | The name of the [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | -| `artifactVersionAlias` | The version alias of the [artifactVersion](/ja/models/ref/query-panel/artifact-version/) | +| `project` | [project](/models/ref/query-panel/project/) | +| `artifactName` | [artifactVersion](/models/ref/query-panel/artifact-version) の名前 | +| `artifactVersionAlias` | [artifactVersion](/models/ref/query-panel/artifact-version) のバージョンエイリアス | -#### 戻り値 -指定された名前とバージョンの [artifactVersion](/ja/models/ref/query-panel/artifact-version/) を [project](/ja/models/ref/query-panel/project/) から返します。 +#### 返り値 +指定された [project](/models/ref/query-panel/project/) 内の、指定された名前とバージョンの [artifactVersion](/models/ref/query-panel/artifact-version) -

project-createdAt

+### `project-createdAt` -[project](/ja/models/ref/query-panel/project/) の作成日時を返します。 +[project](/models/ref/query-panel/project/) の作成日時を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | +| `project` | [project](/models/ref/query-panel/project/) | -#### 戻り値 -[project](/ja/models/ref/query-panel/project/) の作成日時を返します。 +#### 返り値 +[project](/models/ref/query-panel/project/) の作成日時 -

project-name

+### `project-name` -[project](/ja/models/ref/query-panel/project/) の名前を返します。 +[project](/models/ref/query-panel/project/) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | +| `project` | [project](/models/ref/query-panel/project/) | -#### 戻り値 -[project](/ja/models/ref/query-panel/project/) の名前を返します。 +#### 返り値 +[project](/models/ref/query-panel/project/) の名前 -

project-runs

+### `project-runs` -[project](/ja/models/ref/query-panel/project/) からの [runs](/ja/models/ref/query-panel/run/) を返します。 +[project](/models/ref/query-panel/project/) の [runs](/models/ref/query-panel/run/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `project` | A [project](/ja/models/ref/query-panel/project/) | +| `project` | [project](/models/ref/query-panel/project/) | -#### 戻り値 -[project](/ja/models/ref/query-panel/project/) からの [runs](/ja/models/ref/query-panel/run/) を返します。 \ No newline at end of file +#### 返り値 +[project](/models/ref/query-panel/project/) の [runs](/models/ref/query-panel/run/) \ No newline at end of file diff --git a/ja/models/ref/query-panel/pytorch-model-file.mdx b/ja/models/ref/query-panel/pytorch-model-file.mdx index d86263f1fe..ad0be376e1 100644 --- a/ja/models/ref/query-panel/pytorch-model-file.mdx +++ b/ja/models/ref/query-panel/pytorch-model-file.mdx @@ -3,26 +3,26 @@ title: pytorch-model-file --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの_ファイル_を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの_ファイル_ +#### 返り値 +アセットの _file_ ## List Ops -

asset-file

+### `asset-file` -アセットの_ファイル_を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 -アセットの_ファイル_ \ No newline at end of file +#### 返り値 +アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/query-panel/run.mdx b/ja/models/ref/query-panel/run.mdx index 663c7e7f0f..a225f2ffb5 100644 --- a/ja/models/ref/query-panel/run.mdx +++ b/ja/models/ref/query-panel/run.mdx @@ -3,259 +3,259 @@ title: run --- ## Chainable Ops -

run-config

+### `run-config` -[run](/ja/models/ref/query-panel/run/) の config _typedDict_ を返します。 +[run](/models/ref/query-panel/run) の config _typedDict_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の config _typedDict_ +#### 返り値 +[run](/models/ref/query-panel/run) の config _typedDict_ -

run-createdAt

+### `run-createdAt` -[run](/ja/models/ref/query-panel/run/) の作成日時を返します。 +[run](/models/ref/query-panel/run) の作成日時を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の作成日時 +#### 返り値 +[run](/models/ref/query-panel/run) の作成日時 -

run-heartbeatAt

+### `run-heartbeatAt` -[run](/ja/models/ref/query-panel/run/) の最後のハートビート日時を返します。 +[run](/models/ref/query-panel/run) の最終ハートビート日時を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の最後のハートビート日時 +#### 返り値 +[run](/models/ref/query-panel/run) の最終ハートビート日時 -

run-history

+### `run-history` -[run](/ja/models/ref/query-panel/run/) のログ履歴を返します。 +[run](/models/ref/query-panel/run) のログ履歴を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) のログ履歴 +#### 返り値 +[run](/models/ref/query-panel/run) のログ履歴 -

run-jobType

+### `run-jobType` -[run](/ja/models/ref/query-panel/run/) のジョブタイプを返します。 +[run](/models/ref/query-panel/run) の ジョブタイプ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) のジョブタイプ +#### 返り値 +[run](/models/ref/query-panel/run) の ジョブタイプ -

run-loggedArtifactVersion

+### `run-loggedArtifactVersion` -指定された名前とエイリアスに対して [run](/ja/models/ref/query-panel/run/) によってログに記録された [artifactVersion](/ja/models/ref/query-panel/artifact-version/) を返します。 +指定された名前と エイリアス に基づき、 [run](/models/ref/query-panel/run) によって ログ された [artifactVersion](/models/ref/query-panel/artifact-version/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | -| `artifactVersionName` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) の名前:エイリアス | +| `run` | [run](/models/ref/query-panel/run) | +| `artifactVersionName` | [artifactVersion](/models/ref/query-panel/artifact-version/) の name:alias | -#### 戻り値 -指定された名前とエイリアスに対して[run](/ja/models/ref/query-panel/run/) によってログに記録された [artifactVersion](/ja/models/ref/query-panel/artifact-version/) +#### 返り値 +指定された名前と エイリアス に基づき、 [run](/models/ref/query-panel/run) によって ログ された [artifactVersion](/models/ref/query-panel/artifact-version/) -

run-loggedArtifactVersions

+### `run-loggedArtifactVersions` -[run](/ja/models/ref/query-panel/run/) によってログに記録された全ての [artifactVersions](/ja/models/ref/query-panel/artifact-version/) を返します。 +[run](/models/ref/query-panel/run) によって ログ されたすべての [artifactVersions](/models/ref/query-panel/artifact-version/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) によってログに記録された [artifactVersions](/ja/models/ref/query-panel/artifact-version/) +#### 返り値 +[run](/models/ref/query-panel/run) によって ログ された [artifactVersions](/models/ref/query-panel/artifact-version/) -

run-name

+### `run-name` -[run](/ja/models/ref/query-panel/run/) の名前を返します。 +[run](/models/ref/query-panel/run) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の名前 +#### 返り値 +[run](/models/ref/query-panel/run) の名前 -

run-runtime

+### `run-runtime` -[run](/ja/models/ref/query-panel/run/) の実行時間を秒単位で返します。 +[run](/models/ref/query-panel/run) の実行時間(秒)を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の実行時間(秒単位) +#### 返り値 +[run](/models/ref/query-panel/run) の実行時間(秒) -

run-summary

+### `run-summary` -[run](/ja/models/ref/query-panel/run/) のサマリー _typedDict_ を返します。 +[run](/models/ref/query-panel/run) の summary _typedDict_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) のサマリー _typedDict_ +#### 返り値 +[run](/models/ref/query-panel/run) の summary _typedDict_ -

run-usedArtifactVersions

+### `run-usedArtifactVersions` -[run](/ja/models/ref/query-panel/run/) によって使用された全ての [artifactVersions](/ja/models/ref/query-panel/artifact-version/) を返します。 +[run](/models/ref/query-panel/run) によって使用されたすべての [artifactVersions](/models/ref/query-panel/artifact-version/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) によって使用された [artifactVersions](/ja/models/ref/query-panel/artifact-version/) +#### 返り値 +[run](/models/ref/query-panel/run) によって使用された [artifactVersions](/models/ref/query-panel/artifact-version/) -

run-user

+### `run-user` -[run](/ja/models/ref/query-panel/run/) の [user](/ja/models/ref/query-panel/user/) を返します。 +[run](/models/ref/query-panel/run) の [user](/models/ref/query-panel/user/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の [user](/ja/models/ref/query-panel/user/) +#### 返り値 +[run](/models/ref/query-panel/run) の [user](/models/ref/query-panel/user/) ## List Ops -

run-config

+### `run-config` -[run](/ja/models/ref/query-panel/run/) の config _typedDict_ を返します。 +[run](/models/ref/query-panel/run) の config _typedDict_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の config _typedDict_ +#### 返り値 +[run](/models/ref/query-panel/run) の config _typedDict_ -

run-createdAt

+### `run-createdAt` -[run](/ja/models/ref/query-panel/run/) の作成日時を返します。 +[run](/models/ref/query-panel/run) の作成日時を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の作成日時 +#### 返り値 +[run](/models/ref/query-panel/run) の作成日時 -

run-heartbeatAt

+### `run-heartbeatAt` -[run](/ja/models/ref/query-panel/run/) の最後のハートビート日時を返します。 +[run](/models/ref/query-panel/run) の最終ハートビート日時を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の最後のハートビート日時 +#### 返り値 +[run](/models/ref/query-panel/run) の最終ハートビート日時 -

run-history

+### `run-history` -[run](/ja/models/ref/query-panel/run/) のログ履歴を返します。 +[run](/models/ref/query-panel/run) のログ履歴を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) のログ履歴 +#### 返り値 +[run](/models/ref/query-panel/run) のログ履歴 -

run-jobType

+### `run-jobType` -[run](/ja/models/ref/query-panel/run/) のジョブタイプを返します。 +[run](/models/ref/query-panel/run) の ジョブタイプ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) のジョブタイプ +#### 返り値 +[run](/models/ref/query-panel/run) の ジョブタイプ -

run-loggedArtifactVersion

+### `run-loggedArtifactVersion` -指定された名前とエイリアスに対して [run](/ja/models/ref/query-panel/run/) によってログに記録された [artifactVersion](/ja/models/ref/query-panel/artifact-version/) を返します。 +指定された名前と エイリアス に基づき、 [run](/models/ref/query-panel/run) によって ログ された [artifactVersion](/models/ref/query-panel/artifact-version/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | -| `artifactVersionName` | [artifactVersion](/ja/models/ref/query-panel/artifact-version/) の名前:エイリアス | +| `run` | [run](/models/ref/query-panel/run) | +| `artifactVersionName` | [artifactVersion](/models/ref/query-panel/artifact-version/) の name:alias | -#### 戻り値 -指定された名前とエイリアスに対して [run](/ja/models/ref/query-panel/run/) によってログに記録された [artifactVersion](/ja/models/ref/query-panel/artifact-version/) +#### 返り値 +指定された名前と エイリアス に基づき、 [run](/models/ref/query-panel/run) によって ログ された [artifactVersion](/models/ref/query-panel/artifact-version/) -

run-loggedArtifactVersions

+### `run-loggedArtifactVersions` -[run](/ja/models/ref/query-panel/run/) によってログに記録された全ての [artifactVersions](/ja/models/ref/query-panel/artifact-version/) を返します。 +[run](/models/ref/query-panel/run) によって ログ されたすべての [artifactVersions](/models/ref/query-panel/artifact-version/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) によってログに記録された [artifactVersions](/ja/models/ref/query-panel/artifact-version/) +#### 返り値 +[run](/models/ref/query-panel/run) によって ログ された [artifactVersions](/models/ref/query-panel/artifact-version/) -

run-name

+### `run-name` -[run](/ja/models/ref/query-panel/run/) の名前を返します。 +[run](/models/ref/query-panel/run) の名前を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の名前 +#### 返り値 +[run](/models/ref/query-panel/run) の名前 -

run-runtime

+### `run-runtime` -[run](/ja/models/ref/query-panel/run/) の実行時間を秒単位で返します。 +[run](/models/ref/query-panel/run) の実行時間(秒)を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) の実行時間(秒単位) +#### 返り値 +[run](/models/ref/query-panel/run) の実行時間(秒) -

run-summary

+### `run-summary` -[run](/ja/models/ref/query-panel/run/) のサマリー _typedDict_ を返します。 +[run](/models/ref/query-panel/run) の summary _typedDict_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) のサマリー _typedDict_ +#### 返り値 +[run](/models/ref/query-panel/run) の summary _typedDict_ -

run-usedArtifactVersions

+### `run-usedArtifactVersions` -[run](/ja/models/ref/query-panel/run/) によって使用された全ての [artifactVersions](/ja/models/ref/query-panel/artifact-version/) を返します。 +[run](/models/ref/query-panel/run) によって使用されたすべての [artifactVersions](/models/ref/query-panel/artifact-version/) を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `run` | [run](/ja/models/ref/query-panel/run/) | +| `run` | [run](/models/ref/query-panel/run) | -#### 戻り値 -[run](/ja/models/ref/query-panel/run/) によって使用された [artifactVersions](/ja/models/ref/query-panel/artifact-version/) \ No newline at end of file +#### 返り値 +[run](/models/ref/query-panel/run) によって使用された [artifactVersions](/models/ref/query-panel/artifact-version/) \ No newline at end of file diff --git a/ja/models/ref/query-panel/string.mdx b/ja/models/ref/query-panel/string.mdx index 814b21aa28..72214d2625 100644 --- a/ja/models/ref/query-panel/string.mdx +++ b/ja/models/ref/query-panel/string.mdx @@ -1,544 +1,598 @@ --- -title: 申し訳ありませんが、翻訳するドキュメントの内容が提供されていないようです。翻訳が必要なテキストを提供してください。あなたの指示に従って翻訳を行います。 +title: '# W&B の基礎 + + + Weights & Biases は、AI 開発者が Model をより迅速に構築するためのプラットフォームです。W&B の軽量で相互運用可能なライブラリを使用して、機械学習の + Experiment を監視、視覚化し、最適な Model を特定してください。 + + + わずか 5 行のコードで、どこにいても(ローカルマシン、ラボのクラスタ、またはクラウドの仮想マシン上で)実行される機械学習の Run をデバッグ、比較、再現できます。 + + + 以下の W&B の構成要素を使用して、ワークフローを改善しましょう。 + + + - [**Experiments**]({{< relref path="/guides/experiments" >}}): 機械学習モデルのトレーニングプロセスにおいて、ハイパーパラメータ、コード、システムメトリクス、予測結果などを追跡・可視化します。 + + - [**Sweeps**]({{< relref path="/guides/sweeps" >}}): ハイパーパラメータの探索を自動化し、可能なパラメータの組み合わせを効率的に探索して最適な + Model を見つけます。 + + - [**Artifacts**]({{< relref path="/guides/artifacts" >}}): Dataset、Model、その他のバイナリファイルを保存、バージョン管理し、機械学習パイプラインの各ステップを追跡して、系統(Lineage)を明確にします。 + + - [**Reports**]({{< relref path="/guides/reports" >}}): 視覚的なドキュメントを作成して共有し、チーム内での共同作業や結果の発表、ノートの記録を効率化します。 + + - [**Launch**]({{< relref path="/guides/launch" >}}): Kubernetes、SageMaker などの計算リソースに対して、機械学習ワークフローを簡単にデプロイし、実行します。 + + - [**Registered Models**]({{< relref path="/guides/models" >}}): Model のライフサイクルを管理します。トレーニングされた + Model のバージョニングから、ステージング、本番環境へのデプロイまでを管理します。 + + - [**Weave**]({{< relref path="/guides/weave" >}}): 生成 AI アプリケーションの構築を加速させるためのツールです。LLM + アプリケーションのトレース(追跡)、評価、および反復的な改善を支援します。 + + + ## はじめる + + + W&B を使い始めるには、以下の 3 ステップを完了してください。 + + + 1. [W&B アカウントを作成する](https://wandb.ai/site) + + 2. `wandb` ライブラリをインストールする: `pip install wandb` + + 3. W&B にログインする: `wandb login` + + + より詳細なガイドについては、[クイックスタート]({{< relref path="/quickstart" >}}) を参照してください。 + + + ## 既存のフレームワークとの統合 + + + W&B は、PyTorch、TensorFlow、Keras、Hugging Face、XGBoost、Scikit-learn など、一般的な機械学習ライブラリの多くと簡単に統合できます。 + + + W&B をお使いのフレームワークと統合する方法については、[インテグレーションガイド]({{< relref path="/guides/integrations" + >}}) をご覧ください。' --- ## Chainable Ops -

string-notEqual

+### `string-notEqual` -2つの値の不等を判定します。 +2つの値が等しくないかどうかを判定します。 -| 引数 | | +| Argument | Description | | :--- | :--- | | `lhs` | 比較する最初の値。 | -| `rhs` | 比較する2つ目の値。 | +| `rhs` | 比較する2番目の値。 | #### Return Value 2つの値が等しくないかどうか。 -

string-add

+### `string-add` -2つの[string](/ja/models/ref/query-panel/string/)を連結します。 +2つの [strings](/models/ref/query-panel/string/) を連結します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `lhs` | 最初の[string](/ja/models/ref/query-panel/string/) | -| `rhs` | 2つ目の[string](/ja/models/ref/query-panel/string/) | +| `lhs` | 最初の [string](/models/ref/query-panel/string) | +| `rhs` | 2番目の [string](/models/ref/query-panel/string) | #### Return Value -連結された[string](/ja/models/ref/query-panel/string/) +連結された [string](/models/ref/query-panel/string) -

string-equal

+### `string-equal` -2つの値の等価性を判定します。 +2つの値が等しいかどうかを判定します。 -| 引数 | | +| Argument | Description | | :--- | :--- | | `lhs` | 比較する最初の値。 | -| `rhs` | 比較する2つ目の値。 | +| `rhs` | 比較する2番目の値。 | #### Return Value 2つの値が等しいかどうか。 -

string-append

+### `string-append` -接尾辞を[string](/ja/models/ref/query-panel/string/)に追加します。 +[string](/models/ref/query-panel/string) にサフィックス(接尾辞)を追加します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 追加する[string](/ja/models/ref/query-panel/string/) | -| `suffix` | 追加する接尾辞 | +| `str` | 追加対象の [string](/models/ref/query-panel/string) | +| `suffix` | 追加するサフィックス | #### Return Value -接尾辞が追加された[string](/ja/models/ref/query-panel/string/) +サフィックスが追加された [string](/models/ref/query-panel/string) -

string-contains

+### `string-contains` -[string](/ja/models/ref/query-panel/string/)が部分文字列を含んでいるかを確認します。 +[string](/models/ref/query-panel/string) にサブストリング(部分文字列)が含まれているか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | -| `sub` | 確認する部分文字列 | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | +| `sub` | 検索するサブストリング | #### Return Value -[string](/ja/models/ref/query-panel/string/)が部分文字列を含んでいるかどうか。 +[string](/models/ref/query-panel/string) にサブストリングが含まれているかどうか。 -

string-endsWith

+### `string-endsWith` -[string](/ja/models/ref/query-panel/string/)が接尾辞で終わるかを確認します。 +[string](/models/ref/query-panel/string) が特定のサフィックスで終わるか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | -| `suffix` | 確認する接尾辞 | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | +| `suffix` | 検索するサフィックス | #### Return Value -[string](/ja/models/ref/query-panel/string/)が接尾辞で終わるかどうか。 +[string](/models/ref/query-panel/string) がサフィックスで終わるかどうか。 -

string-findAll

+### `string-findAll` -[string](/ja/models/ref/query-panel/string/)内の部分文字列のすべての出現を見つけます。 +[string](/models/ref/query-panel/string) 内で見つかったすべてのサブストリングの位置を検索します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 部分文字列の出現を見つける[string](/ja/models/ref/query-panel/string/) | -| `sub` | 見つける部分文字列 | +| `str` | サブストリングを検索する対象の [string](/models/ref/query-panel/string) | +| `sub` | 検索するサブストリング | #### Return Value -[string](/ja/models/ref/query-panel/string/)内の部分文字列のインデックスの_list_ +[string](/models/ref/query-panel/string) 内のサブストリングのインデックスの _list_ -

string-isAlnum

+### `string-isAlnum` -[string](/ja/models/ref/query-panel/string/)が英数字かどうかを確認します。 +[string](/models/ref/query-panel/string) が英数字のみで構成されているか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | #### Return Value -[string](/ja/models/ref/query-panel/string/)が英数字かどうか。 +[string](/models/ref/query-panel/string) が英数字かどうか。 -

string-isAlpha

+### `string-isAlpha` -[string](/ja/models/ref/query-panel/string/)がアルファベット文字かどうかを確認します。 +[string](/models/ref/query-panel/string) が英字のみで構成されているか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | #### Return Value -[string](/ja/models/ref/query-panel/string/)がアルファベット文字かどうか。 +[string](/models/ref/query-panel/string) が英字かどうか。 -

string-isNumeric

+### `string-isNumeric` -[string](/ja/models/ref/query-panel/string/)が数値かどうかを確認します。 +[string](/models/ref/query-panel/string) が数字のみで構成されているか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | #### Return Value -[string](/ja/models/ref/query-panel/string/)が数値かどうか。 +[string](/models/ref/query-panel/string) が数字かどうか。 -

string-lStrip

+### `string-lStrip` 先頭の空白を削除します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 削除する[string](/ja/models/ref/query-panel/string/)。 | +| `str` | 削除対象の [string](/models/ref/query-panel/string) | #### Return Value -空白が削除された[string](/ja/models/ref/query-panel/string/)。 +空白が削除された [string](/models/ref/query-panel/string) -

string-len

+### `string-len` -[string](/ja/models/ref/query-panel/string/)の長さを返します。 +[string](/models/ref/query-panel/string) の長さを返します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | #### Return Value -[string](/ja/models/ref/query-panel/string/)の長さ +[string](/models/ref/query-panel/string) の長さ。 -

string-lower

+### `string-lower` -[string](/ja/models/ref/query-panel/string/)を小文字に変換します。 +[string](/models/ref/query-panel/string) を小文字に変換します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 小文字に変換する[string](/ja/models/ref/query-panel/string/) | +| `str` | 小文字に変換する [string](/models/ref/query-panel/string) | #### Return Value -小文字に変換された[string](/ja/models/ref/query-panel/string/) +小文字の [string](/models/ref/query-panel/string) -

string-partition

+### `string-partition` -[string](/ja/models/ref/query-panel/string/)を_list_にパーティション分けします。 +[string](/models/ref/query-panel/string) を分割して、 [strings](/models/ref/query-panel/string/) の _list_ に変換します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 分割する[string](/ja/models/ref/query-panel/string/) | +| `str` | 分割する [string](/models/ref/query-panel/string) | | `sep` | 分割に使用するセパレータ | #### Return Value -セパレータの前の[string](/ja/models/ref/query-panel/string/)、セパレータ、セパレータの後の[string](/ja/models/ref/query-panel/string/)を含む_list_の[string](/ja/models/ref/query-panel/string/) +[strings](/models/ref/query-panel/string/) の _list_: セパレータより前の [string](/models/ref/query-panel/string) 、セパレータ自体、およびセパレータより後の [string](/models/ref/query-panel/string) -

string-prepend

+### `string-prepend` -接頭辞を[string](/ja/models/ref/query-panel/string/)に追加します。 +[string](/models/ref/query-panel/string) にプレフィックス(接頭辞)を追加します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 追加する[string](/ja/models/ref/query-panel/string/) | -| `prefix` | 追加する接頭辞 | +| `str` | 追加対象の [string](/models/ref/query-panel/string) | +| `prefix` | 追加するプレフィックス | #### Return Value -接頭辞が追加された[string](/ja/models/ref/query-panel/string/) +プレフィックスが追加された [string](/models/ref/query-panel/string) -

string-rStrip

+### `string-rStrip` 末尾の空白を削除します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 削除する[string](/ja/models/ref/query-panel/string/)。 | +| `str` | 削除対象の [string](/models/ref/query-panel/string) | #### Return Value -空白が削除された[string](/ja/models/ref/query-panel/string/)。 +空白が削除された [string](/models/ref/query-panel/string) -

string-replace

+### `string-replace` -[string](/ja/models/ref/query-panel/string/)内のすべての部分文字列を置換します。 +[string](/models/ref/query-panel/string) 内で見つかったすべてのサブストリングを置換します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 内容を置換する[string](/ja/models/ref/query-panel/string/) | -| `sub` | 置換する部分文字列 | -| `newSub` | 古い部分文字列を置換する部分文字列 | +| `str` | 内容を置換する [string](/models/ref/query-panel/string) | +| `sub` | 置換対象のサブストリング | +| `newSub` | 新しいサブストリング | #### Return Value -置換された[string](/ja/models/ref/query-panel/string/) +置換が行われた [string](/models/ref/query-panel/string) -

string-slice

+### `string-slice` -開始インデックスと終了インデックスに基づいて[string](/ja/models/ref/query-panel/string/)をスライスします。 +開始インデックスと終了インデックスに基づいて、 [string](/models/ref/query-panel/string) をサブストリングにスライスします。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | スライスする[string](/ja/models/ref/query-panel/string/) | -| `begin` | 部分文字列の開始インデックス | -| `end` | 部分文字列の終了インデックス | +| `str` | スライスする [string](/models/ref/query-panel/string) | +| `begin` | サブストリングの開始インデックス | +| `end` | サブストリングの終了インデックス | #### Return Value -部分文字列 +スライスされたサブストリング。 -

string-split

+### `string-split` -[string](/ja/models/ref/query-panel/string/)を_list_に分割します。 +[string](/models/ref/query-panel/string) を [strings](/models/ref/query-panel/string/) の _list_ に分割します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 分割する[string](/ja/models/ref/query-panel/string/) | +| `str` | 分割する [string](/models/ref/query-panel/string) | | `sep` | 分割に使用するセパレータ | #### Return Value -_list_の[string](/ja/models/ref/query-panel/string/) +[strings](/models/ref/query-panel/string/) の _list_ -

string-startsWith

+### `string-startsWith` -[string](/ja/models/ref/query-panel/string/)が接頭辞で始まるか確認します。 +[string](/models/ref/query-panel/string) が特定のプレフィックスで始まるか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | -| `prefix` | 確認する接頭辞 | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | +| `prefix` | 検索するプレフィックス | #### Return Value -[string](/ja/models/ref/query-panel/string/)が接頭辞で始まるかどうか。 +[string](/models/ref/query-panel/string) がプレフィックスで始まるかどうか。 -

string-strip

+### `string-strip` -[string](/ja/models/ref/query-panel/string/)の両端の空白を削除します。 +[string](/models/ref/query-panel/string) の両端から空白を削除します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 削除する[string](/ja/models/ref/query-panel/string/)。 | +| `str` | 削除対象の [string](/models/ref/query-panel/string) | #### Return Value -空白が削除された[string](/ja/models/ref/query-panel/string/)。 +空白が削除された [string](/models/ref/query-panel/string) -

string-upper

+### `string-upper` -[string](/ja/models/ref/query-panel/string/)を大文字に変換します。 +[string](/models/ref/query-panel/string) を大文字に変換します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 大文字に変換する[string](/ja/models/ref/query-panel/string/) | +| `str` | 大文字に変換する [string](/models/ref/query-panel/string) | #### Return Value -大文字に変換された[string](/ja/models/ref/query-panel/string/) +大文字の [string](/models/ref/query-panel/string) -

string-levenshtein

+### `string-levenshtein` -2つの[string](/ja/models/ref/query-panel/string/)間のレーベンシュタイン距離を計算します。 +2つの [strings](/models/ref/query-panel/string/) 間のレーベンシュタイン距離を計算します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str1` | 最初の[string](/ja/models/ref/query-panel/string/)。 | -| `str2` | 2つ目の[string](/ja/models/ref/query-panel/string/)。 | +| `str1` | 最初の [string](/models/ref/query-panel/string) | +| `str2` | 2番目の [string](/models/ref/query-panel/string) | #### Return Value -2つの[string](/ja/models/ref/query-panel/string/)間のレーベンシュタイン距離 +2つの [strings](/models/ref/query-panel/string/) 間のレーベンシュタイン距離。 ## List Ops -

string-notEqual

+### `string-notEqual` -2つの値の不等を判定します。 +2つの値が等しくないかどうかを判定します。 -| 引数 | | +| Argument | Description | | :--- | :--- | | `lhs` | 比較する最初の値。 | -| `rhs` | 比較する2つ目の値。 | +| `rhs` | 比較する2番目の値。 | #### Return Value 2つの値が等しくないかどうか。 -

string-add

+### `string-add` -2つの[string](/ja/models/ref/query-panel/string/)を連結します。 +2つの [strings](/models/ref/query-panel/string/) を連結します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `lhs` | 最初の[string](/ja/models/ref/query-panel/string/) | -| `rhs` | 2つ目の[string](/ja/models/ref/query-panel/string/) | +| `lhs` | 最初の [string](/models/ref/query-panel/string) | +| `rhs` | 2番目の [string](/models/ref/query-panel/string) | #### Return Value -連結された[string](/ja/models/ref/query-panel/string/) +連結された [string](/models/ref/query-panel/string) -

string-equal

+### `string-equal` -2つの値の等価性を判定します。 +2つの値が等しいかどうかを判定します。 -| 引数 | | +| Argument | Description | | :--- | :--- | | `lhs` | 比較する最初の値。 | -| `rhs` | 比較する2つ目の値。 | +| `rhs` | 比較する2番目の値。 | #### Return Value 2つの値が等しいかどうか。 -

string-append

+### `string-append` -接尾辞を[string](/ja/models/ref/query-panel/string/)に追加します。 +[string](/models/ref/query-panel/string) にサフィックスを追加します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 追加する[string](/ja/models/ref/query-panel/string/) | -| `suffix` | 追加する接尾辞 | +| `str` | 追加対象の [string](/models/ref/query-panel/string) | +| `suffix` | 追加するサフィックス | #### Return Value -接尾辞が追加された[string](/ja/models/ref/query-panel/string/) +サフィックスが追加された [string](/models/ref/query-panel/string) -

string-contains

+### `string-contains` -[string](/ja/models/ref/query-panel/string/)が部分文字列を含んでいるかを確認します。 +[string](/models/ref/query-panel/string) にサブストリングが含まれているか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | -| `sub` | 確認する部分文字列 | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | +| `sub` | 検索するサブストリング | #### Return Value -[string](/ja/models/ref/query-panel/string/)が部分文字列を含んでいるかどうか。 +[string](/models/ref/query-panel/string) にサブストリングが含まれているかどうか。 -

string-endsWith

+### `string-endsWith` -[string](/ja/models/ref/query-panel/string/)が接尾辞で終わるかを確認します。 +[string](/models/ref/query-panel/string) が特定のサフィックスで終わるか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | -| `suffix` | 確認する接尾辞 | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | +| `suffix` | 検索するサフィックス | #### Return Value -[string](/ja/models/ref/query-panel/string/)が接尾辞で終わるかどうか。 +[string](/models/ref/query-panel/string) がサフィックスで終わるかどうか。 -

string-findAll

+### `string-findAll` -[string](/ja/models/ref/query-panel/string/)内の部分文字列のすべての出現を見つけます。 +[string](/models/ref/query-panel/string) 内で見つかったすべてのサブストリングの位置を検索します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 部分文字列の出現を見つける[string](/ja/models/ref/query-panel/string/) | -| `sub` | 見つける部分文字列 | +| `str` | サブストリングを検索する対象の [string](/models/ref/query-panel/string) | +| `sub` | 検索するサブストリング | #### Return Value -[string](/ja/models/ref/query-panel/string/)内の部分文字列のインデックスの_list_ +[string](/models/ref/query-panel/string) 内のサブストリングのインデックスの _list_ -

string-isAlnum

+### `string-isAlnum` -[string](/ja/models/ref/query-panel/string/)が英数字かどうかを確認します。 +[string](/models/ref/query-panel/string) が英数字のみで構成されているか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | #### Return Value -[string](/ja/models/ref/query-panel/string/)が英数字かどうか。 +[string](/models/ref/query-panel/string) が英数字かどうか。 -

string-isAlpha

+### `string-isAlpha` -[string](/ja/models/ref/query-panel/string/)がアルファベット文字かどうかを確認します。 +[string](/models/ref/query-panel/string) が英字のみで構成されているか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | #### Return Value -[string](/ja/models/ref/query-panel/string/)がアルファベット文字かどうか。 +[string](/models/ref/query-panel/string) が英字かどうか。 -

string-isNumeric

+### `string-isNumeric` -[string](/ja/models/ref/query-panel/string/)が数値かどうかを確認します。 +[string](/models/ref/query-panel/string) が数字のみで構成されているか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | #### Return Value -[string](/ja/models/ref/query-panel/string/)が数値かどうか。 +[string](/models/ref/query-panel/string) が数字かどうか。 -

string-lStrip

+### `string-lStrip` 先頭の空白を削除します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 削除する[string](/ja/models/ref/query-panel/string/)。 | +| `str` | 削除対象の [string](/models/ref/query-panel/string) | #### Return Value -空白が削除された[string](/ja/models/ref/query-panel/string/)。 +空白が削除された [string](/models/ref/query-panel/string) -

string-len

+### `string-len` -[string](/ja/models/ref/query-panel/string/)の長さを返します。 +[string](/models/ref/query-panel/string) の長さを返します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | #### Return Value -[string](/ja/models/ref/query-panel/string/)の長さ +[string](/models/ref/query-panel/string) の長さ。 -

string-lower

+### `string-lower` -[string](/ja/models/ref/query-panel/string/)を小文字に変換します。 +[string](/models/ref/query-panel/string) を小文字に変換します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 小文字に変換する[string](/ja/models/ref/query-panel/string/) | +| `str` | 小文字に変換する [string](/models/ref/query-panel/string) | #### Return Value -小文字に変換された[string](/ja/models/ref/query-panel/string/) +小文字の [string](/models/ref/query-panel/string) -

string-partition

+### `string-partition` -[string](/ja/models/ref/query-panel/string/)を_list_にパーティション分けします。 +[string](/models/ref/query-panel/string) を分割して、 [strings](/models/ref/query-panel/string/) の _list_ に変換します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 分割する[string](/ja/models/ref/query-panel/string/) | +| `str` | 分割する [string](/models/ref/query-panel/string) | | `sep` | 分割に使用するセパレータ | #### Return Value -セパレータの前の[string](/ja/models/ref/query-panel/string/)、セパレータ、セパレータの後の[string](/ja/models/ref/query-panel/string/)を含む_list_の[string](/ja/models/ref/query-panel/string/) +[strings](/models/ref/query-panel/string/) の _list_: セパレータより前の [string](/models/ref/query-panel/string) 、セパレータ自体、およびセパレータより後の [string](/models/ref/query-panel/string) -

string-prepend

+### `string-prepend` -接頭辞を[string](/ja/models/ref/query-panel/string/)に追加します。 +[string](/models/ref/query-panel/string) にプレフィックスを追加します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 追加する[string](/ja/models/ref/query-panel/string/) | -| `prefix` | 追加する接頭辞 | +| `str` | 追加対象の [string](/models/ref/query-panel/string) | +| `prefix` | 追加するプレフィックス | #### Return Value -接頭辞が追加された[string](/ja/models/ref/query-panel/string/) +プレフィックスが追加された [string](/models/ref/query-panel/string) -

string-rStrip

+### `string-rStrip` 末尾の空白を削除します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 削除する[string](/ja/models/ref/query-panel/string/)。 | +| `str` | 削除対象の [string](/models/ref/query-panel/string) | #### Return Value -空白が削除された[string](/ja/models/ref/query-panel/string/)。 +空白が削除された [string](/models/ref/query-panel/string) -

string-replace

+### `string-replace` -[string](/ja/models/ref/query-panel/string/)内のすべての部分文字列を置換します。 +[string](/models/ref/query-panel/string) 内で見つかったすべてのサブストリングを置換します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 内容を置換する[string](/ja/models/ref/query-panel/string/) | -| `sub` | 置換する部分文字列 | -| `newSub` | 古い部分文字列を置換する部分文字列 | +| `str` | 内容を置換する [string](/models/ref/query-panel/string) | +| `sub` | 置換対象のサブストリング | +| `newSub` | 新しいサブストリング | #### Return Value -置換された[string](/ja/models/ref/query-panel/string/) +置換が行われた [string](/models/ref/query-panel/string) -

string-slice

+### `string-slice` -開始インデックスと終了インデックスに基づいて[string](/ja/models/ref/query-panel/string/)をスライスします。 +開始インデックスと終了インデックスに基づいて、 [string](/models/ref/query-panel/string) をサブストリングにスライスします。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | スライスする[string](/ja/models/ref/query-panel/string/) | -| `begin` | 部分文字列の開始インデックス | -| `end` | 部分文字列の終了インデックス | +| `str` | スライスする [string](/models/ref/query-panel/string) | +| `begin` | サブストリングの開始インデックス | +| `end` | サブストリングの終了インデックス | #### Return Value -部分文字列 +スライスされたサブストリング。 -

string-split

+### `string-split` -[string](/ja/models/ref/query-panel/string/)を_list_に分割します。 +[string](/models/ref/query-panel/string) を [strings](/models/ref/query-panel/string/) の _list_ に分割します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 分割する[string](/ja/models/ref/query-panel/string/) | +| `str` | 分割する [string](/models/ref/query-panel/string) | | `sep` | 分割に使用するセパレータ | #### Return Value -_list_の[string](/ja/models/ref/query-panel/string/) +[strings](/models/ref/query-panel/string/) の _list_ -

string-startsWith

+### `string-startsWith` -[string](/ja/models/ref/query-panel/string/)が接頭辞で始まるか確認します。 +[string](/models/ref/query-panel/string) が特定のプレフィックスで始まるか確認します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 確認する[string](/ja/models/ref/query-panel/string/) | -| `prefix` | 確認する接頭辞 | +| `str` | チェック対象の [string](/models/ref/query-panel/string) | +| `prefix` | 検索するプレフィックス | #### Return Value -[string](/ja/models/ref/query-panel/string/)が接頭辞で始まるかどうか。 +[string](/models/ref/query-panel/string) がプレフィックスで始まるかどうか。 -

string-strip

+### `string-strip` -[string](/ja/models/ref/query-panel/string/)の両端の空白を削除します。 +[string](/models/ref/query-panel/string) の両端から空白を削除します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 削除する[string](/ja/models/ref/query-panel/string/)。 | +| `str` | 削除対象の [string](/models/ref/query-panel/string) | #### Return Value -空白が削除された[string](/ja/models/ref/query-panel/string/)。 +空白が削除された [string](/models/ref/query-panel/string) -

string-upper

+### `string-upper` -[string](/ja/models/ref/query-panel/string/)を大文字に変換します。 +[string](/models/ref/query-panel/string) を大文字に変換します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str` | 大文字に変換する[string](/ja/models/ref/query-panel/string/) | +| `str` | 大文字に変換する [string](/models/ref/query-panel/string) | #### Return Value -大文字に変換された[string](/ja/models/ref/query-panel/string/) +大文字の [string](/models/ref/query-panel/string) -

string-levenshtein

+### `string-levenshtein` -2つの[string](/ja/models/ref/query-panel/string/)間のレーベンシュタイン距離を計算します。 +2つの [strings](/models/ref/query-panel/string/) 間のレーベンシュタイン距離を計算します。 -| 引数 | | +| Argument | Description | | :--- | :--- | -| `str1` | 最初の[string](/ja/models/ref/query-panel/string/)。 | -| `str2` | 2つ目の[string](/ja/models/ref/query-panel/string/)。 | +| `str1` | 最初の [string](/models/ref/query-panel/string) | +| `str2` | 2番目の [string](/models/ref/query-panel/string) | #### Return Value -2つの[string](/ja/models/ref/query-panel/string/)間のレーベンシュタイン距離 +2つの [strings](/models/ref/query-panel/string/) 間のレーベンシュタイン距離。 \ No newline at end of file diff --git a/ja/models/ref/query-panel/table.mdx b/ja/models/ref/query-panel/table.mdx index bd082e2231..359db5f376 100644 --- a/ja/models/ref/query-panel/table.mdx +++ b/ja/models/ref/query-panel/table.mdx @@ -1,50 +1,52 @@ --- -title: 申し訳ありませんが、指定されたコンテンツを表示できません。別のリクエストを試してください。 +title: table --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 +#### 返り値 アセットの _file_ -

table-rows

-_table_ の行を返します +### `table-rows` -| 引数 | | +_table_ の行を返します。 + +| 引数 | 説明 | | :--- | :--- | | `table` | _table_ | -#### 戻り値 +#### 返り値 _table_ の行 ## List Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 +#### 返り値 アセットの _file_ -

table-rows

-_table_ の行を返します +### `table-rows` + +_table_ の行を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `table` | _table_ | -#### 戻り値 +#### 返り値 _table_ の行 \ No newline at end of file diff --git a/ja/models/ref/query-panel/user.mdx b/ja/models/ref/query-panel/user.mdx index 55af9d99e4..b60b38f770 100644 --- a/ja/models/ref/query-panel/user.mdx +++ b/ja/models/ref/query-panel/user.mdx @@ -1,28 +1,28 @@ --- -title: ユーザー +title: User --- ## Chainable Ops -

user-username

+### `user-username` -[user](/ja/models/ref/query-panel/user/) のユーザー名を返します。 +[User](/models/ref/query-panel/user/) のユーザー名を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `user` | [user](/ja/models/ref/query-panel/user/) | +| `user` | [User](/models/ref/query-panel/user/) | -#### 戻り値 -[user](/ja/models/ref/query-panel/user/) のユーザー名 +#### Return Value +[User](/models/ref/query-panel/user/) のユーザー名 ## List Ops -

user-username

+### `user-username` -[user](/ja/models/ref/query-panel/user/) のユーザー名を返します。 +[User](/models/ref/query-panel/user/) のユーザー名を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | -| `user` | [user](/ja/models/ref/query-panel/user/) | +| `user` | [User](/models/ref/query-panel/user/) | -#### 戻り値 -[user](/ja/models/ref/query-panel/user/) のユーザー名 \ No newline at end of file +#### Return Value +[User](/models/ref/query-panel/user/) のユーザー名 \ No newline at end of file diff --git a/ja/models/ref/query-panel/video-file.mdx b/ja/models/ref/query-panel/video-file.mdx index d77b33432d..f19bd9e150 100644 --- a/ja/models/ref/query-panel/video-file.mdx +++ b/ja/models/ref/query-panel/video-file.mdx @@ -3,26 +3,26 @@ title: video-file --- ## Chainable Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 +#### 返り値 アセットの _file_ ## List Ops -

asset-file

+### `asset-file` -アセットの _file_ を返します +アセットの _file_ を返します。 -| 引数 | | +| 引数 | 説明 | | :--- | :--- | | `asset` | アセット | -#### 戻り値 +#### 返り値 アセットの _file_ \ No newline at end of file diff --git a/ja/models/ref/sdk-coding-cheat-sheet.mdx b/ja/models/ref/sdk-coding-cheat-sheet.mdx new file mode 100644 index 0000000000..061c7edb7e --- /dev/null +++ b/ja/models/ref/sdk-coding-cheat-sheet.mdx @@ -0,0 +1,24 @@ +--- +title: W&B SDK Python コーディング・チートシート +description: 一般的な W&B Python SDK のパターンとコード例のクイックリファレンス +sidebarTitle: Overview +--- + +このチートシートでは、W&B の一般的なタスクに対する Python コード例をクイックリファレンス形式で提供し、推奨されるプラクティスを紹介します。例の中で使用されている `` などのプレースホルダー構文は、ご自身の値に置き換えてください。各サンプルは、ニーズに合わせて調整可能な独立したスニペットになっています。 + +カテゴリを選択して、各コード例を表示してください。 + + + + W&B Runs の初期化、管理、フォークのためのコード例 + + + メトリクス、ハイパーパラメーター、テーブル、およびカスタムデータを W&B にログ記録するためのコード例 + + + データ バージョン管理のための W&B Artifacts の作成、更新、ダウンロード、管理のためのコード例 + + + W&B Registry でモデル バージョンを整理・管理するためのコード例 + + \ No newline at end of file diff --git a/ja/models/ref/sdk-coding-cheat-sheet/artifacts.mdx b/ja/models/ref/sdk-coding-cheat-sheet/artifacts.mdx new file mode 100644 index 0000000000..2d16b7b674 --- /dev/null +++ b/ja/models/ref/sdk-coding-cheat-sheet/artifacts.mdx @@ -0,0 +1,77 @@ +--- +title: アーティファクト +description: データの バージョン管理 のための W&B Artifacts の作成、更新、ダウンロード、管理を行います。 +--- + +import ArtifactCreate from '/snippets/en/_includes/code-examples/artifact_create.mdx'; +import ArtifactCreateTrackExternal from '/snippets/en/_includes/code-examples/artifact_create_track_external.mdx'; +import ArtifactDelete from '/snippets/en/_includes/code-examples/artifact_delete.mdx'; +import ArtifactDeleteCollection from '/snippets/en/_includes/code-examples/artifact_delete_collection.mdx'; +import ArtifactDownloadPartial from '/snippets/en/_includes/code-examples/artifact_download_partial.mdx'; +import ArtifactsDownload from '/snippets/en/_includes/code-examples/artifacts_download.mdx'; +import ArtifactAddAlias from '/snippets/en/_includes/code-examples/artifact_add_alias.mdx'; +import ArtifactAddAliasExisting from '/snippets/en/_includes/code-examples/artifact_add_alias_existing.mdx'; +import ArtifactAddTag from '/snippets/en/_includes/code-examples/artifact_add_tag.mdx'; +import ArtifactAddTagExisting from '/snippets/en/_includes/code-examples/artifact_add_tag_existing.mdx'; +import ArtifactTtl from '/snippets/en/_includes/code-examples/artifact_ttl.mdx'; +import ArtifactTtlExisting from '/snippets/en/_includes/code-examples/artifact_ttl_existing.mdx'; +import ArtifactUpdate from '/snippets/en/_includes/code-examples/artifact_update.mdx'; +import ArtifactUpdateExisting from '/snippets/en/_includes/code-examples/artifact_update_existing.mdx'; + +データ バージョン管理 のための W&B Artifacts の作成、更新、ダウンロード、管理を行います。 + +## アーティファクト の作成と ログ + + + +## クラウド ストレージ バケット パスへの参照を追加して、外部 アーティファクト を追跡する + + + +## run から特定の アーティファクト バージョン を削除する + + + +## アーティファクト コレクションを削除する + + + +## アーティファクト から特定のファイルまたはサブフォルダをダウンロードする + + + +## ファイルまたは アーティファクト 全体をダウンロードする + + + +## アーティファクト の ログ 時に 1 つ以上の エイリアス を追加する + + + +## 既存の アーティファクト に エイリアス を追加する + + + +## アーティファクト の ログ 時にタグを追加する + + + +## 既存の アーティファクト にタグを追加する + + + +## TTL ポリシーを設定して アーティファクト を作成し、ログ を記録する + + + +## 既存の アーティファクト の TTL ポリシーを更新する + + + +## run 内で既存の アーティファクト の説明を更新する + + + +## 新しい run を作成せずに、既存の アーティファクト の説明、メタデータ、エイリアス を更新する + + \ No newline at end of file diff --git a/ja/models/ref/sdk-coding-cheat-sheet/logging.mdx b/ja/models/ref/sdk-coding-cheat-sheet/logging.mdx new file mode 100644 index 0000000000..376573fd31 --- /dev/null +++ b/ja/models/ref/sdk-coding-cheat-sheet/logging.mdx @@ -0,0 +1,32 @@ +--- +title: ログ記録 +description: メトリクス、 ハイパーパラメーター、 テーブル、 およびカスタムデータを W&B に ログ します。 +--- + +import LogCustomSummaryMetric from '/snippets/en/_includes/code-examples/log_custom_summary_metric.mdx'; +import LogExistingArtifactLinkCollection from '/snippets/en/_includes/code-examples/log_existing_artifact_link_collection.mdx'; +import LogHyperparameter from '/snippets/en/_includes/code-examples/log_hyperparameter.mdx'; +import LogMetric from '/snippets/en/_includes/code-examples/log_metric.mdx'; +import LogTable from '/snippets/en/_includes/code-examples/log_table.mdx'; + +メトリクス、ハイパーパラメーター、テーブル、およびカスタムデータを W&B にログ記録します。 + +## カスタム summary メトリクスをログ記録する + + + +## レジストリコレクションから既存の Artifacts をダウンロードしてログ記録する + + + +## Run を初期化してハイパーパラメーターをログ記録する + + + +## Run を初期化してメトリクスをログ記録する + + + +## テーブルをログ記録する + + \ No newline at end of file diff --git a/ja/models/ref/sdk-coding-cheat-sheet/registry.mdx b/ja/models/ref/sdk-coding-cheat-sheet/registry.mdx new file mode 100644 index 0000000000..42b8482c22 --- /dev/null +++ b/ja/models/ref/sdk-coding-cheat-sheet/registry.mdx @@ -0,0 +1,47 @@ +--- +title: Registry +description: W&B Model Registry を使用して、 モデル の バージョン を整理および管理します。 +--- + +import RegistryAddAnnotation from '/snippets/en/_includes/code-examples/registry_add_annotation.mdx'; +import RegistryCreate from '/snippets/en/_includes/code-examples/registry_create.mdx'; +import RegistryDelete from '/snippets/en/_includes/code-examples/registry_delete.mdx'; +import RegistryLinkArtifactExisting from '/snippets/en/_includes/code-examples/registry_link_artifact_existing.mdx'; +import RegistryUseLinkedArtifact from '/snippets/en/_includes/code-examples/registry_use_linked_artifact.mdx'; +import RegistryCollectionCreate from '/snippets/en/_includes/code-examples/registry_collection_create.mdx'; +import RegistryCollectionTagsAdd from '/snippets/en/_includes/code-examples/registry_collection_tags_add.mdx'; +import RegistryCollectionTagsRemove from '/snippets/en/_includes/code-examples/registry_collection_tags_remove.mdx'; + +W&B モデルレジストリ を使用して、 モデル の バージョン を整理・管理します。 + +## レジストリ内のコレクションに説明を追加する + + + +## 新しいレジストリを作成する + + + +## レジストリを削除する + + + +## アーティファクト を作成し、レジストリ内のコレクションにリンクする + + + +## レジストリコレクションから アーティファクト の特定の バージョン を取得する + + + +## レジストリコレクションを作成し、 アーティファクト をリンクする + + + +## レジストリ内のコレクションにタグを追加する + + + +## レジストリ内のコレクションからタグを削除する + + \ No newline at end of file diff --git a/ja/models/ref/sdk-coding-cheat-sheet/runs.mdx b/ja/models/ref/sdk-coding-cheat-sheet/runs.mdx new file mode 100644 index 0000000000..74fc07180f --- /dev/null +++ b/ja/models/ref/sdk-coding-cheat-sheet/runs.mdx @@ -0,0 +1,22 @@ +--- +title: Runs +description: Experiments を整理し、作業を追跡するために W&B Runs を初期化・管理します。 +--- + +import ExperimentsCreate from '/snippets/en/_includes/code-examples/experiments_create.mdx'; +import RunFork from '/snippets/en/_includes/code-examples/run_fork.mdx'; +import RunInit from '/snippets/en/_includes/code-examples/run_init.mdx'; + +W&B Runs を初期化・管理して、 Experiments を整理し、作業内容を追跡します。 + +## Experiment を作成する + + + +## 特定のステップから既存の run を Fork する + + + +## Run を初期化する + + \ No newline at end of file diff --git a/ja/models/ref/wandb_workspaces.mdx b/ja/models/ref/wandb_workspaces.mdx new file mode 100644 index 0000000000..88a9974fe5 --- /dev/null +++ b/ja/models/ref/wandb_workspaces.mdx @@ -0,0 +1,87 @@ +--- +title: Reports と Workspace API の概要 +description: W&B Reports と Workspaces API を使用して、 Reports と Workspace をプログラムで作成・管理します。 +--- + +`wandb_workspaces` からアクセスできる W&B Reports および Workspaces API を使用すると、 学び を Web 上で共有するための [Reports](/models/reports/) を作成したり、 トレーニング や ファインチューニング を行った [Workspace](/models/app/features/cascade-settings/) をカスタマイズしたりできます。 + + + + + +W&B Report および Workspace API はパブリックプレビュー版です。 + + +## インストールとセットアップ + +### サインアップと APIキー の作成 + +マシンを W&B で認証するには、まず [User Settings](https://wandb.ai/settings) で APIキー を生成する必要があります。 + +### パッケージのインストールとインポート + +W&B Report および Workspaces ライブラリ をインストールします。 + +```python +pip install wandb-workspaces +``` + +### Report の作成 + +Report を作成するには、 チーム の Entities を指定し、 Report の名前を入力します。括弧内のテキストを実際の 値 に置き換えてください。 + +```python +import wandb_workspaces.reports.v2 as wr +# 作成 +report = wr.Report( + entity="", + project="", + title='Quickstart Report', + description="That was easy!" +) + +# レポートを保存 +report.save() +``` + +次に、 Report にブロックや パネル を追加します。例えば、以下の コード は目次、見出し、段落を含む Report を作成します。 + +```python +report.blocks = [ + wr.TableOfContents(), + wr.H1("Text and images example"), + wr.P("Lorem ipsum dolor sit amet."), +] +report.save() +``` + +エンドツーエンドの例については、 [Reports API Quickstart](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/intro/Report_API_Quickstart.ipynb) Google Colab を参照してください。 + +### Workspace の作成 + +以下の コード は、折れ線グラフ、棒グラフ、スカラーチャートの3つの パネル を含むセクションを持つ Workspace を作成する方法を示しています。括弧内のテキストを実際の 値 に置き換えてください。 + +```python +# インポート方法 +import wandb_workspaces.workspaces as ws + +# Workspace の作成 +ws.Workspace( + entity="", # Workspace を所有する entity + project="", # Workspace が関連付けられている project + sections=[ + ws.Section( + name="", + panels=[ + wr.LinePlot(x="Step", y=[""]), + wr.BarPlot(metrics=[""]), + wr.ScalarChart(metric="", groupby_aggfunc=""), + ], + is_open=True, + ), + ], +) +workspace.save() +``` + +エンドツーエンドの例については、 [Workspace API Quickstart](https://colab.research.google.com/github/wandb/wandb-workspaces/blob/Update-wandb-workspaces-tuturial/Workspace_tutorial.ipynb#scrollTo=MmxL0wjvrNtQ) Google Colab を参照してください。 \ No newline at end of file diff --git a/ja/models/ref/wandb_workspaces/reports.mdx b/ja/models/ref/wandb_workspaces/reports.mdx new file mode 100644 index 0000000000..30b336c622 --- /dev/null +++ b/ja/models/ref/wandb_workspaces/reports.mdx @@ -0,0 +1,837 @@ +--- +title: Reports +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + +W&B Reports および Workspace API はパブリックプレビュー中です。 + + +W&B Reports API をプログラムから操作するための Python ライブラリです。 + +```python +import wandb_workspaces.reports.v2 as wr + +report = wr.Report( + entity="entity", + project="project", + title="An amazing title", + description="A descriptive description.", +) + +blocks = [ + wr.PanelGrid( + panels=[ + wr.LinePlot(x="time", y="velocity"), + wr.ScatterPlot(x="time", y="acceleration"), + ] + ) +] + +report.blocks = blocks +report.save() +``` + +## class `BarPlot` +2D 棒グラフを表示するパネルオブジェクトです。 + +**Attributes:** + + - `title` (Optional[str]): プロットの上部に表示されるテキスト。 + - `metrics` (LList[MetricType]): orientation Literal["v", "h"]: 棒グラフの向き。垂直 ("v") または水平 ("h") のいずれかを設定します。デフォルトは水平 ("h") です。 + - `range_x` (Tuple[float | None, float | None]): x 軸の範囲を指定するタプル。 + - `title_x` (Optional[str]): x 軸のラベル。 + - `title_y` (Optional[str]): y 軸のラベル。 + - `groupby` (Optional[str]): Reports が情報を取得する W&B プロジェクトにログ記録されたメトリクスに基づいて、run をグループ化します。 + - `groupby_aggfunc` (Optional[GroupAgg]): 指定された関数で run を集計します。オプションには "mean"、"min"、"max"、"median"、"sum"、"samples"、または `None` があります。 + - `groupby_rangefunc` (Optional[GroupArea]): 範囲に基づいて run をグループ化します。オプションには "minmax"、"stddev"、"stderr"、"none"、"samples"、または `None` があります。 + - `max_runs_to_show` (Optional[int]): プロットに表示する run の最大数。 + - `max_bars_to_show` (Optional[int]): 棒グラフに表示する棒の最大数。 + - `custom_expressions` (Optional[LList[str]]): 棒グラフで使用されるカスタム式のリスト。 + - `legend_template` (Optional[str]): 凡例のテンプレート。 + - `font_size` ( Optional[FontSize]): 折れ線グラフのフォントサイズ。オプションには "small"、"medium"、"large"、"auto"、または `None` があります。 + - `line_titles` (Optional[dict]): 線のタイトル。キーは線名、値はタイトルです。 + - `line_colors` (Optional[dict]): 線の色。キーは線名、値は色です。 + - `aggregate` (Optional[bool]): `True` に設定すると、データを集計します。 + +--- + +## class `BlockQuote` +引用テキストのブロック。 + +**Attributes:** + + - `text` (str): 引用ブロックのテキスト。 + +--- + +## class `CalloutBlock` +コールアウトテキストのブロック。 + +**Attributes:** + + - `text` (str): コールアウトのテキスト。 + +--- + +## class `CheckedList` +チェックボックス付きのアイテムリスト。`CheckedList` 内に 1 つ以上の `CheckedListItem` を追加します。 + +**Attributes:** + + - `items` (LList[CheckedListItem]): 1 つ以上の `CheckedListItem` オブジェクトのリスト。 + +--- + +## class `CheckedListItem` +チェックボックス付きのリストアイテム。`CheckedList` 内に 1 つ以上の `CheckedListItem` を追加します。 + +**Attributes:** + + - `text` (str): リストアイテムのテキスト。 + - `checked` (bool): チェックボックスがチェックされているかどうか。デフォルトでは `False` に設定されています。 + +--- + +## class `CodeBlock` +コードブロック。 + +**Attributes:** + + - `code` (str): ブロック内のコード。 + - `language` (Optional[Language]): コードの言語。指定された言語はシンタックスハイライトに使用されます。デフォルトは "python" です。オプションには 'javascript', 'python', 'css', 'json', 'html', 'markdown', 'yaml' があります。 + +--- + +## class `CodeComparer` +2 つの異なる run 間のコードを比較するパネルオブジェクト。 + +**Attributes:** + + - `diff` (Literal['split', 'unified']): コードの差分を表示する方法。"split" または "unified" を選択できます。 + +--- + +## class `Config` +run の config オブジェクトにログ記録されたメトリクス。config オブジェクトは通常、`run.config[name] = ...` を使用するか、キーをメトリクス名、値をそのメトリクスの値とした辞書として config を渡すことでログ記録されます。 + +**Attributes:** + + - `name` (str): メトリクスの名前。 + +--- + +## class `CustomChart` +カスタムチャートを表示するパネル。チャートは Weave クエリによって定義されます。 + +**Attributes:** + + - `query` (dict): カスタムチャートを定義するクエリ。キーはフィールド名、値はクエリです。 + - `chart_name` (str): カスタムチャートのタイトル。 + - `chart_fields` (dict): プロットの軸を定義するキーと値のペア。キーはラベル、値はメトリクスです。 + - `chart_strings` (dict): チャート内の文字列を定義するキーと値のペア。 + +--- + +### classmethod `from_table` + +```python +from_table( + table_name: str, + chart_fields: dict = None, + chart_strings: dict = None +) +``` + +テーブルからカスタムチャートを作成します。 + +**引数:** + + - `table_name` (str): テーブルの名前。 + - `chart_fields` (dict): チャートに表示するフィールド。 + - `chart_strings` (dict): チャートに表示する文字列。 + +--- + +## class `Gallery` +Reports や URL のギャラリーをレンダリングするブロック。 + +**Attributes:** + + - `items` (List[Union[`GalleryReport`, `GalleryURL`]]): `GalleryReport` および `GalleryURL` オブジェクトのリスト。 + +--- + +## class `GalleryReport` +ギャラリー内のレポートへの参照。 + +**Attributes:** + + - `report_id` (str): レポートの ID。 + +--- + +## class `GalleryURL` +外部リソースへの URL。 + +**Attributes:** + + - `url` (str): リソースの URL。 + - `title` (Optional[str]): リソースのタイトル。 + - `description` (Optional[str]): リソースの説明。 + - `image_url` (Optional[str]): 表示する画像の URL。 + +--- + +## class `GradientPoint` +グラデーション内のポイント。 + +**Attributes:** + + - `color`: ポイントの色。 + - `offset`: グラデーション内でのポイントの位置。値は 0 から 100 の間である必要があります。 + +--- + +## class `H1` +指定されたテキストの H1 見出し。 + +**Attributes:** + + - `text` (str): 見出しのテキスト。 + - `collapsed_blocks` (Optional[LList["BlockTypes"]]): 見出しが折りたたまれているときに表示するブロック。 + +--- + +## class `H2` +指定されたテキストの H2 見出し。 + +**Attributes:** + + - `text` (str): 見出しのテキスト。 + - `collapsed_blocks` (Optional[LList["BlockTypes"]]): 見出しが折りたたまれているときに表示する 1 つ以上のブロック。 + +--- + +## class `H3` +指定されたテキストの H3 見出し。 + +**Attributes:** + + - `text` (str): 見出しのテキスト。 + - `collapsed_blocks` (Optional[LList["BlockTypes"]]): 見出しが折りたたまれているときに表示する 1 つ以上のブロック。 + +--- + +## class `Heading` + +--- + +## class `HorizontalRule` +HTML の水平線。 + +--- + +## class `Image` +画像をレンダリングするブロック。 + +**Attributes:** + + - `url` (str): 画像の URL。 + - `caption` (str): 画像のキャプション。キャプションは画像の下に表示されます。 + +--- + +## class `InlineCode` +インラインコード。コードの後に改行文字を追加しません。 + +**Attributes:** + + - `text` (str): レポートに表示したいコード。 + +--- + +## class `InlineLatex` +インライン LaTeX Markdown。LaTeX Markdown の後に改行文字を追加しません。 + +**Attributes:** + + - `text` (str): レポートに表示したい LaTeX Markdown。 + +--- + +## class `LatexBlock` +LaTeX テキストのブロック。 + +**Attributes:** + + - `text` (str): LaTeX テキスト。 + +--- + +## class `Layout` +レポート内のパネルのレイアウト。パネルのサイズと位置を調整します。 + +**Attributes:** + + - `x` (int): パネルの x 位置。 + - `y` (int): パネルの y 位置。 + - `w` (int): パネルの幅。 + - `h` (int): パネルの高さ。 + +--- + +## class `LinePlot` +2D 折れ線グラフを持つパネルオブジェクト。 + +**Attributes:** + + - `title` (Optional[str]): プロットの上部に表示されるテキスト。 + - `x` (Optional[MetricType]): Reports が情報を取得する W&B プロジェクトにログ記録されたメトリクスの名前。指定されたメトリクスは x 軸に使用されます。 + - `y` (LList[MetricType]): Reports が情報を取得する W&B プロジェクトにログ記録された 1 つ以上のメトリクス。指定されたメトリクスは y 軸に使用されます。 + - `range_x` (Tuple[float | `None`, float | `None`]): x 軸の範囲を指定するタプル。 + - `range_y` (Tuple[float | `None`, float | `None`]): y 軸の範囲を指定するタプル。 + - `log_x` (Optional[bool]): 10 を底とする対数スケールを使用して x 座標をプロットします。 + - `log_y` (Optional[bool]): 10 を底とする対数スケールを使用して y 座標をプロットします。 + - `title_x` (Optional[str]): x 軸のラベル。 + - `title_y` (Optional[str]): y 軸のラベル。 + - `ignore_outliers` (Optional[bool]): `True` に設定すると、外れ値をプロットしません。 + - `groupby` (Optional[str]): Reports が情報を取得する W&B プロジェクトにログ記録されたメトリクスに基づいて run をグループ化します。 + - `groupby_aggfunc` (Optional[GroupAgg]): 指定された関数で run を集計します。オプションには "mean"、"min"、"max"、"median"、"sum"、"samples"、または `None` があります。 + - `groupby_rangefunc` (Optional[GroupArea]): 範囲に基づいて run をグループ化します。オプションには "minmax"、"stddev"、"stderr"、"none"、"samples"、または `None` があります。 + - `smoothing_factor` (Optional[float]): 平滑化タイプに適用する平滑化係数。許容される値は 0 から 1 の範囲です。 + - `smoothing_type Optional[SmoothingType]`: 指定された分布に基づいてフィルターを適用します。オプションには "exponentialTimeWeighted"、"exponential"、"gaussian"、"average"、または "none" があります。 + - `smoothing_show_original` (Optional[bool]): `True` に設定すると、元のデータを表示します。 + - `max_runs_to_show` (Optional[int]): 折れ線グラフに表示する run の最大数。 + - `custom_expressions` (Optional[LList[str]]): データに適用するカスタム式。 + - `plot_type Optional[LinePlotStyle]`: 生成する折れ線グラフのタイプ。オプションには "line"、"stacked-area"、または "pct-area" があります。 + - `font_size Optional[FontSize]`: 折れ線グラフのフォントサイズ。オプションには "small"、"medium"、"large"、"auto"、または `None` があります。 + - `legend_position Optional[LegendPosition]`: 凡例の配置場所。オプションには "north"、"south"、"east"、"west"、または `None` があります。 + - `legend_template` (Optional[str]): 凡例のテンプレート。 + - `aggregate` (Optional[bool]): `True` に設定すると、データを集計します。 + - `xaxis_expression` (Optional[str]): x 軸の式。 + - `legend_fields` (Optional[LList[str]]): 凡例に含めるフィールド。 + - `metric_regex` (Optional[str]): y 軸のメトリクスに一致する正規表現パターン。バックエンドはこのパターンを使用して、一致するメトリクスを選択します。 + +--- + +## class `Link` +URL へのリンク。 + +**Attributes:** + + - `text` (Union[str, TextWithInlineComments]): リンクのテキスト。 + - `url` (str): リンク先。 + +--- + +## class `MarkdownBlock` +Markdown テキストのブロック。一般的な Markdown 構文を使用するテキストを記述する場合に便利です。 + +**Attributes:** + + - `text` (str): Markdown テキスト。 + +--- + +## class `MarkdownPanel` +Markdown をレンダリングするパネル。 + +**Attributes:** + + - `markdown` (str): Markdown パネルに表示したいテキスト。 + +--- + +## class `MediaBrowser` +ギャラリーまたはグリッドレイアウトでメディアファイルを表示するパネル。 + +**Attributes:** + + - `title` (Optional[str]): パネルのタイトル。 + - `num_columns` (Optional[int]): グリッドの列数。 + - `media_keys` (LList[str]): メディアファイルに対応するメディアキーのリスト。 + - `mode` (Optional[Literal["gallery", "grid"]]): パネルの表示モード。指定されない場合、提供された軸から推測されます。gallery_axis と grid 軸の両方が指定されている場合に必要です。 + - `gallery_axis` (Optional[Literal["step", "index", "run"]]): ギャラリーモードで軸に使用するフィールド。 + - `grid_x_axis` (Optional[Literal["step", "index", "run"]]): グリッドモードで x 軸に使用するフィールド。 + - `grid_y_axis` (Optional[Literal["step", "index", "run"]]): グリッドモードで y 軸に使用するフィールド。 + +--- + +## class `Metric` +プロジェクトにログ記録され、レポートに表示されるメトリクス。 + +**Attributes:** + + - `name` (str): メトリクスの名前。 + +--- + +## class `OrderBy` +順序付けの基準となるメトリクス。 + +**Attributes:** + + - `name` (str): メトリクスの名前。 + - `ascending` (bool): 昇順でソートするかどうか。デフォルトでは `False` に設定されています。 + +--- + +## class `OrderedList` +番号付きリスト内のアイテムリスト。 + +**Attributes:** + + - `items` (LList[TextLikeField]): 1 つ以上の `OrderedListItem` オブジェクトのリスト。各アイテムは文字列または TextLike オブジェクトのリストにすることができます。 + +--- + +## class `OrderedListItem` +順序付きリスト内のリストアイテム。 + +**Attributes:** + + - `text` (str): リストアイテムのテキスト。 + +--- + +## class `P` +テキストのパラグラフ。 + +**Attributes:** + + - `text` (str): パラグラフのテキスト。 + +--- + +## class `Panel` +パネルグリッド内で可視化を表示するパネル。 + +**Attributes:** + + - `layout` (Layout): `Layout` オブジェクト。 + +--- + +## class `PanelGrid` +runset とパネルで構成されるグリッド。それぞれ `Runset` オブジェクトと `Panel` オブジェクトを使用して runset とパネルを追加します。 + +利用可能なパネルには以下のものがあります: `LinePlot`, `ScatterPlot`, `BarPlot`, `ScalarChart`, `CodeComparer`, `ParallelCoordinatesPlot`, `ParameterImportancePlot`, `RunComparer`, `MediaBrowser`, `MarkdownPanel`, `CustomChart`, `WeavePanel`, `WeavePanelSummaryTable`, `WeavePanelArtifactVersionedFile`. + +**Attributes:** + + - `runsets` (LList["Runset"]): 1 つ以上の `Runset` オブジェクトのリスト。 + - `hide_run_sets` (bool): レポート閲覧者に対してパネルグリッドの run set を非表示にするかどうか。 + - `panels` (LList["PanelTypes"]): 1 つ以上の `Panel` オブジェクトのリスト。 + - `active_runset` (int): runset 内に表示したい run の数。デフォルトでは 0 に設定されています。 + - `custom_run_colors` (dict): キーが run の名前、値が 16 進数値で指定された色であるキーと値のペア。 + +--- + +## class `ParallelCoordinatesPlot` +並行座標プロットを表示するパネルオブジェクト。 + +**Attributes:** + + - `columns` (LList[ParallelCoordinatesPlotColumn]): 1 つ以上の `ParallelCoordinatesPlotColumn` オブジェクトのリスト。 + - `title` (Optional[str]): プロットの上部に表示されるテキスト。 + - `gradient` (Optional[LList[GradientPoint]]): グラデーションポイントのリスト。 + - `font_size` (Optional[FontSize]): 折れ線グラフのフォントサイズ。オプションには "small"、"medium"、"large"、"auto"、または `None` があります。 + +--- + +## class `ParallelCoordinatesPlotColumn` +並行座標プロット内の列。指定された `metric` の順序によって、並行座標プロットの並行軸 (x 軸) の順序が決まります。 + +**Attributes:** + + - `metric` (str | Config | SummaryMetric): Reports が情報を取得する W&B プロジェクトにログ記録されたメトリクスの名前。 + - `display_name` (Optional[str]): メトリクスの表示名 + - `inverted` (Optional[bool]): メトリクスを反転させるかどうか。 + - `log` (Optional[bool]): メトリクスに対数変換を適用するかどうか。 + +--- + +## class `ParameterImportancePlot` +選択したメトリクスの予測において、各ハイパーパラメーターがどの程度重要であるかを示すパネル。 + +**Attributes:** + + - `with_respect_to` (str): パラメータの重要度を比較する対象となるメトリクス。一般的なメトリクスには、loss や accuracy などがあります。指定するメトリクスは、Reports が情報を取得するプロジェクト内にログ記録されている必要があります。 + +--- + +## class `Report` +W&B Report を表すオブジェクト。返されたオブジェクトの `blocks` 属性を使用してレポートをカスタマイズします。Report オブジェクトは自動的には保存されません。変更を永続化するには `save()` メソッドを使用してください。 + +**Attributes:** + + - `project` (str): 読み込みたい W&B プロジェクトの名前。指定されたプロジェクトはレポートの URL に表示されます。 + - `entity` (str): レポートを所有する W&B entity。entity はレポートの URL に表示されます。 + - `title` (str): レポートのタイトル。タイトルはレポートの上部に H1 見出しとして表示されます。 + - `description` (str): レポートの説明。説明はレポートのタイトルの下に表示されます。 + - `blocks` (LList[BlockTypes]): 1 つ以上の HTML タグ、プロット、グリッド、runset などのリスト。 + - `width` (Literal['readable', 'fixed', 'fluid']): レポートの幅。オプションには 'readable'、'fixed'、'fluid' があります。 + +--- + +### property url + +レポートがホストされている URL。レポートの URL は `https://wandb.ai/{entity}/{project_name}/reports/` で構成されます。ここで `{entity}` と `{project_name}` は、それぞれレポートが属する entity とプロジェクトの名前です。 + +--- + +### method `delete` + +```python +delete() → bool +``` + +このレポートを W&B から削除します。 + +これにより、このレポートを参照しているドラフトビューもすべて削除されます。 + +**戻り値:** + + - `bool`: 削除操作がバックエンドによって成功として認識された場合は `True`、そうでない場合は `False`。 + +--- + +### classmethod `from_url` + +```python +from_url(url: str, as_model: bool = False) +``` + +現在の環境にレポートを読み込みます。レポートがホストされている URL を渡します。 + +**引数:** + + - `url` (str): レポートがホストされている URL。 + - `as_model` (bool): True の場合、Report オブジェクトの代わりにモデルオブジェクトを返します。デフォルトでは `False` に設定されています。 + +--- + +### method `save` + +```python +save(draft: bool = False, clone: bool = False) +``` + +レポートオブジェクトに加えられた変更を保存します。 + +--- + +### method `to_html` + +```python +to_html(height: int = 1024, hidden: bool = False) → str +``` + +このレポートを表示する iframe を含む HTML を生成します。通常、Python ノートブック内で使用されます。 + +**引数:** + + - `height` (int): iframe の高さ。 + - `hidden` (bool): True の場合、iframe を非表示にします。デフォルトは `False` です。 + +--- + +## class `RunComparer` +Reports が情報を取得するプロジェクトの異なる run 間のメトリクスを比較するパネル。 + +**Attributes:** + + - `diff_only` (Optional[Literal["split", `True`]]): プロジェクト内の run 間の差異のみを表示します。この機能は W&B Report UI でオンとオフを切り替えることができます。 + +--- + +## class `Runset` +パネルグリッドに表示する run のセット。 + +**Attributes:** + + - `entity` (str): run が保存されているプロジェクトを所有している、または適切な権限を持つ entity。 + - `project` (str): run が保存されているプロジェクトの名前。 + - `name` (str): run set の名前。デフォルトで `Run set` に設定されます。 + - `query` (str): run をフィルタリングするためのクエリ文字列。 + - `filters` (Union[str, LList[expr.FilterExpr]]): run に適用するフィルター。以下の形式が可能です: + - 文字列式:例、"Config('lr') = 0.001 and State = 'finished'" + - `サポートされている演算子`: `=`, `==`, `!=`, `<`, `>`, `<=`, `>=`, `in`, `not in` + - FilterExpr オブジェクトのリスト:例、[expr.Config('lr') == 0.001] + - `groupby` (LList[str]): グループ化の基準となるメトリクス名のリスト。サポートされている形式は以下の通りです: + - "group" または "run.group": run 属性でグループ化 + - "config.param": config パラメータでグループ化 + - "summary.metric": サマリーメトリクスでグループ化 + - `order` (LList[OrderBy]): 順序付けのための `OrderBy` オブジェクトのリスト。 + - `custom_run_colors` (LList[OrderBy]): run ID を色にマッピングする辞書。 + +**例:** + ```python + # 文字列フィルターを使用する場合 + wr.Runset( + entity="my-entity", + project="my-project", + filters="Config('learning_rate') = 0.001 and State = 'finished'" + ) + + # FilterExpr リストを使用する場合 + wr.Runset( + entity="my-entity", + project="my-project", + filters=[expr.Config("learning_rate") == 0.001] + ) + ``` + +--- + +### method `convert_filterexpr_list_to_string` + +```python +convert_filterexpr_list_to_string() +``` + +内部処理のために FilterExpr リストを文字列式に変換します。 + +--- + +## class `RunsetGroup` +runset のグループを表示する UI 要素。 + +**Attributes:** + + - `runset_name` (str): runset の名前。 + - `keys` (Tuple[RunsetGroupKey, ...]): グループ化の基準となるキー。1 つ以上の `RunsetGroupKey` オブジェクトを渡してグループ化します。 + +--- + +## class `RunsetGroupKey` +メトリクスタイプと値によって runset をグループ化します。`RunsetGroup` の一部です。グループ化の基準となるメトリクスタイプと値をキーと値のペアとして指定します。 + +**Attributes:** + + - `key` (Type[str] | Type[Config] | Type[SummaryMetric] | Type[Metric]): グループ化の基準となるメトリクスタイプ。 + - `value` (str): グループ化の基準となるメトリクスの値。 + +--- + +## class `ScalarChart` +スカラーチャートを表示するパネルオブジェクト。 + +**Attributes:** + + - `title` (Optional[str]): プロットの上部に表示されるテキスト。 + - `metric` (MetricType): Reports が情報を取得する W&B プロジェクトにログ記録されたメトリクスの名前。 + - `groupby_aggfunc` (Optional[GroupAgg]): 指定された関数で run を集計します。オプションには "mean"、"min"、"max"、"median"、"sum"、"samples"、または `None` があります。 + - `groupby_rangefunc` (Optional[GroupArea]): 範囲に基づいて run をグループ化します。オプションには "minmax"、"stddev"、"stderr"、"none"、"samples"、または `None` があります。 + - `custom_expressions` (Optional[LList[str]]): スカラーチャートで使用されるカスタム式のリスト。 + - `legend_template` (Optional[str]): 凡例のテンプレート。 + - `font_size Optional[FontSize]`: 折れ線グラフのフォントサイズ。オプションには "small"、"medium"、"large"、"auto"、または `None` があります。 + +--- + +## class `ScatterPlot` +2D または 3D 散布図を表示するパネルオブジェクト。 + +**引数:** + + - `title` (Optional[str]): プロットの上部に表示されるテキスト。 + - `x Optional[SummaryOrConfigOnlyMetric]`: Reports が情報を取得する W&B プロジェクトにログ記録されたメトリクスの名前。指定されたメトリクスは x 軸に使用されます。 + - `y Optional[SummaryOrConfigOnlyMetric]`: Reports が情報を取得する W&B プロジェクトにログ記録された 1 つ以上のメトリクス。指定されたメトリクスは y 軸内にプロットされます。 z Optional[SummaryOrConfigOnlyMetric]: + - `range_x` (Tuple[float | `None`, float | `None`]): x 軸の範囲を指定するタプル。 + - `range_y` (Tuple[float | `None`, float | `None`]): y 軸の範囲を指定するタプル。 + - `range_z` (Tuple[float | `None`, float | `None`]): z 軸の範囲を指定するタプル。 + - `log_x` (Optional[bool]): 10 を底とする対数スケールを使用して x 座標をプロットします。 + - `log_y` (Optional[bool]): 10 を底とする対数スケールを使用して y 座標をプロットします。 + - `log_z` (Optional[bool]): 10 を底とする対数スケールを使用して z 座標をプロットします。 + - `running_ymin` (Optional[bool]): 移動平均または移動平均を適用します。 + - `running_ymax` (Optional[bool]): 移動平均または移動平均を適用します。 + - `running_ymean` (Optional[bool]): 移動平均または移動平均を適用します。 + - `legend_template` (Optional[str]): 凡例の形式を指定する文字列。 + - `gradient` (Optional[LList[GradientPoint]]): プロットの色のグラデーションを指定するグラデーションポイントのリスト。 + - `font_size` (Optional[FontSize]): 折れ線グラフのフォントサイズ。オプションには "small"、"medium"、"large"、"auto"、または `None` があります。 + - `regression` (Optional[bool]): `True` の場合、散布図に回帰線がプロットされます。 + +--- + +## class `SoundCloud` +SoundCloud プレイヤーをレンダリングするブロック。 + +**Attributes:** + + - `html` (str): SoundCloud プレイヤーを埋め込むための HTML コード。 + +--- + +## class `Spotify` +Spotify プレイヤーをレンダリングするブロック。 + +**Attributes:** + + - `spotify_id` (str): トラックまたはプレイリストの Spotify ID。 + +--- + +## class `SummaryMetric` +レポートに表示されるサマリーメトリクス。 + +**Attributes:** + + - `name` (str): メトリクスの名前。 + +--- + +## class `TableOfContents` +レポートで指定された H1、H2、および H3 HTML ブロックを使用して、セクションとサブセクションのリストを含むブロック。 + +--- + +## class `TextWithInlineComments` +インラインコメント付きのテキストブロック。 + +**Attributes:** + + - `text` (str): ブロックのテキスト。 + +--- + +## class `Twitter` +Twitter フィードを表示するブロック。 + +**Attributes:** + + - `html` (str): Twitter フィードを表示するための HTML コード。 + +--- + +## class `UnorderedList` +箇条書きリスト内のアイテムリスト。 + +**Attributes:** + + - `items` (LList[TextLikeField]): 1 つ以上の `UnorderedListItem` オブジェクトのリスト。各アイテムは文字列または TextLike オブジェクトのリストにすることができます。 + +--- + +## class `UnorderedListItem` +順序なしリスト内のリストアイテム。 + +**Attributes:** + + - `text` (str): リストアイテムのテキスト。 + +--- + +## class `Video` +ビデオをレンダリングするブロック。 + +**Attributes:** + + - `url` (str): ビデオの URL。 + +--- + +## class `WeaveBlockArtifact` +W&B にログ記録されたアーティファクトを表示するブロック。クエリは次の形式を取ります。 + +```python +project('entity', 'project').artifact('artifact-name') +``` + +API 名に含まれる "Weave" という用語は、LLM の追跡と評価に使用される W&B Weave ツールキットを指すものではありません。 + +**Attributes:** + + - `entity` (str): アーティファクトが保存されているプロジェクトを所有している、または適切な権限を持つ entity。 + - `project` (str): アーティファクトが保存されているプロジェクト。 + - `artifact` (str): 取得するアーティファクトの名前。 + - `tab Literal["overview", "metadata", "usage", "files", "lineage"]`: アーティファクトパネルに表示するタブ。 + +--- + +## class `WeaveBlockArtifactVersionedFile` +W&B アーティファクトにログ記録されたバージョン付きファイルを表示するブロック。クエリは次の形式を取ります。 + +```python +project('entity', 'project').artifactVersion('name', 'version').file('file-name') +``` + +API 名に含まれる "Weave" という用語は、LLM の追跡と評価に使用される W&B Weave ツールキットを指すものではありません。 + +**Attributes:** + + - `entity` (str): アーティファクトが保存されているプロジェクトを所有している、または適切な権限を持つ entity。 + - `project` (str): アーティファクトが保存されているプロジェクト。 + - `artifact` (str): 取得するアーティファクトの名前。 + - `version` (str): 取得するアーティファクトのバージョン。 + - `file` (str): 取得するアーティファクトに保存されているファイルの名前。 + +--- + +## class `WeaveBlockSummaryTable` +W&B Table、pandas DataFrame、プロット、または W&B にログ記録されたその他の値を表示するブロック。クエリは次の形式を取ります。 + +```python +project('entity', 'project').runs.summary['value'] +``` + +API 名に含まれる "Weave" という用語は、LLM の追跡と評価に使用される W&B Weave ツールキットを指すものではありません。 + +**Attributes:** + + - `entity` (str): 値がログ記録されているプロジェクトを所有している、または適切な権限を持つ entity。 + - `project` (str): 値がログ記録されているプロジェクト。 + - `table_name` (str): テーブル、DataFrame、プロット、または値の名前。 + +--- + +## class `WeavePanel` +クエリを使用してカスタムコンテンツを表示するために使用できる空のクエリパネル。 + +API 名に含まれる "Weave" という用語は、LLM の追跡と評価に使用される W&B Weave ツールキットを指すものではありません。 + +--- + +## class `WeavePanelArtifact` +W&B にログ記録されたアーティファクトを表示するパネル。 + +API 名に含まれる "Weave" という用語は、LLM の追跡と評価に使用される W&B Weave ツールキットを指すものではありません。 + +**Attributes:** + + - `artifact` (str): 取得するアーティファクトの名前。 + - `tab Literal["overview", "metadata", "usage", "files", "lineage"]`: アーティファクトパネルに表示するタブ。 + +--- + +## class `WeavePanelArtifactVersionedFile` +W&B アーティファクトにログ記録されたバージョン付きファイルを表示するパネル。 + +```python +project('entity', 'project').artifactVersion('name', 'version').file('file-name') +``` + +API 名に含まれる "Weave" という用語は、LLM の追跡と評価に使用される W&B Weave ツールキットを指すものではありません。 + +**Attributes:** + + - `artifact` (str): 取得するアーティファクトの名前。 + - `version` (str): 取得するアーティファクトのバージョン。 + - `file` (str): 取得するアーティファクトに保存されているファイルの名前。 + +--- + +## class `WeavePanelSummaryTable` +W&B Table、pandas DataFrame、プロット、または W&B にログ記録されたその他の値を表示するパネル。クエリは次の形式を取ります。 + +```python +runs.summary['value'] +``` + +API 名に含まれる "Weave" という用語は、LLM の追跡と評価に使用される W&B Weave ツールキットを指すものではありません。 + +**Attributes:** + + - `table_name` (str): テーブル、DataFrame、プロット、または値の名前。 \ No newline at end of file diff --git a/ja/models/ref/wandb_workspaces/workspaces.mdx b/ja/models/ref/wandb_workspaces/workspaces.mdx new file mode 100644 index 0000000000..de027fd6ee --- /dev/null +++ b/ja/models/ref/wandb_workspaces/workspaces.mdx @@ -0,0 +1,310 @@ +--- +title: ワークスペース +--- +import { GitHubLink } from '/snippets/en/_includes/github-source-link.mdx'; + + + + +W&B Reports および Workspace API はパブリックプレビュー版です。 + + +W&B Workspace API をプログラムから操作するための Python ライブラリです。 + +```python +# インポート方法 +import wandb_workspaces.workspaces as ws + +# ワークスペース作成の例 +ws.Workspace( + name="Example W&B Workspace", + entity="entity", # ワークスペースを所有する entity + project="project", # ワークスペースが紐付く project + sections=[ + ws.Section( + name="Validation Metrics", + panels=[ + wr.LinePlot(x="Step", y=["val_loss"]), + wr.BarPlot(metrics=["val_accuracy"]), + wr.ScalarChart(metric="f1_score", groupby_aggfunc="mean"), + ], + is_open=True, + ), + ], +) +workspace.save() +``` + + + +## class `RunSettings` +runset(左側のサイドバー)内の run に関する設定。 + + + +**Attributes:** + + - `color` (str): UI 上での run の色。16進数(#ff0000)、CSS カラー名(red)、または RGB(rgb(255, 0, 0))で指定可能。 + - `disabled` (bool): run が非アクティブ(UI 上で目のアイコンが閉じている状態)かどうか。デフォルトは `False`。 + + + + + + + +--- + + + +## class `RunsetSettings` +Workspace 内の runset(run を含む左側のバー)の設定。 + + + +**Attributes:** + + - `query` (str): runset をフィルタリングするためのクエリ(正規表現を使用可能、次のパラメータ参照)。 + - `regex_query` (bool): 上記のクエリを正規表現として扱うかどうか。デフォルトは `False`。 + - `filters` (Union[str, LList[expr.FilterExpr]]): runset に適用するフィルタのリスト、または文字列式。 + - リスト形式の場合: フィルタは AND 条件で結合されます。フィルタの作成方法については FilterExpr を参照してください。 + - 文字列表記の場合: Python 風の式を使用します。例: "Config('lr') = 0.001 and State = 'finished'" + - `サポートされている演算子`: `=`, `==`, `!=`, `<`, `>`, `<=`, `>=`, `in`, `not in` + - `groupby` (LList[expr.MetricType]): runset でグループ化に使用するメトリクスのリスト。`Metric`, `Summary`, `Config`, `Tags`, `KeysInfo` のいずれかを設定。 + - `order` (LList[expr.Ordering]): runset に適用するメトリクスとソート順のリスト。 + - `run_settings` (Dict[str, RunSettings]): run 設定の辞書。キーは run の ID、値は RunSettings オブジェクト。 + - `pinned_columns` (LList[str]): ピン留めする列名のリスト。 + - `列名のフォーマット`: "run:displayName", "summary:metric", "config:param"。 + - `run`: displayName が存在しない場合は自動的に追加されます。 + - `例`: ["summary:accuracy", "summary:loss"] + + + +**Example:** + ```python + # 文字列フィルタを使用する場合 (新しい方法) + RunsetSettings( + filters="Config('learning_rate') = 0.001 and State = 'finished'", + pinned_columns=["summary:accuracy", "summary:loss"], + ) + + # FilterExpr リストを使用する場合 (従来の方法) + RunsetSettings( + filters=[expr.Config("learning_rate") == 0.001], + pinned_columns=["summary:accuracy", "summary:loss"], + ) + ``` + + + + +--- + + + +### method `convert_filterexpr_list_to_string` + +```python +convert_filterexpr_list_to_string() +``` + +FilterExpr リストを文字列式(統一された内部フォーマット)に変換します。 + +--- + + + +### method `validate_and_setup_columns` + +```python +validate_and_setup_columns() +``` + +run:displayName が存在することを確認し、内部の列フィールドをセットアップします。 + + + + +--- + + + +## class `Section` +Workspace 内のセクションを表します。 + + + +**Attributes:** + + - `name` (str): セクションの名前/タイトル。 + - `panels` (LList[PanelTypes]): セクション内のパネルの順序付きリスト。デフォルトでは、最初が左上、最後が右下になります。 + - `is_open` (bool): セクションが開いているか閉じているか。デフォルトは「閉じている」状態。 + - `pinned` (bool): セクションがピン留めされているかどうか。ピン留めされたセクションは Workspace の上部に表示されます。デフォルトは False。 + - `layout_settings` (SectionLayoutSettings): セクション内のパネルレイアウトの設定。 + - `panel_settings`: セクション内のすべてのパネルに適用されるパネルレベルの設定。`Workspace` に対する `WorkspaceSettings` と同様、`Section` に対して機能します。 + + + + + + + +--- + + + +## class `SectionLayoutSettings` +セクションのパネルレイアウト設定。通常、W&B App の Workspace UI のセクション右上に表示されるものに対応します。 + + + +**Attributes:** + + - `columns` (int): レイアウト内の列数。デフォルトは 3。 + - `rows` (int): レイアウト内の行数。デフォルトは 2。 + + + + + + + +--- + + + +## class `SectionPanelSettings` +セクション用のパネル設定。`Workspace` における `WorkspaceSettings` に相当します。 + +ここで適用された設定は、より詳細な Panel 設定によって上書きされる可能性があります。優先順位は Section < Panel です。 + + + +**Attributes:** + + - `x_axis` (str): X 軸のメトリクス名。デフォルトは "Step"。 + - `x_min Optional[float]`: X 軸の最小値。 + - `x_max Optional[float]`: X 軸の最大値。 + - `smoothing_type` (Literal['exponentialTimeWeighted', 'exponential', 'gaussian', 'average', 'none']): すべてのパネルに適用される平滑化(スムージング)のタイプ。 + - `smoothing_weight` (int): すべてのパネルに適用される平滑化の重み。 + + + + + + + +--- + + + +## class `Workspace` +セクション、設定、run セットの設定を含む W&B Workspace を表します。 + + + +**Attributes:** + + - `entity` (str): この Workspace が保存される entity(通常はユーザー名またはチーム名)。 + - `project` (str): この Workspace が保存される project。 + - `name`: Workspace の名前。 + - `sections` (LList[Section]): Workspace 内のセクションの順序付きリスト。最初のセクションが Workspace の最上部に表示されます。 + - `settings` (WorkspaceSettings): Workspace の設定。通常、UI 上の Workspace 上部で確認できる設定です。 + - `runset_settings` (RunsetSettings): Workspace 内の runset(run を含む左側のバー)の設定。 + - `auto_generate_panels` (bool): この project でログを記録したすべてのキーに対してパネルを自動生成するかどうか。デフォルトですべての利用可能なデータを可視化したい場合に推奨されます。これは Workspace 作成時にのみ設定可能で、後から変更することはできません。 + + +--- + +### property auto_generate_panels + + + + + +--- + +### property url + +W&B アプリ内の Workspace への URL。 + + + +--- + + + +### classmethod `from_url` + +```python +from_url(url: str) +``` + +URL から Workspace を取得します。 + +--- + + + +### method `save` + +```python +save() +``` + +現在の Workspace を W&B に保存します。 + + + +**Returns:** + + - `Workspace`: 保存された内部名と ID を持つ、更新された Workspace オブジェクト。 + +--- + + + +### method `save_as_new_view` + +```python +save_as_new_view() +``` + +現在の Workspace を新しいビューとして W&B に保存します。 + + + +**Returns:** + + - `Workspace`: 保存された内部名と ID を持つ、更新された Workspace オブジェクト。 + +--- + + + +## class `WorkspaceSettings` +Workspace の設定。通常、UI 上の Workspace 上部で確認できる設定です。 + +このオブジェクトには、X 軸、平滑化、外れ値、パネル、ツールチップ、run、およびパネルクエリバーの設定が含まれます。 + +ここで適用された設定は、より詳細な Section や Panel の設定によって上書きされる可能性があります。優先順位は Workspace < Section < Panel です。 + + + +**Attributes:** + + - `x_axis` (str): X 軸のメトリクス名。 + - `x_min` (Optional[float]): X 軸の最小値。 + - `x_max` (Optional[float]): X 軸の最大値。 + - `smoothing_type` (Literal['exponentialTimeWeighted', 'exponential', 'gaussian', 'average', 'none']): すべてのパネルに適用される平滑化のタイプ。 + - `smoothing_weight` (int): すべてのパネルに適用される平滑化の重み。 + - `ignore_outliers` (bool): すべてのパネルで外れ値を無視するかどうか。 + - `sort_panels_alphabetically` (bool): すべてのセクション内のパネルをアルファベット順にソートします。 + - `group_by_prefix` (Literal["first", "last"]): 最初または最後までのプレフィックスでパネルをグループ化します。デフォルトは `last`。 + - `remove_legends_from_panels` (bool): すべてのパネルから凡例を削除します。 + - `tooltip_number_of_runs` (Literal["default", "all", "none"]): ツールチップに表示する run の数。 + - `tooltip_color_run_names` (bool): ツールチップ内の run 名を runset の色と一致させるかどうか。デフォルトは `True`。 + - `max_runs` (int): パネルごとに表示する最大 run 数(runset 内の最初の N 個の run になります)。 + - `point_visualization_method` (Literal["line", "point", "line_point"]): ポイントの可視化方法。 + - `panel_search_query` (str): パネル検索バーのクエリ(正規表現を使用可能)。 + - `auto_expand_panel_search_results` (bool): パネル検索結果を自動的に展開するかどうか。 \ No newline at end of file diff --git a/ja/models/registry.mdx b/ja/models/registry.mdx new file mode 100644 index 0000000000..f02af2cba3 --- /dev/null +++ b/ja/models/registry.mdx @@ -0,0 +1,113 @@ +--- +title: Registry の概要 +description: 組織全体で artifact バージョンを管理・共有するための W&B Registry +--- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; + + + +W&B Registry は、組織内の [W&B Artifact バージョン](/models/artifacts/create-a-new-artifact-version) を管理する、厳選された中央リポジトリです。組織内で [権限を持つ](/models/registry/configure_registry/) Users は、所属するチームに関係なく、[アーティファクトのダウンロードと使用](/models/registry/download_use_artifact/)、共有、およびライフサイクル全体の共同管理が可能です。 + +Registry を使用して、アーティファクトバージョンの追跡、アーティファクトの使用履歴や変更の監査、ガバナンスとコンプライアンスの確保、および [モデル CI/CD などのダウンストリームプロセスのオートメーション化](/models/automations/) を行います。 + +まとめると、W&B Registry は以下の目的で使用されます: + +- 機械学習タスクの要件を満たすアーティファクトバージョンを、組織内の他の Users に [プロモート(昇進)](/models/registry/link_version/) させる。 +- [アーティファクトをタグで整理](/models/registry/organize-with-tags/) し、特定のアーティファクトを簡単に見つけたり参照したりできるようにする。 +- アーティファクトの [リネージ](/models/registry/lineage/) を追跡し、変更履歴を監査する。 +- モデル CI/CD などのダウンストリームプロセスを [オートメーション化](/models/automations/) する。 +- 各 Registry 内のアーティファクトに [アクセスできる組織内の Users](/models/registry/configure_registry/) を管理する。 + +{/* - エイリアスと呼ばれる一意の識別子を使用して、重要なアーティファクトを迅速に検索または参照します。 */} + +以下の画像は、W&B Registry のランディングページです。`Model` という名前の Registry がスター付きで表示されています。`DemoModels` と `Zoo_Classifier_Models` という2つのコレクションが表示されています。 + + + W&B Registry + + +## 基本事項を学ぶ +各組織には、モデルとデータセットのアーティファクトを整理するために最初から使用できる、**Models** と **Datasets** という2つの Registry が用意されています。[組織のニーズに基づいて、他のアーティファクトタイプを整理するための追加の Registry を作成する](/models/registry/create_registry) ことも可能です。 + +各 [*Registry*](/models/registry/configure_registry/) は、1つまたは複数の [*コレクション*](/models/registry/create_collection/) で構成されます。各コレクションは、特定のタスクまたはユースケースを表します。 + +{/* + W&B Registry + */} + +Registry にアーティファクトを追加するには、まず [特定のアーティファクトバージョンを W&B にログ](/models/artifacts/create-a-new-artifact-version/) します。アーティファクトをログするたびに、W&B は自動的にそのアーティファクトにバージョンを割り当てます。アーティファクトバージョンは 0 インデックスを使用するため、最初のバージョンは `v0`、2番目のバージョンは `v1` のようになります。 + +W&B にアーティファクトをログしたら、その特定のアーティファクトバージョンを Registry 内のコレクションにリンクできます。 + + +「リンク」という用語は、W&B がアーティファクトを保存している場所と、Registry 内でアーティファクトにアクセスできる場所を繋ぐポインタを指します。アーティファクトをコレクションにリンクしても、W&B がアーティファクトを複製することはありません。 + + +例として、次のコード例では、`"my_model.txt"` というモデルアーティファクトをログし、`"model"` という名前の Registry 内の `"first-collection"` というコレクションにリンクします。 + +1. `wandb.init()` で W&B Run を初期化します。 +2. `wandb.Run.log()` でアーティファクトを W&B にログします。 +3. リンク先のコレクション名と Registry 名を指定します。 +4. `wandb.Run.link_artifact()` を使用して、アーティファクトをコレクションにリンクします。 + +この Python コードをスクリプトとして保存し、実行してください。W&B Python SDK バージョン 0.18.6 以降が必要です。 + +```python title="hello_collection.py" +import wandb +import random + +# アーティファクトを追跡するために W&B Run を初期化 +with wandb.init(project="registry_quickstart") as run: + # ログするためのシミュレーション用モデルファイルを作成 + with open("my_model.txt", "w") as f: + f.write("Model: " + str(random.random())) + + # アーティファクトを W&B にログ + logged_artifact = run.log_artifact( + artifact_or_path="./my_model.txt", + name="gemma-finetuned", + type="model" # アーティファクトタイプを指定 + ) + + # 公開先のコレクション名と Registry 名を指定 + COLLECTION_NAME = "first-collection" + REGISTRY_NAME = "model" + + # アーティファクトを Registry にリンク + run.link_artifact( + artifact=logged_artifact, + target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" + ) +``` + +指定した Registry 内に、`wandb.Run.link_artifact(target_path = "")` メソッドで指定したコレクションが存在しない場合、W&B は自動的にコレクションを作成します。 + +前の例の続きとして、スクリプトを実行した後、W&B Registry に移動して、あなたや組織の他のメンバーが公開したアーティファクトバージョンを確認してください。左サイドバーの **Applications** の下にある **Registry** を選択します。`"Model"` Registry を選択します。Registry 内に、リンクされたアーティファクトバージョンを含む `"first-collection"` コレクションが表示されます。 + +アーティファクトバージョンを Registry 内のコレクションにリンクすると、適切な権限を持つ組織のメンバーは、アーティファクトバージョンの [表示](/models/registry/lineage)、[ダウンロード](/models/registry/search_registry)、[整理](/models/registry/organize-with-tags)、管理、およびダウンストリームのオートメーションの作成などを行うことができます。 + + +アーティファクトバージョンがメトリクスをログしている場合(`wandb.Run.log_artifact()` などを使用)、そのバージョンの詳細ページからメトリクスを確認したり、コレクションのページからアーティファクトバージョン間でメトリクスを比較したりできます。[Registry 内のリンクされたアーティファクトを表示する](/models/registry/link_version/#view-linked-artifacts-in-a-registry) を参照してください。 + + +## W&B Registry を有効にする + +デプロイメントタイプに応じて、W&B Registry を有効にするために以下の条件を満たしてください: + +| デプロイメントタイプ | 有効化の方法 | +| ----- | ----- | +| マルチテナントクラウド | アクションは不要です。W&B App で W&B Registry を利用可能です。 | +| 専用クラウド | デプロイメントで W&B Registry を有効にするには、担当チームにお問い合わせください。 | +| セルフマネージド | Server v0.70.0 以降の場合、アクションは不要です。それ以前のサポート対象 Server バージョンの場合は、環境変数 `ENABLE_REGISTRY_UI` を `true` に設定してください。[環境変数の設定](/platform/hosting/env-vars) を参照してください。 | + + +## はじめるためのリソース + +ユースケースに応じて、W&B Registry を使い始めるために以下のリソースを活用してください: + +* チュートリアルビデオを見る: + * [W&B Registry 入門](https://www.youtube.com/watch?v=p4XkVOsjIeM) +* W&B [Model CI/CD](https://www.wandb.courses/courses/enterprise-model-management) コースを受講して以下を学びます: + * W&B Registry を使用してアーティファクトの管理とバージョニング、リネージの追跡、およびライフサイクルの各段階へのモデルのプロモートを行う方法。 + * Webhook を使用してモデル管理ワークフローをオートメーション化する方法。 + * モデルの評価、モニタリング、デプロイメントのために、Registry を外部の機械学習システムやツールと統合する方法。 \ No newline at end of file diff --git a/ja/models/registry/aliases.mdx b/ja/models/registry/aliases.mdx new file mode 100644 index 0000000000..deac95e682 --- /dev/null +++ b/ja/models/registry/aliases.mdx @@ -0,0 +1,168 @@ +--- +title: エイリアスを使用して Artifact の バージョン を参照する +--- + +1つ以上のエイリアスを使用して、特定の [artifact version](/models/artifacts/create-a-new-artifact-version/) を参照できます。[W&B は、同じ名前でリンクされた各 Artifacts に対してエイリアスを自動的に割り当てます](/models/registry/aliases/#default-aliases)。また、特定の artifact version を参照するために、1つ以上の [カスタムエイリアスを作成する](/models/registry/aliases/#custom-aliases) ことも可能です。 + +エイリアスは、Registry UI 上でそのエイリアス名が書かれた長方形として表示されます。[エイリアスが保護されている](/models/registry/aliases/#protected-aliases) 場合、鍵アイコン付きのグレーの長方形で表示されます。それ以外の場合、エイリアスはオレンジ色の長方形で表示されます。エイリアスはレジストリ間で共有されません。 + + +**エイリアスとタグの使い分け** + +特定の artifact version を参照するには、エイリアスを使用します。コレクション内の各エイリアスは一意です。一度に特定のエイリアスを持てる artifact version は1つだけです。 + +共通のテーマに基づいて artifact version やコレクションを整理・グループ化するには、タグを使用します。複数の artifact version やコレクションで同じタグを共有できます。 + + +artifact version にエイリアスを追加すると、任意で [Registry オートメーション](/models/automations/automation-events/#registry) を開始して、Slack チャンネルに通知したり、Webhook をトリガーしたりできます。 + +## デフォルトエイリアス + +W&B は、同じ名前でリンクされた各 artifact version に対して、以下のエイリアスを自動的に割り当てます。 + +* `latest` エイリアス:コレクションにリンクされた最新の artifact version。 +* 一意のバージョン番号:W&B はリンクされた各 artifact version を(0から始まるインデックスで)カウントします。W&B はそのカウント数を使用して、その Artifacts に一意のバージョン番号を割り当てます。 + +例えば、`zoo_model` という名前の Artifacts を3回リンクした場合、W&B はそれぞれ `v0`、`v1`、`v2` という3つのエイリアスを作成します。`v2` には `latest` エイリアスも付与されます。 + +## カスタムエイリアス + +独自の ユースケース に基づいて、特定の artifact version に対して1つ以上のカスタムエイリアスを作成できます。例えば: + +- モデルがどの データセット でトレーニングされたかを識別するために、`dataset_version_v0`、`dataset_version_v1`、`dataset_version_v2` といったエイリアスを使用できます。 +- 最もパフォーマンスの高い Artifacts モデルバージョンを追跡するために、`best_model` エイリアスを使用できます。 + +レジストリに対して [**Member** または **Admin** のレジストリロール](/models/registry/configure_registry/#registry-roles) を持つ Users は、そのレジストリ内のリンクされた Artifacts に対してカスタムエイリアスを追加または削除できます。[**Restricted Viewer** または **Viewer** ロール](/models/registry/configure_registry/#registry-roles) を持つ Users は、エイリアスの追加や削除はできません。 + + +[保護されたエイリアス](/models/registry/aliases/#protected-aliases) は、変更や削除から保護すべき artifact version をラベル付けして識別する方法を提供します。 + + +カスタムエイリアスは、W&B Registry または Python SDK で作成できます。ニーズに合わせて、以下のタブをクリックしてください。 + + + +1. W&B Registry に移動します。 +2. コレクション内の **View details** ボタンをクリックします。 +3. **Versions** セクション内で、特定の artifact version の **View** ボタンをクリックします。 +4. **Aliases** フィールドの隣にある **+** ボタンをクリックして、1つ以上のエイリアスを追加します。 + + +Python SDK を使用して artifact version をコレクションにリンクする場合、[`link_artifact()`](/models/ref/python/experiments/run.md/#link_artifact) の `alias` 引数に1つ以上のエイリアスのリストをオプションで渡すことができます。提供したエイリアスがまだ存在しない場合、W&B は新しいエイリアス([保護されていないエイリアス](#custom-aliases))を作成します。 + +以下の コードスニペット は、Python SDK を使用して artifact version をコレクションにリンクし、その artifact version にエイリアスを追加する方法を示しています。`<>` 内の 値 は適宜置き換えてください。 + +```python +import wandb + +# run を初期化 +with wandb.init(entity = "", project = "") as run: + + # Artifact オブジェクトを作成 + # type 引数は artifact オブジェクトのタイプと + # コレクションのタイプの両方を指定します + artifact = wandb.Artifact(name = "", type = "") + + # ファイルを artifact オブジェクトに追加 + # ローカルマシンのファイルへのパスを指定します + artifact.add_file(local_path = "") + + # Artifact をリンクするコレクションとレジストリを指定 + REGISTRY_NAME = "" + COLLECTION_NAME = "" + target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" + + # artifact version をコレクションにリンク + # この artifact version に1つ以上のエイリアスを追加 + run.link_artifact( + artifact = artifact, + target_path = target_path, + aliases = ["", ""] + ) +``` + + + +### 保護されたエイリアス +[保護されたエイリアス](/models/registry/aliases/#protected-aliases) を使用すると、変更や削除をすべきではない artifact version をラベル付けして識別できます。例えば、組織の機械学習 プロダクション パイプライン で使用されている artifact version を識別するために、`production` という保護されたエイリアスを使用することが考えられます。 + +[Registry admin](/models/registry/configure_registry/#registry-roles) ユーザーおよび **Admin** ロールを持つ [サービスアカウント](/models/support/service_account_useful/) は、保護されたエイリアスを作成したり、artifact version に対して保護されたエイリアスを追加・削除したりできます。**Member**、**Viewer**、**Restricted Viewer** ロールを持つ Users やサービスアカウントは、保護されたバージョンをアンリンクしたり、保護されたエイリアスを含むコレクションを削除したりすることはできません。詳細は [レジストリアクセスの設定](/models/registry/configure_registry/) を参照してください。 + +一般的な保護されたエイリアスには以下が含まれます。 + +- **Production**: artifact version が本番環境で使用可能な状態であること。 +- **Staging**: artifact version がテスト可能な状態であること。 + +#### 保護されたエイリアスの作成 + +以下の手順は、W&B Registry UI で保護されたエイリアスを作成する方法を説明したものです。 + +1. W&B Registry に移動します。 +2. レジストリを選択します。 +3. ページ右上の歯車ボタンをクリックして、レジストリの 設定 を表示します。 +4. **Protected Aliases** セクション内で、**+** ボタンをクリックして1つ以上の保護されたエイリアスを追加します。 + +作成後、各保護されたエイリアスは **Protected Aliases** セクションに鍵アイコン付きのグレーの長方形として表示されます。 + + +保護されていないカスタムエイリアスとは異なり、保護されたエイリアスの作成は W&B Registry UI でのみ可能であり、Python SDK を使用してプログラムで行うことはできません。artifact version への保護されたエイリアスの追加は、W&B Registry UI または Python SDK の両方で行えます。 + + +以下の手順は、W&B Registry UI を使用して artifact version に保護されたエイリアスを追加する方法を説明したものです。 + +1. W&B Registry に移動します。 +2. コレクション内の **View details** ボタンをクリックします。 +3. **Versions** セクション内で、特定の artifact version の **View** ボタンを選択します。 +4. **Aliases** フィールドの隣にある **+** ボタンをクリックして、1つ以上の保護されたエイリアスを追加します。 + +保護されたエイリアスが作成された後は、Admin が Python SDK を使用してプログラムから artifact version に追加できます。artifact version に保護されたエイリアスを追加する例については、上記の [カスタムエイリアスの作成](#custom-aliases) セクションの W&B Registry および Python SDK タブを参照してください。 + +## 既存のエイリアスの検索 +[W&B Registry のグローバル検索バー](/models/registry/search_registry/#search-for-registry-items) を使用して、既存のエイリアスを検索できます。保護されたエイリアスを検索するには: + +1. W&B Registry に移動します。 +2. ページ上部の検索バーに検索語を指定します。Enter キーを押して検索します。 + +指定した用語が既存のレジストリ名、コレクション名、artifact version タグ、コレクションタグ、またはエイリアスと一致する場合、検索バーの下に検索結果が表示されます。 + +## 例 + + +以下のコード例は、こちらの [W&B Registry チュートリアルノートブック](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/wandb_registry/zoo_wandb.ipynb) の続きです。以下のコードを使用するには、まず [ノートブックの説明に従って Zoo データセットを取得して処理](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/wandb_registry/zoo_wandb.ipynb#scrollTo=87fecd29-8146-41e2-86fb-0bb4e3e3350a) する必要があります。Zoo データセットを取得したら、artifact version を作成してカスタムエイリアスを追加できます。 + + +以下の コードスニペット は、artifact version を作成し、それにカスタムエイリアスを追加する方法を示しています。この例では、[UCI Machine Learning Repository](https://archive.ics.uci.edu/dataset/111/zoo) の Zoo データセット と、`Zoo_Classifier_Models` レジストリ内の `Model` コレクションを使用します。 + +```python +import wandb + +# run を初期化 +with wandb.init(entity = "smle-reg-team-2", project = "zoo_experiment") as run: + + # Artifact オブジェクトを作成 + # type 引数は artifact オブジェクトのタイプと + # コレクションのタイプの両方を指定します + artifact = wandb.Artifact(name = "zoo_dataset", type = "dataset") + + # ファイルを artifact オブジェクトに追加 + # ローカルマシンのファイルへのパスを指定します + artifact.add_file(local_path="zoo_dataset.pt", name="zoo_dataset") + artifact.add_file(local_path="zoo_labels.pt", name="zoo_labels") + + # Artifact をリンクするコレクションとレジストリを指定 + REGISTRY_NAME = "Model" + COLLECTION_NAME = "Zoo_Classifier_Models" + target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" + + # artifact version をコレクションにリンク + # この artifact version に1つ以上のエイリアスを追加 + run.link_artifact( + artifact = artifact, + target_path = target_path, + aliases = ["production-us", "production-eu"] + ) +``` + +1. 最初に、Artifact オブジェクトを作成します (`wandb.Artifact()`)。 +2. 次に、`wandb.Artifact.add_file()` を使用して、2つの データセット PyTorch テンソルを Artifact オブジェクトに追加します。 +3. 最後に、`link_artifact()` を使用して、artifact version を `Zoo_Classifier_Models` レジストリ内の `Model` コレクションにリンクします。また、`aliases` 引数に `production-us` と `production-eu` を渡すことで、artifact version に2つのカスタムエイリアスを追加します。 \ No newline at end of file diff --git a/ja/models/registry/configure_registry.mdx b/ja/models/registry/configure_registry.mdx new file mode 100644 index 0000000000..f285a7f125 --- /dev/null +++ b/ja/models/registry/configure_registry.mdx @@ -0,0 +1,172 @@ +--- +title: Registry へのアクセスを設定する +--- + +レジストリ管理者は、レジストリの設定を構成することで、[レジストリロールの設定](/models/registry/configure_registry/#configure-registry-roles)、[ユーザーの追加](/models/registry/configure_registry/#add-a-user-or-a-team-to-a-registry)、またはレジストリからの [ユーザーの削除](/models/registry/configure_registry/#remove-a-user-or-team-from-a-registry) を行うことができます。 + +## ユーザーの管理 + +### ユーザーまたはチームの追加 + +レジストリ管理者は、個別の Users または Teams 全体をレジストリに追加できます。ユーザーまたはチームをレジストリに追加するには: + +1. W&B Registry に移動します。 +2. ユーザーまたはチームを追加したいレジストリを選択します。 +3. 右上隅にあるギアアイコンをクリックして、レジストリ設定にアクセスします。 +4. **Registry access** セクションで、**Add access** をクリックします。 +5. **Include users and teams** フィールドに、1つ以上のユーザー名、メールアドレス、またはチーム名を指定します。 +6. **Add access** をクリックします。 + + + Adding teams to registry + + +[レジストリでのユーザーロールの設定](/models/registry/configure_registry/#configure-registry-roles) や [レジストリロールの権限](/models/registry/configure_registry/#registry-role-permissions) についての詳細もあわせてご確認ください。 + +### ユーザーまたはチームの削除 +レジストリ管理者は、個別の Users または Teams 全体をレジストリから削除できます。ユーザーまたはチームをレジストリから削除するには: + +1. W&B Registry ( https://wandb.ai/registry/ ) に移動します。 +2. ユーザーを削除したいレジストリを選択します。 +3. 右上隅にあるギアアイコンをクリックして、レジストリ設定にアクセスします。 +4. **Registry access** セクションに移動し、削除したいユーザー名、メールアドレス、またはチーム名を入力します。 +5. **Delete** ボタンをクリックします。 + + +チームからユーザーを削除すると、そのユーザーのレジストリへのアクセス権も削除されます。 + + +### レジストリのオーナーの変更 + +レジストリ管理者は、**Restricted Viewer** や **Viewer** を含む、任意のメンバーをレジストリのオーナーとして指名できます。レジストリの所有権は主に責任の所在を明確にするためのものであり、ユーザーに割り当てられたロールによって付与される権限以上の追加権限を与えるものではありません。 + +オーナーを変更するには: +1. W&B Registry ( https://wandb.ai/registry/ ) に移動します。 +2. 設定したいレジストリを選択します。 +3. 右上隅にあるギアアイコンをクリックします。 +4. **Registry members and roles** セクションまでスクロールします。 +5. メンバーの行にマウスを合わせます。 +6. 行の末尾にある **...** アクションメニューをクリックし、**Make owner** をクリックします。 + + +## レジストリロールの設定 (Configure Registry roles) + +このセクションでは、レジストリメンバーのロールを設定する方法を説明します。各ロールの機能、優先順位、デフォルト値など、レジストリロールの詳細については、[レジストリロールの詳細](#details-about-registry-roles) を参照してください。 + +1. W&B Registry ( https://wandb.ai/registry/ ) に移動します。 +2. 設定したいレジストリを選択します。 +3. 右上隅にあるギアアイコンをクリックします。 +4. **Registry members and roles** セクションまでスクロールします。 +5. **Member** フィールド内で、権限を編集したいユーザーまたはチームを検索します。 +6. **Registry role** カラムで、ユーザーの現在のロールをクリックします。 +7. ドロップダウンから、ユーザーに割り当てたいロールを選択します。 + +## レジストリロールの詳細 + +以下のセクションでは、レジストリロールの詳細について説明します。 + + +[チーム内でのロール](/platform/app/settings-page/teams/#team-roles-and-permissions) は、レジストリ内でのロールとは一切関係がなく、影響も与えません。 + + +### デフォルトロール +W&B は、ユーザーまたはチームがレジストリに追加される際、自動的にデフォルトの **registry role** を割り当てます。このロールによって、そのレジストリ内で何ができるかが決まります。 + +| Entity | デフォルトの registry role
(専用クラウド / セルフマネージド) | デフォルトの registry role
(マルチテナントクラウド) | +|----------------------------------------|---------------------------------------------------------------------------|------------------------------------------------------------| +| Team | Restricted Viewer (Server v0.75.0+)
Viewer (Server v0.74.x 以下) | Restricted Viewer | +| ユーザーまたはサービスアカウント (管理者以外) | Restricted Viewer (Server v0.75.0+)
Viewer (Server v0.74.x 以下) | Restricted Viewer | +| サービスアカウント (管理者以外) | Member1 | Member1 | +| Org admin | Admin | Admin | + +1: サービスアカウントに **Viewer** または **Restricted Viewer** ロールを割り当てることはできません。 + +レジストリ管理者は、レジストリ内のユーザーやチームに対してロールを割り当てたり変更したりできます。詳細については、[レジストリでのユーザーロールの設定](/models/registry/configure_registry/#configure-registry-roles) を参照してください。 + +### ロールの権限 +以下の表は、各レジストリロールと、それぞれのロールに提供される権限をリストしたものです。 + +| 権限 | 権限グループ | Restricted Viewer
(マルチテナントクラウド、招待による) | Viewer | Member | Admin | +|-----------------------------------------------------------------------------------------------------------------------|------------------|------------------------------------------------------------|:------:|:------:|:-----:| +| コレクションの詳細を表示する | Read | ✓ | ✓ | ✓ | ✓ | +| リンクされたアーティファクトの詳細を表示する | Read | ✓ | ✓ | ✓ | ✓ | +| 使用方法: `use_artifact` でレジストリ内のアーティファクトを利用する | Read | | ✓ | ✓ | ✓ | +| リンクされたアーティファクトをダウンロードする | Read | | ✓ | ✓ | ✓ | +| アーティファクトのファイルビューアーからファイルをダウンロードする | Read | | ✓ | ✓ | ✓ | +| レジストリを検索する | Read | ✓ | ✓ | ✓ | ✓ | +| レジストリの設定とユーザーリストを表示する | Read | ✓ | ✓ | ✓ | ✓ | +| コレクションに対して新しいオートメーションを作成する | Create | | | ✓ | ✓ | +| 新しいバージョンが追加された際の Slack 通知をオンにする | Create | | | ✓ | ✓ | +| 新しいコレクションを作成する | Create | | | ✓ | ✓ | +| 新しいレジストリを作成する | Create | | | ✓ | ✓ | +| コレクションカード(説明)を編集する | Update | | | ✓ | ✓ | +| リンクされたアーティファクトの説明を編集する | Update | | | ✓ | ✓ | +| コレクションのタグを追加または削除する | Update | | | ✓ | ✓ | +| リンクされたアーティファクトからエイリアスを追加または削除する | Update | | | ✓ | ✓ | +| リンクされたアーティファクトから [保護されたエイリアス](/models/registry/aliases#protected-aliases) を追加または削除する | Update | | | | ✓ | +| [保護されたエイリアス](/models/registry/aliases#protected-aliases) を作成または削除する | Update | | | | ✓ | +| 新しいアーティファクトをリンクする | Update | | | ✓ | ✓ | +| レジストリの許可されたタイプ(Allowed types)リストを編集する | Update | | | ✓ | ✓ | +| レジストリ名を編集する | Update | | | ✓ | ✓ | +| コレクションを削除する | Delete | | | ✓ | ✓ | +| オートメーションを削除する | Delete | | | ✓ | ✓ | +| レジストリからアーティファクトのリンクを解除する | Delete | | | ✓ | ✓ | +| レジストリで受け入れられるアーティファクトタイプを編集する | Admin | | | | ✓ | +| レジストリの公開範囲(組織または制限付き)を変更する | Admin | | | | ✓ | +| レジストリにユーザーを追加する | Admin | | | | ✓ | +| レジストリ内でのユーザーロールを割り当て、または変更する | Admin | | | | ✓ | + +### 継承されたレジストリロール +レジストリのメンバーリストには、各ユーザーの継承された(有効な)レジストリロールが、各行のロール選択ドロップダウンの横に(薄い灰色で)表示されます。 + + + Registry membership list showing the user's effective registry role + + +特定のレジストリにおけるユーザーの有効なロールは、組織内、レジストリ内、およびレジストリを所有するチーム内でのロール(継承されたもの、または明示的に割り当てられたもの)の中で、最も _高い_ ロールと一致します。例: + +- チームの **Admin** または組織の **Admin** が、そのチームが所有する特定のレジストリで **Viewer** ロールを持っている場合、実質的にはそのレジストリの **Admin** となります。 +- レジストリの **Viewer** であり、チーム内で **Member** ロールを持っている場合、実質的にはそのレジストリの **Member** となります。 +- チームの **Viewer** であり、特定のレジストリで **Member** ロールを持っている場合、実質的にはそのレジストリの **Member** となります。 + +### Restricted Viewer ロールの詳細 +**Restricted Viewer** ロールは一般公開(GA)されています。専用クラウドおよびセルフマネージドの場合、Server v0.75.0 以降が必要です。 + +このロールは、レジストリアーティファクトへの読み取り専用アクセスを提供しますが、コレクション、オートメーション、またはその他のレジストリリソースを作成、更新、または削除することはできません。 + +**Viewer** とは異なり、**Restricted Viewer** は以下のことができません: +- アーティファクトファイルのダウンロードやファイル内容へのアクセス。 +- W&B SDK での `wandb.Run.use_artifact()` を使用したアーティファクトの利用。 + +#### SDK の互換性 + + + +**SDK バージョンの要件** + +**Restricted Viewer** として W&B SDK を使用してアーティファクトにアクセスするには、W&B SDK バージョン 0.19.9 以上を使用する必要があります。それ以前のバージョンでは、一部の SDK コマンドで権限エラーが発生します。 + + + +**Restricted Viewer** が SDK を使用する場合、特定の機能が利用できないか、動作が異なります。 + +以下のメソッドは利用できず、権限エラーが発生します: +- [`Run.use_artifact()`](/models/ref/python/experiments/run/#method-runuse_artifact) +- [`Artifact.download()`](/models/ref/python/experiments/artifact/#method-artifactdownload) +- [`Artifact.file()`](/models/ref/python/experiments/artifact/#method-artifactfile) +- [`Artifact.files()`](/models/ref/python/experiments/artifact/#method-artifactfiles) + +以下のメソッドは、アーティファクトのメタデータへのアクセスに限定されます: +- [`Artifact.get_entry()`](/models/ref/python/experiments/artifact/#method-artifactget_entry) +- [`Artifact.get_path()`](/models/ref/python/experiments/artifact/#method-artifactget_path) +- [`Artifact.get()`](/models/ref/python/experiments/artifact/#method-artifactget) +- [`Artifact.verify()`](/models/ref/python/experiments/artifact/#method-artifactverify) + +### レジストリをまたぐ権限 + +ユーザーはレジストリごとに異なるロールを持つことができます。例えば、Registry A では **Restricted Viewer** であっても、Registry B では **Viewer** であるといったことが可能です。この場合: + +- 両方のレジストリにリンクされている同じアーティファクトであっても、アクセスレベルは異なります。 +- Registry A では、ユーザーは **Restricted Viewer** であり、ファイルをダウンロードしたりアーティファクトを使用したりすることはできません。 +- Registry B では、ユーザーは **Viewer** であり、ファイルをダウンロードしたりアーティファクトを使用したりすることができます。 +- つまり、アクセス権限は、そのアーティファクトが「どのレジストリ経由で」アクセスされているかによって決定されます。 \ No newline at end of file diff --git a/ja/models/registry/create_collection.mdx b/ja/models/registry/create_collection.mdx new file mode 100644 index 0000000000..23567bc3fd --- /dev/null +++ b/ja/models/registry/create_collection.mdx @@ -0,0 +1,157 @@ +--- +title: コレクションの作成 +--- + +*コレクション* とは、レジストリ内にある、リンクされた一連の Artifact バージョンの集合です。各コレクションは、特定のタスクやユースケースを表します。 + +例えば、1つのレジストリ内に複数のコレクションを持つことができます。それぞれのコレクションには、MNIST、CIFAR-10、ImageNet などの異なるデータセットが含まれます。 + +別の例として、「chatbot」という名前のレジストリがあり、その中にモデルの Artifact 用のコレクション、データセットの Artifact 用のコレクション、そして fine-tune されたモデルの Artifact 用のコレクションをそれぞれ持つこともできます。 + +レジストリとそのコレクションをどのように構成するかは、ユーザー次第です。 + + +W&B モデルレジストリ(Model Registry)に慣れている方は、Registered Models についてご存知かもしれません。モデルレジストリにおける Registered Models は、W&B Registry ではコレクションと呼ばれるようになりました。 + + +## コレクションのタイプ + +各コレクションは、1つ、かつ1つだけの Artifact *タイプ* を受け入れます。指定したタイプによって、あなたや組織の他のメンバーがそのコレクションにリンクできる Artifact の種類が制限されます。 + + +Artifact のタイプは、Python などのプログラミング言語におけるデータ型のようなものだと考えることができます。この例えでは、コレクションは文字列、整数、または浮動小数点を格納できますが、これらのデータ型を混ぜて格納することはできません。 + + +例えば、「dataset」という Artifact タイプを受け入れるコレクションを作成したとします。これは、今後このコレクションにリンクできるのは、タイプが「dataset」である Artifact バージョンのみであることを意味します。同様に、モデルの Artifact タイプのみを受け入れるコレクションには、タイプが「model」の Artifact のみをリンクできます。 + + +Artifact オブジェクトを作成する際に、Artifact のタイプを指定します。`wandb.Artifact()` 内の `type` フィールドに注目してください。 + +```python +import wandb + +# run を初期化 +with wandb.init( + entity = "", + project = "" + ) as run: + + # artifact オブジェクトを作成 + artifact = wandb.Artifact( + name="", + type="" + ) +``` + + +コレクションを作成する際、事前定義された Artifact タイプのリストから選択できます。利用可能な Artifact タイプは、そのコレクションが属するレジストリによって異なります。 + +Artifact をコレクションにリンクしたり、新しいコレクションを作成したりする前に、[そのコレクションが受け入れる Artifact のタイプを確認](#コレクションが受け入れる artifact のタイプを確認する) してください。 + +### コレクションが受け入れる Artifact のタイプを確認する + +コレクションにリンクする前に、そのコレクションが受け入れる Artifact タイプを確認してください。コレクションが受け入れる Artifact タイプは、W&B Python SDK を使用してプログラムで確認するか、W&B App を使用してインタラクティブに確認できます。 + + +その Artifact タイプを受け入れないコレクションに Artifact をリンクしようとすると、エラーメッセージが表示されます。 + + + + +受け入れ可能な Artifact タイプは、ホームページのレジストリカード、またはレジストリの設定ページ内で確認できます。 + +どちらの方法でも、まず W&B Registry に移動します。 + +W&B Registry のホームページ内では、該当するレジストリのレジストリカードまでスクロールすることで、受け入れ可能な Artifact タイプを確認できます。レジストリカード内の灰色の横長楕円形に、そのレジストリが受け入れる Artifact タイプがリストされています。 + + + Artifact types selection + + +例えば、以下の画像は W&B Registry ホームページ上の複数のレジストリカードを示しています。**Model** レジストリカード内には、**model** と **model-new** という2つの Artifact タイプが表示されています。 + +レジストリの設定ページ内で受け入れ可能な Artifact タイプを確認するには: + +1. 設定を表示したいレジストリカードをクリックします。 +2. 右上隅の歯車アイコンをクリックします。 +3. **Accepted artifact types** フィールドまでスクロールします。 + + +W&B Python SDK を使用して、レジストリが受け入れる Artifact タイプをプログラムで表示します。 + +```python +import wandb + +registry_name = "" +artifact_types = wandb.Api().project(name=f"wandb-registry-{registry_name}").artifact_types() +print(artifact_type.name for artifact_type in artifact_types) +``` + + +以下のコードスニペットでは run を初期化していないことに注意してください。これは、W&B API のクエリのみを行い、実験や Artifact などのトラッキングを行わない場合は、run を作成する必要がないためです。 + + + + +コレクションが受け入れる Artifact のタイプがわかったら、[コレクションを作成](#コレクションを作成する) することができます。 + +## コレクションを作成する + +レジストリ内にコレクションをインタラクティブに、またはプログラムで作成します。コレクションを作成した後に、そのコレクションが受け入れる Artifact のタイプを変更することはできません。 + +### プログラムでコレクションを作成する + +`wandb.Run.link_artifact()` メソッドを使用して、Artifact をコレクションにリンクします。`target_path` フィールドに、コレクションとレジストリの両方を以下の形式のパスとして指定します: + +```python +f"wandb-registry-{registry_name}/{collection_name}" +``` + +ここで、`registry_name` はレジストリの名前、`collection_name` はコレクションの名前です。レジストリ名の前に必ず `wandb-registry-` という接頭辞を付けてください。 + + +存在しないコレクションに Artifact をリンクしようとすると、W&B は自動的にコレクションを作成します。すでに存在するコレクションを指定した場合は、W&B はその既存のコレクションに Artifact をリンクします。 + + +以下のコードスニペットは、プログラムでコレクションを作成する方法を示しています。`<>` で囲まれた各値は、自身の値に置き換えてください。 + +```python +import wandb + +# run を初期化 +with wandb.init(entity = "", project = "") as run: + + # artifact オブジェクトを作成 + artifact = wandb.Artifact( + name = "", + type = "" + ) + + registry_name = "" + collection_name = "" + target_path = f"wandb-registry-{registry_name}/{collection_name}" + + # artifact をコレクションにリンク + run.link_artifact(artifact = artifact, target_path = target_path) +``` + +### インタラクティブにコレクションを作成する + +以下の手順は、W&B Registry を使用してインタラクティブにコレクションを作成する方法を説明しています。 + +1. https://wandb.ai/registry/ で W&B Registry に移動します。 +2. レジストリを選択します。 +3. 右上隅の **Create collection** ボタンをクリックします。 +4. **Name** フィールドにコレクションの名前を入力します。 +5. **Type** ドロップダウンからタイプを選択します。または、レジストリでカスタム Artifact タイプが有効な場合は、このコレクションが受け入れる1つ以上の Artifact タイプを入力します。 +6. オプションで、**Description** フィールドにコレクションの説明を入力します。 +7. オプションで、**Tags** フィールドに1つ以上のタグを追加します。 +8. **Link version** をクリックします。 +9. **Project** ドロップダウンから、Artifact が保存されているプロジェクトを選択します。 +10. **Artifact** コレクションのドロップダウンから、Artifact を選択します。 +11. **Version** ドロップダウンから、コレクションにリンクしたい Artifact バージョンを選択します。 +12. **Create collection** ボタンをクリックします。 + + + Create a new collection + \ No newline at end of file diff --git a/ja/models/registry/create_registry.mdx b/ja/models/registry/create_registry.mdx new file mode 100644 index 0000000000..959cbf7019 --- /dev/null +++ b/ja/models/registry/create_registry.mdx @@ -0,0 +1,84 @@ +--- +title: レジストリを作成する +--- + +レジストリを使用することで、使用可能な Artifacts のタイプに対する柔軟性と制御が可能になり、レジストリの公開範囲を制限できるなど、多くのメリットが得られます。 + +## レジストリの作成 + +W&B Registry UI または W&B Python SDK を使用して、プログラムからレジストリを作成できます。 + + + +1. https://wandb.ai/registry/ から W&B Registry にアクセスします。 +2. **Create registry** ボタンをクリックします。 +3. **Name** フィールドにレジストリ名を入力します。 +4. 任意で、レジストリに関する説明を入力します。 +5. **Registry visibility** ドロップダウンから、レジストリを閲覧できる ユーザー を選択します。公開範囲のオプションの詳細については、[レジストリの公開範囲のタイプ](./configure_registry#registry-visibility-types) を参照してください。 +6. **Accepted artifacts type** ドロップダウンから、**All types** または **Specify types** のいずれかを選択します。 +7. (**Specify types** を選択した場合)レジストリが受け入れる Artifacts のタイプを1つ以上追加します。 +8. **Create registry** ボタンをクリックします。 + + +[`wandb.Api().create_registry()`](/models/ref/python/#method-apicreate_registry) メソッドを使用して、プログラムからレジストリを作成します。`name` パラメータに名前を、`visibility` パラメータに [公開範囲](#visibility-types) をそれぞれ指定します。 + +以下の コード ブロックをコピーして貼り付けます。 `<>` で囲まれた 値 を独自のものに置き換えてください。 + +```python +import wandb + +# レジストリを作成する +registry = wandb.Api().create_registry( + name="", + visibility="< 'restricted' | 'organization' >", +) +``` + +レジストリ作成時に指定できる パラメータ の完全なリストについては、[`wandb.Api().create_registry()`](/models/ref/python/#method-apicreate_registry) メソッドリファレンスを参照してください。 + + + + +Artifacts のタイプは、一度レジストリの 設定 に保存されると、そのレジストリから削除することはできません。 + + +例えば、以下の画像は `Fine_Tuned_Models` という名前のレジストリを作成しようとしているところです。このレジストリは **Restricted**(制限付き)に設定されており、手動で追加されたメンバーのみが アクセス できます。 + + 新しいレジストリの作成 + + +## 公開範囲のタイプ + +レジストリの *公開範囲* は、誰がそのレジストリに アクセス できるかを決定します。レジストリの公開範囲を制限することで、特定のメンバーだけがそのレジストリに アクセス できるように管理できます。 + +レジストリには2つの公開範囲オプションがあります。 + +| 公開範囲 | 説明 | +| --- | --- | +| Restricted | 招待された組織メンバーのみがレジストリに アクセス できます。 | +| Organization | 組織内の全員がレジストリに アクセス できます。 | + +Team 管理者またはレジストリ管理者が、レジストリの公開範囲を設定できます。 + +Restricted の公開範囲でレジストリを作成した ユーザー は、自動的にそのレジストリの管理者として追加されます。 + +## レジストリの公開範囲を設定する + +Team 管理者またはレジストリ管理者は、レジストリの作成中または作成後に公開範囲を割り当てることができます。 + +既存のレジストリの公開範囲を制限するには: + +1. https://wandb.ai/registry/ から W&B Registry にアクセスします。 +2. レジストリを選択します。 +3. 右上の歯車アイコンをクリックします。 +4. **Registry visibility** ドロップダウンから、希望する公開範囲を選択します。 +5. **Restricted visibility** を選択した場合: + 1. このレジストリへの アクセス 権を付与したい組織のメンバーを追加します。 **Registry members and roles** セクションまでスクロールし、 **Add member** ボタンをクリックします。 + 2. **Member** フィールドに、追加したいメンバーのメールアドレスまたは ユーザー 名を入力します。 + 3. **Add new member** をクリックします。 + + + レジストリの公開範囲設定をプライベートからパブリック、またはチーム制限アクセスに変更する + + +Team 管理者がレジストリを作成する際に公開範囲を割り当てる方法の詳細については、 [レジストリの作成](./create_registry#create-a-custom-registry) を参照してください。 \ No newline at end of file diff --git a/ja/models/registry/delete_registry.mdx b/ja/models/registry/delete_registry.mdx new file mode 100644 index 0000000000..3e46155dec --- /dev/null +++ b/ja/models/registry/delete_registry.mdx @@ -0,0 +1,39 @@ +--- +title: レジストリを削除する +--- + +このページでは、Team 管理者または Registry 管理者が Registry を削除する方法について説明します。 + +- Team 管理者は、組織内のすべての Registry を削除できます。 +- Registry 管理者は、自身が作成した Registry を削除できます。 + +Registry を削除すると、その Registry に属するコレクションも削除されますが、Registry にリンクされている Artifacts は削除されません。それらの Artifacts は、元々ログが記録された元の Projects にそのまま残ります。 + + + +プログラムで Registry を削除するには、`wandb` API の `delete()` メソッドを使用します。以下の例では、次の手順を示します。 + +1. `api.registry()` を使用して、削除したい Registry を取得します。 +2. 返された Registry オブジェクトに対して `delete()` メソッドを呼び出し、Registry を削除します。 + +```python +import wandb + +# W&B API を初期化 +api = wandb.Api() + +# 削除したい Registry を取得 +fetched_registry = api.registry("") + +# Registry を削除 +fetched_registry.delete() +``` + + +1. https://wandb.ai/registry/ から W&B Registry に移動します。 +2. 削除したい Registry を選択します。 +3. 右上隅の歯車アイコンをクリックして、Registry の settings を表示します。 +4. Registry を削除するには、settings ページの右上隅にあるゴミ箱アイコンをクリックします。 +5. 表示されるモーダルで削除する Registry の名前を入力して確認し、**Delete** をクリックします。 + + \ No newline at end of file diff --git a/ja/models/registry/download_use_artifact.mdx b/ja/models/registry/download_use_artifact.mdx new file mode 100644 index 0000000000..bb35f60975 --- /dev/null +++ b/ja/models/registry/download_use_artifact.mdx @@ -0,0 +1,130 @@ +--- +title: レジストリから Artifact をダウンロードする +--- + +W&B Python SDK を使用して、リポジトリにリンクされた Artifacts をダウンロードします。Artifacts をダウンロードして使用するには、レジストリ名、コレクション名、およびダウンロードしたい Artifact バージョンの エイリアス またはインデックスを知る必要があります。 + +Artifact のプロパティを確認したら、[リンクされた Artifact へのパスを作成](#construct-path-to-linked-artifact) してダウンロードできます。あるいは、W&B App UI から [事前生成されたコードスニペットをコピー&ペースト](#copy-and-paste-pre-generated-code-snippet) して、レジストリにリンクされた Artifact をダウンロードすることも可能です。 + + +## リンクされた Artifact へのパスを作成する + +レジストリにリンクされた Artifact をダウンロードするには、そのリンクされた Artifact のパスを知る必要があります。パスは、レジストリ名、コレクション名、および アクセス したい Artifact バージョンの エイリアス またはインデックスで構成されます。 + +レジストリ、コレクション、および Artifact バージョンの エイリアス またはインデックスがわかれば、以下の文字列テンプレートを使用して、リンクされた Artifact へのパスを作成できます。 + +```python +# バージョンインデックスを指定した Artifact 名 +f"wandb-registry-{REGISTRY}/{COLLECTION}:v{INDEX}" + +# エイリアスを指定した Artifact 名 +f"wandb-registry-{REGISTRY}/{COLLECTION}:{ALIAS}" +``` + +波括弧 `{}` 内の値を、アクセス したいレジストリ名、コレクション名、および Artifact バージョンの エイリアス またはインデックスに置き換えてください。 + + +リンクされた Artifact のパスを取得したら、`wandb.Run.use_artifact()` メソッドを使用して Artifact に アクセス し、その内容をダウンロードします。以下の コードスニペット は、W&B Registry にリンクされた Artifact を使用およびダウンロードする方法を示しています。`<>` 内の値は自身の環境に合わせて置き換えてください。 + +```python +import wandb + +REGISTRY = '' +COLLECTION = '' +ALIAS = '' + +with wandb.init(entity = '', project = '') as run: + artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{ALIAS}" + # artifact_name = '' # W&B Registry UI で指定されたフルネームをコピー&ペースト + fetched_artifact = run.use_artifact(artifact_or_name = artifact_name) + download_path = fetched_artifact.download() +``` + +`wandb.Run.use_artifact()` メソッドは、[run](/models/runs/) を作成すると同時に、ダウンロードした Artifact をその run のインプットとしてマークします。 +Artifact を run のインプットとしてマークすることで、W&B はその Artifact の リネージ を追跡できるようになります。 + +run を作成したくない場合は、`wandb.Api()` オブジェクト を使用して Artifact に アクセス できます。 + +```python +import wandb + +REGISTRY = "" +COLLECTION = "" +VERSION = "" + +api = wandb.Api() +artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{VERSION}" +artifact = api.artifact(name = artifact_name) +``` + +
+例:W&B Registry にリンクされた Artifact の使用とダウンロード + +以下のコード例は、**Fine-tuned Models** レジストリ内の `phi3-finetuned` というコレクションにリンクされた Artifact をダウンロードする方法を示しています。Artifact バージョンの エイリアス は `production` に設定されています。 + +```python +import wandb + +TEAM_ENTITY = "product-team-applications" +PROJECT_NAME = "user-stories" + +REGISTRY = "Fine-tuned Models" +COLLECTION = "phi3-finetuned" +ALIAS = 'production' + +# 指定したチームとプロジェクト内で run を初期化 +with wandb.init(entity=TEAM_ENTITY, project = PROJECT_NAME) as run: + + artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{ALIAS}" + + # Artifact にアクセスし、リネージ追跡のために run のインプットとしてマークする + fetched_artifact = run.use_artifact(artifact_or_name = artifact_name) + + # Artifact をダウンロード。ダウンロードされたコンテンツへのパスを返す + downloaded_path = fetched_artifact.download() +``` +
+ + +パラメータと戻り値の型については、API リファレンスの [`wandb.Run.use_artifact()`](/models/ref/python/experiments/run#use_artifact) および [`Artifact.download()`](/models/ref/python/experiments/artifact#download) を参照してください。 + + +**複数の組織に所属する個人エンティティのユーザー** + +複数の組織に所属する個人エンティティの Users は、レジストリにリンクされた Artifacts に アクセス する際、組織名を指定するか、チームエンティティを使用する必要があります。 + +```python +import wandb + +REGISTRY = "" +COLLECTION = "" +VERSION = "" + +# API をインスタンス化する際にチームエンティティを使用していることを確認してください +api = wandb.Api(overrides={"entity": ""}) +artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{VERSION}" +artifact = api.artifact(name = artifact_name) + +# パスの構築 +api = wandb.Api() +artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{VERSION}" +artifact = api.artifact(name = artifact_name) +``` + + + +## 事前生成されたコードスニペットをコピー&ペーストする + +W&B は、レジストリにリンクされた Artifact をダウンロードするために、Python スクリプト、ノートブック、または ターミナル にコピー&ペーストできる コードスニペット を生成します。 + +1. W&B Registry に移動します。 +2. Artifact が含まれているレジストリ名を選択します。 +3. コレクション名を選択します。 +4. Artifact バージョンのリストから、アクセス したい バージョン を選択します。 +5. **Usage** タブを選択します。 +6. **Usage API** セクションに表示されている コードスニペット をコピーします。 +7. コードスニペット を Python スクリプト、ノートブック、または ターミナル に貼り付けます。 + + + + \ No newline at end of file diff --git a/ja/models/registry/lineage.mdx b/ja/models/registry/lineage.mdx new file mode 100644 index 0000000000..426df51df0 --- /dev/null +++ b/ja/models/registry/lineage.mdx @@ -0,0 +1,83 @@ +--- +title: リネージ グラフと監査履歴 +description: リネージ グラフを使用して、リンクされた アーティファクト の履歴を可視化し、コレクションの履歴を監査します。 +--- + +リネージグラフを使用して、リンクされた Artifacts の履歴を可視化します。コレクションの履歴を監査して、そのコレクション内の Artifacts に加えられた変更を追跡します。 + +## リネージグラフ + +W&B Registry 内のコレクションでは、ML 実験で使用された Artifacts の履歴を表示できます。この履歴は _リネージグラフ_ と呼ばれます。 + +リネージグラフには以下が表示されます: +* [run の入力](/models/artifacts/explore-and-traverse-an-artifact-graph#track-the-input-of-a-run) として使用された Artifacts。 +* [run の出力](/models/artifacts/explore-and-traverse-an-artifact-graph#track-the-output-of-a-run) として作成された Artifacts。 + +言い換えれば、リネージグラフは run の入力と出力を示します。 + +例えば、次の画像は ML 実験全体で作成および使用された Artifacts の典型的なリネージグラフを示しています: + + + Registry lineage + + +左から右に向かって、画像は以下を示しています: +1. 複数の Runs が `split_zoo_dataset:v4` アーティファクトをログに記録しています。 +2. "rural-feather-20" という run が、トレーニングのために `split_zoo_dataset:v4` アーティファクトを使用しています。 +3. "rural-feather-20" run の出力は、`zoo-ylbchv20:v0` という名前のモデルアーティファクトです。 +4. "northern-lake-21" という run が、モデルを評価するためにモデルアーティファクト `zoo-ylbchv20:v0` を使用しています。 + + +コレクション内のアーティファクトのリネージグラフを表示するには: + +1. W&B Registry に移動します。 +2. アーティファクトが含まれているコレクションを選択します。 +3. ドロップダウンから、リネージグラフを表示したいアーティファクトのバージョンを選択します。 +4. **Lineage** タブを選択します。 +5. ノードを選択すると、run またはアーティファクトに関する詳細情報が表示されます。 + + + +W&B Python SDK を使用して run の入出力を追跡する方法については、[リネージグラフのトラッキングを有効にする](/models/artifacts/explore-and-traverse-an-artifact-graph#enable-lineage-graph-tracking) を参照してください。 + + +次の画像は、リネージグラフ内のノードを選択したときに表示される、run (`rural-feather-20`) の展開された詳細ビューを示しています: + + + Expanded lineage node + + + +次の画像は、リネージグラフ内のアーティファクトノードを選択したときに表示される、アーティファクト (`zoo-ylbchv20:v0`) の展開された詳細ビューを示しています: + + + Expanded artifact node details + + + + +コレクションの一部ではない、W&B にログ記録した Artifacts のリネージグラフを表示することもできます。詳細は [アーティファクトグラフの探索](/models/artifacts/explore-and-traverse-an-artifact-graph) を参照してください。 + + + +## コレクションの履歴の監査 + +組織のメンバーがそのコレクションに対して行ったアクションを表示します。以下を確認できます: + +- アーティファクトバージョンに対して エイリアス が追加または削除されたかどうか。 +- アーティファクトバージョンがコレクションに追加または削除されたかどうか。 + +どちらのアクションについても、アクションを実行した ユーザー とアクションが発生した日付を確認できます。 + +コレクションのアクション履歴を表示するには: + +1. W&B Registry に移動します。 +2. アクション履歴を表示したいコレクションを選択します。 +3. コレクション名の横にあるドロップダウンメニューを選択します。 +4. **Action History** オプションを選択します。 + +{/* Select a run node to view that run's details, such as the run's ID, the run's name, the run's state, and more. As an example, the proceeding image shows information about the `rural-feather-20` run: + + + +Select an artifact node to view that artifact's details, such as its full name, type, creation time, and associated aliases. */} \ No newline at end of file diff --git a/ja/models/registry/link_version.mdx b/ja/models/registry/link_version.mdx new file mode 100644 index 0000000000..91b0e6a1e9 --- /dev/null +++ b/ja/models/registry/link_version.mdx @@ -0,0 +1,267 @@ +--- +title: アーティファクト バージョン をコレクションにリンクする +--- + +Artifact のバージョンを組織内で利用可能にするには、W&B Registry の [コレクション](/models/registry/create_collection) に **リンク** します。リンクすることで、そのバージョンは [プライベートなプロジェクトレベルのスコープから、共有された組織レベルのスコープへ](/models/registry/create_registry#visibility-types) 移動します。Artifact バージョンのリンクは、[W&B Python SDK を使用してプログラムで行うか、W&B App でインタラクティブに](/models/registry/link_version#link-an-artifact-to-a-collection) 行うことができます。 + +Artifact をリンクすると、W&B はソースとなる Artifact とコレクションのエントリの間に参照を作成します。リンクされたバージョンは、プロジェクト内の Run でログに記録されたソースの Artifact バージョンを指します。コレクション内のリンクされたバージョンと、それがログに記録されたプロジェクト内のソースバージョンの両方を確認できます。 + + +## Artifact をコレクションにリンクする + +ユースケースに合わせて、以下のタブに記載されている手順に従って Artifact バージョンをリンクしてください。 + + +開始する前に、以下を確認してください: +* そのコレクションが許可している Artifact のタイプ。コレクションのタイプに関する詳細は、[コレクションの作成](./create_collection) 内の「Collection types」を参照してください。 +* コレクションが属する Registry が既に存在していること。Registry が存在するかどうかを確認するには、[Registry App に移動して](/models/registry/search_registry) Registry 名を検索してください。 + + + +{/* +If an artifact version logs metrics (such as by using `wandb.Run.log_artifact()`), you can view metrics for that version from its details page, and you can compare metrics across artifact versions from the artifact's page. Refer to [View linked artifacts in a registry](#view-linked-artifacts-in-a-registry). + */} + + + +{/* +Watch a [video demonstrating linking a version](https://www.youtube.com/watch?v=2i_n1ExgO0A) (8 min). + */} + +[`wandb.Run.link_artifact()`](/ref/python/experiments/run#link_artifact") または [`wandb.Artifact.link()`](/ref/python/experiments/artifact#method-artifactlink") を使用して、Artifact バージョンをプログラムでコレクションにリンクします。 + + + +[Run のコンテキスト内で](#link-an-artifact-version-within-the-context-of-a-run) Artifact バージョンをリンクするには `wandb.Run.link_artifact()` を使用します。[Run のコンテキスト外で](#link-an-artifact-version-outside-the-context-of-a-run) *既存の Artifact バージョン* をリンクするには `wandb.Artifact.link()` を使用します。 + + + +{/* +`wandb.Artifact.link()` does not require you to initialize a run with `wandb.init()`. `wandb.Run.link_artifact()` requires you to initialize a run with `wandb.init()`. + */} + +どちらのアプローチでも、Artifact の名前 (`wandb.Artifact(name=""`)、Artifact のタイプ (`wandb.Artifact(type=""`)、およびリンク先のコレクションと Registry の `target_path` (`wandb.Artifact(target_path=""`) を指定します。 + +ターゲットパスは、プレフィックス `"wandb-registry"`、Registry 名、およびコレクション名をスラッシュで区切った形式で構成されます。 + +{/* Use the `target_path` parameter to specify the collection and registry you want to link the artifact version to. The target path consists of the prefix "wandb-registry", the name of the registry, and the name of the collection separated by a forward slashes: */} + +```text +wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME} +``` + +### Run のコンテキスト内で Artifact バージョンをリンクする + +Run のコンテキスト内で Artifact バージョンをリンクするには、`wandb.Run.link_artifact()` を使用します。これを行うには、まず `wandb.init()` で Run を初期化します。次に、Artifact オブジェクトを作成してファイルを追加します。最後に、`wandb.Run.link_artifact()` メソッドを使用して Artifact バージョンをコレクションにリンクします。 + +この方法を使用すると、W&B プロジェクトに Run が作成されます。Artifact バージョンはそのコレクションにリンクされ、その Run に関連付けられます。 + +以下のコードスニペットをコピーして貼り付けてください。`<>` で囲まれた値はご自身のものに置き換えてください。 + +```python +import wandb + +entity = "" # チームの entity +project = "" # Artifact を含むプロジェクトの名前 + +# Run を初期化 +with wandb.init(entity = entity, project = project) as run: + + # Artifact オブジェクトを作成 + # type パラメータは Artifact オブジェクトのタイプと + # コレクションのタイプの両方を指定します + artifact = wandb.Artifact(name = "", type = "") + + # Artifact オブジェクトにファイルを追加 + # ローカルマシンのファイルへのパスを指定します + artifact.add_file(local_path = "") + + # リンク先のコレクションと Registry を指定 + REGISTRY_NAME = "" + COLLECTION_NAME = "" + target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" + + # Artifact をコレクションにリンク + run.link_artifact(artifact = artifact, target_path = target_path) +``` + +### Run のコンテキスト外で Artifact バージョンをリンクする + +Run のコンテキスト外で既存の Artifact バージョンをリンクするには、`wandb.Artifact.link()` を使用します。この方法では、`wandb.init()` で Run を初期化する必要はありません。つまり、W&B プロジェクトに Run は作成されません。言い換えると、Artifact バージョンは Run に関連付けられることなくコレクションにリンクされます。 + +まず Artifact オブジェクトを作成し、ファイルを追加します。次に、`wandb.Artifact.link()` メソッドを使用して Artifact バージョンをコレクションにリンクします。 + +以下のコードスニペットをコピーして貼り付けてください。`<>` で囲まれた値はご自身のものに置き換えてください。 + +```python +import wandb + +# Artifact オブジェクトを作成 +# type パラメータは Artifact オブジェクトのタイプと +# コレクションのタイプの両方を指定します +artifact = wandb.Artifact(name = "", type = "") + +# Artifact オブジェクトにファイルを追加 +# ローカルマシンのファイルへのパスを指定します +artifact.add_file(local_path = "") + +# リンク先のコレクションと Registry を指定 +REGISTRY_NAME = "" +COLLECTION_NAME = "" +target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" + +# Artifact をコレクションにリンク +artifact.link(target_path = target_path) +``` + + + + + +1. W&B Registry に移動します。 + + W&B Registry UI navigation + +2. Artifact バージョンをリンクしたいコレクション名の横にマウスを合わせます。 +3. **View details** の横にあるミートボールメニューアイコン(横三点リーダー)を選択します。 +4. ドロップダウンから **Link new version** を選択します。 +5. 表示されるサイドバーの **Team** ドロップダウンからチーム名を選択します。 +5. **Project** ドロップダウンから、Artifact を含むプロジェクト名を選択します。 +6. **Artifact** ドロップダウンから、Artifact 名を選択します。 +7. **Version** ドロップダウンから、コレクションにリンクしたい Artifact バージョンを選択します。 + +{/* TO DO insert gif */} + + +1. W&B App のプロジェクトの Artifact ブラウザ(`https://wandb.ai///artifacts`)に移動します。 +2. 左サイドバーの Artifacts アイコンを選択します。 +3. Registry にリンクしたい Artifact バージョンをクリックします。 +4. **Version overview** セクションで、**Link to registry** ボタンをクリックします。 +5. 画面右側に表示されるモーダルで、**Select a registered model** メニュードロップダウンから Artifact を選択します。 +6. **Next step** をクリックします。 +7. (オプション) **Aliases** ドロップダウンからエイリアスを選択します。 +8. **Link to registry** をクリックします。 + +{/* Update this gif */} +{/* + + */} + + + + + +{/* +**Linked vs source artifact versions** + +* Source version: the artifact version inside a team's project that is logged to a [run](/models/track/runs/). +* Linked version: the artifact version that is published to the registry. This is a pointer to the source artifact, and is the exact same artifact version, just made available in the scope of the registry. + */} + +Registry App では、[リンクされた Artifact のメタデータ、バージョンデータ、使用状況、リネージ情報などを表示](/models/registry/link_version#view-linked-artifacts-in-a-registry") できます。 + +## Registry でリンクされた Artifact を表示する + +W&B Registry で、リンクされた Artifact に関するメタデータ、リネージ、使用状況などの情報を表示できます。 + +1. W&B Registry に移動します。 +2. Artifact をリンクした Registry の名前を選択します。 +3. コレクションの名前を選択します。 +4. コレクションの Artifact がメトリクスをログに記録している場合、**Show metrics** をクリックしてバージョン間でメトリクスを比較できます。 +4. Artifact バージョンのリストから、アクセスしたいバージョンを選択します。バージョン番号は、リンクされた各 Artifact バージョンに対して `v0` から順に割り当てられます。 +5. Artifact バージョンの詳細を表示するには、そのバージョンをクリックします。このページのタブから、そのバージョンのメタデータ(ログに記録されたメトリクスを含む)、リネージ、および使用状況情報を表示できます。 + +**Version** タブ内の **Full Name** フィールドをメモしておいてください。リンクされた Artifact のフルネームは、Registry、コレクション名、および Artifact バージョンのエイリアスまたはインデックスで構成されます。 + +```text title="Full name of a linked artifact" +wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{INTEGER} +``` + +プログラムで Artifact バージョンにアクセスするには、リンクされた Artifact のフルネームが必要です。 + +## トラブルシューティング + +Artifact をリンクできない場合に再確認すべき一般的な事項を以下に挙げます。 + +### 個人アカウントからの Artifact のログ記録 + +個人の entity で W&B にログ記録された Artifact は、Registry にリンクできません。必ず組織内のチーム entity を使用して Artifact をログに記録してください。組織の Registry にリンクできるのは、組織のチーム内でログ記録された Artifact のみです。 + + + +Registry にリンクしたい場合は、必ずチーム entity で Artifact をログに記録してください。 + + + +#### チーム entity を見つける + +W&B はチーム名をチームの entity として使用します。例えば、チーム名が **team-awesome** の場合、チーム entity は `team-awesome` になります。 + +以下の方法でチーム名を確認できます: + +1. チームの W&B プロフィールページに移動します。 +2. サイトの URL をコピーします。`https://wandb.ai/` の形式になっており、`` がチーム名とチーム entity の両方を表します。 + +#### チーム entity からログを記録する +1. [`wandb.init()`](/models/ref/python/functions/init) で Run を初期化する際に、チームを entity として指定します。Run の初期化時に `entity` を指定しない場合、Run はデフォルトの entity(チーム entity である場合とそうでない場合があります)を使用します。 + + ```python + import wandb + + with wandb.init(entity='', project='') as run: + # ここで Artifact をログに記録 + ``` + +2. `wandb.Run.log_artifact()` を使用するか、Artifact オブジェクトを作成して以下の方法でファイルを追加して、Run に Artifact をログ記録します。 + + ```python + artifact = wandb.Artifact(name="", type="") + ``` + Artifact のログ記録については、[Artifact の構築](/models/artifacts/construct-an-artifact/) を参照してください。 +3. Artifact が個人の entity にログ記録されている場合は、組織内の entity に再度ログ記録する必要があります。 + +### W&B App UI で Registry のパスを確認する + +UI で Registry のパスを確認する方法は 2 つあります。空のコレクションを作成してコレクションの詳細を表示するか、コレクションのホームページにある自動生成されたコードをコピーして貼り付ける方法です。 + +#### 自動生成されたコードをコピーして貼り付ける + +1. https://wandb.ai/registry/ で W&B Registry に移動します。 +2. Artifact をリンクしたい Registry をクリックします。 +3. ページの上部に自動生成されたコードブロックが表示されます。 +4. これをコードにコピーして貼り付け、パスの最後の部分をコレクションの名前に置き換えてください。 + + + Auto-generated code snippet + + +#### 空のコレクションを作成する + +1. https://wandb.ai/registry/ で W&B Registry に移動します。 +2. Artifact をリンクしたい Registry をクリックします。 +4. 空のコレクションをクリックします。空のコレクションが存在しない場合は、新しいコレクションを作成します。 +5. 表示されるコードスニペット内で、`.link_artifact()` 内の `target_path` フィールドを確認します。 +6. (オプション) コレクションを削除します。 + + + Create an empty collection + + +例えば、上記の手順を完了すると、`target_path` パラメータを含むコードブロックが見つかります。 + +```python +target_path = + "smle-registries-bug-bash/wandb-registry-Golden Datasets/raw_images" +``` + +これを構成要素に分解すると、プログラムで Artifact をリンクするためのパスを作成する際に必要なものがわかります。 + +```python +ORG_ENTITY_NAME = "smle-registries-bug-bash" +REGISTRY_NAME = "Golden Datasets" +COLLECTION_NAME = "raw_images" +``` + + +一時的なコレクションから取得したコレクション名を、Artifact をリンクしたい実際のコレクション名に置き換えるようにしてください。 + \ No newline at end of file diff --git a/ja/models/registry/organize-with-tags.mdx b/ja/models/registry/organize-with-tags.mdx new file mode 100644 index 0000000000..bd307de488 --- /dev/null +++ b/ja/models/registry/organize-with-tags.mdx @@ -0,0 +1,314 @@ +--- +title: タグで バージョン を整理する +description: タグを使用して、コレクションやコレクション内の Artifact バージョンを整理できます。 Python SDK または W&B App + UI を使用して、タグの追加、削除、編集が可能です。 +--- + +タグを作成・追加することで、レジストリ内のコレクションや Artifacts のバージョンを整理できます。W&B App UI または W&B Python SDK を使用して、コレクションや Artifacts のバージョンに対してタグの追加、変更、表示、削除を行うことができます。 + + +**タグとエイリアスの使い分け** + +特定の Artifacts バージョンを一意に参照する必要がある場合は、エイリアスを使用してください。例えば、`artifact_name:alias` が常に単一の特定のバージョンを指すようにするために、'production' や 'latest' といったエイリアスを使用します。 + +グループ化や検索に柔軟性を持たせたい場合は、タグを使用してください。タグは、複数のバージョンやコレクションが同じラベルを共有する場合や、特定の識別子が 1 つのバージョンだけに紐付いている保証が必要ない場合に最適です。 + + + +## コレクションにタグを追加する + +W&B App UI または Python SDK を使用して、コレクションにタグを追加します。 + + + +W&B App UI を使用してコレクションにタグを追加する方法: + +1. [W&B Registry](https://wandb.ai/registry) に移動します。 +2. レジストリカードをクリックします。 +3. コレクション名の横にある **View details** をクリックします。 +4. コレクションカード内で、**Tags** フィールドの横にあるプラスアイコン (**+**) をクリックし、タグの名前を入力します。 +5. キーボードの **Enter** キーを押します。 + + + Adding tags to a Registry collection + + + +```python +import wandb + +COLLECTION_TYPE = "" +REGISTRY_NAME = "" +COLLECTION_NAME = "" + +full_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" + +collection = wandb.Api().artifact_collection( + type_name = COLLECTION_TYPE, + name = full_name + ) + +collection.tags = ["your-tag"] +collection.save() +``` + + + + + +## コレクションに属するタグを更新する + +`tags` 属性を再代入または変更することで、プログラムからタグを更新できます。W&B では、Python の優れたプラクティスとして、インプレースでの変更(破壊的変更)ではなく、`tags` 属性を再代入することを推奨しています。 + +例えば、以下のコードスニペットは、再代入によるリスト更新の一般的な方法を示しています。簡潔にするため、[コレクションにタグを追加するセクション](#add-a-tag-to-a-collection) からのコード例を継続しています。 + +```python +collection.tags = [*collection.tags, "new-tag", "other-tag"] +collection.tags = collection.tags + ["new-tag", "other-tag"] + +collection.tags = set(collection.tags) - set(tags_to_delete) +collection.tags = [] # すべてのタグを削除 +``` + +以下のコードスニペットは、インプレースでの変更を使用して、Artifacts バージョンに属するタグを更新する方法を示しています。 + +```python +collection.tags += ["new-tag", "other-tag"] +collection.tags.append("new-tag") + +collection.tags.extend(["new-tag", "other-tag"]) +collection.tags[:] = ["new-tag", "other-tag"] +collection.tags.remove("existing-tag") +collection.tags.pop() +collection.tags.clear() +``` + +## コレクションに属するタグを表示する + +W&B App UI を使用して、コレクションに追加されたタグを表示します。 + +1. [W&B Registry](https://wandb.ai/registry) に移動します。 +2. レジストリカードをクリックします。 +3. コレクション名の横にある **View details** をクリックします。 + +コレクションに 1 つ以上のタグがある場合、コレクションカード内の **Tags** フィールドの横でそれらのタグを確認できます。 + + + Registry collection with selected tags + + +コレクションに追加されたタグは、そのコレクション名の横にも表示されます。 + +例えば、以下の画像では、"tag1" というタグが "zoo-dataset-tensors" コレクションに追加されています。 + + + Tag management + + + +## コレクションからタグを削除する + +W&B App UI を使用して、コレクションからタグを削除します。 + +1. [W&B Registry](https://wandb.ai/registry) に移動します。 +2. レジストリカードをクリックします。 +3. コレクション名の横にある **View details** をクリックします。 +4. コレクションカード内で、削除したいタグの名前にマウスを合わせます。 +5. キャンセルボタン(**X** アイコン)をクリックします。 + +## Artifacts バージョンにタグを追加する + +W&B App UI または Python SDK を使用して、コレクションにリンクされた Artifacts バージョンにタグを追加します。 + + + +1. https://wandb.ai/registry の W&B Registry に移動します。 +2. レジストリカードをクリックします。 +3. タグを追加したいコレクション名の横にある **View details** をクリックします。 +4. **Versions** までスクロールします。 +5. Artifacts バージョンの横にある **View** をクリックします。 +6. **Version** タブ内で、**Tags** フィールドの横にあるプラスアイコン (**+**) をクリックし、タグの名前を入力します。 +7. キーボードの **Enter** キーを押します。 + + + Adding tags to artifact versions + + + +タグを追加または更新したい Artifacts バージョンを取得します。Artifacts バージョンを取得したら、Artifacts オブジェクトの `tag` 属性にアクセスして、その Artifacts にタグを追加または変更できます。Artifacts の `tag` 属性に 1 つ以上のタグをリストとして渡します。 + +他の Artifacts と同様に、run を作成せずに W&B から Artifacts を取得することも、run を作成してその run 内で Artifacts を取得することもできます。いずれの場合も、W&B サーバー上の Artifacts を更新するために、Artifacts オブジェクトの `save` メソッドを必ず呼び出してください。 + +以下の適切なコードセルをコピーして貼り付け、Artifacts バージョンのタグを追加または変更します。`<>` 内の値をご自身のものに置き換えてください。 + + +以下のコードスニペットは、新しい run を作成せずに Artifacts を取得してタグを追加する方法を示しています。 +```python title="新しい run を作成せずに Artifacts バージョンにタグを追加する" +import wandb + +ARTIFACT_TYPE = "" +REGISTRY_NAME = "" +COLLECTION_NAME = "" +VERSION = "" + +artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}" + +artifact = wandb.Api().artifact(name = artifact_name, type = ARTIFACT_TYPE) +artifact.tags = ["tag2"] # 1つ以上のタグをリストで提供 +artifact.save() +``` + + +以下のコードスニペットは、新しい run を作成して Artifacts を取得し、タグを追加する方法を示しています。 + +```python title="run の実行中に Artifacts バージョンにタグを追加する" +import wandb + +REGISTRY_NAME = "" +COLLECTION_NAME = "" +VERSION = "" + +with wandb.init(entity = "", project="") as run: + + artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}" + + artifact = run.use_artifact(artifact_or_name = artifact_name) + artifact.tags = ["tag2"] # 1つ以上のタグをリストで提供 + artifact.save() +``` + + + + + +## Artifacts バージョンに属するタグを更新する + + +`tags` 属性を再代入または変更することで、プログラムからタグを更新できます。W&B では、Python の優れたプラクティスとして、インプレースでの変更ではなく、`tags` 属性を再代入することを推奨しています。 + +例えば、以下のコードスニペットは、再代入によるリスト更新の一般的な方法を示しています。簡潔にするため、[Artifacts バージョンにタグを追加するセクション](#add-a-tag-to-an-artifact-version) からのコード例を継続しています。 + +```python +artifact.tags = [*artifact.tags, "new-tag", "other-tag"] +artifact.tags = artifact.tags + ["new-tag", "other-tag"] + +artifact.tags = set(artifact.tags) - set(tags_to_delete) +artifact.tags = [] # すべてのタグを削除 +``` + +以下のコードスニペットは、インプレースでの変更を使用して、Artifacts バージョンに属するタグを更新する方法を示しています。 + +```python +artifact.tags += ["new-tag", "other-tag"] +artifact.tags.append("new-tag") + +artifact.tags.extend(["new-tag", "other-tag"]) +artifact.tags[:] = ["new-tag", "other-tag"] +artifact.tags.remove("existing-tag") +artifact.tags.pop() +artifact.tags.clear() +``` + + +## Artifacts バージョンに属するタグを表示する + +W&B App UI または Python SDK を使用して、レジストリにリンクされている Artifacts バージョンに属するタグを表示します。 + + + +1. [W&B Registry](https://wandb.ai/registry) に移動します。 +2. レジストリカードをクリックします。 +3. タグを追加したいコレクション名の横にある **View details** をクリックします。 +4. **Versions** セクションまでスクロールします。 + +Artifacts バージョンに 1 つ以上のタグがある場合、**Tags** 列でそれらのタグを確認できます。 + + + Artifact version with tags + + + +タグを表示するために Artifacts バージョンを取得します。Artifacts バージョンを取得したら、Artifacts オブジェクトの `tag` 属性を表示することで、その Artifacts に属するタグを確認できます。 + +他の Artifacts と同様に、run を作成せずに W&B から Artifacts を取得することも、run を作成してその run 内で Artifacts を取得することもできます。 + +以下の適切なコードセルをコピーして貼り付け、Artifacts バージョンのタグを追加または変更します。`<>` 内の値をご自身のものに置き換えてください。 + +以下のコードスニペットは、新しい run を作成せずに Artifacts バージョンのタグを取得して表示する方法を示しています。 + +```python title="新しい run を作成せずに Artifacts バージョンにタグを追加する" +import wandb + +ARTIFACT_TYPE = "" +REGISTRY_NAME = "" +COLLECTION_NAME = "" +VERSION = "" + +artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}" + +artifact = wandb.Api().artifact(name = artifact_name, type = artifact_type) +print(artifact.tags) +``` + + +以下のコードスニペットは、新しい run を作成して Artifacts バージョンのタグを取得し、表示する方法を示しています。 + +```python title="run の実行中に Artifacts バージョンにタグを追加する" +import wandb + +REGISTRY_NAME = "" +COLLECTION_NAME = "" +VERSION = "" + +with wandb.init(entity = "", project="") as run: + + artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}" + + artifact = run.use_artifact(artifact_or_name = artifact_name) + print(artifact.tags) +``` + + + + + +## Artifacts バージョンからタグを削除する + +1. [W&B Registry](https://wandb.ai/registry) に移動します。 +2. レジストリカードをクリックします。 +3. タグを追加したいコレクション名の横にある **View details** をクリックします。 +4. **Versions** までスクロールします。 +5. Artifacts バージョンの横にある **View** をクリックします。 +6. **Version** タブ内で、タグの名前にマウスを合わせます。 +7. キャンセルボタン(**X** アイコン)をクリックします。 + +## 既存のタグを検索する + +W&B App UI を使用して、コレクションや Artifacts バージョン内の既存のタグを検索します。 + +1. [W&B Registry](https://wandb.ai/registry) に移動します。 +2. レジストリカードをクリックします。 +3. 検索バー内にタグの名前を入力します。 + + + Tag-based search + + + +## 特定のタグを持つ Artifacts バージョンを見つける + +W&B Python SDK を使用して、特定のタグセットを持つ Artifacts バージョンを見つけます。 + +```python +import wandb + +api = wandb.Api() +tagged_artifact_versions = api.artifacts( + type_name = "", + name = "", + tags = ["", ""] +) + +for artifact_version in tagged_artifact_versions: + print(artifact_version.tags) +``` \ No newline at end of file diff --git a/ja/models/registry/registry_cards.mdx b/ja/models/registry/registry_cards.mdx new file mode 100644 index 0000000000..f073224aad --- /dev/null +++ b/ja/models/registry/registry_cards.mdx @@ -0,0 +1,69 @@ +--- +title: コレクションのアノテーション +--- + +コレクションに人間が読みやすいテキストを追加することで、その目的や含まれる Artifacts についての理解を深めることができます。 + +コレクションの内容に応じて、トレーニングデータ、モデルの architecture、タスク、ライセンス、参考文献、およびデプロイメントに関する情報を含めるとよいでしょう。以下に、コレクションでドキュメント化すべきトピックの例を挙げます。 + +W&B では、少なくとも以下の詳細を含めることを推奨しています。 +* **Summary**: コレクションの目的。機械学習の実験で使用された機械学習フレームワーク。 +* **License**: 機械学習モデルの使用に関連する法的条件と許可。これにより、Users はどのような法的枠組みの下でモデルを利用できるかを理解できます。一般的なライセンスには、Apache 2.0、MIT、GPL などがあります。 +* **References**: 関連する研究論文、Datasets、または外部リソースへの引用や参照。 + +コレクションにトレーニングデータが含まれている場合は、以下の詳細を追加することを検討してください。 +* **Training data**: 使用されたトレーニングデータの概要。 +* **Processing**: トレーニングデータセットに対して行われたプロセッシング。 +* **Data storage**: データがどこに保存され、どのようにアクセスするか。 + +コレクションに機械学習モデルが含まれている場合は、以下の詳細を追加することを検討してください。 +* **Architecture**: モデルの architecture、レイヤー、および特定の設計上の選択に関する情報。 +* **Task**: そのコレクション内のモデルが実行するように設計されている特定のタスクまたは問題の種類。これは、モデルが意図する機能の分類です。 +* **Deserialize the model**: チームのメンバーがモデルをメモリにロードする方法に関する情報。 +* **Deployment**: モデルがどこでどのようにデプロイされるかの詳細、およびワークフローのオーケストレーションプラットフォームなどの他の企業システムにモデルを統合する方法に関するガイド。 + +## コレクションに説明を追加する + +W&B Registry UI または Python SDK を使用して、対話的またはプログラム的にコレクションに説明を追加できます。 + + + +1. [W&B Registry](https://wandb.ai/registry/) に移動します。 +2. コレクションをクリックします。 +3. コレクション名の横にある **View details** を選択します。 +4. **Description** フィールドに、コレクションに関する情報を入力します。テキストのフォーマットには [Markdown マークアップ言語](https://www.markdownguide.org/) を使用できます。 + + +[`wandb.Api().artifact_collection()`](/models/ref/python/public-api/api#artifact_collection) メソッドを使用して、コレクションの説明にアクセスします。返されたオブジェクトの `description` プロパティを使用して、コレクションに説明を追加または更新します。 + +`type_name` パラメータにはコレクションのタイプを指定し、`name` パラメータにはコレクションのフルネームを指定します。コレクションの名前は、プレフィックス "wandb-registry"、レジストリ名、およびコレクション名をスラッシュで区切った形式になります。 + +```text +wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME} +``` + +以下のコードスニペットをコピーして、Python スクリプトまたはノートブックに貼り付けてください。山括弧 (`<>`) で囲まれた値は、ご自身の値に置き換えてください。 + +```python +import wandb + +api = wandb.Api() + +# コレクションを取得 +collection = api.artifact_collection( + type_name = "", + name = "" + ) + +# 説明を設定して保存 +collection.description = "This is a description." +collection.save() +``` + + + +例えば、以下の画像は、モデルの architecture、意図された用途、パフォーマンス情報などが記載されたコレクションの例です。 + + + Collection card + \ No newline at end of file diff --git a/ja/models/registry/search_registry.mdx b/ja/models/registry/search_registry.mdx new file mode 100644 index 0000000000..8f3a754435 --- /dev/null +++ b/ja/models/registry/search_registry.mdx @@ -0,0 +1,136 @@ +--- +title: レジストリアイテムを検索 +--- + +W&B Registry の [グローバル検索バー](./search_registry#search-for-registry-items) を使用して、registry、collection、artifact バージョンタグ、collection タグ、または エイリアス を検索できます。W&B Python SDK を使用すると、MongoDB スタイルのクエリを使用して、特定の基準に基づいて [registry、collection、および artifact バージョンをフィルタリング](./search_registry#query-registry-items-with-mongodb-style-queries) することができます。 + +表示権限を持っているアイテムのみが検索結果に表示されます。 + +## registry アイテムの検索 + +registry アイテムを検索するには: + +1. W&B Registry に移動します。 +2. ページ上部の検索バーに検索語を指定します。Enter キーを押して検索を実行します。 + +指定した用語が既存の registry、collection 名、artifact バージョンタグ、collection タグ、または エイリアス と一致する場合、検索結果が検索バーの下に表示されます。 + + + Searching within a Registry + + +## MongoDB スタイルのクエリによる registry アイテムのクエリ + +[`wandb.Api().registries()`](/models/ref/python/public-api/api#registries) と [クエリ述語 (query predicates)](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-query-predicate) を使用して、1 つ以上の [MongoDB スタイルクエリ](https://www.mongodb.com/docs/compass/current/query/filter/) に基づいて registry、collection、および artifact バージョンをフィルタリングします。 + +次の表は、フィルタリングしたいアイテムのタイプに基づいて使用できるクエリ名の一覧です。 + +| | クエリ名 | +| ----- | ----- | +| registries | `name`, `description`, `created_at`, `updated_at` | +| collections | `name`, `tag`, `description`, `created_at`, `updated_at` | +| versions | `tag`, `alias`, `created_at`, `updated_at`, `metadata` | + +以下の コード 例は、一般的な検索シナリオを示しています。 + +`wandb.Api().registries()` メソッドを使用するには、まず W&B Python SDK ([`wandb`](/models/ref/python/)) ライブラリ をインポートします。 + +```python +import wandb + +# (オプション) 読みやすさのために wandb.Api() クラスのインスタンスを作成します +api = wandb.Api() +``` + +文字列 `model` を含むすべての registry をフィルタリングする: + +```python +# 文字列 `model` を含むすべての registry をフィルタリングします +registry_filters = { + "name": {"$regex": "model"} +} + +# フィルタに一致するすべての registry のイテラブルを返します +registries = api.registries(filter=registry_filters) +``` + +registry に関係なく、collection 名に文字列 `yolo` を含むすべての collection をフィルタリングする: + +```python +# registry に関係なく、collection 名に +# 文字列 `yolo` を含むすべての collection をフィルタリングします +collection_filters = { + "name": {"$regex": "yolo"} +} + +# フィルタに一致するすべての collection のイテラブルを返します +collections = api.registries().collections(filter=collection_filters) +``` + +registry に関係なく、collection 名に文字列 `yolo` を含み、かつ `cnn` タグを持つすべての collection をフィルタリングする: + +```python +# registry に関係なく、collection 名に文字列 `yolo` を含み、 +# かつ `cnn` タグを持つすべての collection をフィルタリングします +collection_filters = { + "name": {"$regex": "yolo"}, + "tag": "cnn" +} + +# フィルタに一致するすべての collection のイテラブルを返します +collections = api.registries().collections(filter=collection_filters) +``` + +文字列 `model` を含み、かつ `image-classification` タグまたは `latest` エイリアス のいずれかを持つすべての artifact バージョンを検索する: + +```python +# 文字列 `model` を含み、かつ `image-classification` タグまたは +# `latest` エイリアス のいずれかを持つすべての artifact バージョンを検索します +registry_filters = { + "name": {"$regex": "model"} +} + +# 論理 $or 演算子を使用して artifact バージョンをフィルタリングします +version_filters = { + "$or": [ + {"tag": "image-classification"}, + {"alias": "production"} + ] +} + +# フィルタに一致するすべての artifact バージョンのイテラブルを返します +artifacts = api.registries(filter=registry_filters).collections().versions(filter=version_filters) +``` + +論理クエリ演算子の詳細については、MongoDB のドキュメント [logical query operators](https://www.mongodb.com/docs/manual/reference/operator/query-logical/) を参照してください。 + +前述の コードスニペット における `artifacts` イテラブルの各アイテムは `Artifact` クラスのインスタンスです。つまり、`name`、`collection`、`aliases`、`tags`、`created_at` などの各 artifact の属性に アクセス できます。 + +```python +for art in artifacts: + print(f"artifact name: {art.name}") + print(f"collection artifact belongs to: { art.collection.name}") + print(f"artifact aliases: {art.aliases}") + print(f"tags attached to artifact: {art.tags}") + print(f"artifact created at: {art.created_at}\n") +``` + +artifact オブジェクト の属性の完全なリストについては、API リファレンスドキュメントの [Artifacts Class](/models/ref/python/experiments/artifact/) を参照してください。 + +registry や collection に関係なく、2024-01-08 から 2025-03-04 13:10 UTC の間に作成されたすべての artifact バージョンをフィルタリングする: + +```python +# 2024-01-08 から 2025-03-04 13:10 UTC の間に作成されたすべての artifact バージョンを検索します。 + +artifact_filters = { + "alias": "latest", + "created_at" : {"$gte": "2024-01-08", "$lte": "2025-03-04 13:10:00"}, +} + +# フィルタに一致するすべての artifact バージョンのイテラブルを返します +artifacts = api.registries().collections().versions(filter=artifact_filters) +``` + +日付と時刻は `YYYY-MM-DD HH:MM:SS` の形式で指定します。日付のみでフィルタリングしたい場合は、時、分、秒を省略できます。 + +クエリ述語の詳細については、MongoDB のドキュメント [query predicates](https://www.mongodb.com/docs/manual/reference/mql/query-predicates/logical/) を参照してください。 \ No newline at end of file diff --git a/ja/models/reports.mdx b/ja/models/reports.mdx index 84b60673a8..a66b3f473e 100644 --- a/ja/models/reports.mdx +++ b/ja/models/reports.mdx @@ -1,57 +1,57 @@ --- -title: レポート -description: 機械学習プロジェクトのためのプロジェクト管理とコラボレーションツール +title: Reports の概要 +description: 機械学習 プロジェクト のための、プロジェクト管理およびコラボレーション ツール --- +import { ColabLink } from '/snippets/en/_includes/colab-link.mdx'; +import { TryProductLink } from '/snippets/en/_includes/try-product-link.mdx'; - - - + + + -W&B Reportsを使って: -- Runsを整理する。 -- 可視化を埋め込み、自動化する。 -- 学びを説明する。 -- LaTeXのzipファイルやPDFとして、共同作業者と更新を共有する。 +W&B Reports を使用すると、以下のことが可能になります: +- Runs の整理。 +- 可視化(visualization)の埋め込みと自動化。 +- 分析による 学び の記述。 +- コラボレーターとの進捗共有(LaTeX の zip ファイルや PDF 形式)。 +{/* {% embed url="https://www.youtube.com/watch?v=2xeJIv_K_eI" %} */} - -次の画像は、トレーニング中にW&Bにログされたメトリクスから作成されたレポートの一部を示しています。 +以下の画像は、トレーニング中に W&B に ログ された メトリクス から作成された レポート の一部を示しています。 - + ベンチマーク結果を含む W&B レポート -上記の画像が撮影されたレポートは[こちら](https://wandb.ai/stacey/saferlife/reports/SafeLife-Benchmark-Experiments--Vmlldzo0NjE4MzM)からご覧いただけます。 +上記の画像の元となった レポート は [こちら](https://wandb.ai/stacey/saferlife/reports/SafeLife-Benchmark-Experiments--Vmlldzo0NjE4MzM) からご覧いただけます。 ## 仕組み +数回のクリックで、コラボレーション可能な レポート を作成できます。 -簡単なクリック操作で共同レポートを作成することができます。 - -1. W&B App内のW&Bプロジェクトワークスペースに移動します。 -2. ワークスペースの右上にある**Create report**ボタンをクリックします。 +1. W&B App で W&B Projects の Workspace に移動します。 +2. Workspace の右上にある **Create report** ボタンをクリックします。 - + Create report ボタン -3. **Create Report**と題したモーダルが表示されます。レポートに追加したいチャートとパネルを選択してください。(後でチャートとパネルを追加または削除することができます)。 -4. **Create report**をクリックします。 -5. レポートを希望の状態に編集します。 -6. **Publish to project**をクリックします。 -7. **Share**ボタンをクリックし、共同作業者とレポートを共有します。 +3. **Create Report** というタイトルのモーダルが表示されます。 レポート に追加したいチャートや パネル を選択します(チャートや パネル は後で追加・削除が可能です)。 +4. **Create report** をクリックします。 +5. レポート をお好みの状態に編集します。 +6. **Publish to project** をクリックします。 +7. **Share** ボタンをクリックして、コラボレーターに レポート を共有します。 -W&B Python SDKを使用して、インタラクティブにまたプログラム的にReportsを作成する方法については、[Create a report](/ja/models/reports/create-a-report/)ページをご覧ください。 +W&B Python SDK を使用して、対話的またはプログラムによって レポート を作成する方法の詳細については、 [Create a report](/models/reports/create-a-report/) ページを参照してください。 ## 開始方法 +ユースケース に応じて、W&B Reports を使い始めるための以下のリソースを活用してください: -ユースケースに応じて、W&B Reportsを開始するための以下のリソースを探索してください: - -* W&B Reportsの概要をつかむために、[ビデオデモンストレーション](https://www.youtube.com/watch?v=2xeJIv_K_eI)をご覧ください。 -* ライブレポートの例を見たい方は、[Reports gallery](/ja/models/reports/reports-gallery/)を探索してください。 -* ワークスペースの作成とカスタマイズ方法を学ぶためには、[Programmatic Workspaces](/ja/tutorials/workspaces)チュートリアルを試してください。 -* [W&B Fully Connected](http://wandb.me/fc)でキュレーションされたReportsをお読みください。 +* [ビデオデモ](https://www.youtube.com/watch?v=2xeJIv_K_eI) で W&B Reports の概要を確認する。 +* [Reports gallery](/models/reports/reports-gallery/) で公開されている レポート の例を見る。 +* [Programmatic Workspaces](/models/tutorials/workspaces) チュートリアルで、 Workspace の作成とカスタマイズ方法を学ぶ。 +* [W&B Fully Connected](https://wandb.me/fc) で厳選された レポート を読む。 -## ベストプラクティスとヒント +## 推奨されるプラクティスとヒント -Experimentsとログに関するベストプラクティスとヒントについては、[Best Practices: Reports](https://wandb.ai/wandb/pytorch-lightning-e2e/reports/W-B-Best-Practices-Guide--VmlldzozNTU1ODY1#reports)をご覧ください。 \ No newline at end of file +Experiments や ログ に関する ベストプラスティス とヒントについては、 [Best Practices: Reports](https://wandb.ai/wandb/pytorch-lightning-e2e/reports/W-B-Best-Practices-Guide--VmlldzozNTU1ODY1#reports) を参照してください。 \ No newline at end of file diff --git a/ja/models/reports/clone-and-export-reports.mdx b/ja/models/reports/clone-and-export-reports.mdx index 5643408a4e..dd4e7edeaa 100644 --- a/ja/models/reports/clone-and-export-reports.mdx +++ b/ja/models/reports/clone-and-export-reports.mdx @@ -1,26 +1,30 @@ --- -title: レポートをクローンしてエクスポートする -description: W&B レポートを PDF または LaTeX としてエクスポートします。 +title: Reports の複製とエクスポート +description: W&B Reports を PDF または LaTeX としてエクスポートします。 --- -## レポートをエクスポート + +W&B Report および Workspace API はパブリックプレビュー版です。 + -レポートを PDF または LaTeX としてエクスポートします。レポート内でケバブアイコンを選択し、ドロップダウンメニューを展開します。**Download** を選択し、PDF または LaTeX の出力形式を選択します。 +## Reports のエクスポート -## レポートをクローン +Reports を PDF または LaTeX としてエクスポートします。 Report 内でケバブアイコン(3つの点)を選択してドロップダウンメニューを展開します。 **Download** を選択し、PDF または LaTeX のいずれかの出力形式を選択してください。 + +## Reports の複製 - -レポート内でケバブアイコンを選択し、ドロップダウンメニューを展開します。**Clone this report** ボタンを選択します。モーダルでクローンされたレポートの保存先を選択します。**Clone report** を選択します。 + +Report 内でケバブアイコンを選択してドロップダウンメニューを展開します。 **Clone this report** ボタンを選択します。 モーダルウィンドウで、複製した Report の保存先を選択します。 **Clone report** を選択してください。 - + Cloning reports -プロジェクトのテンプレートと形式を再利用するためにレポートをクローンします。チームのアカウント内でプロジェクトをクローンした場合、クローンされたプロジェクトはチームに表示されます。個人のアカウント内でプロジェクトをクローンした場合、そのプロジェクトはそのユーザーのみに表示されます。 +Project のテンプレートやフォーマットを再利用するために Report を複製します。 Teams アカウント内で Project を複製した場合、複製された Project は Team メンバーに表示されます。 個人のアカウント内で複製された Project は、その Users にのみ表示されます。 - -テンプレートとして使用するために URL からレポートをロードします。 + +URL から Report をロードして、テンプレートとして使用します。 ```python report = wr.Report( diff --git a/ja/models/reports/collaborate-on-reports.mdx b/ja/models/reports/collaborate-on-reports.mdx index 6438e24159..964d903721 100644 --- a/ja/models/reports/collaborate-on-reports.mdx +++ b/ja/models/reports/collaborate-on-reports.mdx @@ -1,20 +1,36 @@ --- -title: レポートを共同で作成する -description: W&B Reports を同僚やチームメンバーと共有してコラボレーションしましょう。 +title: Reports で共同作業する +description: 同僚、共著者、そしてチームと W&B Reports を共有し、コラボレーションしましょう。 --- -レポートを保存したら、**Share** ボタンを選択してコラボレーションできます。**Edit** ボタンを選択すると、レポートの下書きコピーが作成されます。下書きレポートは自動保存されます。変更を共有レポートに公開するには、**Save to report** を選択します。 +このページでは、チームで Reports を共同編集・共有するためのさまざまな方法について説明します。 -編集の競合が発生すると警告通知が表示されます。これは、あなたと他のコラボレーターが同じレポートを同時に編集した場合に発生する可能性があります。警告通知は、編集の競合を解決するためのガイドとなります。 +## Report を共有する +Report を表示中に **Share** をクリックし、以下のいずれかを行います。 +- メールアドレスまたはユーザー名で Report のリンクを共有するには、**Invite** をクリックします。メールアドレスまたはユーザー名を入力し、**Can view**(閲覧可能)または **Can edit**(編集可能)を選択して、**Invite** をクリックします。メールで共有する場合、そのメールアドレスが組織やチームのメンバーである必要はありません。 +- 共有リンクを生成するには、**Share** をクリックします。リンクの権限を調整し、**Copy report link** をクリックします。そのリンクをメンバーに共有してください。 + +Report の閲覧中にパネルをクリックすると、フルスクリーンモードで開きます。ブラウザからその URL をコピーして他の ユーザー に共有すると、その ユーザー がリンクにアクセスした際に、パネルが直接フルスクリーンモードで開きます。 + +## Report を編集する +チームメンバーが **Edit** ボタンをクリックして Report の編集を開始すると、ドラフトが自動的に保存されます。変更を反映するには **Save to report** を選択してください。 + +2 人のチームメンバーが同時に Report を編集するなど、編集の競合が発生した場合は、警告通知が表示され、競合の解決を促します。 - 『Public』プロジェクト内でのレポート共有モーダル + Report sharing modal for a report in a  'Public' project -## レポートにコメントする +## Report にコメントする +Report にコメントを残すには **Comment** をクリックします。 -レポート内のパネルにあるコメントボタンをクリックして、そのパネルに直接コメントを追加します。 +パネルに直接コメントするには、パネルの上にカーソルを置き、吹き出しのような形をしたコメントボタンをクリックします。 - パネルにコメントを追加する - \ No newline at end of file + Adding a comment to a panel + + +## Report をスター(お気に入り)に登録する +チームに大量の Reports がある場合、Report 上部の **Star** をクリックしてお気に入りに追加できます。チームの Reports 一覧を表示しているときに、各 Report の行にあるスターをクリックしてお気に入りに追加することも可能です。スター付きの Reports はリストの最上部に表示されます。 + +Reports の一覧からは、各 Report に何人のメンバーがスターを付けたかを確認でき、相対的な注目度を把握するのに役立ちます。 \ No newline at end of file diff --git a/ja/models/reports/create-a-report.mdx b/ja/models/reports/create-a-report.mdx index b824a8eb43..c0abb0ae24 100644 --- a/ja/models/reports/create-a-report.mdx +++ b/ja/models/reports/create-a-report.mdx @@ -1,62 +1,65 @@ --- title: レポートを作成する -description: W&B レポートは、App UI を使用するか Weights & Biases SDK を使ってプログラムで作成します。 +description: W&B App またはプログラムから W&B Reports を作成します。 --- -レポートを作成するには、W&B App UI をインタラクティブに使用するか、W&B Python SDK を使用してプログラムで行います。 - -この[Google Colab の例](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/intro/Report_API_Quickstart.ipynb)を参照してください。 +W&B Report および Workspace API はパブリックプレビュー中です。 +以下のタブを選択して、W&B App または W&B Report および Workspace API を使用してプログラムでレポートを作成する方法を確認してください。 + +プログラムでレポートを作成する方法の例については、こちらの [Google Colab](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/intro/Report_API_Quickstart.ipynb) を参照してください。 + + - -1. W&B App でプロジェクトワークスペースに移動します。 -2. ワークスペースの右上隅にある **Create report** をクリックします。 + +1. W&B App でプロジェクトの Workspace に移動します。 +2. Workspace の右上隅にある **Create report** をクリックします。 - - + + Create report button -3. モーダルが表示されます。最初に使用したいチャートを選択します。レポートのインターフェースから後でチャートを追加または削除することができます。 +3. モーダルが表示されます。最初に追加したいチャートを選択します。チャートは後でレポートインターフェースから追加または削除できます。 - + Create report modal -4. **Filter run sets** オプションを選択すると、新しい run がレポートに追加されるのを防げます。このオプションをオンまたはオフに切り替えることができます。**Create report** をクリックすると、レポートタブにドラフトレポートが表示され、作業を続けることができます。 +4. 新しい Runs がレポートに追加されないようにするには、 **Filter run sets** オプションを選択します。このオプションはオンとオフを切り替えることができます。 **Create report** をクリックすると、レポートタブにドラフトレポートが作成され、作業を継続できるようになります。 -1. W&B App でプロジェクトワークスペースに移動します。 -2. プロジェクト内の **Reports** タブ(クリップボードの画像)を選択します。 -3. レポートページで **Create Report** ボタンを選択します。 +1. W&B App でプロジェクトの Workspace に移動します。 +2. プロジェクトの **Reports** タブ(クリップボードのアイコン)を選択します。 +3. レポートページの **Create Report** ボタンを選択します。 - - + + Create report button - -`wandb` ライブラリを使用してプログラムでレポートを作成します。 + +プログラムでレポートを作成する: -1. W&B SDK と Workspaces API をインストールします: +1. W&B SDK (`wandb`) と Report および Workspace API (`wandb-workspaces`) をインストールします: ```bash pip install wandb wandb-workspaces ``` -2. 次に、ワークスペースをインポートします。 +2. 次に、workspaces をインポートします ```python import wandb import wandb_workspaces.reports.v2 as wr ``` -3. `wandb_workspaces.reports.v2.Report` を使用してレポートを作成します。Report Class Public API ([`wandb.apis.reports`](/ja/models/ref/python/public-api/api#reports)) を使ってレポートのインスタンスを作成します。プロジェクトに名前を指定します。 +3. `wandb_workspaces.reports.v2.Report` を使用してレポートを作成します。Report Class Public API ([`wandb.apis.reports`](/models/ref/python/public-api/api#reports)) でレポートインスタンスを作成します。プロジェクト名を指定してください。 ```python report = wr.Report(project="report_standard") ``` -4. レポートを保存します。レポートは、`save()` メソッドを呼び出すまで W&B サーバーにアップロードされません。 +4. レポートを保存します。`.save()` メソッドを呼び出すまで、レポートは W&B サーバーにアップロードされません: ```python report.save() ``` -App UI を使用してインタラクティブに、またはプログラムでレポートを編集する方法については、[Edit a report](/ja/models/reports/edit-a-report/) を参照してください。 +App UI を使用して対話的に、またはプログラムでレポートを編集する方法については、[Edit a report](/models/reports/edit-a-report/) を参照してください。 \ No newline at end of file diff --git a/ja/models/reports/cross-project-reports.mdx b/ja/models/reports/cross-project-reports.mdx index 374f507246..289425afec 100644 --- a/ja/models/reports/cross-project-reports.mdx +++ b/ja/models/reports/cross-project-reports.mdx @@ -1,40 +1,40 @@ --- -title: プロジェクト間で run を比較する -description: 異なる2つのプロジェクトのrunをプロジェクト間レポートで比較する。 +title: プロジェクトをまたいで Runs を比較する +description: クロスプロジェクト Reports を使用して、2つの異なる Projects からの Runs を比較します。 --- -[プロジェクトを超えた run の比較を示すビデオ](https://www.youtube.com/watch?v=uD4if_nGrs4) を視聴してください (2 分)。 +[プロジェクトをまたいだ Run の比較デモビデオ](https://www.youtube.com/watch?v=uD4if_nGrs4)(2分)をご覧ください。 -クロスプロジェクト レポートを使用して、異なる 2 つのプロジェクトからの run を比較します。run セット テーブル内のプロジェクト セレクターを使用してプロジェクトを選択します。 +クロスプロジェクト Reports を使用すると、2つの異なる Projects から Runs を比較できます。Run set テーブルにあるプロジェクトセレクターを使用して、プロジェクトを選択します。 - 異なるプロジェクト間での run の比較 + Compare runs across different projects -このセクションの可視化は、最初のアクティブな run セットから列を引き出します。必要なメトリクスが線プロットに表示されない場合は、その列が利用可能であることを確認してください。 +セクション内の可視化ツールは、最初にアクティブになっている Run set からカラムを取得します。ラインプロットで目的のメトリクスが表示されない場合は、そのセクションでチェックされている最初の Run set にそのカラムが含まれているか確認してください。 -この機能は時系列線上の履歴データをサポートしていますが、異なるプロジェクトから異なるサマリー メトリクスを引き出すことはサポートしていません。つまり、別のプロジェクトでのみログに記録された列から散布図を作成することはできません。 +この機能は時系列ラインの履歴データをサポートしていますが、異なる Projects から異なるサマリーメトリクスを取得することはサポートしていません。言い換えれば、別のプロジェクトでのみログ記録されているカラムから散布図を作成することはできません。 -2 つのプロジェクトからの run を比較する必要があるが、列が動作していない場合は、1 つのプロジェクトの run にタグを追加してから、それらの run を他のプロジェクトに移動します。各プロジェクトからの run のみをフィルタリングすることはできますが、レポートには両方の run セットのすべての列が含まれます。 +2つの Projects の Runs を比較する必要があり、カラムがうまく機能しない場合は、一方のプロジェクトの Runs にタグを追加してから、それらの Runs をもう一方のプロジェクトに移動してください。各プロジェクトからの Runs のみをフィルタリングすることも可能ですし、レポートには両方の Run set のすべてのカラムが含まれるようになります。 -## ビュー専用レポートリンク +## 閲覧専用のレポートリンク -プライベートプロジェクトまたはチーム プロジェクトにあるレポートへのビュー専用リンクを共有します。 +プライベートプロジェクトやチームプロジェクトにあるレポートに対して、閲覧専用リンクを共有できます。 - + View-only report links -ビュー専用レポートリンクは、URL に秘密のアクセストークンを追加するため、リンクを開くと誰でもページを表示できます。誰でも最初にログインせずにマジックリンクを使用してレポートを表示できます。[W&B Local](/ja/platform/hosting/) プライベート クラウド インストールのお客様の場合、これらのリンクはファイアウォールの内側に残るため、プライベート インスタンスへのアクセス _と_ ビュー専用リンクへのアクセスを持つチームのメンバーのみがレポートを表示できます。 +閲覧専用のレポートリンクは URL に秘密のアクセストークンを追加するため、リンクを開いた全員がページを閲覧できます。このマジックリンクを使用すれば、ログインすることなく誰でもレポートを閲覧可能です。[W&B Local](/platform/hosting/) private cloud をご利用のお客様の場合、これらのリンクはファイアウォールの内側に留まるため、プライベートインスタンスへのアクセス権 _および_ 閲覧専用リンクの両方を持つチームメンバーのみがレポートを閲覧できます。 -**ビュー専用モード** では、ログインしていない人でもチャートを見たり、ツールチップを見たり、ズームイン・アウトしてチャートを閲覧したり、テーブル内の列をスクロールしたりすることができます。ビュー モードの場合、新しいチャートや新しいテーブル クエリを作成してデータを探ることはできません。レポートリンクのビュー専用訪問者は run をクリックして run ページに移動することはできません。また、ビュー専用訪問者は共有モーダルを見ることはできず、代わりに「ビュー専用アクセスでは共有できません」というツールチップがホバー中に表示されます。 +**閲覧専用モード** では、ログインしていないユーザーでもチャートの閲覧、マウスオーバーによる値のツールチップ表示、チャートのズーム、テーブルのカラムのスクロールが可能です。閲覧モード中、データの探索のための新しいチャート作成や新しいテーブルクエリの作成はできません。閲覧専用の訪問者は、Run をクリックして Run ページに移動することはできません。また、閲覧専用の訪問者は共有モーダルを見ることはできず、ホバー時に `Sharing not available for view only access` というツールチップが表示されます。 -マジックリンクは、「Private」および「Team」プロジェクトでのみ利用可能です。「Public」(誰でも閲覧可能)または「Open」(誰でも閲覧および run 提供可能)プロジェクトの場合、このプロジェクトは公開で、リンクを持つ誰でもすでに利用できるため、リンクをオン/オフできません。 +マジックリンクは「Private」および「Team」プロジェクトでのみ利用可能です。「Public」(誰でも閲覧可能)または「Open」(誰でも閲覧および Run の投稿が可能)プロジェクトでは、プロジェクト自体がすでにリンクを知っている全員に公開されているため、リンクのオン/オフを切り替えることはできません。 -## グラフをレポートに送信 +## グラフをレポートに送る -ワークスペースからレポートにグラフを送信して、進捗を追跡します。 レポートにコピーしたいチャートまたはパネルのドロップダウン メニューをクリックし、**Add to report** をクリックして送信先のレポートを選択します。 \ No newline at end of file +進捗状況を記録するために、Workspace からレポートにグラフを送信します。レポートにコピーしたいチャートまたはパネルのドロップダウンメニューをクリックし、**Add to report** を選択して宛先のレポートを指定してください。 \ No newline at end of file diff --git a/ja/models/reports/edit-a-report.mdx b/ja/models/reports/edit-a-report.mdx index 25f53a242d..4e50a2522b 100644 --- a/ja/models/reports/edit-a-report.mdx +++ b/ja/models/reports/edit-a-report.mdx @@ -1,40 +1,46 @@ --- title: レポートを編集する -description: App UI を使用してインタラクティブに、または W&B SDK を使用してプログラムで レポート を編集します。 +description: App UI を使用してインタラクティブに、または W&B SDK を使用してプログラムから Reports を編集します。 --- -レポートを App UI でインタラクティブに、または W&B SDK を使ってプログラムで編集します。 + +W&B Report および Workspace API はパブリックプレビュー中です。 + -Reports は _ブロック_ で構成されます。ブロックはレポートの本体を構成します。これらのブロック内でテキスト、画像、組み込みの可視化、実験と run のプロット、パネルグリッドを追加できます。 +App UI を使用してインタラクティブに、または W&B SDK を使用してプログラムで Reports を編集できます。 -_パネルグリッド_ は、パネルと _run セット_ を保持する特定の種類のブロックです。Run セットは W&B のプロジェクトにログされる run のコレクションです。パネルは run セット データの可視化を行います。 +Reports は _ブロック_ で構成されています。ブロックはレポートの本体を形成します。これらのブロック内には、テキスト、画像、埋め込み可視化、実験や run からのプロット、およびパネルグリッドを追加できます。 + +_パネルグリッド_ は、パネルと _run sets_ を保持する特定のタイプのブロックです。Run sets は、W&B のプロジェクトにログ記録された run のコレクションです。パネルは、run set データの可視化です。 -[プログラム ワークスペースのチュートリアル](/ja/tutorials/workspaces) を参照して、保存済みワークスペースビューを作成およびカスタマイズするステップバイステップの例を見てみましょう。 +保存された Workspace ビューを作成およびカスタマイズする方法のステップバイステップの例については、[プログラムによるワークスペースのチュートリアル](/models/tutorials/workspaces) を確認してください。 -プログラムでレポートを編集する場合は、W&B Python SDK に加えて `wandb-workspaces` をインストールしてください: +プログラムでレポートを編集する場合は、W&B Python SDK に加えて、W&B Report および Workspace API である `wandb-workspaces` がインストールされていることを確認してください。 +```pip pip install wandb wandb-workspaces +``` -## プロットを追加する +## プロットの追加 -各パネルグリッドには一連の run セットと一連のパネルがあります。このセクションの下部にある run セットで、グリッド内のパネルに表示されるデータを制御します。異なる run セットからデータを取得するチャートを追加する場合は、新しいパネルグリッドを作成してください。 +各パネルグリッドには、一連の run sets と一連のパネルがあります。セクションの下部にある run sets は、グリッド内のパネルに表示されるデータを制御します。別の run セットからデータを取得するチャートを追加したい場合は、新しいパネルグリッドを作成してください。 - -レポートにスラッシュ(`/`)を入力して、ドロップダウンメニューを表示します。**Add panel** を選択してパネルを追加します。W&B でサポートされている任意のパネルを追加できます。例えば、ラインプロット、散布図や並行座標チャートなどです。 + +レポート内でスラッシュ( `/` )を入力してドロップダウンメニューを表示します。**Add panel** を選択してパネルを追加します。折れ線グラフ、散布図、並行座標プロットなど、W&B でサポートされている任意のパネルを追加できます。 Add charts to a report - -SDK を使用してプログラムでレポートにプロットを追加します。`PanelGrid` Public API クラスの `panels` パラメータに、1つ以上のプロットまたはチャートのオブジェクトのリストを渡します。対応する Python クラスを使用してプロットまたはチャートのオブジェクトを作成します。 + +SDK を使用してプログラムでプロットをレポートに追加します。`PanelGrid` パブリック API クラスの `panels` パラメータに、1つ以上のプロットまたはチャートオブジェクトのリストを渡します。関連する Python クラスを使用してプロットまたはチャートオブジェクトを作成します。 -以下の例では、ラインプロットと散布図の作成方法を示しています。 +次の例では、折れ線グラフと散布図を作成する方法を示します。 ```python import wandb @@ -58,130 +64,440 @@ blocks = [ report.blocks = blocks report.save() ``` -プログラムでレポートに追加できるプロットやチャートの詳細については、`wr.panels` を参照してください。 + +プログラムでレポートに追加できる利用可能なプロットやチャートの詳細については、`wr.panels` を参照してください。 +## run sets の追加 -## Run セットを追加する - -App UI または W&B SDK を使用して、プロジェクトから run セットを追加します。 +App UI または W&B SDK を使用して、プロジェクトから run sets をインタラクティブに追加します。 - -レポートにスラッシュ(`/`)を入力して、ドロップダウンメニューを表示します。ドロップダウンから Panel Grid を選択します。これにより、レポートが作成されたプロジェクトから自動的に run セットがインポートされます。 + +レポート内でスラッシュ( `/` )を入力してドロップダウンメニューを表示します。ドロップダウンから **Panel Grid** を選択します。これにより、レポートが作成されたプロジェクトから run set が自動的にインポートされます。 + +パネルをレポートにインポートすると、run 名はプロジェクトから継承されます。レポート内では、読者により多くのコンテキストを提供するために、オプションで [run の名前を変更](/models/runs/#rename-a-run) することができます。run の名前は個別のパネル内でのみ変更されます。同じレポート内でパネルを複製した場合、複製されたパネル内でも run 名が変更されます。 + +1. レポート内で、鉛筆アイコンをクリックしてレポートエディタを開きます。 +1. run set 内で、名前を変更する run を見つけます。レポート名にカーソルを合わせ、3つの垂直のドットをクリックします。次のいずれかの選択肢を選び、フォームを送信します。 + + - **Rename run for project**: プロジェクト全体で run の名前を変更します。新しいランダムな名前を生成するには、フィールドを空白のままにします。 + - **Rename run for panel grid**: 他のコンテキストでの既存の名前を保持したまま、レポート内でのみ run の名前を変更します。新しいランダムな名前の生成はサポートされていません。 + +1. **Publish report** をクリックします。 - -`wr.Runset()` および `wr.PanelGrid` クラスを使用してプロジェクトから run セットを追加します。以下の手順で run セットの追加方法を示します: - -1. `wr.Runset()` オブジェクト インスタンスを作成します。プロジェクト パラメータのために、run セットを含むプロジェクトの名前を指定し、エンティティ パラメータのためにプロジェクトを所有するエンティティを指定します。 -2. `wr.PanelGrid()` オブジェクト インスタンスを作成します。1つ以上の runset オブジェクトを `runsets` パラメータに渡します。 -3. 1つ以上の `wr.PanelGrid()` オブジェクト インスタンスをリストに保存します。 -4. パネルグリッド インスタンスのリストを使用して、レポート インスタンス ブロック属性を更新します。 - ```python - import wandb - import wandb_workspaces.reports.v2 as wr - - report = wr.Report( - project="report-editing", - title="An amazing title", - description="A descriptive description.", - ) - - panel_grids = wr.PanelGrid( - runsets=[wr.RunSet(project="", entity="")] - ) - - report.blocks = [panel_grids] - report.save() - ``` -ひとつの SDK 呼び出しで run セットとパネルを追加することもできます: - ```python - import wandb - - report = wr.Report( - project="report-editing", - title="An amazing title", - description="A descriptive description.", - ) - - panel_grids = wr.PanelGrid( - panels=[ - wr.LinePlot( - title="line title", - x="x", - y=["y"], - range_x=[0, 100], - range_y=[0, 100], - log_x=True, - log_y=True, - title_x="x axis title", - title_y="y axis title", - ignore_outliers=True, - groupby="hyperparam1", - groupby_aggfunc="mean", - groupby_rangefunc="minmax", - smoothing_factor=0.5, - smoothing_type="gaussian", - smoothing_show_original=True, - max_runs_to_show=10, - plot_type="stacked-area", - font_size="large", - legend_position="west", - ), - wr.ScatterPlot( - title="scatter title", - x="y", - y="y", - # z='x', - range_x=[0, 0.0005], - range_y=[0, 0.0005], - # range_z=[0,1], - log_x=False, - log_y=False, - # log_z=True, - running_ymin=True, - running_ymean=True, - running_ymax=True, - font_size="small", - regression=True, - ), - ], - runsets=[wr.RunSet(project="", entity="")], - ) - - - report.blocks = [panel_grids] - report.save() - ``` + +`wr.Runset()` および `wr.PanelGrid` クラスを使用して、プロジェクトから run sets を追加します。次の手順は、runset を追加する方法を説明しています。 + +1. `wr.Runset()` オブジェクトのインスタンスを作成します。project パラメータには run sets を含むプロジェクトの名前を、entity パラメータにはプロジェクトを所有する entity を指定します。 +2. `wr.PanelGrid()` オブジェクトのインスタンスを作成します。`run sets` パラメータに1つ以上の runset オブジェクトのリストを渡します。 +3. 1つ以上の `wr.PanelGrid()` オブジェクトインスタンスをリストに格納します。 +4. レポートインスタンスの blocks 属性をパネルグリッドインスタンスのリストで更新します。 + +```python +import wandb +import wandb_workspaces.reports.v2 as wr + +report = wr.Report( + project="report-editing", + title="An amazing title", + description="A descriptive description.", +) + +panel_grids = wr.PanelGrid( + runsets=[wr.RunSet(project="", entity="")] +) + +report.blocks = [panel_grids] +report.save() +``` + +オプションで、SDK への1回の呼び出しで runsets とパネルを追加することもできます。 + +```python +import wandb + +report = wr.Report( + project="report-editing", + title="An amazing title", + description="A descriptive description.", +) + +panel_grids = wr.PanelGrid( + panels=[ + wr.LinePlot( + title="line title", + x="x", + y=["y"], + range_x=[0, 100], + range_y=[0, 100], + log_x=True, + log_y=True, + title_x="x axis title", + title_y="y axis title", + ignore_outliers=True, + groupby="hyperparam1", + groupby_aggfunc="mean", + groupby_rangefunc="minmax", + smoothing_factor=0.5, + smoothing_type="gaussian", + smoothing_show_original=True, + max_runs_to_show=10, + plot_type="stacked-area", + font_size="large", + legend_position="west", + ), + wr.ScatterPlot( + title="scatter title", + x="y", + y="y", + # z='x', + range_x=[0, 0.0005], + range_y=[0, 0.0005], + # range_z=[0,1], + log_x=False, + log_y=False, + # log_z=True, + running_ymin=True, + running_ymean=True, + running_ymax=True, + font_size="small", + regression=True, + ), + ], + runsets=[wr.RunSet(project="", entity="")], +) + + +report.blocks = [panel_grids] +report.save() +``` +## run set の固定 (Freeze) -## Run セットをフリーズする +レポートは、プロジェクトからの最新データを表示するために run sets を自動的に更新します。レポート内の run set を *固定 (freezing)* することで、その状態を保存できます。run set を固定すると、特定の時点におけるレポート内の run set の状態が保持されます。 -レポートはプロジェクトから最新のデータを表示するために run セットを自動的に更新します。しかし、レポート内の run セットを保持するには、その run セットを*フリーズ* することができます。Run セットをフリーズすると、特定の時点のレポート内の run セットの状態が保持されます。 - -レポートを表示する際に run セットをフリーズするには、**Filter** ボタンの近くにあるスノーフレーク アイコンをクリックします。 +レポートの閲覧中に run set を固定するには、パネルグリッド内の **Filter** ボタンの近くにある雪の結晶アイコンをクリックします。 - + Freeze runset button -## コード ブロックを追加する +## プログラムによる run set のグループ化 + +[Workspace and Reports API](/models/ref/wandb_workspaces/reports) を使用して、プログラムで run set 内の run をグループ化します。 + +config 値、run メタデータ、または summary メトリクスによって run set 内の run をグループ化できます。次の表に、利用可能なグループ化メソッドと、そのメソッドで使用可能なキーをリストします。 + +| グループ化メソッド | 説明 | 使用可能なキー | +| ---|------| --- | +| Config 値 | config 値で run をグループ化 | `wandb.init(config=)` の config パラメータで指定された値 | +| Run メタデータ | run メタデータで run をグループ化 | `State`, `Name`, `JobType` | +| Summary メトリクス | summary メトリクスで run をグループ化 | `wandb.Run.log()` で run にログ記録した値 | + +### config 値による run のグループ化 + +同様の設定を持つ run を比較するために、config 値で run をグループ化します。config 値は、run 設定 `(wandb.init(config=))` で指定するパラメータです。config 値で run をグループ化するには、`config.` 構文を使用します。ここで、`` はグループ化に使用したい config 値の名前です。 + +例えば、次のコードスニペットは、まず `group` の config 値を使用して run を初期化し、次に `group` config 値に基づいてレポート内の run をグループ化します。`` と `` の値は、自身の W&B entity 名とプロジェクト名に置き換えてください。 + +```python +import wandb +import wandb_workspaces.reports.v2 as wr + +entity = "" +project = "" + +for group in ["control", "experiment_a", "experiment_b"]: + for i in range(3): + with wandb.init(entity=entity, project=project, group=group, config={"group": group, "run": i}, name=f"{group}_run_{i}") as run: + # トレーニングのシミュレーション + for step in range(100): + run.log({ + "acc": 0.5 + (step / 100) * 0.3 + (i * 0.05), + "loss": 1.0 - (step / 100) * 0.5 + }) +``` + +Python スクリプトまたはノートブック内で、`config.group` 値によって run をグループ化できます。 + +```python +runset = wr.Runset( + project=project, + entity=entity, + groupby=["config.group"] # "group" config 値でグループ化 +) +``` + +前の例に続き、グループ化された run set を含むレポートを作成できます。 + +```python +report = wr.Report( + entity=entity, + project=project, + title="Grouped Runs Example", +) + +report.blocks = [ + wr.PanelGrid( + runsets=[runset], + ) + ] + +report.save() +``` + +### run メタデータによる run のグループ化 + +run の名前 (`Name`)、状態 (`State`)、またはジョブタイプ (`JobType`) で run をグループ化します。 + +前の例に続き、次のコードスニペットを使用して run を名前でグループ化できます。 + +```python +runset = wr.Runset( + project=project, + entity=entity, + groupby=["Name"] # run 名でグループ化 +) +``` + + +run の名前は、`wandb.init(name=)` パラメータで指定する名前です。名前を指定しない場合、W&B は run に対してランダムな名前を生成します。 + +run の名前は、W&B App の run の **Overview** ページ、またはプログラムから `Api.runs().run.name` で確認できます。 + + +### summary メトリクスによる run のグループ化 + +次の例では、summary メトリクスによって run をグループ化する方法を示します。summary メトリクスは、`wandb.Run.log()` で run にログ記録する値です。run をログ記録した後、W&B App の run の **Overview** ページの **Summary** セクションで summary メトリクスの名前を確認できます。 + +summary メトリクスで run をグループ化するための構文は `summary.` です。ここで、`` はグループ化に使用したい summary メトリクスの名前です。 + +例えば、`acc` という summary メトリクスをログ記録したとします。 + +```python +import wandb +import wandb_workspaces.reports.v2 as wr + +entity = "" +project = "" + +for group in ["control", "experiment_a", "experiment_b"]: + for i in range(3): + with wandb.init(entity=entity, project=project, group=group, config={"group": group, "run": i}, name=f"{group}_run_{i}") as run: + # トレーニングのシミュレーション + for step in range(100): + run.log({ + "acc": 0.5 + (step / 100) * 0.3 + (i * 0.05), + "loss": 1.0 - (step / 100) * 0.5 + }) + +``` + +その後、`summary.acc` summary メトリクスによって run をグループ化できます。 + +```python +runset = wr.Runset( + project=project, + entity=entity, + groupby=["summary.acc"] # summary 値でグループ化 +) +``` -レポートにコードブロックを App UI でインタラクティブに、または W&B SDK で追加します。 +## プログラムによる run set のフィルタリング + +[Workspace and Reports API](/models/ref/wandb_workspaces/reports) を使用して、プログラムで run sets をフィルタリングし、レポートに追加します。 + +フィルター式の一般的な構文は次のとおりです。 + +```text +Filter('key') operation +``` + +ここで、`key` はフィルターの名前、`operation` は比較演算子(例: `>`, `<`, `==`, `in`, `not in`, `or`, `and`)、`` は比較対象の値です。`Filter` は適用したいフィルターのタイプのプレースホルダーです。次の表に、利用可能なフィルターとその説明をリストします。 + +| フィルター | 説明 | 使用可能なキー | +| ---|---| --- | +| `Config('key')` | config 値でフィルタリング | `wandb.init(config=)` の `config` パラメータで指定された値。 | +| `SummaryMetric('key')` | summary メトリクスでフィルタリング | `wandb.Run.log()` で run にログ記録した値。 | +| `Tags('key')` | タグでフィルタリング | run に追加したタグ値(プログラムまたは W&B App を使用)。 | +| `Metric('key')` | run プロパティでフィルタリング | `tags`, `state`, `displayName`, `jobType` | + +フィルターを定義したら、レポートを作成し、フィルタリングされた run sets を `wr.PanelGrid(runsets=)` に渡すことができます。プログラムでレポートにさまざまな要素を追加する方法の詳細については、このページの **Report and Workspace API** タブを参照してください。 + +次の例では、レポート内の run sets をフィルタリングする方法を示します。`<>` で囲まれた値は、自身の値に置き換えてください。 + +### config フィルター + +1つ以上の config 値で runset をフィルタリングします。config 値は、run 設定 (`wandb.init(config=)`) で指定するパラメータです。 + +例えば、次のコードスニペットは、まず `learning_rate` と `batch_size` の config 値を使用して run を初期化し、次に `learning_rate` config 値に基づいてレポート内の run をフィルタリングします。 + +```python +import wandb + +config = { + "learning_rate": 0.01, + "batch_size": 32, +} + +with wandb.init(project="", entity="", config=config) as run: + # トレーニングコードをここに記述 + pass +``` + +Python スクリプトまたはノートブック内で、学習率が `0.01` より大きい run をプログラムでフィルタリングできます。 + +```python +import wandb_workspaces.reports.v2 as wr + +runset = wr.Runset( + entity="", + project="", + filters="Config('learning_rate') > 0.01" +) +``` + +`and` 演算子を使用して、複数の config 値でフィルタリングすることもできます。 + +```python +runset = wr.Runset( + entity="", + project="", + filters="Config('learning_rate') > 0.01 and Config('batch_size') == 32" +) +``` + +前の例に続き、次のようにフィルタリングされた runset を使用してレポートを作成できます。 + +```python +report = wr.Report( + entity="", + project="", + title="My Report" +) + +report.blocks = [ + wr.PanelGrid( + runsets=[runset], + panels=[ + wr.LinePlot( + x="Step", + y=["accuracy"], + ) + ] + ) +] + +report.save() +``` + +### Metric フィルター + +run のタグ (`tags`)、run の状態 (`state`)、run の表示名 (`displayName`)、またはジョブタイプ (`jobType`) に基づいて run sets をフィルタリングします。 + + +`Metric` フィルターは異なる構文を持ちます。値のリストをリストとして渡します。 + +```text +Metric('key') operation [] +``` + + +例えば、3つの run を作成し、それぞれに名前を割り当てる次の Python スニペットを考えてみましょう。 + +```python +import wandb + +with wandb.init(project="", entity="") as run: + for i in range(3): + run.name = f"run{i+1}" + # トレーニングコードをここに記述 + pass +``` + +レポートを作成する際、表示名で run をフィルタリングできます。例えば、`run1`、`run2`、`run3` という名前の run をフィルタリングするには、次のコードを使用できます。 + +```python +runset = wr.Runset( + entity="", + project="", + filters="Metric('displayName') in ['run1', 'run2', 'run3']" +) +``` + + +run の名前は、W&B App の run の **Overview** ページ、またはプログラムから `Api.runs().run.name` で確認できます。 + + +次の例では、run の状態 (`finished`, `crashed`, または `running`) で runset をフィルタリングする方法を示します。 + +```python +runset = wr.Runset( + entity="", + project="", + filters="Metric('state') in ['finished']" +) +``` + +```python +runset = wr.Runset( + entity="", + project="", + filters="Metric('state') not in ['crashed']" +) +``` + +### SummaryMetric フィルター + +次の例では、summary メトリクスによって run set をフィルタリングする方法を示します。summary メトリクスは、`wandb.Run.log()` で run にログ記録する値です。run をログ記録した後、W&B App の run の **Overview** ページの **Summary** セクションで summary メトリクスの名前を確認できます。 + +```python +runset = wr.Runset( + entity="", + project="", + filters="SummaryMetric('accuracy') > 0.9" +) +``` + +```python +runset = wr.Runset( + entity="", + project="", + filters="Metric('state') in ['finished'] and SummaryMetric('train/train_loss') < 0.5" +) +``` + +### Tags フィルター + +次のコードスニペットは、タグによって run set をフィルタリングする方法を示しています。タグは、run に追加する値です(プログラムまたは W&B App を使用)。 + +```python +runset = wr.Runset( + entity="", + project="", + filters="Tags('training') == 'training'" +) +``` + +## コードブロックの追加 + +App UI を使用してインタラクティブに、または W&B SDK を使用してプログラムで、レポートにコードブロックを追加します。 -レポートにスラッシュ(`/`)を入力して、ドロップダウン メニューを表示します。ドロップダウンから **Code** を選択します。 +レポート内でスラッシュ( `/` )を入力してドロップダウンメニューを表示します。ドロップダウンから **Code** を選択します。 -コード ブロックの右側にあるプログラミング言語の名前を選択すると、ドロップダウンが展開されます。利用可能なプログラミング言語の構文を選択してください。Javascript、Python、CSS、JSON、HTML、Markdown、YAML から選べます。 +コードブロックの右側にあるプログラミング言語の名前を選択します。これによりドロップダウンが展開されます。ドロップダウンから、プログラミング言語の構文を選択します。Javascript, Python, CSS, JSON, HTML, Markdown, YAML から選択できます。 - -`wr.CodeBlock` クラスを使用してコード ブロックをプログラムで作成します。言語とコードにそれぞれ表示したい言語名とコードを指定します。 + +`wr.CodeBlock` クラスを使用して、プログラムでコードブロックを作成します。language パラメータと言語パラメータに、それぞれ表示したい言語の名前とコードを指定します。 + +例えば、次の例は YAML ファイルのリストを示しています。 -たとえば、以下の例では、YAML ファイルのリストを示しています。 ```python import wandb import wandb_workspaces.reports.v2 as wr @@ -196,40 +512,48 @@ report.blocks = [ report.save() ``` -これにより、次のようなコードブロックがレンダリングされます: +これにより、次のようなコードブロックがレンダリングされます。 + +```yaml this: - is - a cool: - yaml - file +``` -以下の例では、Python コードブロックを示しています: +次の例は Python のコードブロックを示しています。 +```python report = wr.Report(project="report-editing") report.blocks = [wr.CodeBlock(code=["Hello, World!"], language="python")] report.save() +``` -これにより、次のようなコードブロックがレンダリングされます: +これにより、次のようなコードブロックがレンダリングされます。 +```md Hello, World! +``` -## マークダウンを追加する +## Markdown の追加 -レポートにマークダウンを App UI でインタラクティブに、または W&B SDK で追加します。 +App UI を使用してインタラクティブに、または W&B SDK を使用してプログラムで、レポートに Markdown を追加します。 -レポートにスラッシュ(`/`)を入力して、ドロップダウン メニューを表示します。ドロップダウンから **Markdown** を選択します。 +レポート内でスラッシュ( `/` )を入力してドロップダウンメニューを表示します。ドロップダウンから **Markdown** を選択します。 - -`wandb.apis.reports.MarkdownBlock` クラスを使用して、プログラムでマークダウンブロックを作成します。`text` パラメータに文字列を渡します: + +`wandb.apis.reports.MarkdownBlock` クラスを使用して、プログラムで Markdown ブロックを作成します。`text` パラメータに文字列を渡します。 + ```python import wandb import wandb_workspaces.reports.v2 as wr @@ -240,24 +564,26 @@ report.blocks = [ wr.MarkdownBlock(text="Markdown cell with *italics* and **bold** and $e=mc^2$") ] ``` -これにより、次のようなマークダウン ブロックがレンダリングされます: + +これにより、次のような Markdown ブロックがレンダリングされます。 - + Rendered markdown block -## HTML要素を追加する +## HTML 要素の追加 -レポートに HTML 要素を App UI でインタラクティブに、または W&B SDK で追加します。 +App UI を使用してインタラクティブに、または W&B SDK を使用してプログラムで、レポートに HTML 要素を追加します。 -レポートにスラッシュ(`/`)を入力して、ドロップダウン メニューを表示します。ドロップダウンからテキスト ブロックの種類を選択します。例として、H2 見出しブロックを作成するには、`Heading 2` のオプションを選択します。 +レポート内でスラッシュ( `/` )を入力してドロップダウンメニューを表示します。ドロップダウンからテキストブロックのタイプを選択します。例えば、H2 見出しブロックを作成するには、`Heading 2` オプションを選択します。 - -1つ以上の HTML 要素のリストを `wandb.apis.reports.blocks` 属性に渡します。以下の例では、H1、H2、および無順リストを作成する方法を示しています: + +1つ以上の HTML 要素のリストを `wandb.apis.reports.blocks` 属性に渡します。次の例は、H1、H2、および箇条書きリストを作成する方法を示しています。 + ```python import wandb import wandb_workspaces.reports.v2 as wr @@ -272,48 +598,50 @@ report.blocks = [ report.save() ``` -これにより、次のような HTML 要素がレンダリングされます: + +これにより、HTML 要素は次のようにレンダリングされます。 - + Rendered HTML elements -## リッチメディアリンクを埋め込む +## リッチメディアリンクの埋め込み -レポート内にリッチメディアを App UI で、または W&B SDK で埋め込みます。 +App UI または W&B SDK を使用して、レポート内にリッチメディアを埋め込みます。 -URL をレポートにコピーアンドペーストして、リッチメディアをレポート内に埋め込みます。以下のアニメーションは、Twitter、YouTube、および SoundCloud からの URL をコピーアンドペーストする方法を示しています。 +URL をコピーしてレポートに貼り付けることで、レポート内にリッチメディアを埋め込むことができます。次のアニメーションは、Twitter、YouTube、SoundCloud から URL をコピーして貼り付ける方法を示しています。 ### Twitter -レポートにツイートリンク URL をコピーして貼り付け、ツイートをレポート内に表示します。 +Twitter のリンク URL をコピーしてレポートに貼り付けると、レポート内でツイートを表示できます。 - + Embedding Twitter content ### YouTube -レポート内にビデオを埋め込むために YouTube ビデオ URL リンクをコピーアンドペーストします。 +YouTube 動画の URL リンクをコピーして貼り付けると、レポートに動画を埋め込むことができます。 - + Embedding YouTube videos ### SoundCloud -SoundCloud のリンクをコピーアンドペーストして、オーディオファイルをレポート内に埋め込みます。 +SoundCloud のリンクをコピーして貼り付けると、レポートにオーディオファイルを埋め込むことができます。 - + Embedding SoundCloud audio - -1 つ以上の埋め込みメディア オブジェクトのリストを `wandb.apis.reports.blocks` 属性に渡します。以下の例では、ビデオと Twitter メディアをレポートに埋め込む方法を示しています: + +1つ以上の埋め込みメディアオブジェクトのリストを `wandb.apis.reports.blocks` 属性に渡します。次の例は、動画と Twitter メディアをレポートに埋め込む方法を示しています。 + ```python import wandb import wandb_workspaces.reports.v2 as wr @@ -323,7 +651,7 @@ report = wr.Report(project="report-editing") report.blocks = [ wr.Video(url="https://www.youtube.com/embed/6riDJMI-Y8U"), wr.Twitter( - embed_html='\n' + embed_html='\n' ), ] report.save() @@ -333,31 +661,31 @@ report.save() ## パネルグリッドの複製と削除 -再利用したいレイアウトがある場合は、パネルグリッドを選択してコピー&ペーストすることで、同じレポート内に複製したり、別のレポートに貼り付けることができます。 +再利用したいレイアウトがある場合、パネルグリッドを選択してコピー&ペーストすることで、同じレポート内での複製や、別のレポートへの貼り付けが可能です。 -パネルグリッドセクション全体を強調表示するには、右上隅のドラッグハンドルを選択します。パネルグリッド、テキスト、見出しなど、レポート内の領域をクリックしてドラッグして強調表示および選択します。 +右上隅のドラッグハンドルを選択して、パネルグリッドセクション全体をハイライトします。クリックしてドラッグすることで、パネルグリッド、テキスト、見出しなどのレポート内の領域をハイライトして選択できます。 - + Copying panel grids -パネルグリッドを選択し、キーボードで `delete` を押してパネルグリッドを削除します。 +パネルグリッドを選択し、キーボードの `delete` を押すとパネルグリッドを削除できます。 - + Deleting panel grids -## レポート内のヘッダーを折りたたんで整理する +## ヘッダーの折りたたみによる Reports の整理 -テキストブロック内のコンテンツを非表示にするために、レポート内のヘッダーを折りたたみます。レポートが読み込まれると、展開されているヘッダーのみがコンテンツを表示します。レポート内でヘッダーを折りたたむことで、コンテンツを整理し、過剰なデータの読み込みを防ぐことができます。以下の gif はその手順を示しています。 +レポート内のヘッダーを折りたたんで、テキストブロック内のコンテンツを非表示にできます。レポートが読み込まれるとき、展開されているヘッダーのみがコンテンツを表示します。レポート内のヘッダーを折りたたむことで、コンテンツを整理し、過剰なデータ読み込みを防ぐことができます。次の GIF はそのプロセスを示しています。 Collapsing headers in a report. -## 複数次元の関係を可視化する +## 多次元にわたる関係の可視化 -複数次元の関係を効果的に可視化するために、変数の 1 つを示すためにカラーバリエーションを使用します。これにより明瞭さが向上し、パターンが解釈しやすくなります。 +多次元にわたる関係を効果的に可視化するために、変数の1つを表すカラーグラデーションを使用します。これにより明瞭性が向上し、パターンの解釈が容易になります。 -1. カラーグラデーションで表現する変数を選択します(例: 罰金スコア、学習率など)。これにより、罰金(色)がトレーニング時間 (x 軸) を経て報酬/副作用 (y 軸) とどのように相互作用するかをより明確に理解できます。 -2. 主要なトレンドを強調します。特定の run グループにカーソルを合わせると、それが可視化で強調表示されます。 \ No newline at end of file +1. カラーグラデーションで表す変数を選択します(例: ペナルティスコア、学習率など)。これにより、トレーニング時間(x軸)にわたって、ペナルティ(色)が報酬/副作用(y軸)とどのように相互作用するかをより明確に理解できます。 +2. 主要なトレンドを強調します。特定の run グループにカーソルを合わせると、可視化内でそれらが強調表示されます。 \ No newline at end of file diff --git a/ja/models/reports/embed-reports.mdx b/ja/models/reports/embed-reports.mdx index ab29110b41..91e0539c98 100644 --- a/ja/models/reports/embed-reports.mdx +++ b/ja/models/reports/embed-reports.mdx @@ -1,45 +1,46 @@ --- title: レポートを埋め込む -description: W&B レポートを直接 Notion に埋め込むか、HTML IFrame 要素を使用します。 +description: W&B Reports を直接 Notion に埋め込んだり、HTML の IFrame 要素を使用して埋め込んだりすることができます。 --- ## HTML iframe 要素 -レポート内の右上にある **Share** ボタンを選択します。モーダルウィンドウが表示されます。このモーダルウィンドウ内で **Copy embed code** を選択します。コピーされたコードは、インラインフレーム (IFrame) HTML 要素内でレンダリングされます。コピーしたコードを任意の iframe HTML 要素に貼り付けます。 +Reports の右上にある **Share** ボタンを選択してください。モーダルウィンドウが表示されます。モーダルウィンドウ内で **Copy embed code** を選択します。コピーされたコードは、インラインフレーム(IFrame)HTML 要素内でレンダリングされます。コピーしたコードを、お好みの iframe HTML 要素に貼り付けてください。 -埋め込まれた場合、**公開** レポートのみが表示可能です。 +埋め込み時に表示可能なのは、 **public** (公開)設定の Reports のみです。 - + Getting embed code ## Confluence -次のアニメーションは、Confluence の IFrame セル内でレポートへの直接リンクを挿入する方法を示しています。 +以下の操作デモは、Confluence の IFrame セル内に Reports へのダイレクトリンクを挿入する方法を示しています。 - + Embedding in Confluence ## Notion -次のアニメーションは、Notion ドキュメント内で Embed ブロックを使ってレポートを挿入し、そのレポートの埋め込みコードを使用する方法を示しています。 +以下の操作デモは、Notion の埋め込み(Embed)ブロックと Reports の埋め込み用コードを使用して、Notion ドキュメントにレポートを挿入する方法を示しています。 - + Embedding in Notion ## Gradio -`gr.HTML` 要素を使用して、Gradio Apps 内で W&B Reports を埋め込み、Hugging Face Spaces で利用することができます。 +`gr.HTML` 要素を使用して、Gradio アプリ内に W&B Reports を埋め込み、Hugging Face Spaces などで利用することができます。 ```python import gradio as gr def wandb_report(url): + # iframe要素を作成 iframe = f' + 試すには、 [W&B SDK バージョン 0.23.0](/models/ref/python) 以降をインストールしてください。 + +- 最近 [Workspaces and Reports SDK v0.20.0](/models/ref/wandb_workspaces) をリリースしました。これには、セクションや列をプログラムで固定する機能が含まれています。 [Workspaces And Reports API のインストール](/models/ref/wandb_workspaces#installation-and-setup) を参照してください。 + +## 修正 + +- 比較に役立つよう、グループ化された折れ線グラフに最小値と最大値が表示されるようになりました。 +- レポート において、メディアパネルの長いタイトルが短縮され、よりすっきりとした表示になりました。 +- [Semantic legends](/models/runs/color-code-runs#set-a-configuration-key) において、バケットの上限を編集できるようになりました。 +- セマンティックカラーを離散値から連続値に切り替える際のバグを修正しました。 +- フルスクリーンモードでチャートをリサイズする際に、ちらつきが発生することがあるバグを修正しました。 +- y 軸が `_step` に設定されている場合にレンダリングの問題が発生することがあるバグを修正しました。 +- メディアステップスライダーが最大値に設定されている場合に、最新の入力データを表示するように更新されないことがあるバグを修正しました。 +- スムージングがオンになっている画像パネルに、画像スムージング設定が常に適用されないバグを修正しました。 +- グリッドビューのメディアパネルが垂直方向にスペースを取りすぎ、過度なスクロールを発生させるバグを修正しました。 +- オートメーション のレンダリングおよび更新時の軽微な表示問題を修正しました。 +- アーティファクト のリンク時のスクロールやカウント表示に関する軽微な UI バグを修正しました。 +- HTML テーブルメディアパネルで非 ASCII 文字が表示されないことがあるバグを修正しました。 +- **Edit run name** アクションを更新し、 ワークスペース 用の表示名を更新しているのか、 プロジェクト 全体の元の run 名を更新しているのかをより明確にしました。 + + + +- チームのサービスアカウントの APIキー が、組織管理者でもあるチーム管理者ユーザーに表示されないバグを修正しました。 +- 複数の run グループを持つプロットのツールチップに表示される(最小、最大)範囲が、すべてのグループで同じ値を表示することがあるバグを修正しました。 +- 削除された run の Parquet ファイルが完全にガベージコレクションされず、 `delete parquet history does not currently support partial deletes` というエラーが繰り返しログに記録されるバグを修正しました。 + + +W&B v0.75 では、新しい Restricted Viewer ロール、レジストリをスター付きにする機能、SCIM を介したプログラムによる Registry アクセス制御により Registry を強化します。新しいオートメーション実行履歴ビューは、オートメーションの理解とデバッグに役立ちます。ハイパーパラメーターなどの設定プロパティによるセマンティックカラーリングを使用して、設定に基づいた影響を可視化したり、システムメトリクスの忠実なプロットを表示したりできます。 + +## サポートとサポート終了 (End of Life) +- W&B Server v0.61 以前は 2025年10月28日 にサポート終了を迎えました。 +- W&B Server v0.63 は 2025年11月26日 にサポート終了を予定しています。 + +[リリースに関するポリシーとプロセス](/release-notes/release-policies) を参照してください。サポートが必要な場合や質問がある場合は、 [サポート](mailto:support@wandb.com) までお問い合わせください。 + +## 今後の変更点 +次回の W&B Server リリースでは、マルチ run ワークスペースとシングル run ワークスペース間の移動を容易にする ワークスペース ナビゲーションのアップデートを予定しています。こちらの [プレビュー動画](https://www.loom.com/share/df232057aa2d4ee78026a4f9cf400499?sid=da3661eb-e8cd-4aa5-a666-db2c4091b02b) をご覧ください。 + +この変更の一部は Server v0.75 に含まれています。左サイドバーに **Project** または単一の **Run** を表示しているかどうかが示されるようになりました。この今後のナビゲーション変更に合わせて、シングル run とマルチ run の保存済みビューが統合され、一方でのプロットやレイアウトの変更が他方にも反映されるようになり、繰り返しの設定作業が削減されます。この変更に伴い、既存のシングル run 保存済みビューは失われるため、必要なものは再作成する必要があります。 + +![今後のナビゲーションサイドバーのアップデート](/images/release-notes/v0-75-0/navigation-sidebar-upcoming-update.png) + +## セキュリティ +- 環境変数 `FEDERATED_AUTH_AUDIENCES` にカンマ区切りのオーディエンスリストを設定することで、 [フェデレーテッドアイデンティティ](/platform/hosting/iam/identity_federation) のオーディエンスを設定できるようになりました。オーディエンスは、アイデンティティトークンの許容される受信者を指定します。 + +## 機能 +- **Registry アクセス制御のアップデート:** + - **プログラムによるレジストリへのアクセス制御:** [Registry のロール](/models/registry/configure_registry#details-about-registry-roles) が SCIM スキーマに含まれるようになりました。 ユーザーの [作成](/platform/hosting/iam/scim#create-user) または更新時に Registry のロールを設定でき、 [ユーザーの取得](/platform/hosting/iam/scim#get-user) 時に Registry のロールが返されます。 + - **Registry アクセスの制限:** 完全な Registry アクセス権を付与したくない場合に、新しい Registry ロールである [Restricted Viewer](/models/registry/configure_registry) を付与できるようになりました。このロールは、コレクション、オートメーション、その他のレジストリリソースの作成、更新、削除を行う権限なしで、レジストリ アーティファクト への読み取り専用アクセスを提供します。これは、機密性の高い内容や規制対象のレジストリコンテンツに便利です。 + - [**Registry アクセスの拡大:**](https://wandb.ai/wandb_fc/product-announcements-fc/reports/Registry-for-W-B-Models-viewers-Faster-discovery-cleaner-handoffs--VmlldzoxNDc4MzM5Mg) Models **Viewer** ロールを持つすべてのユーザーは、フル権限の Registry **Member** となり、デフォルトでモデルや アーティファクト の閲覧、比較、使用ができるようになりました。 Models **Viewer** には、 **Restricted Viewer** 、 **Viewer** 、 **Admin** など、異なる Registry ロールを割り当てることも可能です。これにより、組織内の誰もが Registry の価値を最大限に活用できるようになります。 +- **スター付きレジストリ:** 規模の拡大に合わせて Registry を移動しやすくするため、レジストリにスターを付けられるようになりました。 Registry ページからレジストリのカードにカーソルを合わせ、スターの輪郭をクリックします。個別のレジストリページからは、ページ上部のスターの輪郭をクリックします。スター付きのレジストリは、 Registry ページの最上部にアルファベット順に表示されます。 + + ![スター付きレジストリ](/images/release-notes/v0-75-0/starred-registries.png) + +- **オートメーション実行履歴:** プロジェクト またはレジストリの [オートメーション](/models/automations/automation-events) の実行履歴を **Automation history** タブから確認できるようになりました。すべての オートメーション run が新しい順に表示され、ステータスや主要な詳細を一目で確認できます。オートメーションの理解とデバッグを支援するため、詳細ビューには実行の条件、アクション、結果が表示されます。 +- **Organization dashboard** において、メールアドレスのカンマ区切りリストを指定することで、一度に複数のユーザーを組織に招待できるようになりました。オプションで、招待したユーザーを同時にチームに追加することも可能です。 +- **Semantic legend のアップデート:** + - run のセマンティックレジェンドで、 ハイパーパラメーター などの設定値に基づいたプロットの色分けがサポートされました。学習率、バッチサイズ、モデルファミリーなどの選択した ハイパーパラメーター に基づいて run を色分けすることで、設定による影響を視覚的に特定できます。 + + ![Semantic legend config coloring](/images/release-notes/v0-75-0/semantic-legend-config-coloring.gif) + + - 他の ユーザー の ワークスペース を閲覧しているときでも、セマンティックレジェンドを設定できるようになりました。 +- 新しいフルスクリーン画像ブラウザにより、ログに記録された画像の検査と比較が簡単になりました。以前は **Dedicated Cloud** でのみ提供されていましたが、 **Self-Managed** でも利用可能になりました。 + - **真のフルスクリーンビュー:** 画面いっぱいのフルスクリーン表示により、画像の細部をより簡単に検査できます。窮屈なパネルはもう不要です。 + - **フルスクリーンビューのステップスライダー:** 埋め込まれたスライダーを使用してステップを効率的に移動し、出力がどのように進化するかを確認できます。 + - **run やステップ間の素早い移動:** フルスクリーンビューで、キーボードの **左/右矢印** キーを使用して run 間を移動し、 **Cmd + 左/右矢印** (macOS) または **Ctrl + 左/右矢印** (Windows / Linux) を使用して同じ画像のステップ間を移動できます。 +- **システムメトリクスの忠実なレンダリング:** GPU 、 CPU 、メモリなどのシステムメトリクスのチャートに、詳細な検査と分析のために微細な信号を保持する新しい詳細レンダリングモードが追加されました。 +- Parquet への run history エクスポートが改善されました。現在、 run history のエクスポートは、すべてのデプロイメントでデフォルトで非同期になりました。また、 run history のエクスポート時に、 run が 7 日以上ログに記録されておらず、その run の履歴が完全にエクスポートされた後、その run の履歴は MySQL から自動的に削除されます。 + +## 修正 +- ワークスペース やセクション内のすべてのプロットに対して、 **Show original** 折れ線グラフ設定を切り替えられるようになりました。 +- レポート において、 run セレクターのすべての列を固定すると、レポートのレイアウトが崩れることがあるバグを修正しました。 +- 固定された列が run セレクターの境界を超えて拡大されることがあるバグを修正しました。 +- **Notes** フィールドを編集しながら run 名を変更すると、 run 名の変更が元に戻ってしまうことがあるバグを修正しました。 +- X 軸を **Relative Wall Time** に設定してグループ化された run をプロットした際、不正確な値が表示されることがあるバグを修正しました。 +- グループのページネーションコントロールが表示されないバグを修正しました。 +- BYOB ストレージがバケットサブパスを指定した S3 互換ストレージで構成されている場合に、 レポート を公開できないことがあるバグを修正しました。これは CoreWeave AI Object Storage、Amazon S3 ストレージ、MinIO などの S3 互換ストレージに影響します。 +- スムージングがオンになっている場合に、システムメトリクスのチャートが読み込まれないことがあるバグを修正しました。 +- スムージングがオンになっている場合に、複数の Y 軸を持つチャートが読み込まれないことがあるバグを修正しました。 +- 忠実度の高い(Full-fidelity)モードにおいて、折れ線グラフのツールチップに最小値と最大値の境界が表示されるようになりました。 +- グループ化された run プロットのホバーハイライト操作が改善されました。 +- X 軸の名前が Y 軸の名前の部分文字列である場合に、グループ化されたプロットがレンダリングされないことがあるバグを修正しました。 +- 非表示または選択解除された run が非表示にならず、灰色の点として表示されることがあるバグを修正しました。 +- スクロールしないと表示されないメディアパネルをフルスクリーンで開けないことがあるバグを修正しました。 +- 比較対象が密集している折れ線グラフでのスパイクをより明確に可視化できるよう、最小・最大シェーディングが改善されました。 +- 詳細な調整や実験から効率的に戻れるよう、折れ線グラフエディターで X 軸を元に戻せるようになりました。 +- アーティファクト のリンク中にレジストリが作成された場合、コアレジストリのアクセスタイプが誤って設定されることがあるバグを修正しました。このバグはメンバーシップ管理の問題を引き起こし、レジストリが機能しなくなる可能性がありました。 + + + +- 組織管理者が Organization Dashboard にアクセスできなくなることがあるバグを修正しました。 +- 0.73.0 で導入された、以前にエクスポートされた Parquet ファイルの削除を許可してしまうバグを修正しました。 +- コミットが成功した後に、 Parquet 内の アーティファクト ファイルを削除できてしまうバグを修正しました。 +- v0.73 で MySQL からシステムメトリクスを照会する際に発生したパフォーマンスの低下を修正しました。 +- 所有者のいない プロジェクト を編集できないことがあるバグを修正しました。 +- 履歴メトリクスのヒストグラムが、デフォルトでサマリーページに表示されないようになりました。代わりに、各メトリクスの詳細がサマリーページに表示され、ヒストグラムは ワークスペース パネルとして利用可能です。 + + + +W&B v0.74 は、エンタープライズアイデンティティ管理のための SCIM API の改善を提供します。これには、Okta との自動グループ同期、合理化されたユーザーロール設定などが含まれます。 Dedicated Cloud では、 run 内および run 間で画像を検査・比較できる強力な新しいフルスクリーン画像ブラウザが追加されました。 Weave の強化には、 Playground での LLM ジャッジ評価、マルチターンの Thread ツール呼び出しの可視性向上、 DSPy の改善、および強化学習ワークフローのための Verifiers ライブラリとの新しいインテグレーションが含まれます。 W&B Inference は、 [Z.AI](https://z.ai/) GLM v4.5 ハイブリッド推論モデルのサポートを追加しました。 + +## サポートとサポート終了 (End of Life) +- W&B Server v0.60 以前は 2025年10月2日 にサポート終了を迎えました。 +- W&B Server v0.61 は 2025年10月28日 にサポート終了を予定しています。 + +## 機能 +- SCIM API が強化されました: + - プロビジョニングおよびデプロビジョニングの操作が Okta との互換性を高めました。 + - マルチテナントクラウドのデプロイメントにおいて、 [ユーザーの作成](/platform/hosting/iam/scim#create-user) 時に組織のロールとチームを設定できるようになりました。これは Dedicated Cloud および Self-Managed でのエンドポイントの動作と一致します。 + - Dedicated Cloud および Self-Managed のデプロイメントにおいて、 ユーザー の ユーザー 名またはメールアドレスを更新できるようになりました。 [ユーザーメールの更新](/platform/hosting/iam/scim#update-user-email) および [ユーザー表示名の更新](/platform/hosting/iam/scim#update-user-display-name) を参照してください。マルチテナントクラウドのデプロイメントには適用されません。 + - メールアドレスと ユーザー 名による [ユーザーの検索と取得](/platform/hosting/iam/scim#get-user) が可能になりました。 + - Okta グループが [ETags](/platform/hosting/iam/scim#etag-support) を使用して自動的に同期されるようになりました。 SCIM グループの詳細は、 [Group リソース](/platform/hosting/iam/scim#group-resource) を参照してください。 +- 組織内の [ユーザーリストをエクスポート](/platform/hosting/monitoring-usage/org_dashboard#export-user-details) する際、 CSV ファイルに **Models seats** と **Weave access** の列が含まれるようになりました。 +- **W&B Dedicated Cloud** において、新しいフルスクリーン画像ブラウザにより、ログに記録された画像の検査と比較が簡素化されました。 + - **真のフルスクリーンビュー:** 画像の細部をより簡単に検査できます。 + - **フルスクリーンビューのステップスライダー:** 埋め込まれたスライダーを使用してステップ間を効率的に移動できます。 + - **キーボードを使用した run 間の素早い切り替え:** フルスクリーンビューで、キーボードの **左/右矢印** キーを使用して run 間を移動し、 **Cmd + 左/右矢印** (macOS) または **Ctrl + 左/右矢印** (Windows / Linux) を使用して同じ画像のステップ間を移動できます。 + +### Weave +- **Evaluations** サイドバータブから、プロンプトの値を更新し、 LLM ジャッジ評価を実行して変更をテストできるようになりました。 [Playground](/weave/guides/tools/playground) で試してみてください。 +- Weave を強化学習(RL)トレーニングワークフローに統合し、トレーニング中にキャプチャされた [トレースと評価](/weave/guides/tools/weave-in-workspaces) を、 run メトリクスパネルとともに W&B ワークスペース で表示できるようになりました。 +- Weave は、強化学習(RL)環境の作成や LLM エージェントのトレーニングのためのモジュールコンポーネントライブラリである [Verifiers](https://verifiers.readthedocs.io/en/latest/) とのインテグレーションを追加しました。 Verifiers で構築された環境は、 LLM 評価、合成データパイプライン、OpenAI 互換エンドポイントのエージェントハーネス、および RL トレーニングとして機能します。 [詳細はこちら](/weave/guides/integrations/verifiers)。 +- **Threads** サイドバータブから、マルチターンの Thread のメッセージ履歴とともにツール呼び出しを表示できるようになりました。 +- チームの **Project** ページに、各 プロジェクト の Weave トレース数と プロジェクト の run に関するデータが表示されるようになりました。 +- [DSPy インテグレーション](/weave/guides/integrations/dspy) が改善されました。詳細は [`wandb/weave` #5184](https://github.com/wandb/weave/pull/5184) を参照してください。 +- Weave コードが `wandb.init()` を呼び出す場合、明示的に `weave.init()` を呼び出す必要がなくなりました。 +- 新しい便利なメソッド [`delete_all_object_versions`](/weave/reference/python-sdk/trace/weave_client) が追加されました。 +- OpenAI ストリーミングエンドポイント呼び出しからの出力に、ミリ秒単位で表される新しいフィールド `time_to_first_token` が含まれるようになりました。 + +### Inference +- [W&B Inference](/inference) は [Z.AI GLM](https://z.ai/blog/glm-4.5) ハイブリッド推論モデルのサポートを追加しました。 v4.5 がサポートされています。 + +## 修正 +- キャプション付きのバウンディングボックスの表示問題を修正しました。 +- Runs テーブルで run をグループ化する際、 `null` グループを展開して、グルーピングキーが null 値である run を表示できるようになりました。 +- 移動平均スムージングパラメーターの最大値を **1000** に引き上げました。 +- run セットに複数の プロジェクト からの run が含まれている場合に、 run 名をクリックすると無効な URL が開くことがあるバグを修正しました。 +- ダークモードでのテキスト表示問題を修正しました。 +- Query パネルを含む公開 レポート を閲覧する際の権限バグを修正しました。 +- レポート からコードをコピーできないことがある UI バグを修正しました。 +- 折れ線グラフのツールチップにおける最小値と最大値の順序のバグを修正しました。 +- X 軸のキーが Y 軸のキーの部分文字列であった場合に、グループ化されたプロットがレンダリングされないことがあるバグを修正しました。 + + + +## 修正 +- v0.73.0 で導入された、 ワークスペース パネルのリサイズや並べ替えが保存済みビューに常に反映されないバグを修正しました。 +- 組織に数百のレジストリがある場合に、 Registry UI でレジストリリストをページングすると失敗することがあるバグを修正しました。 +- バウンディングボックス付きでログに記録されたメディアに対して、バウンディングボックスが常に表示されないバグを修正しました。 +- エクスポートタスクが保留状態のまま動かなくなり、実行されないことがあるバグを修正しました。 +- 名前の中に特殊文字が含まれるファイルをダウンロードする際に、 `wandb verify` が失敗することがあるバグを修正しました。 +- システムイベントを取得する際、特にチャートに大量のシステムイベントをプロットする際のパフォーマンスの低下を修正しました。この問題は v0.73.0 で導入されました。 + + + +W&B v0.73 は、チームレベルの モデルレジストリ から W&B Registry への移行における重要なマイルストーンとなります。ほとんどの組織はアップグレード中に自動的に移行されます。 UI の改善には、色覚多様性に配慮した run カラーパレット、メトリクスに基づいた run カラーリングのための連続的なカラーオプション、およびスムーズなパネルの再編成が含まれます。このリリースでは、CoreWeave AI Object Storage を使用した BYOB(Bring Your Own Bucket)セットアップのためのサービスプリンシパル認証、改善されたコンソールログ処理、およびその他の強化機能も提供されます。 + +## 今後の変更点 +- 今後のリリースでは、マルチ run とシングル run の ワークスペース ビューを統合します。これにより、シングル run を詳細表示した際に、カスタムチャート、レイアウト、設定を含め、マルチ run ビューで設定したパネルと同じレイアウトと構成が表示されるようになります。目的は、コンテキストを維持し、ビューの設定のやり直しを避けることです。ただし、これにより、ワークスペース の他の部分から独立した独自のシングル run ビューをカスタマイズする機能は削除されます。移行に関する質問は、W&B チームまたは [サポート](mailto:support@wandb.ai) までお問い合わせください。 +- 今後数回のリリースにわたり、既存のチームレベル モデルレジストリ から W&B Registry への移行を継続します。タイムラインに関する詳細は、以下の [W&B Registry GA 発表](#registry_ga_announcement) を参照してください。 + +## 既知の問題 +v0.73.0 では、 ワークスペース パネルのリサイズや並べ替えが保存済みビューに反映されない場合があります。このバグは v0.73.1 で修正されています。この問題が発生した場合は、修正が含まれている v0.73.1 にアップグレードしてください。アップグレードできない場合は、回避策について [サポート](mailto:support@wandb.ai) にお問い合わせください。 + +## 機能 +- 今後数回のリリースにわたり、既存のチームレベル モデルレジストリ を段階的に W&B Registry へ移行します。 **ユーザー側での対応は不要です。 W&B は各チームの モデルレジストリ アセットを、自動的に作成される対応するチームレベルのプライベートレジストリに自動的にコピーします。** 旧チームレベル モデルレジストリ のモデルコレクションへの既存の参照は引き続き機能します。 + 1. Server v0.73 (本リリース) には、アップグレード中にチームの モデルレジストリ を自動的に移行するオプトアウト環境変数が含まれています。ほとんどの組織において、移行には 5 分から 30 分かかります。移行中、旧 モデルレジストリ または新 Registry への アーティファクト のリンクはエラーで失敗します。 ** アーティファクト のログ記録と取得には影響ありません。** + 2. Server v0.74 (9月末予定) では、オプトアウトフラグを削除し、アップグレード中に移行が行われるようになります。 + + 私たちは、強力な新しい体験へのシームレスなアップグレードを目指しています。移行に関する質問がある場合は、W&B アカウントチームまたは [サポート](mailto:support@wandb.ai) までお問い合わせください。 +- [Run Logs コンソールページ](/models/app/console-logs/) にコピーボタンを追加し、貼り付け時の挙動を改善しました。 +- run 用に2つの新しい色覚多様性に配慮したカラーパレットを追加しました。これらは [Workspace settings](/models/app/features/cascade-settings/#workspace-settings) の **Runs** セクションで設定できます。 +- [メトリクスや数値設定で run を色分けする](/models/runs/color-code-runs/) 際に、5つの新しい連続的なカラーパレットから選択できるようになりました。 +- [W&B run](/models/runs/) の実行中、 [CoreWeave Mission Control](https://www.coreweave.com/mission-control) が計算インフラを監視します。このインテグレーションが Dedicated Cloud で利用可能になりました。 +- CoreWeave AI Object Storage を使用した BYOB は、マルチテナントクラウド、 Dedicated Cloud 、および Self-Managed デプロイメントでのサービスプリンシパルによる認証をサポートするようになりました。これにより、デプロイメントで静的な認証情報を使用することを回避できます。詳細は [Bring your own bucket (BYOB)](/platform/hosting/data-security/secure-storage-connector/) を参照してください。 + +### Weave +- [Weave Threads](/weave/guides/tracking/threads) を使用して、複数のトレースにわたるセッションや会話をグループ化できるようになりました。 +- **Trace view** の新しい [Graph view](/weave/guides/tracking/trace-tree#graph-view) は、呼び出しツリー構造をグラフとして可視化します。 +- **Trace view** に、ChromaDB で取得された [documents](/weave/guides/core-types/media#documents) 用の新しい専用ビューが含まれ、Langchain はチャットなどのスキーマの処理を改善しました。 **Trace view** でドキュメントをクリックすると、右側のドロワーに詳細ビューが開きます。詳細は [Navigate the trace view](/weave/guides/tracking/trace-tree) を参照してください。 +- メディアタイプとして [HTML](/weave/guides/core-types/media#html) をトレースに添付できるようになりました。 +- **Assets** タブからプロンプトを作成および編集できるようになりました。 **Assets** をクリックし、ナビゲーションで **Prompts** をクリックします。 **New prompt** をクリックするか、既存のプロンプト名をクリックして詳細を表示します。そこから鉛筆アイコンをクリックして、プロンプトを編集および再公開できます。 + +## 修正 +- セクション内およびセクション間での [パネルのドラッグ&ドロップ](/models/app/features/panels/#move-a-panel) のスムーズさと正確さを向上させました。 +- [フルスクリーンパネルビュー](/models/app/features/panels/#view-a-panel-in-full-screen-mode) において、 **Esc** キーで ワークスペース に戻れるようになりました。 +- フルスクリーンから戻った後に、 ワークスペース 内のパネルが予期せずズームされることがあるバグを修正しました。 +- [プロット設定](/models/app/features/panels/line-plot/#edit-line-plot-settings) において、チャートと凡例の設定を単一のタブに統合しました。 +- ポーリング更新後にパネルの凡例が正しくない順序になるバグを修正しました。 +- 長い指数関数の Y 軸の値を持つパネルや、有効数字が多いパネルのフォーマットを改善しました。 +- 一致する run がない [パネルのオーバーレイ](/models/app/features/panels/media/#overlays) が非表示になるようになりました。 +- ワークスペース の **Runs** タブまたは **Runs** リストで run のタグをクリックしても、タグによるフィルタリングが行われないバグを修正しました。 +- ユーザー が最大 run 制限をバイパスできてしまうことがあるバグを修正しました。 +- run のオン/オフを切り替えた際に、パネル内の他の run のメディアを再読み込みしないようになりました。 +- **Tab** キーを押した後にセクションを展開または折りたたむと、 レポート がクラッシュすることがあるバグを修正しました。 +- モバイルディスプレイにおいて、スクロールによってログに記録されたビデオが自動的にフルスクリーンで再生されることがあるバグを修正しました。 + +## その他の変更 +- Server リリース v0.73.0 で、 W&B Workspaces からカスタムグリッドレイアウトが削除されました。以前は、カスタムグリッドレイアウトを使用してセクション内の個々のパネルのサイズを調整できました。現在は、ワークスペース セクションでパネルをリサイズすると、そのセクション内のすべてのパネルがリサイズされます。これは [W&B App](/models/app/features/panels/#manage-a-sections-panels) または [Workspace API](/models/ref/wandb_workspaces/workspaces#class-sectionlayoutsettings) のどちらで設定しても同様です。カスタムグリッドレイアウトは、 [W&B Reports](/models/reports/) および [Reports API](/models/ref/wandb_workspaces/reports) では引き続き利用可能です。 + + + +W&B 0.72 には、折れ線グラフとメディアパネルの修正のほか、OpenTelemetry および Google Agent Development Kit の Weave インテグレーションの改善が含まれています。 + +## 今後の変更点 +- 多くのパネルがある ワークスペース での読み込みを高速化し、 ワークスペース 内でのパネルのドラッグ&ドロップの応答性と正確性を高めるために、レンダリング動作を最適化しています。 **その一環として、次回のリリース (0.73) で ワークスペース セクションの「カスタムグリッド」レイアウトを削除する予定です。** カスタムグリッドは レポート では引き続き利用可能です。質問や懸念がある場合は、W&B チームまたは [サポート](mailto:support@wandb.ai) までお問い合わせください。 +- 今後のリリースでは、マルチ run とシングル run の ワークスペース ビューを統合します。これにより、シングル run を詳細表示した際に、カスタムチャート、レイアウト、設定を含め、マルチ run ビューで設定したパネルと同じレイアウトと構成が表示されるようになります。目的は、コンテキストを維持し、ビューの設定のやり直しを避けることです。ただし、これにより、ワークスペース の他の部分から独立した独自のシングル run ビューをカスタマイズする機能は削除されます。移行に関する質問は、W&B チームまたは [サポート](mailto:support@wandb.ai) にお問い合わせください。 +- 今後数回のリリースにわたり、既存のチームレベル モデルレジストリ から W&B Registry への移行を継続します。 + +## 修正 +- 0.71.0 で発表された折れ線グラフの動作変更を元に戻しました。すべての線に対して点が 1 つしかない折れ線グラフは、設定が変更されても棒グラフに変換されます。 +- メディアパネルにおいて、バウンディングボックスがメディアの上に重なるのではなく、メディアの外側にレンダリングされることがあるバグを修正しました。 +- Google Agent Development Kit のインテグレーションが Weave Threads をサポートしていなかったバグを修正しました。 +- OpenTelemetry を介して送信された Weave トレースで **Attributes** 列が表示されないバグを修正しました。 + + + +W&B Server 0.71 では、すべての組織で Registry がデフォルトでオンになります。段階的な Registry 展開の詳細は、機能の関連ノートを参照してください。このリリースでは、ワークスペース にいくつかの改善と修正が加えられています。共通のステップスライダーを持つメディアパネルを同期させたり、フルスクリーンパネル間をより効率的に移動したり、Run Overview ページで run の総所要時間とアクティブな実行時間に関する詳細を確認したりできるようになりました。 オートメーション が強化され、 アーティファクト バージョンのタグに基づいて オートメーション をトリガーできるようになりました。 {/* more */} + +## サポートとサポート終了 (End of Life) +
    +
  • W&B Server v0.57 以前は 2025年7月29日 にサポート終了を迎えました。
  • +
  • W&B Server v0.58 は 2025年9月2日 にサポート終了を予定しています。
  • +
{/* This is in HTML to fix the admonition included below showing up as a child of the second item */} + +## 今後の変更点 +- 多くのパネルがある ワークスペース での読み込みを高速化し、 ワークスペース 内でのパネルのドラッグ&ドロップの応答性と正確性を高めるために、レンダリング動作を最適化しています。 **その一環として、次回のリリース (0.72) で ワークスペース セクションの「カスタムグリッド」レイアウトを削除する予定です。** カスタムグリッドは レポート では引き続き利用可能です。質問や懸念がある場合は、W&B チームまたは [サポート](mailto:support@wandb.ai) までお問い合わせください。 +- 今後のリリースでは、マルチ run とシングル run の ワークスペース ビューを統合します。これにより、シングル run を詳細表示した際に、カスタムチャート、レイアウト、設定を含め、マルチ run ビューで設定したパネルと同じレイアウトと構成が表示されるようになります。目的は、コンテキストを維持し、ビューの設定のやり直しを避けることです。ただし、これにより、ワークスペース の他の部分から独立した独自のシングル run ビューをカスタマイズする機能は削除されます。移行に関する質問は、W&B チームまたは [サポート](mailto:support@wandb.ai) にお問い合わせください。 +- 今後数回のリリースにわたり、既存のチームレベル モデルレジストリ から W&B Registry への移行を継続します。タイムラインに関する詳細は、以下の [W&B Registry GA 発表](#registry_ga_announcement) を参照してください。 + +## 機能 +- 今後数回のリリースにわたり、既存のチームレベル モデルレジストリ を段階的に W&B Registry へ移行します。 **ユーザー側での対応は不要です。 W&B は各チームの モデルレジストリ アセットを、自動的に作成される対応するチームレベルのプライベートレジストリに自動的にコピーします。** 旧チームレベル モデルレジストリ のモデルコレクションへの既存の参照は引き続き機能します。 + 1. Server v0.71 (本リリース) では、すべての組織で Registry がデフォルトでオンになります。 + 2. Server v0.73 (8月予定) には、アップグレード中にこの移行を自動的に実行するオプトアウト環境変数が含まれます。ほとんどの組織において、移行には 5 分から 30 分かかります。移行中、旧チームの モデルレジストリ または新 Registry への アーティファクト のリンクはエラーで失敗します。 ** アーティファクト のログ記録と取得には影響ありません。** + 3. Server v0.74 (9月予定) では、このフラグを削除し、アップグレード中に移行が行われるようになります。 + + 私たちは、シームレスで不便を最小限に抑えた強力な新しい体験へのアップグレードを目指しています。移行に関する質問がある場合は、W&B までお問い合わせください。 +- アーティファクト にタグを追加することで オートメーション をトリガーできるようになりました。 [Artifact events](/models/automations/automation-events/#artifact-events) を参照してください。 +- パネルをフルスクリーンで表示している際、 **Previous** および **Next** ボタン、または左右の矢印キーを使用して、セクション内の前後のパネルを表示できるようになりました。 +- メディアパネルをフルスクリーンで表示している際、 **CMD + 左右矢印** キー (macOS) または **Ctrl + 左右矢印** キー (Windows / Linux) でステップスライダーを動かせるようになりました。 +- 同じステップスライダーキーを持つメディアパネルを同期させ、1つのメディアパネルでステップスライダーを進めると、他のパネルのステップスライダーも進むように設定できるようになりました。 ワークスペース またはセクションの設定を開き、 **Media** に移動し、 **Sync** タブをクリックして、 **Sync slider by key (Step)** をオンにします。 +- Run Comparer に、コマンド、 Python バージョン、 GPU タイプなどの run に関する メタデータ を含む新しい **Meta** セクションが追加されました。 + +### Weave +- **Trace plots** ツールを使用すると、カスタマイズ可能なインタラクティブなグラフを使用して、レイテンシ、コスト、トークンなどのトレースレベルのメトリクスの経時的な変化を探索、可視化、デバッグできます。 [詳細はこちら](/weave/guides/tracking/trace-plots)。 +- **Online Evaluations**: Dedicated Cloud において、着信トレースに Monitors を添付することでトレースを監視できます。 Monitors はバックグラウンドで LLM ジャッジとして動作し、指定した呼び出しのサブセットをスコアリングします。 Monitors を使用して、本番環境の動作の追跡、リグレッションの捕捉、実環境の本番データの収集などを行うことができます。 [詳細はこちら](/weave/guides/tracking/trace-plots)。 +- [AutoGen](/weave/guides/integrations/autogen) および [LlamaIndex](/weave/guides/integrations/llamaindex) インテグレーションを追加しました。 *AutoGen* は、対話型 AI、コアマルチエージェント機能、外部サービスとの統合、ノーコードエージェントプロトタイピングツールのためのコンポーネントを備えた、 AI エージェントおよびアプリケーション構築用の Microsoft 製 フレームワーク です。 *LlamaIndex* は、 RAG システム、チャットボット、エージェントなどの LLM 駆動型アプリケーションを構築するための強力な フレームワーク です。 +- OpenAI、LangChain、ChromaDB、Verdict とのインテグレーションを改善しました。内容は以下の通りです。 + - Langchain と ChromaDB のドキュメントビュー。 + - LangChain のチャットビューレンダリング。 + - OpenAI 用の新しいエクスポート形式。 +- [W&B Inference](https://wandb.ai/inference) に新しいホスト型オープンウェイトモデルを追加しました: + - `Qwen3-235B-A22B-Thinking-2507` + - `Qwen/Qwen3-Coder-480B-A35B-Instruct` + - `Qwen/Qwen3-235B-A22B-Instruct-2507` + - `Kimi-K2-Instruct` +- TypeScript SDK にプロンプトの作成と公開のサポートを追加しました。 [詳細はこちら](/weave/guides/core-types/prompts)。 +- 新しい `Content` クラスを使用すると、自動 Base-64 エンコーディング、自動 メタデータ 抽出などを行いながら、あらゆる MIME タイプのデータを安全にアップロードできます。 + +## 修正 +- run の **Overview** ページに、 run のアップタイムと追跡時間が表示されるようになりました。 run の *アップタイム* は開始から終了までの総時間を表し、 run の *追跡時間* は run が実験や計算をアクティブに実行していた時間を表します。 +- 折れ線グラフをズームしてからフルスクリーンモードで開いた際、フルスクリーンのプロットでもズームされたビューが正しく維持されるようになりました。 +- プロットに表示されるグループの数を更新しても、プロットが更新されないバグを修正しました。 +- 折れ線グラフで **Show Original** が選択されている際、元のスムージングされていない線がスムージングされた線よりも暗く表示されるようになりました。 +- 忠実度の高い(Full fidelity)折れ線グラフに、プロット内の run 数が表示されるようになりました。 +- run ごとに1つの値しか存在しない場合に、明示的に折れ線グラフに設定されているプロットが予期せず棒グラフに変換されることがあるバグを修正しました。 +- X 軸の式でネストされた設定フィールドがサポートされました。 +- **Artifacts** ページのサイドバーから **Registry** リンクを削除しました。 Registry にアクセスするには、 **Home** をクリックしてから **Registry** をクリックしてください。 +- ワークスペース またはセクション内の折れ線グラフにおいて、ポイントにカーソルを合わせた際にツールチップにビン範囲をオプションで表示できるようになりました。 ワークスペース またはセクションの設定を開き、 **Line plots** をクリックし、 **Display preferences** タブで **Show bin range in tooltip** をオンにします。 +- **Registry** アーティファクト リネージページでリンクをクリックした際、ブラウザの URL とパラメータは更新されるものの、ページの内容が更新されないバグを修正しました。 URL が変更されると UI も更新されるようになりました。 +- **Registry** において、コレクションテーブルが浮動小数点数ではなく文字列としてソートされるバグを修正しました。 +- **Registry** において、別のバージョンが選択されている場合でも、リネージ情報のドロワーが常に選択した アーティファクト の最新バージョンを表示するバグを修正しました。 +- モバイル表示において、パネルの検索バーが表示されないバグを修正しました。 +- run セレクターを任意の属性でソートし、キーによる色付けをオンにしている際、プロット内の上位の run が正しく色付けされるようになりました。 +- グループ化された run を使用している際、並行座標プロット(parallel coordinate plots)にグループ名が正しく表示されるようになりました。 +- Sweeps テーブルに **State** がデフォルトで正しく表示されるようになりました。 +- カスタム表示名でグループ化した際に、 Sweeps が正しく表示されるようになりました。 +- Sweeps と Reports の長い名前の折り返しを改善しました。 +- コンソールログのコピー&ペーストの挙動を改善しました。行番号はコピーされなくなり、タイムスタンプは新しい行ではなくインラインで表示されるようになりました。 +
+ + +## 修正 +- アップグレード後にクラッシュした run のステータスが **Crashed** に更新されないバグを修正しました。 +- **Sweeps** の Runs テーブルに **State** 列が表示されないバグを修正しました。 +- アーティファクト のマニフェストファイルのキャッシュパスが アーティファクト のバージョンインデックスのみに依存していたため、 Registry コレクションのブラウザに誤ったバージョンのファイルが表示されることがある Weave のバグを修正しました。 +- 有効な構文の JSON が正しく解析されないことがある Weave のバグを修正しました。 + +これらのバグは v0.70.0 で導入されました。 + + + +W&B Server v0.70 には、より効率的にインサイトを得て共有するための機能、強化、およびパフォーマンスの向上が含まれています。以下はその例です: + +## 今後の変更点 +- 今後のリリースでは、マルチ run とシングル run の ワークスペース ビューを統合します。これにより、シングル run を詳細表示した際に、カスタムチャート、レイアウト、設定を含め、マルチ run ビューで設定したパネルと同じレイアウトと構成が表示されるようになります。目的は、コンテキストを維持し、ビューの設定のやり直しを避けることです。ただし、これにより、ワークスペース の他の部分から独立した独自のシングル run ビューをカスタマイズする機能は削除されます。移行に関する質問は、W&B チームまたは [サポート](mailto:support@wandb.ai) にお問い合わせください。 +- 今後数回のリリースにわたり、既存のチームレベル モデルレジストリ を W&B Registry へ移行します。詳細は、以下の [W&B Registry GA 発表](#registry_ga_announcement) を参照してください。 + +## 機能 +- **W&B Registry が一般公開(GA)されました!** Registry は、アセットの多様性、アクセス管理、およびスケーラビリティを向上させ、大規模で多様なチーム間で AI イニシアチブを共同で進めるための真のハブとなります。 + - Registry は、環境変数 `ENABLE_REGISTRY_UI` を設定するか、W&B サポートチームに連絡することで本日より利用可能です。 + - 今後数回のリリースにわたり、既存のチームレベル モデルレジストリ アセットを段階的に W&B Registry へ移行します。 **ユーザー側での対応は不要です。 W&B は各チームの モデルレジストリ アセットを、自動的に作成される対応するチームレベルのプライベートレジストリに自動的にコピーします。** 旧チームレベル モデルレジストリ のモデルコレクションへの既存の参照は引き続き機能します。 + 1. Server v0.71 では、すべての組織で Registry がデフォルトでオンになります。 + 1. Server v0.73 (8月予定) には、アップグレード中にこの移行を自動的に実行するオプトアウト環境変数が含まれます。ほとんどの組織において、移行には 5 分から 30 分かかります。移行中、旧チームの モデルレジストリ または新 Registry への アーティファクト のリンクはエラーで失敗します。 ** アーティファクト のログ記録と取得には影響ありません。** + 1. Server v0.74 (9月予定) では、このフラグを削除し、アップグレード中に移行が行われるようになります。 + + 私たちは、シームレスで不便を最小限に抑えた強力な新しい体験へのアップグレードを目指しています。移行に関する質問がある場合は、W&B チームまたは [サポート](mailto:support@wandb.ai) までお問い合わせください。 +- **CoreWeave インフラ監視**: CoreWeave インフラ上での [W&B Run](/models/runs/) の実行中、 [CoreWeave Mission Control](https://www.coreweave.com/mission-control) が計算インフラを監視し、 GPU 故障、温度異常などのインフラアラートの観測を可能にします。エラーが発生すると、CoreWeave はその情報を W&B に送信します。 W&B はインフラ情報を プロジェクト の ワークスペース 内の run のプロットに反映させます。CoreWeave は一部の問題を自動的に解決しようとし、 W&B はその情報を run のページに表示します。 W&B は、 run に関するシステムレベルの詳細を確認するための SLURM ジョブの Grafana ダッシュボードへのリンクを提供します。詳細は [Visualize CoreWeave infrastructure alerts](/models/app/features/panels/line-plot/) を参照してください。 +- **CoreWeave 外部ファイル追跡**: CoreWeave AI Object Storage に保存されている外部ファイルを、リファレンス アーティファクト として追跡できるようになりました。詳細は [Track external files](/models/artifacts/track-external-files/) を参照してください。 +- **CoreWeave BYOB サポート**: Dedicated Cloud および Self-Managed は、インスタンスおよびチームレベルの BYOB 用に CoreWeave AI Object Storage をサポートするようになりました。マルチテナントクラウド上の CoreWeave チームレベル BYOB も近日提供予定です。詳細は [Bring your own bucket (BYOB)](/platform/hosting/data-security/secure-storage-connector) を参照してください。 +- **一括メディア設定**: 折れ線グラフと同様に、 ワークスペース 全体または特定のセクションに対して、すべてのメディアパネル設定を一度に管理できるようになりました。各パネルを個別に調整することなく、メディアパネルをエポックごとに表示するように設定したり、カスタマイズされたグリッドパターンに配置したりすることが簡単にできます。個別のパネル設定はグローバル設定を上書きします。 +- **Workspace テンプレート** を使用すると、既存の ワークスペース と同じ設定を使用して ワークスペース を迅速に作成できます。現在、ワークスペース テンプレートではカスタムの折れ線グラフ設定を定義できます。詳細は [Workspace templates](/models/track/workspaces/#workspace-templates) を参照してください。 +- **インクリメンタルなテーブルログ記録** を使用すると、機械学習の実験中にテーブルに行のバッチをログに記録できます。これは、長時間実行されるジョブの監視や、更新のために run 中にログを記録するのが非効率な大きなテーブルを扱う場合に理想的です。 UI 内では、ログに記録された新しい行がテーブルに追加されるため、 run 全体が終了するのを待たずに最新のデータを確認できます。インクリメントをたどって、異なる時点でのテーブルを表示することも可能です。詳細は [Log tables](/models/track/log/log-tables/#adding-data-incrementally) を参照してください。 + +## 修正 +- ログの一部の行のみが表示されている場合に、ログビューアの上部にバナーを追加しました。 +- データの境界における移動平均計算のバグを修正しました。 +- 相対時間プロットの X 軸単位ラベルを明確にしました。 +- スムージングが適用されたプロットで、 **Show Original** のチェックを外しても元の線が表示され続けることがあるバグを修正しました。 +- 式を含むグループ化された忠実度の高い折れ線グラフが予期せず棒グラフに変換されることがあるバグを修正しました。 +- ヒストグラムにカーソルを合わせると、ツールチップに X 軸のステップが表示されるようになりました。 +- パネルからエクスポートされたデータが正しくソートされないことがあるバグを修正しました。エクスポートされたデータは数値順にソートされるようになりました。 +- run セレクターにおいて、 **updated at** でフィルタリングとソートが可能になりました。 +- ポイントクラウドパネルに右手系のシステム設定オプションを追加しました。 +- フルスクリーンパネルの URL から末尾のスラッシュが削除されるようになりました。 +- 保存済みビューを削除した直後にページを更新すると、削除したビューが再表示されることがあるバグを修正しました。 +- ダークモードがオンの状態でページを再読み込みする際に、フラッシュが発生する表示バグを修正しました。 +- 非単調(non-monotonic)な値を使用している場合に、不適切なスライダーステップが発生するバグを修正しました。 +- グループ間で run を移動する際の便利なチェックボックスと通知を追加しました。 +- `wandb.define_metric()` でメトリクス名にワイルドカード文字 `*` を使用した際、名前に `/` を含むメトリクスに一致しないバグを修正しました。 +- コレクションポートフォリオがガベージコレクションされる際に、ソース アーティファクト を削除しないようになりました。 +- **Allowed types** および **Registry visibility** の選択ボックスに入力ができてしまうバグを修正しました。 +- コレクションカードに、短縮されることなく アーティファクト タイプのフルネームが表示されるようになりました。 +- Registry コレクションで **Action History** をクリックすると、誤って **Versions** ビューが読み込まれるバグを修正しました。 +- Registry が `job` タイプの アーティファクト の追加をサポートしました。 +- リネージタイルが広くなり、より多くのテキストが表示されるようになりました。 +- プロジェクト レベルのオートメーション設定におけるテキストを、 Registry の用語である「collections」ではなく「artifacts」を指すように明確化しました。 +- アーティファクト ブラウザの名前検索で、最初の 500 個の アーティファクト だけでなく、すべての アーティファクト を検索するようになりました。 + + + +## 修正 +- `Run.create()` で run を作成する際、 `state` パラメータを `pending` または `running` に設定することで、初期の run 状態を設定できるようになりました。 +- **Action History** をクリックすると誤って **Version** ビューが読み込まれるバグを修正しました。 +- Parquet ストアサービスのメモリパフォーマンスを改善しました。 + + + +## アップグレード +W&B v0.69.x に [アップグレード](/platform/hosting/server-upgrade-process/#update-with-helm) するには、 `operator-wandb` Helm チャートの v0.31.4 以降を使用する必要があります。そうしないと、アップグレード後に `weave-cache-clear` コンテナが起動に失敗する可能性があります。デプロイメントが以下の値を使用していることを確認してください。 + +```yaml +chart: + url: https://charts.wandb.ai + name: operator-wandb + version: 0.31.4 +``` + +質問がある場合やアップグレードで問題が発生している場合は、 [サポート](mailto:support@wandb.com) までお問い合わせください。 + +## 機能 +- ワークスペース 内で直接、 run にカスタム表示名を設定できるようになりました。カスタマイズされた run 名はすべてのプロットとテーブルに表示されますが、自分の ワークスペース 内でのみ有効で、チームメイトのビューには影響しません。これにより、すべての凡例やプロットで `*...v6-final-restart...` のようなラベルを目にすることなく、ワークスペース をより明確かつクリーンに保つことができます。 +- run をフィルタリングまたはグループ化する際、色が重なって見分けにくくなることがあります。 run セレクターの新しい **Randomize Colors** オプションは、現在の run の選択やグループにデフォルトパレットからランダムな色を再割り当てし、色の識別を容易にします。 +- 折れ線グラフにおいて、線上で **Cmd+クリック** することで、シングル run ビューを新しいタブで開けるようになりました。 +- ビデオメディアパネルに、再生、一時停止、シーク、フルスクリーン表示、および再生速度の調整のための再生コントロールが追加されました。 +- すべてのタイプのメディアパネルの設定が再構成および改善されました。 +- ポイントクラウドパネルのポイントカラーと背景色をカスタマイズできるようになりました。 +- チームレベルおよび組織レベルのサービスアカウントが Registry とやり取りできるようになりました。 +- 改善された指数加重移動平均(EMA)スムージングにより、完全なビン化されていないデータを操作する際に、より信頼性の高い [スムージングされた線](/models/app/features/panels/line-plot/smoothing/) が提供されます。多くの場合、パフォーマンス向上のためにバックエンドでスムージングが処理されます。この機能は v0.68.x ではプライベートプレビューでした。 + +### プライベートプレビュー +プライベートプレビュー機能は、招待制でのみ利用可能です。プライベートプレビューへの登録を希望する場合は、 [サポート](mailto:support@wandb.com) または担当の AISE までお問い合わせください。 + +- 損失やカスタムの効率メトリクスなどの二次メトリクスに基づいて、すべての run を色付けできるようになりました。これにより、すべてのプロットの run にわたって明確なグラデーションのカラースケールが作成され、パターンをより速く見つけられるようになります。 [デモ動画を見る](https://www.loom.com/share/c6ed484899324de991ef7147fd73785d)。 +- [Personal workspace templates](/models/track/workspaces/#workspace-templates){/* TODO change to a relref after workspace templates docs merge */} を使用すると、主要な折れ線グラフの設定を保存し、新しいビューで自動的に再適用できます。これらの設定には、X 軸のキー、スムージングアルゴリズム、スムージング係数、線の最大数、 run セレクターのグルーピングを使用するかどうか、および適用する集計が含まれます。 + +### Weave +- [Saved views](/weave/guides/tools/saved-views) により、チームのコラボレーションが簡素化され、フィルタや列の設定を永続化できるようになりました。 +- PDF および一般的なファイルがサポートされました。 +- 新しい [`EvaluationLogger` API](/weave/guides/evaluation/evaluation_logger) は、柔軟な命令型スタイルの評価ログ記録を提供します。 +- Weave データセットに [human annotations](/weave/guides/tracking/feedback#add-human-annotations) をインポートできるようになりました。 +- [Playground](/weave/guides/tools/playground/) が保存された設定とプロンプトをサポートしました。 +- TypeScript でデコレータがサポートされました。 +- [tracing generator functions](/weave/guides/tracking/tracing#trace-sync-%26-async-generator-functions) のサポートを追加しました。 +- 新しい [`dataset.add_rows`](/weave/reference/python-sdk/#method-add-rows) ヘルパーにより、既存のデータセットへの追加効率が向上しました。 +- 使用状況を理解しやすくするため、トレースとオブジェクトのサイズが UI 上に表示されるようになりました。 + +## パフォーマンス +- [`wandb` SDK](/models/quickstart/#install-the-wandb-library-and-log-in) v0.19.11 により、 アーティファクト のダウンロードが平均で 3 〜 5 倍高速化されました。例えば、以前は約 100 MB/秒でダウンロードされていた アーティファクト が、 450 MB/秒以上でダウンロードされる可能性があります。実際のダウンロード速度は、ネットワークやストレージインフラなどの要因によって異なります。 +- [Project](/models/track/project-page/) ページおよび [User Settings](/platform/app/settings-page/user-settings/) ページのキャッシュを改善しました。 + +## 修正 +- Python 仮想環境との互換性を確保するため、 `weave-cache-clear` コンテナの起動プロセスを改善しました。 +- コンソールログをより高密度に表示するためのオプションを追加しました。 +- ワークスペース の読み込み画面がより詳細な情報を提供するようになりました。 +- ワークスペース から レポート にパネルを追加する際、現在の プロジェクト の レポート が送信先レポートリストの最初に表示されるようになりました。 +- y 軸が過度に丸められ、重複した値が表示される多くのケースを修正しました。 +- 無効なスムージングパラメータを入力した際の紛らわしい挙動を修正しました。 +- メディアパネルから **Partial Media** 警告を削除しました。これはメディアパネルの挙動を変更するものではありません。 +- [タグに基づいた run フィルタ](/models/runs/filter-runs/#filter-runs-with-tags) を追加した際、他のフィールドでフィルタリングする場合と同様に、フィルタがデフォルトで選択されるようになりました。 +- run セレクターのアクティブな run に表示されることがあった緑色のベルアイコンを削除しました。 +- 個々の run の System ページを削除しました。 +- プロジェクト の説明フィールドが改行を尊重するようになりました。 +- 旧モデルレジストリ コレクションの URL を修正しました。 +- Netron ビューアがページ上の利用可能なすべてのスペースを埋めるように拡張されないバグを修正しました。 +- プロジェクト を **Delete** する際、確認モーダルに プロジェクト 名が表示されるようになりました。 + + + +## 修正 +- `Run.create()` で run を作成する際、 `state` パラメータを `pending` または `running` に設定することで、初期の run 状態を設定できるようになりました。 +- **Action History** をクリックすると誤って **Version** ビューが読み込まれるバグを修正しました。 +- Parquet ストアサービスのメモリパフォーマンスを改善しました。 + + + +## 修正 +- v0.68.0 で導入された、メディアパネルでメディアが読み込まれないことがあるバグを修正しました。 + + + + +v0.68.0 では、メディアパネルでメディアが読み込まれないことがあるバグ( [v0.68.1](#0_68_1) で修正済み)が導入されました。このバグを避けるため、修正を含むパッチをインストールまたはアップグレードしてください。サポートが必要な場合は、 [サポート](mailto:support@wandb.com) までお問い合わせください。 + + +## 機能 +- Registry 管理者は、開発パイプラインの主要な段階を表す [保護されたエイリアス(protected aliases)](/models/registry/model_registry/access_controls/#add-protected-aliases) を定義および割り当てることができます。保護されたエイリアスは、 Registry 管理者のみが割り当て可能です。 W&B は、他の ユーザー が API または UI を使用してレジストリ内のバージョンに保護されたエイリアスを追加または削除することをブロックします。 +- run の `x_label` 値に基づいてコンソールログをフィルタリングできるようになりました。 [分散トレーニング](/models/track/log/distributed-training/#track-all-processes-to-a-single-run) 中、このオプションパラメータは run をログに記録したノードを追跡します。 +- 個別に、または一括で、 run を `Groups` 間で移動できるようになりました。また、初期のログ記録時間の後でも、新しい `Groups` を作成できるようになりました。 +- 折れ線グラフにおいて、 **同期ズーム(synchronized zooming)** モードがサポートされました。1つのプロットで特定の範囲をズームすると、共通の X 軸を持つ他のすべての折れ線グラフも同じ範囲に自動的にズームされます。これは [ワークスペースの折れ線グラフ用表示設定](/models/app/features/panels/line-plot/#all-line-plots-in-a-workspace) でオンにできます。 +- 折れ線グラフにおいて、カスタムメトリクスをタイムスタンプとしてフォーマットすることが可能になりました。これは、別のシステムからの run を同期またはアップロードする際に便利です。 +- `epoch` や `train/global_step` (あるいはその他の) `_step` 以外のフィールドを使用して、 [メディアパネル](/models/app/features/panels/media/) をスライドできるようになりました。 +- `runs` または `runs.history` 式を使用する [Query パネル](/models/app/features/panels/query-panels/) のテーブルとプロットにおいて、ステップスライダーを使用して、 run の過程でのメトリクス、テキスト、またはメディアの進行を追跡できるようになりました。スライダーは `_step` 以外のメトリクスによる移動もサポートしています。 +- [棒グラフ](/models/app/features/panels/bar-plot/) のラベルをフォントサイズコントロールでカスタマイズできるようになりました。 + +### プライベートプレビュー +プライベートプレビュー機能は、招待制でのみ利用可能です。プライベートプレビューへの登録を希望する場合は、 [サポート](mailto:support@wandb.com) または担当の AISE までお問い合わせください。 + +- **Personal workspace templates** を使用すると、 ワークスペース のセットアップを保存して、新しい [プロジェクト](/models/track/project-page/) に自動的に適用できます。当初は、デフォルトの X 軸メトリクス、スムージングアルゴリズム、スムージング係数などの特定の折れ線グラフ設定を構成できます。 +- **改善された指数加重移動平均(EMA)スムージング** により、完全なビン化されていないデータを操作する際に、より信頼性の高い [スムージングされた線](/models/app/features/panels/line-plot/smoothing/) が提供されます。多くの場合、パフォーマンス向上のためにバックエンドでスムージングが処理されます。 + +### Weave +- W&B インスタンス内からファインチューニングされたモデルとチャットできます。 [Playground](/weave/guides/tools/playground/) が Dedicated Cloud でサポートされました。 Playground は、過去のトレースに基づいてさまざまな LLM を比較するためのチャットインターフェースです。管理者は、チームが Weave 内から対話できるように、さまざまなモデルプロバイダーの APIキー を追加したり、 [カスタムホスト型の LLM プロバイダー](/weave/guides/tools/playground/#add-a-custom-provider) を接続したりできます。 +- Open Telemetry のサポート。 OpenTelemetry (OTel) を介してトレースをログに記録できるようになりました。 [OpenTelemetry tracing](/weave/guides/tracking/otel/?utm_source=beamer&utm_medium=sidebar&utm_campaign=OpenTelemetry-support-in-Weave&utm_content=ctalink) を参照してください。 +- Weave [tracing](/weave/guides/tracking/) に、CrewAI、OpenAI の Agent SDK、DSPy 2.x、Google の genai Python SDK などの新しい フレームワーク インテグレーションが追加されました。 +- Playground が新しい [OpenAI モデル](/weave/guides/tools/playground/#openai) をサポートしました: GPT‑4.1、 GPT‑4.1 mini、 GPT‑4.1 nano。 +- トレースから直接ラベル付きデータセットを構築し、アノテーションを自動的にデータセットの列に変換できます。 [Dataset creation from traces](/weave/guides/core-types/datasets/#create-edit-and-delete-a-dataset-in-the-ui) を参照してください。 + +## セキュリティ +- `golang crypto` を v0.36.0 にアップグレードしました。 +- `golang oauth2` を v0.28.0 にアップグレードしました。 +- Weave において、 `pyarrow` を v17.0.0 に固定しました。 + +## パフォーマンス +- 特に大規模な ワークスペース において、多くの ワークスペース 操作のパフォーマンスを改善しました。例えば、セクションの展開や run セレクターの使用の応答性が大幅に向上しました。 +- Fork と Rewind のパフォーマンスを改善しました。 + + run を [Forking(フォーク)](/models/runs/forking/) すると、既存の run と同じ設定を使用する新しい run が作成されます。フォークされた run への変更は親 run に影響せず、その逆も同様です。フォークされた run と親の間にはポインターが維持されます。 run を [Rewinding(リワインド)](/models/runs/rewind/) すると、既存のデータを失うことなく、その時点から新しいデータをログに記録できます。 + + 多くのネストされたフォークを持つ プロジェクト において、キャッシュの改善により、新しい run のフォークがより効率的になりました。 + +## 修正 +- 組織のサービスアカウントを新しいチームに追加できないことがあるバグを修正しました。 +- グループ化された線に対してホバーマークが表示されないことがあるバグを修正しました。 +- レポート パネルの **Import** ドロップダウンに無効な プロジェクト 名が含まれることがあるバグを修正しました。 +- run セレクターにおけるフィルタの配置の表示バグを修正しました。 +- タイムスタンプの **Within Last** フィルタを追加する際のページクラッシュを修正しました。 +- グローバルな折れ線グラフ設定において、 X 軸を **Wall Time** に設定できないことがあるバグを修正しました。 +- 画像がテーブルにログ記録されている場合に、画像のキャプションが表示されないことがあるバグを修正しました。 +- 疎な(sparse)メトリクスがパネルに表示されないことがあるバグを修正しました。 +- **Run Overview** ページにおいて、 **Description** フィールドの名前が **Notes** になりました。 + + + +## 機能 + +- レポート において、パネルグリッドごとに run にカスタム表示名を付けられるようになりました。これにより、トレーニング時の(しばしば長く不透明な) run 名を、閲覧者にとってより意味のある名前に置き換えることができます。レポートはすべてのパネルグリッドで名前を更新するため、苦労して得た実験のインサイトを簡潔で読みやすい方法で同僚に説明するのに役立ちます。元の run 名は プロジェクト 内でそのまま維持されるため、共同作業者を混乱させることはありません。 +- ワークスペース 内のパネルを展開すると、より広いスペースでフルスクリーンモードで開くようになりました。このビューでは、折れ線グラフが最大 10,000 ビンを使用して、より詳細にレンダリングされます。パネルの横に run セレクターが表示され、コンテキスト内で run の切り替え、グループ化、フィルタリングを簡単に行うことができます。 +- 任意のパネルから、そのパネルのフルスクリーンビューに直接リンクする固有の URL をコピーできるようになりました。これにより、プロット内の興味深いパターンや異常なパターンを詳しく調べるためのリンクを共有するのがさらに簡単になります。 +- Run Comparer は、重要な run の設定と主要なメトリクスを損失曲線とともに比較するために使用できる強力なツールです。 Run Comparer がアップデートされました: + - **Add Panels** の拡張オプションとして、 Run Comparer パネルをより迅速に追加できるようになりました。 + - デフォルトで Run Comparer パネルはより多くのスペースを占有するため、値をすぐに確認できます。 + - Run Comparer パネルの読みやすさと視認性が向上しました。新しいコントロールを使用して行と列のサイズを素早く変更し、長い値やネストされた値を読むことができます。 + - パネル内の任意の値をワンクリックでクリップボードにコピーできます。 + - 正規表現を使用してキーを検索し、比較したいメトリクスのサブセットを正確かつ迅速に見つけることができます。検索履歴が保存され、ビュー間の効率的な反復作業を支援します。 +- セグメンテーションマスクのコントロールがアップデートされました: + - 各マスクタイプを一括でオン/オフにしたり、すべてのマスクまたはすべての画像をオン/オフにしたりできるようになりました。 + - 各クラスに割り当てられた色を変更できるようになり、複数のクラスが同じ色を使用している場合の混乱を避けられるようになりました。 +- メディアパネルをフルスクリーンモードで開いた際、ステップスライダーを最初にクリックすること *なく* 、キーボードの左右の矢印を使用して画像をステップ移動できるようになりました。 +- メディアパネルで run 名が色付けされるようになり、 run セレクターと一致するようになりました。これにより、 run のメディア値と関連するメトリクスやプロットを関連付けやすくなります。 +- run セレクターにおいて、 run が特定のメディアキーを持っているか持っていないかでフィルタリングできるようになりました。 +- W&B App UI 内で run をグループ間で移動できるようになり、 run がログ記録された後でも新しいグループを作成できるようになりました。 +- UI 上で オートメーション を編集できるようになりました。 +- アーティファクト イベントに対して、 オートメーション が Slack チャンネルに通知できるようになりました。オートメーション作成時に、 Action タイプとして「Slack notification」を選択してください。 +- Registry がデフォルトでグローバル検索をサポートし、レジストリ名、コレクション名、エイリアス、またはタグによってすべてのレジストリを検索できるようになりました。 +- `runs` 式を使用するテーブルや Query パネルにおいて、新しい Runs History ステップスライダーとドロップダウンコントロールを使用して、 run の各ステップにおけるメトリクスのテーブルを表示できるようになりました。 +- W&B Weave の Playground が新しいモデルをサポートしました: OpenAI の `gpt-4.5-preview` および Deepseek の `deepseek-chat` 、 `deepseek-reasoner` 。 +- Weave tracing に 2 つの新しいエージェント フレームワーク インテグレーションが追加されました: CrewAI と OpenAI の Agent SDK。 +- Weave UI において、トレースから Datasets を構築できるようになりました。 [詳細はこちら](/weave/guides/core-types/datasets#create-edit-and-delete-a-dataset-in-the-ui) +- Weave Python SDK において、 Weave データの入力と出力をフィルタリングして、機密データがネットワーク境界外に出ないようにする方法が提供されました。機密データを秘匿化するように設定できます。詳細: /weave/guides/tracking/redact-pii/ +- エクスペリエンスを合理化するため、今後のリリースで個別の run ワークスペース ビューの System タブを削除します。システムメトリクスに関する完全な情報は、 ワークスペース の System セクションで確認してください。質問は [support@wandb.com](mailto:support@wandb.com) までお問い合わせください。 + +## セキュリティ + +- `golang crypto` を v0.36.0 にアップグレードしました。 +- `golang oauth2` を v0.28.0 にアップグレードしました。 +- Weave において、 `pyarrow` を v17.0.0 に固定しました。 + +## パフォーマンス + +- フロントエンドのアップデートにより、訪問の合間に不可欠なデータをブラウザキャッシュに保存することで、 ワークスペース の再読み込み時間を大幅に短縮しました。このアップデートは、保存済みビュー、メトリクス名、 run セレクター、 run 数、W&B の設定詳細の読み込み、および ワークスペース ビューの再計算を最適化します。 +- Registry の概要ページの読み込みが大幅に高速化されました。 +- 数千の run や数百のメトリクスがある ワークスペース において、散布図の X、Y、または Z 値のメトリクスを選択する際のパフォーマンスを改善しました。 +- Weave の評価ログ記録のパフォーマンスを改善しました。 + +## 修正 + +- レポート において、レポート内のセクションへのリンクをたどっても、そのセクションが開かないバグを修正しました。 +- ガウススムージングがインデックスの反射(index reflection)を処理する方法を改善し、SciPy デフォルトの "reflect" モードに一致させました。 +- メールで送信された レポート のコメントリンクが、直接コメントを開くようになりました。 +- スイープ の計算秒数の変数型を `int32` ではなく `int64` に変更することで、 スイープ が 20 億計算秒以上かかる場合に ワークスペース がクラッシュすることがあるバグを修正しました。 +- レポート に複数の run セットが含まれている場合に発生することがある表示バグを修正しました。 +- アルファベット順にソートされたセクションに Quick Add されたパネルが正しくソートされないバグを修正しました。 +- 不正な ユーザー 招待リンクが生成されるバグを修正しました。 + + + +## 機能 +- テーブルおよび Query パネルにおいて、他の列から派生させた列が永続化されるようになり、フィルタリングや Query パネルのプロットで使用できるようになりました。 + +## セキュリティ +- GraphQL ドキュメントの最大深度を 20 に制限しました。 +- pyarrow を v17.0.0 にアップグレードしました。 + + + +## 機能 +- レジストリの **Settings** から、所有者を Admin ロールを持つ別の ユーザー に更新できるようになりました。 ユーザー の **Role** メニューから **Owner** を選択してください。 +- 同じ プロジェクト 内の別のグループに run を移動できるようになりました。 run リストで run にカーソルを合わせ、3 つの縦ドットメニューをクリックして **Move to another group** を選択してください。 +- 折れ線グラフの **Log Scale 設定** を、 ワークスペース またはセクションのレベルでデフォルトで有効にするかどうかを設定できるようになりました。 + - ワークスペース の動作を設定するには、 ワークスペース のアクション `...` メニューをクリックし、 **Line plots** をクリックしてから、 X または Y 軸の **Log scale** を切り替えます。 + - セクションの動作を設定するには、セクションのギアアイコンをクリックし、 X または Y 軸の **Log scale** を切り替えます。 + \ No newline at end of file diff --git a/ja/runbooks/TEMPLATE.md b/ja/runbooks/TEMPLATE.md new file mode 100644 index 0000000000..dd0d91515e --- /dev/null +++ b/ja/runbooks/TEMPLATE.md @@ -0,0 +1,104 @@ +# エージェントプロンプト: [タスクのタイトル] + +## 必要条件 +このタスクを開始する前に満たすべき、アクセス要件や前提条件のリスト: +- [ ] 必要なシステムへの アクセス (例: W&B 従業員アクセス) +- [ ] 必要な権限 (例: リポジトリへの書き込み権限) +- [ ] 必要な ツール または依存関係 + +## エージェントの前提条件 +開始前に ユーザー から収集すべき 情報: +1. **[必要な情報 1]** - なぜ必要なのか +2. **[必要な情報 2]** - なぜ必要なのか +3. **[オプションの情報]** - いつ、なぜ必要になる可能性があるか + +## タスクの概要 +このランブックが何を達成するのか、およびいつ使用すべきかの簡潔な説明。 + +> **注意**: ユーザー が事前に知っておくべき重要なコンテキストや制限事項。 + +## コンテキストと制約事項 + +### システム / ツールの制限 +- 制限事項 1 と、それがタスクに与える影響 +- 制限事項 2 と、もしあれば回避策 + +### 重要なコンテキスト +- 主要な背景情報 +- 一般的な落とし穴や エッジケース +- セキュリティ上の考慮事項 + +## ステップバイステップの プロセス + +### 1. [最初の主要なステップ] +このステップで何を達成するかの説明。 + +```bash +# コマンドの例 +command --with-flags +``` + +**期待される 結果**: このステップの後に何が起こるべきか。 + +### 2. [2 番目の主要なステップ] +説明および判断が必要なポイント。 + +**エージェントへの注意**: AI エージェントへの特別な指示。例: +- いつ ユーザー に確認を求めるか +- 権限が不足している場合のフォールバック手順 +- 一般的なバリエーションへの対処方法 + +### 3. [残りのステップを続ける...] + +## 検証とテスト + +期待される結果: +- ✓ 成功の指標 1 +- ✓ 成功の指標 2 +- ✗ 一般的な失敗の指標とその意味 + +### 成功を確認する方法 +1. ...を確認する +2. ...であることを確定する +3. ...によってテストする + +## よくある問題と解決策 + +### 問題: [一般的な問題 1] +- **症状**: この問題がどのように現れるか +- **原因**: なぜ起こるのか +- **解決策**: ステップバイステップの修正方法 + +### 問題: [一般的な問題 2] +- **症状**: +- **原因**: +- **解決策**: + +## クリーンアップ手順 + +タスク完了後: +1. 一時的なファイルやブランチを削除する。 +2. 変更した 設定 をリセットする。 +3. 行った恒久的な変更を記録する。 + +```bash +# クリーンアップコマンドの例 +git branch -D temp-branch-name +rm -f temporary-files +``` + +## チェックリスト + +プロセス全体のまとめチェックリスト: +- [ ] すべての要件を満たした。 +- [ ] ユーザー から必要な 情報を収集した。 +- [ ] ステップ 1 を完了した: [簡単な説明]。 +- [ ] ステップ 2 を完了した: [簡単な説明]。 +- [ ] 結果 を検証した。 +- [ ] 一時的なリソースをクリーンアップした。 +- [ ] 恒久的な変更を記録した。 + +## 注意事項 +- 追加のヒントやコンテキスト。 +- 関連ドキュメントへのリンク。 +- 代替アプローチを使用すべきケース。 \ No newline at end of file diff --git a/ja/runbooks/test-github-action-changes.md b/ja/runbooks/test-github-action-changes.md new file mode 100644 index 0000000000..0a0ad57e9c --- /dev/null +++ b/ja/runbooks/test-github-action-changes.md @@ -0,0 +1,168 @@ +# Agent prompt: wandb/docs における GitHub Actions の変更テスト + +## 必要条件 +- **W&B 従業員アクセス**: 内部の W&B システムにアクセスできる W&B 従業員である必要があります。 +- **GitHub のフォーク**: ワークフローの変更をテストするための wandb/docs の個人用フォーク。フォーク先で、デフォルトブランチへのプッシュおよびブランチ保護ルールのバイパス権限が必要です。 + +## エージェントの前提条件 +開始前に、以下の情報を収集してください: +1. **GitHub ユーザー名** - まず `git remote -v` でフォークのリモートを確認し、次に `git config` でユーザー名を確認します。どちらの場所にも見当たらない場合のみ、ユーザーに尋ねてください。 +2. **フォークの状態** - wandb/docs のフォークを所有しており、デフォルトブランチへのプッシュおよびブランチ保護のバイパス権限があることを確認してください。 +3. **テスト範囲** - 具体的にどのような変更(依存関係のアップグレード、機能変更など)をテストしているかを尋ねてください。 + +## タスクの概要 +wandb/docs リポジトリにおける GitHub Actions ワークフローの変更をテストします。 + +## コンテキストと制約 + +### リポジトリのセットアップ +- **メインリポジトリ**: `wandb/docs` (origin) +- **テスト用フォーク**: `/docs` (fork リモート) - `git remote -v` から判断できない場合は、ユーザーにフォークのエンドポイントを尋ねてください。 +- **重要**: PR における GitHub Actions は、常に PR ブランチからではなく、ベースブランチ (main) から実行されます。 +- **Mintlify デプロイの制限**: Mintlify のデプロイと `link-rot` チェックは、メインの wandb/docs リポジトリに対してのみビルドされ、フォークに対しては行われません。フォークでは、`validate-mdx` GitHub Action がフォークの PR において `mint dev` と `mint broken-links` コマンドの状態をチェックします。 + +**エージェントへの注記**: 以下の手順を行ってください: +1. `git remote -v` をチェックして既存のフォークリモートを確認し、URL が存在すればそこからユーザー名を抽出します。 +2. リモートにユーザー名が見つからない場合は、`git config` で GitHub ユーザー名を確認します。 +3. どちらの場所にも見当たらない場合のみ、ユーザーに GitHub ユーザー名を尋ねます。 +4. テストに使用できる wandb/docs のフォークがあることを確認します。 +5. フォークに直接プッシュできない場合は、wandb/docs に一時的なブランチを作成し、ユーザーがそこからプッシュできるようにします。 + +### テストの要件 +ワークフローの変更をテストするには、以下を行う必要があります: +1. フォークの `main` をメインリポジトリの `main` と同期させ、すべての一時的なコミットを破棄します。 +2. 変更を(単なる機能ブランチではなく)フォークの main ブランチに適用します。 +3. ワークフローをトリガーするために、内容の変更を含むテスト PR をフォークの `main` に対して作成します。 + +## ステップバイステップのテストプロセス + +### 1. 初期セットアップ +```bash +# 既存のリモートを確認 +git remote -v + +# フォークのリモートが存在する場合、フォークの URL からユーザー名を控える +# フォークのリモートがない場合、git config でユーザー名を確認する +git config user.name # または git config github.user + +# リモートや設定で見つからない場合のみ、ユーザーに GitHub ユーザー名やフォークの詳細を尋ねる +# 質問例: "テストに使用するフォークの GitHub ユーザー名は何ですか?" + +# フォークのリモートがない場合は追加する: +git remote add fork https://github.com//docs.git # を実際のユーザー名に置き換える +``` + +### 2. フォークの同期とテストブランチの準備 +```bash +# origin から最新情報を取得 +git fetch origin + +# main をチェックアウトし、origin/main にハードリセットしてクリーンな同期を確保する +git checkout main +git reset --hard origin/main + +# フォークに強制プッシュして同期する(フォーク内の一時的なコミットをすべて破棄) +git push fork main --force + +# ワークフロー変更用のテストブランチを作成 +git checkout -b test-[description]-[date] +``` + +### 3. ワークフロー変更の適用 +ワークフローファイルに変更を加えます。依存関係のアップグレードの場合: +- `uses:` ステートメントのバージョン番号を更新します。 +- 依存関係が複数の場所で使用されている場合は、両方のワークフローファイルを確認してください。 + +**プロのヒント**: ランブックを確定させる前に、以下のようなプロンプトで AI エージェントにレビューを依頼してください: +> 「このランブックをレビューし、AI エージェントにとってより有用になるよう改善案を提案してください。明快さ、完全性、および曖昧さの排除に焦点を当ててください。」 + +### 5. フォークの main へのコミットとプッシュ +```bash +# すべての変更をコミット +git add -A +git commit -m "test: [テスト内容の説明]" + +# フォークの main ブランチにプッシュ +git push fork HEAD:main --force-with-lease +``` + +**フォークへのアクセスに関するエージェントへの指示**: +フォークに直接プッシュできない場合: +1. 変更を加えた一時的なブランチを wandb/docs に作成します。 +2. ユーザーに以下のコマンドを提供します: + ```bash + git fetch origin temp-branch-name + git push fork origin/temp-branch-name:main --force + ``` +3. `https://github.com//docs/compare/main...test-pr-[description]` で PR を作成するようガイドします。 +4. テスト終了後、wandb/docs から一時的なブランチを削除することを忘れないでください。 + +### 6. テスト PR の作成 +```bash +# 更新されたフォークの main から新しいブランチを作成 +git checkout -b test-pr-[description] + +# ワークフローをトリガーするために、コンテンツに小さな変更を加える +echo " +" >> content/en/guides/quickstart.md + +# コミットしてプッシュ +git add content/en/guides/quickstart.md +git commit -m "test: Add content change to trigger PR preview" +git push fork test-pr-[description] +``` + +その後、GitHub UI を通じて `:test-pr-[description]` から `:main` への PR を作成します。 + +### 7. 監視と検証 + +期待される振る舞い: +1. GitHub Actions ボットが "Generating preview links..." という最初のコメントを作成します。 +2. ワークフローがエラーなしで完了する必要があります。 + +以下を確認してください: +- ✅ ワークフローが正常に完了したか +- ✅ プレビューコメントが作成および更新されたか +- ✅ リンクがオーバーライド URL を使用しているか +- ✅ ファイルの分類(Added/Modified/Deleted/Renamed)が機能しているか +- ❌ Actions ログにエラーがないか +- ❌ セキュリティ警告や公開されたシークレットがないか + +### 8. クリーンアップ +テスト終了後: +```bash +# フォークの main をアップストリームに合わせてリセット +git checkout main +git fetch origin +git reset --hard origin/main +git push fork main --force + +# フォークと origin からテストブランチを削除 +git branch -D test-[description]-[date] test-pr-[description] +``` + +## よくある問題と解決策 + +### 問題: フォークへのプッシュ時に Permission denied が発生する +- GitHub トークンが読み取り専用である可能性があります。 +- 解決策: SSH を使用するか、ローカルマシンから手動でプッシュしてください。 + +### 問題: ワークフローがトリガーされない +- 注意: ワークフローは PR ブランチではなく、ベースブランチ (main) から実行されます。 +- 変更がフォークの main ブランチに含まれていることを確認してください。 + +### 問題: 変更されたファイルが検出されない +- コンテンツの変更が追跡対象のディレクトリ(content/, static/, assets/ など)にあることを確認してください。 +- ワークフロー設定の `files:` フィルタを確認してください。 + +## テストチェックリスト + +- [ ] ユーザーに GitHub ユーザー名とフォークの詳細を尋ねた +- [ ] 両方のリモート(origin と fork)が設定されている +- [ ] ワークフローの変更が関連する両方のファイルに適用されている +- [ ] 変更が(直接またはユーザーを通じて)フォークの main ブランチにプッシュされている +- [ ] コンテンツ変更を含むテスト PR が作成されている +- [ ] プレビューコメントが正常に生成されている +- [ ] GitHub Actions ログにエラーがない +- [ ] テスト後にフォークの main ブランチがリセットされている +- [ ] wandb/docs から一時的なブランチがクリーンアップされている(作成した場合) \ No newline at end of file diff --git a/ja/security.mdx b/ja/security.mdx new file mode 100644 index 0000000000..f32abcb8b0 --- /dev/null +++ b/ja/security.mdx @@ -0,0 +1,5 @@ +--- +title: W&B プラットフォーム のセキュリティ +url: https://wandb.ai/site/security/ +--- + diff --git a/ja/style-demo.mdx b/ja/style-demo.mdx new file mode 100644 index 0000000000..76182b265a --- /dev/null +++ b/ja/style-demo.mdx @@ -0,0 +1,115 @@ +--- +title: スタイルガイド デモ +description: カスタム W&B ブランドスタイルのデモ +--- + +# スタイルガイド デモ + +このページでは、W&B ドキュメントに実装されているカスタムブランドスタイルのデモを紹介します。 + +## 1. タイポグラフィ + +### Source Serif 4 を使用した見出し + +# H1 見出し - Source Serif 4 +## H2 見出し - Source Serif 4 +### H3 見出し - Source Serif 4 +#### H4 見出し - Source Serif 4 + +本文には、各 プラットフォーム で最適な読みやすさを実現するために、システムフォントスタックを使用しています。 + +## 2. ブランドカラー + +
+
+ W&B Gold + #ffcc33 +
+
+ W&B Teal + #13a9ba +
+
+ Moon 100 + #f5f6f7 +
+
+ +一貫性を保つため、リンクには ティールカラー を使用します。 + +## 3. バナーコンポーネント + +
+

ヘルプ & サポートバナー

+

このバナーは、テキストシャドウ付きのサポート背景画像を使用しています。

+
+ +
+

カードバナー

+

情報コンテンツ向けの、落ち着いたグレー背景のバナーです。

+
+ +
+

グラデーションバナー

+

目を引くアナウンスメントのために、サンセットグラデーションを使用しています。

+
+ +
+

W&B ブランドバナー

+

公式の W&B ゴールドグラデーションを使用しています。

+
+ +## 4. ボタンスタイル + +
+ + + + お問い合わせボタン +
+ +## 5. グラデーション背景 + +
+

グラデーション付きヒーローセクション

+

ヒーローセクションや重要なアナウンスメントに、サンセットグラデーションを使用します。

+
+ +
+

控えめなグラデーションのカード

+

カードコンポーネントに視覚的な面白さを加える、主張しすぎないオーバーレイグラデーションです。

+
+ +
+ W&B グラデーションテキスト効果 +
+ +## 使用例 + +### MDX でのバナー +```mdx +
+

タイトル

+

コンテンツをここに記載

+
+``` + +### MDX でのボタン +```mdx + +``` + +### グラデーションセクション +```mdx +
+

W&B へようこそ

+

より優れた Models をより速く構築しましょう

+
+``` + +## 注意事項 + +- すべてのスタイルは自動的にダークモードに対応します +- メンテナンスを容易にするため、色は CSS 変数として定義されています +- グラデーションは一貫してブランドカラーを使用しています +- ホバーエフェクトにより、インタラクティブなフィードバックを提供します \ No newline at end of file diff --git a/ja/support-tags.mdx b/ja/support-tags.mdx new file mode 100644 index 0000000000..2d775fa580 --- /dev/null +++ b/ja/support-tags.mdx @@ -0,0 +1,2721 @@ +--- +Title: Support +--- + +import ApiKeyFind from "/snippets/ja/_includes/api-key-find.mdx"; +import OrgServiceAccountCreate from "/snippets/ja/_includes/org-service-account-create.mdx"; +import TeamServiceAccountCreate from "/snippets/ja/_includes/team-service-account-create.mdx"; + + + + +学生の方は、以下の手順でアカデミックプランを申請できます。 + +- [wandb.com の料金ページ](https://wandb.ai/site/pricing)にアクセスします。 +- アカデミックプランを申請します。 +- または、30日間のトライアルから開始し、[W&B アカデミック申請ページ](https://wandb.ai/academic_application)にアクセスしてアカデミックプランに切り替えることも可能です。 + + + + + + +Artifacts は、親プロジェクトのアクセス権限を継承します。 + +* プライベートプロジェクトでは、チームメンバーのみが Artifacts にアクセスできます。 +* パブリックプロジェクトでは、すべてのユーザーが Artifacts を読み取ることができますが、作成や変更ができるのはチームメンバーのみです。 +* オープンプロジェクトでは、すべてのユーザーが Artifacts の読み取りと書き込みを行えます。 + +## Artifacts のワークフロー + +このセクションでは、Artifacts の管理と編集のためのワークフローの概要を説明します。多くのワークフローでは、W&B に保存されたデータへのアクセスを提供する [クライアントライブラリ](/models/ref/python/) のコンポーネントである [W&B API](/models/track/public-api-guide) を活用します。 + + + + + + +history オブジェクトは、 `wandb.log` で記録されたメトリクスを追跡します。API を使用して history オブジェクトにアクセスします。 + +```python +api = wandb.Api() +run = api.run("username/project/run_id") +print(run.history()) +``` + + + + + + +W&B Sweep が開始されると、 Sweep configuration を変更することはできません。ただし、任意のテーブルビューに移動し、チェックボックスで Run を選択してから、 **Create sweep** メニューオプションを選択することで、以前の Run に基づいた新しい Sweep configuration を生成できます。 + + + + + + +アカウントにシートを追加するには、以下の手順に従ってください。 + +- 担当の Account Executive またはサポートチーム (support@wandb.com) にお問い合わせください。 +- 組織名(Organization name)と希望するシート数をお知らせください。 + + + + + + +Plotly または Bokeh の図を直接テーブルに統合することはサポートされていません。代わりに、図を HTML にエクスポートし、その HTML をテーブルに含めてください。以下に、インタラクティブな Plotly および Bokeh チャートを使用した例を示します。 + + + +```python +import wandb +import plotly.express as px + +# 新しい run を初期化 +with wandb.init(project="log-plotly-fig-tables", name="plotly_html") as run: + + # テーブルを作成 + table = wandb.Table(columns=["plotly_figure"]) + + # Plotly 図のパスを定義 + path_to_plotly_html = "./plotly_figure.html" + + # Plotly 図を作成 + fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16]) + + # Plotly 図を HTML にエクスポート + # auto_play を False に設定すると、アニメーション化された Plotly チャートの自動再生を防げます + fig.write_html(path_to_plotly_html, auto_play=False) + + # Plotly 図を HTML ファイルとしてテーブルに追加 + table.add_data(wandb.Html(path_to_plotly_html)) + + # テーブルをログ + run.log({"test_table": table}) + +``` + + +```python +from scipy.signal import spectrogram +import holoviews as hv +import panel as pn +from scipy.io import wavfile +import numpy as np +from bokeh.resources import INLINE + +hv.extension("bokeh", logo=False) +import wandb + +def save_audio_with_bokeh_plot_to_html(audio_path, html_file_name): + sr, wav_data = wavfile.read(audio_path) + duration = len(wav_data) / sr + f, t, sxx = spectrogram(wav_data, sr) + spec_gram = hv.Image((t, f, np.log10(sxx)), ["Time (s)", "Frequency (Hz)"]).opts( + width=500, height=150, labelled=[] + ) + audio = pn.pane.Audio(wav_data, sample_rate=sr, name="Audio", throttle=500) + slider = pn.widgets.FloatSlider(end=duration, visible=False) + line = hv.VLine(0).opts(color="white") + slider.jslink(audio, value="time", bidirectional=True) + slider.jslink(line, value="glyph.location") + combined = pn.Row(audio, spec_gram * line, slider).save(html_file_name) + +html_file_name = "audio_with_plot.html" +audio_path = "hello.wav" +save_audio_with_bokeh_plot_to_html(audio_path, html_file_name) + +wandb_html = wandb.Html(html_file_name) +with wandb.init(project="audio_test") as run: + my_table = wandb.Table(columns=["audio_with_plot"], data=[[wandb_html], [wandb_html]]) + run.log({"audio_table": my_table}) +``` + + + + + + + + +W&B では、1つのサービスアカウントを複数のチームに追加することはできません。各サービスアカウントは特定のチームに紐付けられています。 + + + + + + +複数の著者を追加することで、レポートのすべての貢献者を正確にクレジット表示できます。 + +複数の著者を追加するには、著者名の横にある **+** アイコンをクリックします。レポートにアクセス権を持つ全ユーザーのドロップダウンメニューが表示されます。著者として追加したいユーザーを選択してください。 + + + 複数のレポート著者の追加 + + + + + + + +インスタンスの管理者である場合は、 [ユーザー管理](/platform/hosting/iam/access-management/manage-organization) セクションを参照して、ユーザーの追加やチームの作成方法を確認してください。 + + + + + + +`pip` または `conda` のいずれかを使用してインストール可能な Anaconda パッケージがあります。 `conda` の場合は、 [conda-forge](https://conda-forge.org) チャンネルからパッケージを取得してください。 + + + +```shell +# conda 環境を作成 +conda create -n wandb-env python=3.8 anaconda +# 環境をアクティベート +conda activate wandb-env +# pip を使って wandb をインストール +pip install wandb +``` + + +```shell +conda activate myenv +conda install wandb --channel conda-forge +``` + + + +インストールの問題については、 Anaconda の [パッケージ管理に関するドキュメント](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-pkgs.html) を参照してください。 + + + + + + +* **データの永続性なし**: 匿名アカウントの Runs は7日間保存されます。匿名 Run のデータは、実際のアカウントに保存することで引き継ぐことができます。 + + +匿名モードのインターフェース + + +* **Artifacts のログ記録不可**: 匿名 Run に Artifacts を記録しようとすると、コマンドラインに警告が表示されます。 + ```bash + wandb: WARNING Artifacts logged anonymously cannot be claimed and expire after 7 days. + ``` + +* **プロフィールや設定ページなし**: これらは実際のアカウントでのみ有用なため、UI には含まれません。 + + + + + + +ストレージコストが発生するのは、2つの Artifact バージョン間で変更されたファイルのみです。 + + +Artifact の重複排除 + + +例えば、 `cat.png` と `dog.png` という2つの画像ファイルを含む `animals` という画像 Artifact を考えてみましょう。 + +``` +images +|-- cat.png (2MB) # `v0` で追加 +|-- dog.png (1MB) # `v0` で追加 +``` + +この Artifact にはバージョン `v0` が割り当てられます。 + +新しい画像 `rat.png` を追加すると、以下の内容で新しい Artifact バージョン `v1` が作成されます。 + +``` +images +|-- cat.png (2MB) # `v0` で追加 +|-- dog.png (1MB) # `v0` で追加 +|-- rat.png (3MB) # `v1` で追加 +``` + +バージョン `v1` は合計 6MB を追跡しますが、残りの 3MB を `v0` と共有しているため、実際に占有するスペースは 3MB のみです。 `v1` を削除すると、 `rat.png` に関連付けられた 3MB のストレージが解放されます。 `v0` を削除すると、 `cat.png` と `dog.png` のストレージコストが `v1` に転送され、そのストレージサイズは 6MB に増加します。 + + + + + + +モデルのバージョン管理にはさまざまな方法があります。 Artifacts は、特定のニーズに合わせたモデルのバージョン管理ツールを提供します。複数のモデルアーキテクチャーを探索するプロジェクトでの一般的なアプローチは、アーキテクチャーごとに Artifacts を分けることです。以下の手順を検討してください。 + +1. 特徴的なモデルアーキテクチャーごとに新しい Artifact を作成します。 Run の `config` と同様に、 Artifact の `metadata` 属性を使用してアーキテクチャーの詳細な説明を提供します。 +2. 各モデルについて、 `log_artifact` を使用して定期的にチェックポイントを記録します。 W&B はこれらのチェックポイントの履歴を構築し、最新のものに `latest` エイリアスを付けます。 `architecture-name:latest` を使用して、任意のモデルアーキテクチャーの最新のチェックポイントを参照してください。 + + + + + + +[Sweep](/models/sweeps/) でモデルをログ記録する効果的な方法の1つは、 Sweep 用のモデル Artifact を作成することです。各バージョンは、 Sweep からの異なる Run を表します。以下のように実装します。 + +```python +wandb.Artifact(name="sweep_name", type="model") +``` + + + + + + +`wandb.init(tags='your_tag')` で一意のタグを設定してください。これにより、プロジェクトページの Runs Table で対応するタグを選択することで、プロジェクトの Runs を効率的にフィルタリングできるようになります。 + +`wandb.init()` の詳細については、 [`wandb.init()` リファレンス](/models/ref/python/functions/init) を参照してください。 + + + + + + +Weights & Biases にはバグバウンティプログラムがあります。詳細は [W&B セキュリティポータル](https://security.wandb.ai/) をご覧ください。 + + + + + + +- サポートチーム (support@wandb.com) にご連絡ください。 +- 組織名、アカウントに関連付けられたメールアドレス、およびユーザー名をお知らせください。 + + + + + + +W&B でアカウントを企業用からアカデミック用に変更するには、以下の手順に従ってください。 + +1. **アカデミックメールをリンクする**: + - アカウント設定にアクセスします。 + - アカデミックメールを追加し、プライマリメールとして設定します。 + +2. **アカデミックプランを申請する**: + - [W&B アカデミック申請ページ](https://wandb.ai/academic_application)にアクセスします。 + - 審査のために申請書を提出します。 + + + + + + +請求先住所を変更するには、サポートチーム (support@wandb.com) にご連絡ください。 + + + + + + +環境変数 `WANDB_DIR` を設定することで、W&B run データのログディレクトリーを設定できます。例: + +```python +os.environ["WANDB_DIR"] = os.path.abspath("your/directory") +``` + + + + + + +API を使用して、完了した Run に割り当てられたグループを変更できます。この機能はウェブ UI には表示されません。以下のコードを使用してグループを更新してください。 + +```python +import wandb + +api = wandb.Api() +run = api.run("//") +run.group = "NEW-GROUP-NAME" +run.update() +``` + + + + + + +アカウント作成後にユーザー名を変更することはできません。代わりに、希望するユーザー名で新しいアカウントを作成してください。 + + + + + + +W&B クライアントライブラリは、バージョン 0.10 までは Python 2.7 と Python 3 の両方をサポートしていました。 Python 2 のサポート終了に伴い、バージョン 0.11 で Python 2.7 のサポートを終了しました。 Python 2.7 システムで `pip install --upgrade wandb` を実行すると、 0.10.x シリーズの新しいリリースのみがインストールされます。 0.10.x シリーズのサポートには、重大なバグ修正とパッチのみが含まれます。 Python 2.7 をサポートする 0.10.x シリーズの最後のバージョンは 0.10.33 です。 + + + + + + +W&B クライアントライブラリは、バージョン 0.11 まで Python 3.5 をサポートしていました。 Python 3.5 のサポート終了に合わせて、バージョン 0.12 でサポートを終了しました。詳細については、 [バージョン 0.12 リリースノート](https://github.com/wandb/wandb/releases/tag/v0.12.0) を参照してください。 + + + + + + +画像パネルを展開し、ステップスライダーを使用して異なるステップの画像間を移動します。これにより、トレーニング中のモデル出力の変化を簡単に比較できます。 + + + + + + +トレーニングスクリプトの冒頭で、実験名を指定して `wandb.init` を呼び出します。例: `wandb.init(name="my_awesome_run")` 。 + + + + + + +上部のメッセージを通じてレポートを変換した場合は、赤い「Revert」ボタンをクリックして以前の状態を復元してください。変換後に行った変更は失われるのでご注意ください。 + +単一の Markdown ブロックを変換した場合は、 `cmd+z` で元に戻せます。 + +セッションが終了しているなどの理由で元に戻すオプションが利用できない場合は、ドラフトを破棄するか、最後に保存されたバージョンから編集することを検討してください。どちらも機能しない場合は、W&B サポートにお問い合わせください。 + + + + + + +トレーニング Run への干渉を避けることは極めて重要です。W&B は別プロセスで動作するため、W&B がクラッシュしてもトレーニングは継続されます。インターネットが切断された場合、W&B は [wandb.ai](https://wandb.ai) へのデータ送信を継続的に再試行します。 + + + + + + +はい、以前に削除されたアカウントに関連付けられていたメールアドレスを使用して、新しいアカウントを作成できます。 + + + + + + +役割と権限の詳細については、こちらのリンクを参照してください: [チームの役割と権限](/platform/app/settings-page/teams#team-roles-and-permissions) 。 + + + + + + +トレーニング設定がコマンドライン引数を受け取るようになっている場合、カスタム CLI コマンドで W&B Sweeps を使用できます。 + +以下の例は、ユーザーが Python スクリプト `train.py` をトレーニングし、スクリプトがパースする値を指定している bash ターミナルのスニペットです。 + +```bash +/usr/bin/env python train.py -b \ + your-training-config \ + --batchsize 8 \ + --lr 0.00001 +``` + +カスタムコマンドを実装するには、 YAML ファイルの `command` キーを変更します。上記の例に基づくと、設定は以下のようになります。 + +```yaml +program: + train.py +method: grid +parameters: + batch_size: + value: 8 + lr: + value: 0.0001 +command: + - ${env} + - python + - ${program} + - "-b" + - your-training-config + - ${args} +``` + +`${args}` キーは、 sweep configuration 内のすべてのパラメータに展開され、 `argparse` 用に `--param1 value1 --param2 value2` という形式になります。 + +`argparse` 以外の追加引数については、以下のように実装してください。 + +```python +parser = argparse.ArgumentParser() +args, unknown = parser.parse_known_args() +``` + + +環境によっては、 `python` が Python 2 を指す場合があります。 Python 3 を確実に呼び出すには、コマンド設定で `python3` を使用してください。 + +```yaml +program: + script.py +command: + - ${env} + - python3 + - ${program} + - ${args} +``` + + + + + + + +ダークモードはベータ版であり、アクセシビリティの面で完全には最適化されていません。ダークモードを有効にするには: + +1. [W&B アカウント設定](https://wandb.ai/settings)に移動します。 +2. **Public preview features** セクションまでスクロールします。 +3. **UI Display** で、ドロップダウンから **Dark mode** を選択します。 + + + + + + +SSL エラーや、 `wandb: Network error (ConnectionError), entering retry loop` などのネットワークエラーが発生した場合は、以下の解決策を試してください。 + +1. SSL 証明書をアップグレードします。 Ubuntu サーバーの場合は、 `update-ca-certificates` を実行します。セキュリティリスクを軽減しつつトレーニングログを同期するには、有効な SSL 証明書が不可欠です。 +2. ネットワーク接続が不安定な場合は、 [任意の環境変数](/models/track/environment-variables#optional-environment-variables) `WANDB_MODE` を `offline` に設定してオフラインモードで実行し、後でインターネット接続のあるデバイスからファイルを同期してください。 +3. クラウドサーバーへの同期を避け、ローカルで動作する [W&B Private Hosting](/platform/hosting/) の利用を検討してください。 + +`SSL CERTIFICATE_VERIFY_FAILED` エラーについては、会社のファイアウォールが原因である可能性があります。ローカルの CA を設定し、以下を実行してください: + +`export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt` + + + + + + +カスタムチャートエディターにアクセスします。現在選択されているチャートタイプをクリックして、すべてのプリセットを表示するメニューを開きます。削除したいプリセットの上にマウスを置き、ゴミ箱アイコンをクリックします。 + + +チャートプリセットの削除 + + + + + + + +組織アカウントを削除するには、サポートチーム (support@wandb.com) にお問い合わせください。 + + + + + + +パネルグリッドを選択し、delete キーまたは backspace キーを押します。右上のドラッグハンドルをクリックするとパネルグリッドを選択できます。 + + + + + + +アカウントからチームを削除するには: + +- 管理者としてチーム設定にアクセスします。 +- ページ下部の **Delete** ボタンをクリックします。 + + + + + + +Run に明示的に名前を付けなかった場合、W&B はプロジェクト内で識別しやすいようにランダムな名前を割り当てます。ランダムな名前の例としては `pleasant-flower-4` や `misunderstood-glade-2` などがあります。 + + + + + + +summary はテーブルに表示される現在の値を保持し、 log は将来のプロットのためにすべての値を保存します。 + +例えば、精度が変化するたびに `run.log()` を呼び出します。デフォルトでは、メトリクスに対して手動で設定しない限り、 `run.log()` は summary の値も更新します。 + +散布図や並行座標プロットは summary の値を使用し、折れ線グラフは `run.log` で記録されたすべての値を表示します。 + +一部のユーザーは、最新の記録値ではなく最適な精度を反映させるために、 summary を手動で設定することを好みます。 + + + + + + +チームは、同じプロジェクトに取り組むユーザーのためのコラボレーションワークスペースです。エンティティは、ユーザー名またはチーム名のいずれかを表します。W&B で Run をログに記録する際、 `wandb.init(entity="example-team")` のように個人アカウントまたはチームアカウントにエンティティを設定します。 + + + + + + +チームは、同じプロジェクトに取り組むユーザーのためのコラボレーションワークスペースです。組織は、複数のチームを含めることができる上位レベルのエンティティであり、多くの場合、請求やアカウント管理に関連付けられます。 + + + + + + +以下のモードが利用可能です。 + +* `online` (デフォルト): クライアントはデータを wandb サーバーに送信します。 +* `offline`: クライアントはデータを wandb サーバーに送信せず、ローカルマシンに保存します。後でデータを同期するには [`wandb sync`](/models/ref/cli/wandb-sync) コマンドを使用します。 +* `disabled`: クライアントはモックオブジェクトを返すことで動作をシミュレートし、ネットワーク通信を行いません。すべてのログ記録はオフになりますが、API メソッドのスタブは呼び出し可能なままです。このモードは通常、テストに使用されます。 + + + + + + +W&B は TensorBoard と連携し、実験管理ツールを改善します。W&B は、 TensorBoard ユーザーが直面する一般的な不満を解消するために作成されました。主な改善点は以下の通りです。 + +1. **モデルの再現性**: W&B は実験、探索、およびモデルの再現を容易にします。メトリクス、ハイパーパラメーター、コードのバージョンをキャプチャし、モデルのチェックポイントを保存して再現性を確保します。 + +2. **自動整理**: W&B は、試行したすべてのモデルの概要を提供することで、プロジェクトの引き継ぎや休暇中の対応をスムーズにします。古い実験の再実行を防ぎ、時間を節約できます。 + +3. **迅速な統合**: 5分で W&B をプロジェクトに統合できます。無料のオープンソース Python パッケージをインストールし、数行のコードを追加するだけです。モデルの実行ごとにログに記録されたメトリクスと記録が表示されます。 + +4. **一元化されたダッシュボード**: トレーニングがローカル、ラボのクラスター、クラウドのスポットインスタンスのどこで行われていても、一貫したダッシュボードにアクセスできます。異なるマシン間で TensorBoard ファイルを管理する必要がありません。 + +5. **強力なフィルタリングテーブル**: さまざまなモデルの結果を効率的に検索、フィルタリング、ソート、グループ化できます。特定のタスクに最適なモデルを簡単に見つけることができます。これは、大規模なプロジェクトで TensorBoard が苦労することが多い分野です。 + +6. **コラボレーションツール**: W&B は、複雑な機械学習プロジェクトのコラボレーションを強化します。プロジェクトのリンクを共有したり、結果共有のためにプライベートチームを利用したりできます。インタラクティブな可視化と Markdown の説明を含むレポートを作成して、作業ログやプレゼンテーションに使用できます。 + + + + + + +サブスクリプションプランをダウングレードするには、現在のプランの詳細と希望するプランを明記の上、サポートチーム (support@wandb.com) までご連絡ください。 + + + + + + +個人のプライベートプロジェクト内で作成されたレポートは、そのユーザーのみが表示できます。ユーザーはそのプロジェクトをチームまたは一般に公開共有できます。 + +チームプロジェクトでは、管理者またはレポートを作成したメンバーが、他のチームメンバーに対して編集権限または閲覧権限を切り替えることができます。チームメンバーはレポートを共有できます。 + +レポートを共有するには、右上隅にある **Share** ボタンを選択します。メールアドレスを入力するか、マジックリンクをコピーしてください。メールで招待されたユーザーは、レポートを表示するために W&B にログインする必要がありますが、マジックリンクを持つユーザーはログイン不要です。 + +共有されたレポートは、閲覧専用アクセスが維持されます。 + + + + + + +レポートを埋め込むことで共有できます。レポートの右上にある **Share** ボタンをクリックし、ポップアップウィンドウの下部から埋め込みコードをコピーしてください。 + + +レポートの埋め込み + + + + + + + +Sweeps でコードのログ記録を有効にするには、 W&B Run を初期化した後に `wandb.log_code()` を追加します。 W&B のプロフィール設定でコードのログ記録が有効になっていても、この操作が必要です。高度なコードログ記録については、 [こちらの `wandb.log_code()` のドキュメント](/models/ref/python/experiments/run#log_code) を参照してください。 + + + + + + +`wandb.init` に渡された引数は環境変数を上書きします。環境変数が設定されていない場合にシステムデフォルト以外のデフォルトディレクトリーを設定するには、 `wandb.init(dir=os.getenv("WANDB_DIR", my_default_override))` のように使用します。 + + + + + + +W&B は、離散的な探索空間を持つ W&B Sweep を作成する際に生成される Run の推定数を提供します。この合計は、探索空間のデカルト積を反映しています。 + +例えば、以下のような探索空間を考えてみましょう。 + + +推定 Run 数のカラム + + +この場合、デカルト積は 9 になります。W&B は App UI 上でこの値を推定 Run 数 (**Est. Runs**) として表示します。 + + +Sweep Run 数の推定 + + +推定 Run 数をプログラムで取得するには、 W&B SDK 内の Sweep オブジェクトの `expected_run_count` 属性を使用します。 + +```python +sweep_id = wandb.sweep( + sweep_configs, project="your_project_name", entity="your_entity_name" +) +api = wandb.Api() +sweep = api.sweep(f"your_entity_name/your_project_name/sweeps/{sweep_id}") +print(f"EXPECTED RUN COUNT = {sweep.expected_run_count}") +``` + + + + + + +W&B 組織からユーザーリストをエクスポートするには、管理者が SCIM API を使用して以下のコードを実行します。 + +```python +import base64 +import requests + +def encode_base64(username, key): + auth_string = f'{username}:{key}' + return base64.b64encode(auth_string.encode('utf-8')).decode('utf-8') + +username = '' # 組織管理者のユーザー名 +key = '' # APIキー +scim_base_url = 'https://api.wandb.ai/scim/v2' +users_endpoint = f'{scim_base_url}/Users' +headers = { + 'Authorization': f'Basic {encode_base64(username, key)}', + 'Content-Type': 'application/scim+json' +} + +response = requests.get(users_endpoint, headers=headers) +users = [] +for user in response.json()['Resources']: + users.append([user['userName'], user['emails']['Value']]) +``` + +必要に応じて、出力を保存するようにスクリプトを修正してください。 + + + + + + +Artifact reference が W&B で記録され、バケットのバージョニングが有効になっている場合、バージョン ID は Amazon S3 UI に表示されます。W&B でこれらのバージョン ID と ETag を取得するには、 Artifact を取得して対応するマニフェストエントリにアクセスします。例: + +```python +artifact = run.use_artifact("my_table:latest") +for entry in artifact.manifest.entries.values(): + versionID = entry.extra.get("versionID") + etag = entry.extra.get("etag") +``` + + + + + + +該当する Run について、コードを実行しているディレクトリー内の `wandb/run-_ + + + + + +W&B で "Filestream rate limit exceeded" エラーを解決するには、以下の手順に従ってください。 + +**ログ記録の最適化**: + - API リクエストを減らすために、ログ記録の頻度を下げるか、ログをバッチ処理します。 + - API リクエストの同時発生を避けるため、実験の開始時間をずらします。 + +**障害の確認**: + - [W&B ステータス更新](https://status.wandb.com)を確認して、問題が一時的なサーバー側の問題によるものではないか確認してください。 + +**サポートへの連絡**: + - レート制限の引き上げをリクエストするために、実験のセットアップの詳細を添えて W&B サポート (support@wandb.com) にお問い合わせください。 + + + + + + +検索バーを使用してレポートリストをフィルタリングします。不要なレポートを選択して個別に削除するか、すべてのレポートを選択して「Delete Reports」をクリックしてプロジェクトから削除します。 + + +不要なレポートやドラフトの削除 + + + + + + + + + + + + + + +Sweep で最高のパフォーマンスを示した Run から Artifact を取得するには、以下のコードを使用します。 + +```python +api = wandb.Api() +sweep = api.sweep("entity/project/sweep_id") +runs = sorted(sweep.runs, key=lambda run: run.summary.get("val_acc", 0), reverse=True) +best_run = runs[0] +for artifact in best_run.logged_artifacts(): + artifact_path = artifact.download() + print(artifact_path) +``` + + + + + + +W&B は各 Run によってログ記録された Artifacts と、各 Run で使用された Artifacts を追跡して Artifact graph を構築します。このグラフは、 Run と Artifacts をノードとする二部有向非巡回グラフです。例は [こちら](https://wandb.ai/shawn/detectron2-11/artifacts/dataset/furniture-small-val/06d5ddd4deeb2a6ebdd5/graph) で確認できます(「Explode」をクリックしてグラフを展開してください)。 + +Public API を使用して、 Artifact または Run のいずれかからプログラムでグラフを探索できます。 + + + + +```python +api = wandb.Api() + +artifact = api.artifact("project/artifact:alias") + +# Artifact からグラフを遡る: +producer_run = artifact.logged_by() +# Artifact からグラフを下る: +consumer_runs = artifact.used_by() + +# Run からグラフを下る: +next_artifacts = consumer_runs[0].logged_artifacts() +# Run からグラフを遡る: +previous_artifacts = producer_run.used_artifacts() +``` + + + + +```python +api = wandb.Api() + +run = api.run("entity/project/run_id") + +# Run からグラフを下る: +produced_artifacts = run.logged_artifacts() +# Run からグラフを遡る: +consumed_artifacts = run.used_artifacts() + +# Artifact からグラフを遡る: +earlier_run = consumed_artifacts[0].logged_by() +# Artifact からグラフを下る: +consumer_runs = produced_artifacts[0].used_by() +``` + + + + + + + + + +設定の command セクションで `${args_no_boolean_flags}` マクロを使用することで、ハイパーパラメーターを Boolean フラグとして渡すことができます。このマクロは Boolean パラメーターをフラグとして自動的に含めます。 `param` が `True` の場合、コマンドは `--param` を受け取ります。 `param` が `False` の場合、フラグは省略されます。 + + + + + + +指数移動平均の数式は TensorBoard で使用されているものと一致しています。 + +同等の Python 実装の詳細は、 [Stack OverFlow のこちらの解説](https://stackoverflow.com/questions/42281844/what-is-the-mathematics-behind-the-smoothing-parameter-in-tensorboards-scalar/75421930#75421930) を参照してください。 TensorBoard の平滑化アルゴリズムのソースコード(本稿執筆時点)は [こちら](https://github.com/tensorflow/tensorboard/blob/34877f15153e1a2087316b9952c931807a122aa7/tensorboard/components/vz_line_chart2/line-chart.ts#L699) で確認できます。 + + + + + + +一部の機能は、チーム設定の **Beta Features** セクションにあるフィーチャーフラグの下に隠されています。 + + +フィーチャーフラグの下に隠されている利用可能なベータ機能 + + + + + + + +"No visualization data logged yet" というメッセージが表示される場合、スクリプトが最初の `wandb.log` 呼び出しを実行していません。これは、 Run が 1ステップを完了するのに長い時間がかかっている場合に発生することがあります。データのログ記録を早めるには、エポックの最後だけでなく、エポック内に複数回ログを記録するようにしてください。 + + + + + + +グループ内の個々の Run の色を変更することはできません。同じグループ内のすべての Run は共通の色を共有します。 + + + + + + +1つの Run が複数のタグを持つことができるため、タグによるグループ化はサポートされていません。代わりに、これらの Run の [`config`](/models/track/config) オブジェクトに値を追加し、その config 値でグループ化してください。これは [API](/models/track/config#set-the-configuration-after-your-run-has-finished) を使用して行えます。 + + + + + + +はい、タグやカスタムメタデータを使用して Run をカテゴリ分けすることもできます。これはプロジェクトの Workspace 閲覧時や Runs ビューにある `Group` ボタンを使用して行えます。 + + + + + + +チーム管理者が、チーム設定の **Users** タブから [あなたをチームから削除](/platform/app/settings-page/teams) することができます。 + + + + + + +- `WANDB_DIR=` または `wandb.init(dir=)`: トレーニングスクリプト用に作成される `wandb` フォルダの場所を制御します。デフォルトは `./wandb` です。このフォルダには Run のデータとログが保存されます。 +- `WANDB_ARTIFACT_DIR=` または `wandb.Artifact().download(root="")`: Artifacts がダウンロードされる場所を制御します。デフォルトは `./artifacts` です。 +- `WANDB_CACHE_DIR=`: `wandb.Artifact` を呼び出した際に Artifacts が作成・保存される場所です。デフォルトは `~/.cache/wandb` です。 +- `WANDB_CONFIG_DIR=`: 設定ファイルが保存される場所です。デフォルトは `~/.config/wandb` です。 +- `WANDB_DATA_DIR=`: アップロード中に Artifacts をステージングするために使用される場所を制御します。デフォルトは `~/.cache/wandb-data/` です。 + + + + + + +[public API](/models/ref/python/public-api/api) を使用して、1回の操作で複数の Run を削除できます。 + +```python +import wandb + +api = wandb.Api() +runs = api.runs('/') +for run in runs: + if <条件>: + run.delete() +``` + + + + + + +[ユーザー設定](/platform/app/settings-page/user-settings#delete-your-account) の **Delete account** をクリックしてアカウントを削除してください。この操作は取り消し不可であり、即座に有効になりますのでご注意ください。 + + + + + + +[システムメトリクス](/models/ref/python/experiments/system-metrics) のログ記録を無効にするには、 `_disable_stats` を `True` に設定します。 + +```python +wandb.init(settings=wandb.Settings(x_disable_stats=True)) +``` + + + + + + +以下のいずれかの方法でログイン URL を設定してください。 + +- [環境変数](/models/track/environment-variables) `WANDB_BASE_URL` をサーバーの URL に設定する。 +- [`wandb login`](/models/ref/cli/wandb-login) の `--host` フラグをサーバーの URL に設定する。 + + + + + + +以前のステップのログを上書きするには、 [forking](/models/runs/forking) と [rewind](/models/runs/rewind) を使用してください。 + + + + + + +[システムメトリクス](/models/ref/python/experiments/system-metrics) を記録する頻度を設定するには、 `_stats_sampling_interval` に秒数を float 型で設定します。デフォルトは `10.0` です。 + +```python +wandb.init(settings=wandb.Settings(x_stats_sampling_interval=30.0)) +``` + + + + + + +Python で `wandb` をインポートする際に `AttributeError: module 'wandb' has no attribute 'init'` や `AttributeError: module 'wandb' has no attribute 'login'` のようなエラーが発生する場合、 `wandb` がインストールされていないかインストールが壊れていますが、現在の作業ディレクトリに `wandb` ディレクトリが存在しています。これを修正するには、 `wandb` をアンインストールし、ディレクトリを削除してから、 `wandb` をインストールし直してください。 + +```bash +pip uninstall wandb; rm -rI wandb; pip install wandb +``` + + + + + + +Files タブには最大 10,000 個のファイルが表示されます。すべてのファイルをダウンロードするには、 [public API](/models/ref/python/public-api/api) を使用してください。 + +```python +import wandb + +api = wandb.Api() +run = api.run('//') +run.file('').download() + +for f in run.files(): + if <条件>: + f.download() +``` + + + + + + +`resume='must' but run () doesn't exist` というエラーが発生する場合、再開しようとしている Run がプロジェクトまたはエンティティ内に存在しません。正しいインスタンスにログインしていること、およびプロジェクトとエンティティが設定されていることを確認してください。 + +```python +wandb.init(entity=, project=, id=, resume='must') +``` + +[`wandb login --relogin`](/models/ref/cli/wandb-login) を実行して、認証されているか確認してください。 + + + + + + +LaTeX はレポートにシームレスに統合できます。LaTeX を追加するには、新しいレポートを作成し、リッチテキストエリアに直接入力してメモを書いたり、カスタム可視化やテーブルを保存したりします。 + +新しい行で `/` を押し、インライン数式タブに移動して LaTeX コンテンツを挿入します。 + + + + + + +401 Invalid Authentication エラーは、API キーが無効であるか、W&B プロジェクトのエンティティ名/プロジェクト名が正しくないことを意味します。 + +## APIキーの確認 + +1. [ユーザー設定](https://wandb.ai/settings)で新しい API キーを作成します。 +2. API キーを安全に保管してください。 + +## プロジェクト設定の確認 + +プロジェクトが `/` という形式で正しく指定されているか確認してください。 + +**Python の例:** +```python +client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + api_key="", + project="/", # あなたの W&B チームとプロジェクトに一致させる必要があります +) +``` + +**Bash の例:** +```bash +curl https://api.inference.wandb.ai/v1/chat/completions \ + -H "Authorization: Bearer " \ + -H "OpenAI-Project: /" +``` + +## よくある間違い + +- チーム名の代わりに個人エンティティを使用している +- チーム名またはプロジェクト名のスペルミス +- チームとプロジェクトの間のスラッシュ(/)が抜けている +- 期限切れまたは削除済みの API キーを使用している + +## それでも解決しない場合 + +- あなたの W&B アカウントにそのチームとプロジェクトが存在することを確認してください +- 指定したチームへのアクセス権があるか確認してください +- 現在のキーが機能しない場合は、新しい API キーを作成してみてください + + + + + + +W&B Inference エラーを適切に処理し、信頼性の高いアプリケーションを維持するために、以下のベストプラクティスに従ってください。 + +## 1. 常にエラーハンドリングを実装する + +API 呼び出しを try-except ブロックで囲みます。 + +```python +import openai + +try: + response = client.chat.completions.create( + model="meta-llama/Llama-3.1-8B-Instruct", + messages=messages + ) +except Exception as e: + print(f"Error: {e}") + # 適切にエラーを処理する +``` + +## 2. 指数バックオフを用いたリトライロジックの使用 + +```python +import time +from typing import Optional + +def call_inference_with_retry( + client, + messages, + model: str, + max_retries: int = 3, + base_delay: float = 1.0 +) -> Optional[str]: + for attempt in range(max_retries): + try: + response = client.chat.completions.create( + model=model, + messages=messages + ) + return response.choices[0].message.content + except Exception as e: + if attempt == max_retries - 1: + raise + + # 指数バックオフによる遅延時間を計算 + delay = base_delay * (2 ** attempt) + print(f"Attempt {attempt + 1} failed, retrying in {delay}s...") + time.sleep(delay) + + return None +``` + +## 3. 使用状況の監視 + +- W&B の請求ページでクレジットの使用状況を追跡します。 +- 制限に達する前にアラートを設定します。 +- アプリケーション内で API の使用状況をログに記録します。 + +## 4. 特定のエラーコードの処理 + +```python +def handle_inference_error(error): + error_str = str(error) + + if "401" in error_str: + # 認証無効 + raise ValueError("API キーとプロジェクト設定を確認してください") + elif "402" in error_str: + # クレジット不足 + raise ValueError("クレジットが不足しています") + elif "429" in error_str: + # レート制限 + return "retry" + elif "500" in error_str or "503" in error_str: + # サーバーエラー + return "retry" + else: + # 不明なエラー + raise +``` + +## 5. 適切なタイムアウトの設定 + +ユースケースに合わせて妥当なタイムアウトを設定してください。 + +```python +# 長いレスポンスの場合 +client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + api_key="your-api-key", + timeout=60.0 # 60秒のタイムアウト +) +``` + +## その他のヒント + +- デバッグのためにタイムスタンプ付きでエラーをログに記録します。 +- 並行処理をより良く扱うために非同期(async)操作を使用します。 +- プロダクションシステムにはサーキットブレーカーを実装します。 +- API 呼び出しを減らすために、必要に応じてレスポンスをキャッシュします。 + + + + + + + +クォータ不足エラー(402)は、プランに残りのクレジットがない場合に発生します。 + +**エラー:** "You exceeded your current quota, please check your plan and billing details" + +**解決策:** + +- W&B の請求ページでクレジット残高を確認してください。 +- クレジットを追加購入するか、プランをアップグレードしてください。 +- [サポート](https://wandb.ai/site/contact)に制限の引き上げをリクエストしてください。 + + + + + + + +"Country, region, or territory not supported" というメッセージの 403 エラーは、サポートされていない場所から W&B Inference にアクセスしていることを意味します。 + +## なぜこれが発生するのか + +W&B Inference は、コンプライアンスおよび規制要件により地理的な制限があります。サービスはサポートされている地理的な場所からのみアクセス可能です。 + +## できること + +1. **利用規約を確認する** + - 現在のサポート対象地域のリストについては、 [利用規約](https://docs.coreweave.com/docs/policies/terms-of-service/terms-of-use#geographic-restrictions) を確認してください。 + +2. **サポートされている場所から使用する** + - サポートされている国や地域にいるときにサービスにアクセスしてください。 + - サポートされている場所にある組織のリソースを使用することを検討してください。 + +3. **担当チームに連絡する** + - エンタープライズのお客様は、担当の Account Executive とオプションについて相談できます。 + - 一部の組織には特別な取り決めがある場合があります。 + +## エラーの詳細 + +このエラーが表示される場合: +``` +{ + "error": { + "code": 403, + "message": "Country, region, or territory not supported" + } +} +``` + +これは API リクエスト時の IP アドレスの場所によって判断されます。 + + + + + + +レート制限エラー(429)は、同時実行制限を超えた場合に発生します。 + +**エラー:** "Concurrency limit reached for requests" + +**解決策:** +- 並列リクエストの数を減らします。 +- リクエスト間に遅延を入れます。 +- 指数バックオフを実装します。 +- 注意:レート制限は W&B プロジェクトごとに適用されます。 + +## レート制限を避けるためのベストプラクティス + +1. **指数バックオフを用いたリトライロジックの実装:** + ```python + import time + + def retry_with_backoff(func, max_retries=3): + for i in range(max_retries): + try: + return func() + except Exception as e: + if "429" in str(e) and i < max_retries - 1: + time.sleep(2 ** i) + else: + raise + ``` + +2. **並列リクエストの代わりにバッチ処理を使用する** + +3. **W&B の請求ページで使用状況を監視する** + +## デフォルトの支出上限 + +- **Pro アカウント:** $6,000/月 +- **Enterprise アカウント:** $700,000/年 + +上限を調整するには、担当の Account Executive またはサポートにお問い合わせください。 + + + + + + +サーバーエラーは、W&B Inference サービスの一時的な問題を示しています。 + +## エラーの種類 + +### 500 - Internal Server Error +**メッセージ:** "The server had an error while processing your request" + +これはサーバー側の一時的な内部エラーです。 + +### 503 - Service Overloaded +**メッセージ:** "The engine is currently overloaded, please try again later" + +サービスが高トラフィックの状態にあります。 + +## サーバーエラーへの対処法 + +1. **再試行する前に待機する** + - 500 エラー:30〜60秒待機 + - 503 エラー:60〜120秒待機 + +2. **指数バックオフを使用する** + ```python + import time + import openai + + def call_with_retry(client, messages, model, max_retries=5): + for attempt in range(max_retries): + try: + return client.chat.completions.create( + model=model, + messages=messages + ) + except Exception as e: + if "500" in str(e) or "503" in str(e): + if attempt < max_retries - 1: + wait_time = min(60, (2 ** attempt)) + time.sleep(wait_time) + else: + raise + else: + raise + ``` + +3. **適切なタイムアウトを設定する** + - HTTP クライアントのタイムアウト値を増やします。 + - より良い処理のために非同期操作を検討してください。 + +## サポートに連絡すべきタイミング + +以下の場合にサポートに連絡してください。 +- エラーが10分以上続く場合 +- 特定の時間に失敗するパターンが見られる場合 +- エラーメッセージに追加の詳細が含まれている場合 + +提供していただきたい情報: +- エラーメッセージとエラーコード +- エラーが発生した時刻 +- あなたのコードスニペット(API キーは削除してください) +- W&B のエンティティ名とプロジェクト名 + + + + + + +Run の初期化タイムアウトエラーを解決するには、以下の手順に従ってください。 + +- **初期化の再試行**: Run を再起動してみてください。 +- **ネットワーク接続の確認**: インターネット接続が安定しているか確認してください。 +- **wandb バージョンの更新**: 最新バージョンの wandb をインストールしてください。 +- **タイムアウト設定の増加**: 環境変数 `WANDB_INIT_TIMEOUT` を変更します。 + ```python + import os + os.environ['WANDB_INIT_TIMEOUT'] = '600' + ``` +- **デバッグの有効化**: 詳細なログを得るために `WANDB_DEBUG=true` と `WANDB_CORE_DEBUG=true` を設定します。 +- **設定の確認**: API キーとプロジェクトの設定が正しいか確認してください。 +- **ログの検査**: エラーがないか `debug.log` 、 `debug-internal.log` 、 `debug-core.log` 、 `output.log` を調査してください。 + + + + + + +このエラーは、サーバーにデータを同期するプロセスの起動にライブラリが失敗したことを示しています。 + +以下の回避策で、特定の環境における問題が解決します。 + + + +```python +wandb.init(settings=wandb.Settings(start_method="fork")) +``` + + + + +`0.13.0` より前のバージョンの場合は、以下を使用してください。 + +```python +wandb.init(settings=wandb.Settings(start_method="thread")) +``` + + + + + + + + +テーブルは、WYSIWYG に直接対応する機能がない唯一の Markdown 機能です。テーブルを追加するには、 Markdown ブロックを挿入し、その中にテーブルを作成してください。 + + + + + + +`wandb` のインストール時に以下のようなエラーが発生する場合: + +``` +unable to execute 'gcc': No such file or directory +error: command 'gcc' failed with exit status 1 +``` + +プリビルドされた wheel から `psutil` を直接インストールしてください。 [https://pywharf.github.io/pywharf-pkg-repo/psutil](https://pywharf.github.io/pywharf-pkg-repo/psutil) で Python のバージョンとオペレーティングシステムを確認してください。 + +例えば、 Linux 上の Python 3.8 に `psutil` をインストールするには: + +```bash +WHEEL_URL=https://github.com/pywharf/pywharf-pkg-repo/releases/download/psutil-5.7.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=adc36dabdff0b9a4c84821ef5ce45848f30b8a01a1d5806316e068b5fd669c6d +pip install $WHEEL_URL +``` + +`psutil` のインストール後、 `pip install wandb` を実行して `wandb` のインストールを完了させます。 + + + + + + +W&B は、アップロードするファイルやデータを明示的に指定することで、スカラーのみをログに記録するプロジェクトもサポートしています。画像を使用せずにログを記録する方法を示す [PyTorch での例](https://wandb.me/pytorch-colab) を参照してください。 + + + + + + +ライブラリがインターネットに接続できない場合、リトライループに入り、ネットワークが復旧するまでメトリクスのストリーミングを試行し続けます。その間もプログラムは実行を続けます。 + +インターネットのないマシンで実行するには、 `WANDB_MODE=offline` を設定してください。この設定では、メトリクスがローカルハードドライブに保存されます。後で、 `wandb sync DIRECTORY` を呼び出してデータをサーバーにストリーミングできます。 + + + + + + +チームに参加するには、以下の手順に従ってください。 + +- チームの管理者または管理権限を持つ人に連絡して、招待を依頼します。 +- 招待メールを確認し、指示に従ってチームに参加してください。 + + + + + + +デフォルトでは、W&B はデータセットの例を記録しません。一方で、デフォルトでコードとシステムメトリクスは記録されます。 + +環境変数を使用してコードのログ記録をオフにする方法は2つあります。 + +1. `WANDB_DISABLE_CODE` を `true` に設定して、すべてのコード追跡をオフにします。これにより、 git SHA や diff パッチの取得が行われなくなります。 +2. `WANDB_IGNORE_GLOBS` を `*.patch` に設定して、 diff パッチのサーバーへの同期を停止します。ローカルには残るため、 `wandb restore` で適用可能です。 + +管理者の方は、チーム設定でチーム全体のコード保存をオフにすることもできます。 + +1. `https://wandb.ai//settings` にあるチームの設定に移動します( `` はチーム名です)。 +2. Privacy セクションまでスクロールします。 +3. **Enable code saving by default** のトグルをオフにします。 + + + + + + +はい。 Run 名を Run ID で上書きするには、以下のコードスニペットを使用してください。 + +```python +import wandb + +with wandb.init() as run: + run.name = run.id + run.save() +``` + + + + + + +W&B が組み込まれたスクリプトを停止するには、キーボードで `Ctrl+D` を押します。 + + + + + + +1つのスクリプト内で複数の Run をログに記録するには、新しい Run を開始する前に前の Run を終了させる必要があります。 + +推奨される方法は、 `wandb.init()` をコンテキストマネージャーとして使用することです。これにより Run が確実に終了し、スクリプトが例外をスローした場合には Run に失敗のマークが付きます。 + +```python +import wandb + +for x in range(10): + with wandb.init() as run: + for y in range(100): + run.log({"metric": x + y}) +``` + +明示的に `run.finish()` を呼び出すこともできます。 + +```python +import wandb + +for x in range(10): + run = wandb.init() + + try: + for y in range(100): + run.log({"metric": x + y}) + + except Exception: + run.finish(exit_code=1) + raise + + finally: + run.finish() +``` + +## 複数のアクティブな Run + +wandb 0.19.10 以降、 `reinit` 設定を `"create_new"` にすることで、同時に複数の Run をアクティブにできます。 + +```python +import wandb + +with wandb.init(reinit="create_new") as tracking_run: + for x in range(10): + with wandb.init(reinit="create_new") as run: + for y in range(100): + run.log({"x_plus_y": x + y}) + + tracking_run.log({"x": x}) +``` + +W&B インテグレーションに関する注意事項など、 `reinit="create_new"` の詳細については [プロセスごとの複数 Run](/models/runs/initialize-run) を参照してください。 + + + + + + +`Debug Bundle` を確認してください。管理者は、右上隅の W&B アイコンから `/system-admin` ページにアクセスし、 `Debug Bundle` を選択することで取得できます。 + + +Debug Bundle のダウンロード + + +システム設定 + + + + + + + +実験を管理する方法はいくつかあります。 + +複雑なワークフローの場合は、複数の Runs を使用し、 [`wandb.init()`](/models/track/create-an-experiment) の group パラメーターに、単一の実験内のすべてのプロセスで共通の一意の値を設定します。 [**Runs** タブ](/models/track/project-page#runs-tab) ではテーブルがグループ ID ごとにグループ化され、可視化が適切に機能します。このアプローチにより、結果を1か所にログ記録しながら、並行して実験やトレーニング Run を行うことが可能になります。 + +よりシンプルなワークフローの場合は、 `resume=True` と `id=UNIQUE_ID` を指定して `wandb.init()` を呼び出し、再度同じ `id=UNIQUE_ID` で `wandb.init()` を呼び出します。通常通り [`run.log()`](/models/track/log/) または `run.summary()` でログを記録すれば、 Run の値が適宜更新されます。 + + + + + + +以前にログ記録された Run の出力として Artifact をマークする必要がある場合があります。この場合は、古い Run を再初期化して、以下のように新しい Artifacts を記録します。 + +```python +with wandb.init(id="existing_run_id", resume="allow") as run: + artifact = wandb.Artifact("artifact_name", "artifact_type") + artifact.add_file("my_data/file.txt") + run.log_artifact(artifact) +``` + + + + + + +W&B にログを記録する自動テストや内部ツールを起動するには、チーム設定ページで **Service Account** を作成してください。これにより、継続的インテグレーションを通じて実行されるものを含め、自動化されたジョブにサービス API キーを使用できるようになります。サービスアカウントのジョブを特定のユーザーに関連付けるには、環境変数 `WANDB_USERNAME` または `WANDB_USER_EMAIL` を設定してください。 + + +サービスアカウントの作成 + + + + + + + +以下の例では、 [`wandb.Run.log()`](/models/ref/python/experiments/run/#method-runlog/) を使用して、損失(loss)のリストをいくつかの方法でログに記録する方法を示しています。 + + + +```python +import wandb + +# 新しい run を初期化 +with wandb.init(project="log-list-values", name="log-dict") as run: + # 損失を辞書としてログ + losses = [0.1, 0.2, 0.3, 0.4, 0.5] + run.log({"losses": losses}) + run.log({f"losses/loss-{ii}": loss for ii, loss in enumerate(losses)}) +``` + + +```python +import wandb + +# 新しい run を初期化 +with wandb.init(project="log-list-values", name="log-hist") as run: + # 損失をヒストグラムとしてログ + losses = [0.1, 0.2, 0.3, 0.4, 0.5] + run.log({"losses": wandb.Histogram(losses)}) +``` + + + +詳細は、 [ログ記録に関するドキュメント](/models/track/log/) を参照してください。 + + + + + + +`run.log({'final_accuracy': 0.9})` を使用すると、最終的な精度が正しく更新されます。デフォルトでは、 `run.log({'final_accuracy': <値>})` は `run.settings['final_accuracy']` を更新し、これが runs テーブルの値に反映されます。 + + + + + + +各バッチで特定のメトリクスを記録し、プロットを標準化するには、メトリクスと一緒に希望する X 軸の値をログに記録します。カスタムプロットで edit をクリックし、カスタム X 軸を選択します。 + +```python +import wandb + +with wandb.init() as run: + run.log({"batch": batch_idx, "loss": 0.3}) + run.log({"epoch": epoch, "val_acc": 0.94}) +``` + + + + + + +例えば、バッチごとのトレーニング精度と、エポックごとの検証精度を記録したい場合などです。 + +はい、メトリクスと一緒に `batch` や `epoch` といったインデックスをログに記録してください。あるステップでは `wandb.Run.log()({'train_accuracy': 0.9, 'batch': 200})` を、別のステップでは `wandb.Run.log()({'val_accuracy': 0.8, 'epoch': 4})` を使用します。UI 上で、各チャートの X 軸として希望する値を設定してください。特定のインデックスをデフォルトの X 軸として設定するには、 [Run.define_metric()](/models/ref/python/experiments/run#define_metric) を使用します。上記の例では、以下のコードを使用します。 + +```python +import wandb + +with wandb.init() as run: + run.define_metric("batch") + run.define_metric("epoch") + + run.define_metric("train_accuracy", step_metric="batch") + run.define_metric("val_accuracy", step_metric="epoch") +``` + + + + + + +送信されるポイントの数は、 UI のグラフの読み込み時間に影響します。 1,000 ポイントを超える線の場合、バックエンドはブラウザに送信する前にデータを 1,000 ポイントにダウンサンプリングします。このサンプリングは非決定的であるため、ページを更新するたびにサンプリングされるポイントが異なる場合があります。 + +メトリクスごとに記録するポイントは 10,000 未満にすることをお勧めします。 1つの線で 100 万ポイント以上をログに記録すると、ページの読み込み時間が大幅に長くなります。精度の低下を抑えつつログのフットプリントを最小限に抑える戦略については、こちらの [Colab](https://wandb.me/log-hf-colab) をご覧ください。 config および summary メトリクスのカラムが 500 を超える場合、テーブルには 500 個のみ表示されます。 + + + + + + +2024年5月21日以降に作成されたアカウントでは、個人エンティティは利用できません。W&B は、結果の共有を可能にするために、すべてのユーザーが新しいプロジェクトをチームに記録することを推奨しています。 + + + + + + +共有マシンを使用する際は、認証のために環境変数 `WANDB_API_KEY` を設定することで、 Runs が正しい W&B アカウントに記録されるようにしてください。環境内でこの変数が読み込まれていると、ログイン時に正しい認証情報が提供されます。あるいは、スクリプト内で直接環境変数を設定することも可能です。 + +`export WANDB_API_KEY=X` コマンドを実行します(X をあなたの API キーに置き換えてください)。 API キーは [wandb.ai/settings](https://wandb.ai/settings) で作成できます。 + + + + + + +「ログ機能は遅延評価(lazy)ですか?ローカル操作の実行中に、サーバーに結果を送信するためにネットワークに依存したくありません。」 + +`wandb.log` 関数はローカルファイルに行を書き込むだけで、ネットワーク呼び出しをブロックしません。 `wandb.init` を呼び出すと、同じマシン上で新しいプロセスが開始されます。このプロセスがファイルシステムの変更を監視し、ウェブサービスと非同期に通信するため、ローカル操作は中断されることなく継続できます。 + + + + + + +`wandb offline` コマンドを実行すると、環境変数 `WANDB_MODE=offline` が設定され、リモートの W&B サーバーへのデータ同期が停止します。これはすべてのプロジェクトに影響し、 W&B サーバーへのデータログ記録が停止されます。 + +警告メッセージを抑制するには、以下のコードを使用してください。 + +```python +import logging + +logger = logging.getLogger("wandb") +logger.setLevel(logging.WARNING) +``` + + + + + + +W&B のメトリクス名は、 UI で適切にソートおよびフィルタリングできるようにするために、 GraphQL の命名規則に従う必要があります。 + +## 有効なメトリクス名 + +* **使用可能な文字**: 英字 (A-Z, a-z)、数字 (0-9)、およびアンダースコア (_) +* **先頭の文字**: 名前は英字またはアンダースコアで始まる必要があります +* **パターン**: メトリクス名は `/^[_a-zA-Z][_a-zA-Z0-9]*$/` にマッチする必要があります + +これらのルールに従わないメトリクスは、 W&B UI でソートやフィルタリングができない可能性があります。 + +## 例 + +**有効なメトリクス名:** +```python +with wandb.init() as run: + run.log({"accuracy": 0.9, "val_loss": 0.1, "epoch_5": 5}) + run.log({"modelAccuracy": 0.95, "learning_rate": 0.001}) +``` + +**無効なメトリクス名 (これらは避けてください):** +```python +with wandb.init() as run: + run.log({"acc,val": 0.9}) # コンマが含まれている + run.log({"loss-train": 0.1}) # ハイフンが含まれている + run.log({"test acc": 0.95}) # スペースが含まれている + run.log({"5_fold_cv": 0.8}) # 数字で始まっている +``` + + +## 推奨される解決策 + +無効な文字をアンダースコアなどの有効な文字に置き換えてください: +- `"test acc"` の代わりに `"test_acc"` を使用 +- `"loss-train"` の代わりに `"loss_train"` を使用 +- `"acc,val"` の代わりに `"acc_val"` を使用 + +詳細については、 [メトリクス命名の制約](/models/track/log/#metric-naming-constraints) を参照してください。 + + + + + + +Teams プランには月額払いのオプションはありません。このサブスクリプションは年単位で請求されます。 + + + + + + +以下の手順で Run を別のプロジェクトに移動できます。 + +- 移動したい Run があるプロジェクトページに移動します。 +- **Runs** タブをクリックして runs table を開きます。 +- 移動する Runs を選択します。 +- **Move** ボタンをクリックします。 +- 移動先のプロジェクトを選択し、操作を確定します。 + +W&B は UI を通じた Run の移動をサポートしていますが、 Run のコピーはサポートしていません。 Run と一緒にログに記録された Artifacts は、新しいプロジェクトには転送されません。 Artifacts を Run の新しい場所に手動で移動するには、 [`wandb artifact get`](/models/ref/cli/wandb-artifact/wandb-artifact-get/) SDK コマンドまたは [`Api.artifact` API](/models/ref/python/public-api/api/#artifact) を使用して Artifact をダウンロードし、次に [wandb artifact put](/models/ref/cli/wandb-artifact/wandb-artifact-put/) または `Api.artifact` API を使用して Run の新しい場所にアップロードしてください。 + + + + + + +W&B Reports で以下の手順を行ってください。 + +1. 複数のパネルグリッドを作成します。 +2. 各パネルグリッドに対してフィルタを適用し、希望する Run セットを選択します。 +3. パネルグリッド内に目的のチャートを生成します。 + + + + + + +トレーニングプログラムが複数のプロセスを使用する場合、 `wandb.init()` を実行していないプロセスから wandb メソッドを呼び出さないようにプログラムを構成してください。 + +マルチプロセスのトレーニングは、以下のいずれかのアプローチで管理してください。 + +1. すべてのプロセスで `wandb.init` を呼び出し、 [group](/models/runs/grouping) キーワード引数を使用して共有グループを作成します。各プロセスが独自の wandb run を持ち、 UI 上でそれらのトレーニングプロセスがグループ化されます。 +2. 1つのプロセスからのみ `wandb.init` を呼び出し、ログに記録するデータを [マルチプロセッシングキュー](https://docs.python.org/3/library/multiprocessing.html#exchanging-objects-between-processes) を介して渡します。 + + +Torch DDP を使用したコード例を含むこれらのアプローチの詳細な説明については、 [分散トレーニングガイド](/models/track/log/distributed-training) を参照してください。 + + + + + + + +はい、W&B は `multiprocessing` ライブラリを使用しています。以下のようなエラーメッセージが表示される場合は、問題が発生している可能性があります。 + +``` +An attempt has been made to start a new process before the current process +has finished its bootstrapping phase. +``` + +これを解決するには、 `if __name__ == "__main__":` によるエントリポイント保護を追加してください。これは、スクリプトから直接 W&B を実行する際に必要です。 + + + + + + +辞書のように機能する `(run.config())` を使用して、 sweep configuration からハイパーパラメーターの名前と値にアクセスできます。 + +Sweep 以外の Run の場合は、 `wandb.init()` の `config` 引数に辞書を渡すことで `wandb.Run.config()` の値を設定します。 Sweep では、 `wandb.init()` に提供された構成はデフォルト値として機能し、 Sweep によって上書きされる可能性があります。 + +明示的な動作をさせるには `run.config.setdefaults()` を使用してください。以下のコードスニペットで両方の方法を示します。 + + + +```python +# ハイパーパラメーターのデフォルト値を設定 +config_defaults = {"lr": 0.1, "batch_size": 256} + +# Run を開始し、デフォルト値を指定 +# これらは Sweep によって上書き可能 +with wandb.init(config=config_defaults) as run: + # ここにトレーニングコードを追加 + ... +``` + + +```python +# ハイパーパラメーターのデフォルト値を設定 +config_defaults = {"lr": 0.1, "batch_size": 256} + +# Run を開始 +with wandb.init() as run: + # Sweep で設定されていない値を更新 + run.config.setdefaults(config_defaults) + + # ここにトレーニングコードを追加 +``` + + + + + + + + +1回の Run で複数のメトリクスを最適化するには、個々のメトリクスの加重和を使用します。 + +```python +with wandb.init() as run: + # 個々のメトリクスを取得 + metric_a = run.summary.get("metric_a", 0.5) + metric_b = run.summary.get("metric_b", 0.7) + # ... 必要に応じて他のメトリクスを取得 + metric_n = run.summary.get("metric_n", 0.9) + + # 重み付けしてメトリクスを結合 + # 最適化の目標に合わせて重みを調整してください + # 例: metric_a と metric_n をより重視する場合: + metric_combined = 0.3 * metric_a + 0.2 * metric_b + ... + 1.5 * metric_n + run.log({"metric_combined": metric_combined}) +``` + +新しい結合メトリクスをログに記録し、それを最適化目標として設定します。 + +```yaml +metric: + name: metric_combined + goal: minimize +``` + + + + + + +W&B UI では `/` 文字がパネルを区切る役割を果たします。デフォルトでは、ログに記録されたアイテム名の `/` より前の部分が「Panel Section」と呼ばれるパネルのグループを定義します。 + +```python +import wandb + +with wandb.init() as run: + + run.log({"val/loss": 1.1, "val/acc": 0.3}) + run.log({"train/loss": 0.1, "train/acc": 0.94}) +``` + +[Workspace](/models/track/project-page#workspace-tab) 設定で、最初のセグメントに基づいたグループ化、または `/` で区切られたすべてのセグメントに基づいたグループ化に調整できます。 + + + + + + +このエラーを解決するには、 URL の末尾に `?workspace=clear` を追加して Enter キーを押してください。これにより、プロジェクトページのワークスペースがクリアされた状態になります。 + + + + + + +クラス属性を直接 `wandb.Run.log()` に渡すのは避けてください。ネットワーク呼び出しが実行される前に属性が変更される可能性があります。メトリクスをクラス属性として保存している場合は、ディープコピー(deep copy)を使用して、ログに記録されるメトリクスが `wandb.Run.log()` 呼び出し時の属性値と一致するようにしてください。 + + + + + + +メトリクスの散布図(scatter plot)を作成してください。 **Edit** メニューを開き、 **Annotations** を選択します。そこから、値のランニング最大値(running maximum)をプロットできます。 + + + + + + +`wandb.plot.line_series()` を使用してマルチラインのカスタムチャートを作成します。 [プロジェクトページ](/models/track/project-page) に移動して、折れ線グラフを確認してください。凡例を追加するには、 `wandb.plot.line_series()` に `keys` 引数を含めます。例: + +```python + +with wandb.init(project="my_project") as run: + + run.log( + { + "my_plot": wandb.plot.line_series( + xs=x_data, ys=y_data, keys=["metric_A", "metric_B"] + ) + } + ) +``` + +マルチラインプロットの詳細は、 [こちら](/models/track/log/plots#basic-charts) の **Multi-line** タブを参照してください。 + + + + + + +[`wandb.Run`](/models/ref/python/experiments/run) の `.name` 属性には以下のようにアクセスできます。 + +```python +import wandb + +with wandb.init() as run: + run_name = run.name + print(f"The human-readable run name is: {run_name}") +``` + + + + + + +プロジェクトのプライバシー(可視性)を変更するには: + +1. W&B App で、プロジェクト内の任意のページから左ナビゲーションの **Overview** をクリックします。 +1. 右上の **Edit** をクリックします。 +1. **Project visibility** で新しい値を選択します: + + - **Team** (デフォルト): 自分のチームだけがプロジェクトを表示および編集できます。 + - **Restricted**: 招待されたメンバーのみがプロジェクトにアクセスでき、一般公開はオフになります。 + - **Open**: 誰でも Run を送信したりレポートを作成したりできますが、編集できるのは自分のチームだけです。教室での授業やパブリックなベンチマークコンペティションなど、非永続的な文脈でのみ適切です。 + - **Public**: 誰でもプロジェクトを表示できますが、編集できるのは自分のチームだけです。 + + + W&B 管理者が **Public** の可視性をオフに設定している場合、これを選択することはできません。代わりに、閲覧専用の [W&B レポート](/models/reports/collaborate-on-reports#share-a-report) を共有するか、 W&B 組織の管理者に相談してください。 + +1. **Save** をクリックします。 + +プロジェクトをより厳格なプライバシー設定に更新した場合、以前アクセスできていた個々のユーザーが引き続きアクセスできるように、再招待が必要になる場合があります。 + + + + + + +`"Failed to query for notebook name, you can set it manually with the WANDB_NOTEBOOK_NAME environment variable,"` というエラーメッセージが表示された場合は、環境変数を設定することで解決します。以下のいくつかの方法があります。 + + + +```python +%env "WANDB_NOTEBOOK_NAME" "notebook name here" +``` + + +```python +import os + +os.environ["WANDB_NOTEBOOK_NAME"] = "notebook name here" +``` + + + + + + + + +Run オブジェクトの `.save()` メソッドを呼び出して、現在の Run を保存します。Run オブジェクトの `name` 属性を使用して名前を取得してください。 + + + + + + +Run を削除する際、関連する Artifacts も削除するかどうかの確認が表示されます。このオプションを選択すると、 Artifacts は永久に削除され、後で Run 自体を復元したとしても復旧させることは不可能です。 + + + + + + +削除した Run を復元するには、以下の手順を行ってください。 + +- プロジェクトの Overview ページに移動します。 +- 右上の3つの点をクリックします。 +- **Undelete recently deleted runs** を選択します。 + +**注意**: +- 復元できるのは過去7日以内に削除された Run のみです。 +- 復元が不可能な場合は、 W&B API を使用してログを手動でアップロードできます。 + + + + + + +Workspaces は更新されたデータを自動的に読み込みます。レポートには自動更新は適用されません。レポートのデータを更新するには、ページを再読み込みしてください。 + + + + + + +パスワードリセットメールが届かずアカウントにアクセスできない場合: + +1. **迷惑メールフォルダを確認する:** メールのフィルタリング設定を確認してください。 +2. **メールアドレスの確認:** アカウントに関連付けられたメールアドレスが正しいか確認してください。 +3. **SSO オプションを確認:** 利用可能であれば "Sign in with Google" などのサービスを使用してください。 +4. **サポートに連絡:** 問題が解決しない場合は、ユーザー名とメールアドレスを添えてサポート (support@wandb.com) までお問い合わせください。 + + + + + + +管理者権限なしでチームスペースからプロジェクトを削除するには、以下のオプションがあります。 + +- 現在の管理者にプロジェクトの削除を依頼します。 +- プロジェクト管理のために一時的なアクセス権限を付与するよう管理者に依頼します。 + +管理者に連絡が取れない場合は、組織内の請求担当管理者や他の権限を持つユーザーに相談してください。 + + + + + + +プロジェクト名を変更するには: + +- Project overview に移動します。 +- **Edit Project** をクリックします。 + +注意: + +- `model-registry` などの保護されたプロジェクト名は変更できません。保護された名前に関するサポートが必要な場合は、お問い合わせください。 + + + + + + +期限切れのライセンスを更新するには、サポートチーム (support@wandb.com) にお問い合わせください。更新プロセスおよび新しいライセンスキーの取得についてサポートいたします。 + + + + + + +WYSIWYG への移行後も元の外観を維持することを目指していますが、変換プロセスが完璧でない場合があります。大きな不一致が生じた場合は、調査のために報告してください。編集セッションが終了するまでは、以前の状態に戻すことができます。 + + + + + + +古いハードウェアや非常に大きなレポートでは、パフォーマンスの問題が発生する可能性があります。これを軽減するには、現在使用していないレポートのセクションを折りたたんでください。 + + + + + + +はい。ドキュメントの任意の場所で "/mark" と入力して Enter キーを押すと、 Markdown ブロックが挿入されます。これにより、以前と同様に Markdown を使用して編集できます。 + + + + + + +W&B アカウントを削除するには、 **User settings** ページに移動し、一番下までスクロールして **Delete Account** ボタンをクリックしてください。 + + + + + + +グリッド検索は完了したが、クラッシュなどにより一部の W&B Runs を再実行する必要がある場合、まずそれらの特定の W&B Runs を削除します。次に、 [sweep control ページ](/models/sweeps/sweeps-ui) で **Resume** ボタンを選択します。新しい Sweep ID を使用して、新しい W&B Sweep エージェントを開始してください。 + +すでに完了している W&B Run のパラメータの組み合わせは再実行されません。 + + + + + + +ログインに関する問題を解決するには、以下の手順に従ってください。 + +- **アクセスの確認**: 正しいメールアドレスまたはユーザー名を使用しているか確認し、関連するチームやプロジェクトのメンバーシップを確認してください。 +- **ブラウザのトラブルシューティング**: + - キャッシュの干渉を避けるためにシークレットウィンドウを使用してください。 + - ブラウザのキャッシュをクリアしてください。 + - 別のブラウザやデバイスからログインを試みてください。 +- **SSO と権限**: + - ID プロバイダー (IdP) とシングルサインオン (SSO) の設定を確認してください。 + - SSO を使用している場合は、適切な SSO グループに含まれていることを確認してください。 +- **技術的な問題**: + - 特定のエラーメッセージを控えて、さらに調査を行ってください。 + - 問題が解決しない場合は、サポートチームにお問い合わせください。 + + + + + + +W&B エンティティに Run を記録する際、権限エラーが発生した場合は以下の手順に従ってください。 + +- **エンティティ名とプロジェクト名の確認**: コード内の W&B エンティティ名とプロジェクト名が、大文字小文字を含めて正しく入力されているか確認してください。 +- **権限の確認**: 管理者によって必要な権限が付与されていることを確認してください。 +- **ログイン認証情報の確認**: 正しい W&B アカウントにログインしていることを確認してください。以下のコードで Run を作成してテストします。 + ```python + import wandb + + run = wandb.init(entity="your_entity", project="your_project") + run.log({'example_metric': 1}) + run.finish() + ``` +- **APIキーの設定**: `WANDB_API_KEY` 環境変数を使用します: + ```bash + export WANDB_API_KEY='your_api_key' + ``` +- **ホスト情報の確認**: カスタムデプロイメントの場合は、ホスト URL を設定してください: + ```bash + wandb login --relogin --host= + export WANDB_BASE_URL= + ``` + + + + + + +W&B で `resume` パラメータを使用するには、 `wandb.init()` で `entity` 、 `project` 、 `id` を指定した上で `resume` 引数を設定します。 `resume` 引数は `"must"` または `"allow"` の値を受け入れます。 + + ```python + run = wandb.init(entity="your-entity", project="your-project", id="your-run-id", resume="must") + ``` + + + + + + +Sweep を再開するには、 `sweep_id` を `wandb.agent()` 関数に渡します。 + +```python +import wandb + +sweep_id = "your_sweep_id" + +def train(): + # ここにトレーニングコード + pass + +wandb.agent(sweep_id=sweep_id, function=train) +``` + + + + + + +機密データを含む Artifacts を管理したり、 Artifact バージョンの削除をスケジュールしたりするには、 TTL(time-to-live)ポリシーを設定します。詳細な手順については、 [TTL ガイド](/models/artifacts/ttl) を参照してください。 + + + + + + +個人用キーおよびサービスアカウントキーは、ローテーションや取り消しが可能です。新しい API キーまたはサービスアカウントユーザーを作成し、新しいキーを使用するようにスクリプトを再設定してください。設定変更後、プロフィールまたはチームから古い API キーを削除します。 + + + + + + +いいえ。 **Run Finished** アラート(ユーザー設定の **Run Finished** 設定で有効化)は Python スクリプトのみで動作し、各セルの実行ごとに通知が届くのを防ぐために Jupyter Notebook 環境ではオフにされています。 + +ノートブック環境では、代わりに `run.alert()` を使用してください。 + + + + + + +これは接続の問題を示しています。サーバーのインターネットアクセスが失われ、 W&B へのデータ同期が停止した場合、短期間のリトライ後、システムはその Run を crashed としてマークします。 + + + + + + +スクリプトを `anonymous="allow"` で実行すると、以下のようになります: + +1. **匿名アカウントの自動作成**: W&B はサインイン済みのアカウントがあるか確認します。なければ新しい匿名アカウントを作成し、そのセッション用の API キーを保存します。 +2. **結果を素早くログ記録**: ユーザーは繰り返しスクリプトを実行し、 W&B ダッシュボードで即座に結果を確認できます。これらの申請(claim)されていない匿名 Run は 7日間保存されます。 +3. **役立つデータがあれば申請**: 有益な結果が見つかったら、ページ上部のバナーにあるボタンをクリックして、 Run データを実際のアカウントに保存(申請)できます。申請されない場合、 Run データは 7日後に削除されます。 + + +**匿名 Run のリンクは機密情報です**。これらのリンクを知っていれば、誰でも 7日間実験結果を閲覧し、申請することができます。リンクは信頼できる相手にのみ共有してください。著者の正体を隠したまま結果を一般公開共有したい場合は、 support@wandb.com までお問い合わせください。 + + +W&B ユーザーがスクリプトを見つけて実行した場合、その結果は通常の Run と同様にそのユーザーのアカウントに正しく記録されます。 + + + + + + +[SLURM スケジューリングシステム](https://slurm.schedmd.com/documentation.html) で Sweeps を使用する場合、各スケジューリングジョブ内で `wandb agent --count 1 SWEEP_ID` を実行してください。このコマンドは1つのトレーニングジョブのみを実行して終了するため、ハイパーパラメーター探索の並列性を活かしつつ、リソース要求のための実行時間予測が容易になります。 + + + + + + +オフラインのマシンでトレーニングを行う場合、以下の手順で結果をサーバーにアップロードできます: + +1. 環境変数 `WANDB_MODE=offline` を設定して、インターネット接続なしでメトリクスをローカルに保存します。 +2. アップロードの準備ができたら、ディレクトリ内で `wandb init` を実行してプロジェクト名を設定します。 +3. `wandb sync YOUR_RUN_DIRECTORY` を使用して、メトリクスをクラウドサービスに転送し、ウェブアプリで結果を確認します。 + +Run がオフラインであることを確認するには、 `wandb.init()` 実行後に `run.settings._offline` または `run.settings.mode` をチェックしてください。 + + + + + + +最適なパフォーマンスを得るために、各プロジェクトの Run 数は 10,000 件程度に制限してください。 + + + + + + +トレーニング中にマシンへの接続が切断された可能性があります。 [`wandb sync [PATH_TO_RUN]`](/models/ref/cli/wandb-sync) を実行してデータを復旧させてください。 Run へのパスは、実行中の Run ID と一致する `wandb` ディレクトリ内のフォルダです。 + + + + + + +同じキーで異なるデータ型をログに記録すると、データベース内で分割されます。その結果、 UI のドロップダウンに同じメトリクス名のエントリが複数表示されることになります。グループ化されるデータ型は、 `number` 、 `string` 、 `bool` 、 `other` (主に配列)、および `Histogram` や `Image` などの `wandb` データ型です。この問題を避けるため、1つのキーに対して送信する型は1つだけにしてください。 + +メトリクス名は大文字と小文字を区別しません。 `"My-Metric"` と `"my-metric"` のように、大文字小文字の違いしかない名前の使用は避けてください。 + + + + + + +`wandb.init` で `save_code=True` を使用すると、 Run を開始したメインスクリプトやノートブックが保存されます。 Run のすべてのコードを保存するには、 Artifacts でコードをバージョン管理してください。以下の例でその手順を示します: + +```python +code_artifact = wandb.Artifact(type="code") +code_artifact.add_file("./train.py") +wandb.log_artifact(code_artifact) +``` + + + + + + +`wandb.init` が呼び出されると、システムはリモートリポジトリのリンクや最新コミットの SHA を含む git 情報を自動的に収集します。この情報は [run ページ](/models/runs/#view-logged-runs) に表示されます。この情報を表示させるには、スクリプト実行時の現在の作業ディレクトリが git 管理下のフォルダ内にあることを確認してください。 + +git コミットや実験の実行に使用されたコマンドは、本人には表示されますが、外部ユーザーからは隠されます。パブリックプロジェクトでも、これらの詳細は非公開のままです。 + + + + + + +デフォルトでは、 `wandb.init` はリアルタイムでメトリクスをクラウドに同期するプロセスを開始します。オフラインで使用する場合は、2つの環境変数を設定してオフラインモードを有効にし、後で同期するようにしてください。 + +以下の環境変数を設定します: + +1. `WANDB_API_KEY=$KEY` ($KEY は [ユーザー設定](https://wandb.ai/settings) で作成した API キー)。 +2. `WANDB_MODE="offline"`。 + +スクリプトでの実装例は以下の通りです: + +```python +import wandb +import os + +os.environ["WANDB_API_KEY"] = "YOUR_KEY_HERE" +os.environ["WANDB_MODE"] = "offline" + +config = { + "dataset": "CIFAR10", + "machine": "offline cluster", + "model": "CNN", + "learning_rate": 0.01, + "batch_size": 128, +} + +with wandb.init(project="offline-demo") as run: + for i in range(100): + run.log({"accuracy": i}) +``` + +ターミナル出力のサンプル: + + +オフラインモードのターミナル出力 + + +作業完了後、以下のコマンドを実行してデータをクラウドに同期します: + +```shell +wandb sync wandb/dryrun-folder-name +``` + + +クラウド同期のターミナル出力 + + + + + + + +組織設定内で、組織の保存バイト数(bytes stored)、追跡バイト数(bytes tracked)、および追跡時間(tracked hours)を確認できます: + +1. `https://wandb.ai/account-settings//settings` にある組織設定に移動します。 +2. **Billing** タブを選択します。 +3. **Usage this billing period** セクションで、 **View usage** ボタンをクリックします。 + +`` の部分は、実際の組織名に置き換えてください。 + + + + + + +`Step` 以外の X 軸に対してメトリクスを可視化する場合、表示されるデータポイントが少なくなることがあります。メトリクスが同期した状態を維持するには、同じ `Step` でログを記録する必要があります。サンプル間の補間中、同じ `Step` でログ記録されたメトリクスのみがサンプリングされます。 + +**ガイドライン** + +メトリクスは 1回の `log()` 呼び出しにまとめてください。例えば、次のように書く代わりに: + +```python +import wandb +with wandb.init() as run: + run.log({"Precision": precision}) + ... + run.log({"Recall": recall}) +``` + +次のように記述します: + +```python +import wandb +with wandb.init() as run: + run.log({"Precision": precision, "Recall": recall}) +``` + +ステップパラメータを手動で制御する場合は、次のようにコード内でメトリクスを同期させます: + +```python +with wandb.init() as run: + step = 100 # ステップ値の例 + # 同じステップで Precision と Recall をログ + run.log({"Precision": precision, "Recall": recall}, step=step) +``` + +メトリクスが同じステップの下でログに記録され、一緒にサンプリングされるように、両方の `log()` 呼び出しで `step` の値が同じであることを確認してください。 `step` の値は各呼び出しで単調増加する必要があります。そうでない場合、 `step` の値は無視されます。 + + + + + + +Teams で W&B アラートを受け取るには、以下の手順に従ってください: + +- **Teams チャネルのメールアドレスを設定する。** アラートを受信したい Teams チャネル用のメールアドレスを作成します。 +- **W&B のアラートメールを Teams チャネルのメールアドレスに転送する。** W&B がメールでアラートを送信するように設定し、それらのメールを Teams チャネルのメールアドレスに転送するように設定してください。 + + + + + + +**サービスアカウント(Service account)** は人間ではないマシンアイデンティティを表し、チームやプロジェクト全体で共通のタスクを自動化できます。サービスアカウントは、 CI/CD パイプライン、自動トレーニングジョブ、その他のマシン間ワークフローに最適です。 + +サービスアカウントの主な利点: +- **ライセンスの消費なし**: サービスアカウントはユーザーシートやライセンスを消費しません。 +- **専用の API キー**: 自動ワークフロー用の安全な認証情報。 +- **ユーザーの属性付け**: オプションで、自動化された Runs を人間のユーザーに関連付けることができます。 +- **エンタープライズ対応**: 大規模なプロダクション自動化のために構築されています。 +- **委任された操作**: サービスアカウントは、それを作成したユーザーまたは組織に代わって動作します。 + +特に、サービスアカウントは、定期的な再トレーニングやナイトリービルドなど、 wandb にログ記録される自動ジョブの追跡に役立ちます。必要であれば、 [環境変数](/models/track/environment-variables) `WANDB_USERNAME` または `WANDB_USER_EMAIL` を使用して、これらのマシンから起動された Run にユーザー名を関連付けることができます。 + +ベストプラクティスや詳細な設定手順を含むサービスアカウントの包括的な情報については、 [サービスアカウントを使用してワークフローを自動化する](/platform/hosting/iam/service-accounts) を参照してください。チーム内でのサービスアカウントの振る舞いについては、 [チームのサービスアカウントの振る舞い](/platform/app/settings-page/teams#team-service-account-behavior) を参照してください。 + + + +完全な API キーは作成時に一度だけ表示されます。ダイアログを閉じると、二度と確認することはできません。 + + +**組み込み(Built-in)** のサービスアカウント以外にも、 W&B は [SDK および CLI 用のアイデンティティ連携](/platform/hosting/iam/identity_federation#external-service-accounts) を使用した **外部サービスアカウント(External service accounts)** もサポートしています。 JSON Web Token (JWT) を発行できる ID プロバイダーで管理されているサービスアイデンティティを使用して、 W&B のタスクを自動化したい場合は、外部サービスアカウントを使用してください。 + + + + + + + +カスタムチャートエディターの “Other settings” ページでこのオプションを有効にします。クエリを `summaryTable` ではなく `historyTable` を使用するように変更すると、カスタムチャートエディターに “Show step selector” オプションが表示されます。この機能には、ステップを選択するためのスライダーが含まれます。 + + + + + + +ノートブックで以下のようなログメッセージを抑制するには: + +``` +INFO SenderThread:11484 [sender.py:finish():979] +``` + +ログレベルを `logging.ERROR` に設定してエラーのみを表示し、情報(info)レベルのログ出力を抑制してください。 + +```python +import logging + +logger = logging.getLogger("wandb") +logger.setLevel(logging.ERROR) +``` + +ログ出力を大幅に減らすには、環境変数 `WANDB_QUIET` を `True` に設定します。完全に消すには、環境変数 `WANDB_SILENT` を `True` に設定してください。ノートブックでは、 `wandb.login` を実行する前に `WANDB_QUIET` または `WANDB_SILENT` を設定します: + + + +```python +%env WANDB_SILENT=True +``` + + +```python +import os + +os.environ["WANDB_SILENT"] = "True" +``` + + + + + + + + +通常の利用状況下では、 W&B がトレーニングパフォーマンスに与える影響は最小限です。通常の利用とは、 1秒に 1回未満の頻度でのログ記録や、 1ステップあたり数メガバイト程度にデータを制限することを指します。 W&B は非ブロッキングな関数呼び出しを行う別プロセスで動作するため、一時的なネットワーク停止や断続的なディスクの読み書きの問題がパフォーマンスを阻害することはありません。大量のデータを過剰にログに記録すると、ディスク I/O の問題につながる可能性があります。詳細についてはサポートにお問い合わせください。 + + + + + + +W&B は Auth0 を通じてマルチテナント提供向けのシングルサインオン(SSO)をサポートしています。 SSO 統合は、 Okta や Azure AD などの OIDC 準拠の ID プロバイダーと互換性があります。 OIDC プロバイダーを設定するには、以下の手順に従ってください: + +* ID プロバイダーでシングルページアプリケーション(SPA)を作成します。 +* `grant_type` を `implicit` フローに設定します。 +* コールバック URI を `https://wandb.auth0.com/login/callback` に設定します。 + +**W&B 側の要件** + +セットアップ完了後、アプリケーションの `Client ID` と `Issuer URL` を添えてカスタマーサクセスマネージャー(CSM)までご連絡ください。 W&B はこれらの詳細情報を使用して Auth0 接続を確立し、 SSO を有効にします。 + + + + + + +環境変数 [`WANDB_SILENT`](/models/track/environment-variables) を `true` に設定してください。 + + + +```python +os.environ["WANDB_SILENT"] = "true" +``` + + +```python +%env WANDB_SILENT=true +``` + + +```shell +WANDB_SILENT=true +``` + + + + + + + + +- 処理の遅延により、 Run の削除直後にはストレージメーターが更新されないことがあります。 +- バックエンドシステムが同期し、使用状況の変更を正確に反映するまでに時間がかかります。 +- ストレージメーターが更新されない場合は、変更が処理されるまでお待ちください。 + + + + + + +W&B は、障害への対応や `WANDB_MODE=offline` 設定(ログ記録後の同期を可能にする)をサポートするために、イベントをメモリ内のキューに入れ、非同期にディスクに書き込みます。 + +ターミナルでローカルの Run ディレクトリへのパスを確認してください。このディレクトリにはデータストアとして機能する `.wandb` ファイルが含まれています。画像のログ記録の場合、 W&B は画像を `media/images` サブディレクトリに保存してから、クラウドストレージにアップロードします。 + + + + + + +任意の W&B Sweep エージェントがアクセスできるように `sweep_id` を公開するために、これらのエージェントが `sweep_id` を読み取って実行するための方法を実装してください。 + +例えば、 Amazon EC2 インスタンスを起動し、その上で `wandb agent` を実行します。 SQS キューを使用して `sweep_id` を複数の EC2 インスタンスにブロードキャストします。各インスタンスはキューから `sweep_id` を取得し、プロセスを開始できます。 + + + + + + +W&B の認証を行うには、 Amazon SageMaker の組み込み Estimator を使用している場合は `requirements.txt` ファイルを作成してください。認証と `requirements.txt` ファイルの設定の詳細については、 [SageMaker インテグレーション](/models/integrations/sagemaker) ガイドを参照してください。 + + +完全な例は [GitHub](https://github.com/wandb/examples/tree/master/examples/pytorch/pytorch-cifar10-sagemaker) にあります。また、 [ブログ](https://wandb.ai/site/articles/running-sweeps-with-sagemaker) でもさらに詳しく解説しています。\ +SageMaker と W&B を使用して感情分析器をデプロイするチュートリアルについては、 [Deploy Sentiment Analyzer Using SageMaker and W&B](https://wandb.ai/authors/sagemaker/reports/Deploy-Sentiment-Analyzer-Using-SageMaker-and-W-B--VmlldzoxODA1ODE) にアクセスしてください。 + + + + + + + +同じマシンから 2つの W&B アカウントを管理するには、両方の API キーをファイルに保存してください。リポジトリ内で以下のコードを使用することで、秘密鍵がソース管理にチェックインされるのを防ぎつつ、安全にキーを切り替えることができます。 + +```python +if os.path.exists("~/keys.json"): + os.environ["WANDB_API_KEY"] = json.loads("~/keys.json")["work_account"] +``` + + + + + + +メトリクスはデフォルトで 10秒ごとに収集されます。より高解像度なメトリクスが必要な場合は、 contact@wandb.com までメールでお問い合わせください。 + + + + + + +チームに関する詳細については、 [チームセクション](/platform/app/settings-page/teams) をご覧ください。 + + + + + + +テスト目的で W&B を何もしない(NOOP)ように設定するには、 `wandb.init(mode="disabled")` を使用するか、 `WANDB_MODE=disabled` を設定してください。 + + +`wandb.init(mode="disabled")` を使用しても、 W&B が `WANDB_CACHE_DIR` に Artifacts を保存するのを防ぐことはできません。 + + + + + + + +データセットをトレーニング Run に関連付けるには、 SHA または一意の識別子を `wandb.Run.config.update(...)` に渡してください。 `wandb.Run.save()` がローカルファイル名と共に呼び出されない限り、 W&B がデータを保存することはありません。 + + + + + + +利用可能な役割と権限の概要については、 [チームの役割と権限](/platform/app/settings-page/teams#team-roles-and-permissions) ページをご覧ください。 + + + + + + +支払い方法を更新するには、以下の手順に従ってください: + +1. **プロフィールページに移動する**: まず、ユーザープロフィールページに移動します。 +2. **組織(Organization)を選択する**: アカウントセレクターから関連する組織を選択します。 +3. **請求(Billing)設定にアクセスする**: **Account** の下にある **Billing** を選択します。 +4. **新しい支払い方法を追加する**: + - **Add payment method** をクリックします。 + - 新しいカード情報を入力し、それを **primary**(優先)の支払い方法にするオプションを選択します。 + +> **注意:** 請求を管理するには、組織の請求担当管理者に割り当てられている必要があります。 + + + + + + +レポートに CSV をアップロードするには、 `wandb.Table` 形式を使用してください。 Python スクリプトで CSV を読み込み、 `wandb.Table` オブジェクトとしてログに記録します。これにより、データがレポート内でテーブルとしてレンダリングされます。 + + + + + + +新しい行で `/` を押し、 Image オプションまでスクロールして、画像をレポートにドラッグ&ドロップしてください。 + + +レポートへの画像追加 + + + + + + + +W&B の主要なエンジニアおよびサポートスタッフは、ユーザーの許可を得た上で、デバッグ目的でログ記録された値にアクセスすることがあります。すべてのデータストアは保存時に暗号化され、アクセスは監査ログに記録されます。 W&B 従業員に対する完全なデータセキュリティを確保するには、セルフマネージド(Self-Managed)ソリューションをライセンス契約し、自社のインフラ内で W&B サーバーを実行してください。 + + + + + + +wandb.ai 上の W&B マルチテナントクラウドに障害が発生しているかどうかは、 W&B ステータスページ(https://status.wandb.com)で確認できます。 + + + + + + +トレーニングスクリプトで `wandb.init()` が実行されると、 API 呼び出しによってサーバー上に Run オブジェクトが作成されます。メトリクスをストリーミングおよび収集するための新しいプロセスが開始され、メインプロセスは通常通り動作できるようになります。スクリプトはローカルファイルに書き込み、別のプロセスがシステムメトリクスを含むデータをサーバーにストリーミングします。ストリーミングをオフにするには、トレーニングディレクトリから `wandb off` を実行するか、環境変数 `WANDB_MODE` を `offline` に設定してください。 + + + + + + +Sweep の実行中: +- Sweep が使用している `train.py` スクリプトが変更された場合、 Sweep は元の `train.py` を使い続けます。 +- `train.py` スクリプトが参照しているファイル( `helper.py` 内のヘルパー関数など)が変更された場合、 Sweep は更新された `helper.py` を使用し始めます。 + + + + + + +デフォルトでは、 Artifacts は `artifacts/` フォルダにダウンロードされます。場所を変更するには: + +- [`wandb.Artifact().download`](/models/ref/python/public-api/api) にパスを渡します: + + ```python + wandb.Artifact().download(root="<ダウンロードパス>") + ``` + +- 環境変数 `WANDB_ARTIFACT_DIR` を設定します: + + ```python + import os + os.environ["WANDB_ARTIFACT_DIR"] = "<ダウンロードパス>" + ``` + + + + + + +エクスポートの制限により、 Run の履歴全体を CSV や `run.history` API を使用してエクスポートできない場合があります。 Run の完全な履歴にアクセスするには、 Parquet 形式を使用して Run history artifact をダウンロードしてください。 + +```python +import wandb +import pandas as pd + +run = wandb.init() +artifact = run.use_artifact('//-history:v0', type='wandb-history') +artifact_dir = artifact.download() +df = pd.read_parquet('<.parquet ファイルへのパス>') +``` + + + + + + +ライブラリは Python 2.7 以降、および Python 3.6 以降をサポートしています。このアーキテクチャーは、他のプログラミング言語との統合も容易にするように設計されています。他の言語のモニタリングについては、 [contact@wandb.com](mailto:contact@wandb.com) までお問い合わせください。 + + \ No newline at end of file diff --git a/ja/training.mdx b/ja/training.mdx new file mode 100644 index 0000000000..eaa8758d65 --- /dev/null +++ b/ja/training.mdx @@ -0,0 +1,15 @@ +--- +title: W&B トレーニング +description: 強化学習 を使用して モデル を Post-train する +mode: wide +--- + +現在パブリックプレビュー中の W&B Training は、大規模言語モデル(LLM)のポストトレーニング向けにサーバーレスの 強化学習(RL)を提供します。これにより、マルチターンのエージェントタスクを実行する際の信頼性を向上させつつ、スピードの向上とコストの削減を実現します。RL は、モデルが自身の出力に対するフィードバックを通じて 振る舞い を改善することを学ぶ トレーニング 手法です。 + +W&B Training は以下の インテグレーション を含んでいます: + +* [ART](https://art.openpipe.ai/getting-started/about): 柔軟な RL ファインチューニング フレームワーク。 +* [RULER](https://openpipe.ai/blog/ruler): ユニバーサルな検証ツール。 +* [CoreWeave Cloud](https://docs.coreweave.com/docs/platform) 上の完全に管理されたバックエンド。 + +利用を開始するには、まず [前提条件](/training/prerequisites) を満たしてから、[OpenPipe のサーバーレス RL クイックスタート](https://art.openpipe.ai/getting-started/quick-start) を参照して Models のポストトレーニング方法を確認してください。 \ No newline at end of file diff --git a/ja/training/api-reference.mdx b/ja/training/api-reference.mdx new file mode 100644 index 0000000000..cc30eb77b0 --- /dev/null +++ b/ja/training/api-reference.mdx @@ -0,0 +1,81 @@ +--- +title: API の概要 +description: W&B トレーニング (Training) に関する完全な API ドキュメント +--- + + +W&B Training API は、サーバーレスな 強化学習 の トレーニング ジョブを管理し、やり取りするためのエンドポイントを提供します。この API は、チャット完了(chat completions)において OpenAI 互換となっています。 + + +## 認証 + +すべての API リクエストには、W&B APIキー を使用した認証が必要です。APIキー は [wandb.ai/settings](https://wandb.ai/settings) で作成してください。 + +`Authorization` ヘッダーに APIキー を含めてください: + +``` +Authorization: Bearer YOUR_API_KEY +``` + +## ベース URL + +``` +https://api.training.wandb.ai/v1 +``` + +## 利用可能なエンドポイント + + +### chat-completions + +- **[POST /v1/chat/completions](https://docs.wandb.ai/training/api-reference/chat-completions/create-chat-completion-v1-chat-completions)** - Chat Completion の作成 +- **[POST /v1/chat/completions/](https://docs.wandb.ai/training/api-reference/chat-completions/create-chat-completion-v1-chat-completions-)** - Chat Completion の作成 + +### models + +- **[POST /v1/preview/models](https://docs.wandb.ai/training/api-reference/models/create-model-v1-preview-models)** - Models の作成 +- **[DELETE /v1/preview/models/{model_id}/checkpoints](https://docs.wandb.ai/training/api-reference/models/delete-model-checkpoints-v1-preview-models--model-id--checkpoints)** - モデル チェックポイント の削除 +- **[GET /v1/preview/models/{model_id}/checkpoints](https://docs.wandb.ai/training/api-reference/models/list-model-checkpoints-v1-preview-models--model-id--checkpoints)** - モデル チェックポイント の一覧取得 +- **[POST /v1/preview/models/{model_id}/log](https://docs.wandb.ai/training/api-reference/models/log-v1-preview-models--model-id--log)** - ログ + +### training-jobs + +- **[POST /v1/preview/training-jobs](https://docs.wandb.ai/training/api-reference/training-jobs/create-training-job-v1-preview-training-jobs)** - トレーニング ジョブの作成 +- **[GET /v1/preview/training-jobs/{training_job_id}](https://docs.wandb.ai/training/api-reference/training-jobs/get-training-job-v1-preview-training-jobs--training-job-id-)** - トレーニング ジョブの取得 +- **[GET /v1/preview/training-jobs/{training_job_id}/events](https://docs.wandb.ai/training/api-reference/training-jobs/get-training-job-events-v1-preview-training-jobs--training-job-id--events)** - トレーニング ジョブイベントの取得 + +### 未分類 + +- **[GET /v1/health](https://docs.wandb.ai/training/api-reference/uncategorized/health-check-v1-health)** - ヘルスチェック +- **[GET /v1/system-check](https://docs.wandb.ai/training/api-reference/uncategorized/system-check-v1-system-check)** - システムチェック + +### chat-completions + +- **[POST /v1/chat/completions](https://docs.wandb.ai/training/api-reference/chat-completions/create-chat-completion-v1-chat-completions)** - Chat Completion の作成 +- **[POST /v1/chat/completions/](https://docs.wandb.ai/training/api-reference/chat-completions/create-chat-completion-v1-chat-completions-)** - Chat Completion の作成 + +### models + +- **[POST /v1/preview/models](https://docs.wandb.ai/training/api-reference/models/create-model-v1-preview-models)** - Models の作成 +- **[DELETE /v1/preview/models/{model_id}/checkpoints](https://docs.wandb.ai/training/api-reference/models/delete-model-checkpoints-v1-preview-models--model-id--checkpoints)** - モデル チェックポイント の削除 +- **[GET /v1/preview/models/{model_id}/checkpoints](https://docs.wandb.ai/training/api-reference/models/list-model-checkpoints-v1-preview-models--model-id--checkpoints)** - モデル チェックポイント の一覧取得 +- **[POST /v1/preview/models/{model_id}/log](https://docs.wandb.ai/training/api-reference/models/log-v1-preview-models--model-id--log)** - ログ + +### training-jobs + +- **[POST /v1/preview/training-jobs](https://docs.wandb.ai/training/api-reference/training-jobs/create-training-job-v1-preview-training-jobs)** - トレーニング ジョブの作成 +- **[GET /v1/preview/training-jobs/{training_job_id}](https://docs.wandb.ai/training/api-reference/training-jobs/get-training-job-v1-preview-training-jobs--training-job-id-)** - トレーニング ジョブの取得 +- **[GET /v1/preview/training-jobs/{training_job_id}/events](https://docs.wandb.ai/training/api-reference/training-jobs/get-training-job-events-v1-preview-training-jobs--training-job-id--events)** - トレーニング ジョブイベントの取得 + +### 未分類 + +- **[GET /v1/health](https://docs.wandb.ai/training/api-reference/uncategorized/health-check-v1-health)** - ヘルスチェック +- **[GET /v1/system-check](https://docs.wandb.ai/training/api-reference/uncategorized/system-check-v1-system-check)** - システムチェック + +## 関連リソース + +- [W&B Training 概要](/training) +- [前提条件](/training/prerequisites) +- [トレーニング済み モデル の使用](/training/serverless-rl/use-trained-models) +- [利用可能な Models](/training/serverless-rl/available-models) +- [使用制限](/training/serverless-rl/usage-limits) \ No newline at end of file diff --git a/ja/training/prerequisites.mdx b/ja/training/prerequisites.mdx new file mode 100644 index 0000000000..4e346da03a --- /dev/null +++ b/ja/training/prerequisites.mdx @@ -0,0 +1,29 @@ +--- +title: 前提条件 +description: W&B トレーニング を使用するための 環境 を設定する +--- + +import ApiKeyCreate from "/snippets/en/_includes/api-key-create.mdx"; + +OpenPipe ART フレームワークまたは API を通じて W&B Training 機能を使用する前に、以下の手順を完了してください。 + + +開始する前に、[使用方法と制限事項](/training/serverless-rl/usage-limits) を確認し、コストと制限について理解してください。 + + +## サインアップして API キーを作成する + +マシンを W&B で認証するには、まず API キーを生成する必要があります。 + + + +## W&B で Project を作成する + +使用状況の追跡、トレーニング メトリクスの記録、およびトレーニング済み Models の保存を行うために、W&B アカウントで Project を作成します。詳細については [Projects ガイド](https://docs.wandb.ai/models/track/project-page) を参照してください。 + +## 次のステップ + +前提条件を完了した後のステップ: + +* [API リファレンス](/training/api-reference) を確認して、利用可能なエンドポイントについて学ぶ +* [ART クイックスタート](https://art.openpipe.ai/getting-started/quick-start) を試す \ No newline at end of file diff --git a/ja/training/serverless-rl.mdx b/ja/training/serverless-rl.mdx new file mode 100644 index 0000000000..8e65ed94c3 --- /dev/null +++ b/ja/training/serverless-rl.mdx @@ -0,0 +1,35 @@ +--- +title: サーバーレス RL +description: thought 強化学習 を使用して、より効率的に モデル の事後学習(post-train)を行う方法について学びましょう。 +--- + +現在パブリックプレビュー中の Serverless RL は、開発者が LLM をポストトレーニングして新しい振る舞いを学習させ、マルチターンのエージェントタスクを実行する際の信頼性、速度、コストを向上させるのに役立ちます。W&B はトレーニング用の インフラストラクチャー([CoreWeave 上](https://docs.coreweave.com/docs/platform))をプロビジョニングしつつ、環境 のセットアップには完全な柔軟性を提供します。Serverless RL を使用すると、数十台の GPU に弾力的にオートスケールする管理されたトレーニング クラスター に即座に アクセス できます。RL の ワークフロー を推論フェーズとトレーニングフェーズに分割し、ジョブ間でそれらを多重化することで、Serverless RL は GPU の利用率を高め、トレーニング 時間とコストを削減します。 + +Serverless RL は、以下のようなタスクに最適です: +* ボイスエージェント +* 高度なリサーチアシスタント +* オンプレミス モデル +* コンテンツマーケティングの 分析 エージェント + +Serverless RL は Low-Rank Adapters (LoRAs) をトレーニングして、エージェントの特定のタスクに モデル を特化させます。これにより、実務経験を通じて元の モデル の機能を拡張します。トレーニングした LoRA は Artifacts として W&B アカウントに自動的に保存され、ローカルやサードパーティに バックアップ として保存することも可能です。Serverless RL を通じてトレーニングされた Models は、W&B Inference 上でも自動的にホストされます。 + +使い始めるには、ART [クイックスタート](https://art.openpipe.ai/getting-started/quick-start) または [Colabノートブック](https://colab.research.google.com/github/openpipe/art-notebooks/blob/main/examples/2048/2048.ipynb) をご覧ください。 + +## なぜ Serverless RL なのか? + +強化学習 (RL) は、自身で所有または直接レンタルしている GPU を含む、多くの種類のトレーニング設定で使用できる強力なトレーニング手法のセットです。Serverless RL は、RL ポストトレーニングにおいて以下の利点を提供します: + +* **トレーニングコストの削減**: 共有 インフラストラクチャー を多くの ユーザー 間で多重化し、各ジョブのセットアップ プロセス をスキップし、アクティブにトレーニングしていないときは GPU コストを 0 までスケールダウンすることで、Serverless RL はトレーニングコストを大幅に削減します。 +* **トレーニング時間の短縮**: 推論リクエストを多くの GPU に分散させ、必要なときに即座にトレーニング インフラストラクチャー をプロビジョニングすることで、Serverless RL はトレーニングジョブをスピードアップし、より迅速な反復を可能にします。 +* **自動デプロイメント**: Serverless RL はトレーニングするすべての チェックポイント を自動的に デプロイ するため、ホスティング インフラストラクチャー を手動でセットアップする必要がありません。トレーニングされた モデル は、ローカル、ステージング、または プロダクション 環境 ですぐに アクセス してテストできます。 + +## Serverless RL が W&B サービスをどのように使用するか + +Serverless RL は、以下の W&B コンポーネントを組み合わせて動作します: + +* [Inference](/inference): モデル の実行 +* [Models](/models): LoRA アダプターのトレーニング中のパフォーマンス メトリクス の追跡 +* [Artifacts](/models/artifacts): LoRA アダプターの保存と バージョン 管理 +* [Weave (任意)](/weave): トレーニングループの各ステップで モデル がどのように応答するかを可視化(オブザーバビリティ) + +Serverless RL はパブリックプレビュー中です。プレビュー期間中、課金対象となるのは推論の使用と Artifacts のストレージのみです。W&B はプレビュー期間中のアダプターのトレーニングに対しては課金しません。 \ No newline at end of file diff --git a/ja/training/serverless-rl/available-models.mdx b/ja/training/serverless-rl/available-models.mdx new file mode 100644 index 0000000000..0be1f7d3ce --- /dev/null +++ b/ja/training/serverless-rl/available-models.mdx @@ -0,0 +1,14 @@ +--- +title: 利用可能な モデル +description: Serverless RL でトレーニング可能な Models を確認する +--- + +Serverless RL は現在、トレーニング用に単一のオープンソース・ファウンデーション・モデルのみをサポートしています。 + +特定のモデルへの対応をご希望の場合は、[support](mailto:support@wandb.ai) までお問い合わせください。 + +## モデルカタログ + +| モデル | モデル ID (API 使用時) | タイプ | コンテキストウィンドウ | パラメータ | 説明 | +|-------|--------------------------|------|----------------|------------|-------------| +| OpenPipe Qwen3 14B Instruct | `OpenPipe/Qwen3-14B-Instruct` | Text | 32.8K | 14.8B (Active-Total) | ファインチューニングによる エージェント 構築向けに OpenPipe によって最適化された、効率的な多言語対応の dense 型インストラクション・チューニング済みモデルです。 | \ No newline at end of file diff --git a/ja/training/serverless-rl/serverless-rl.mdx b/ja/training/serverless-rl/serverless-rl.mdx new file mode 100644 index 0000000000..8783dba594 --- /dev/null +++ b/ja/training/serverless-rl/serverless-rl.mdx @@ -0,0 +1,10 @@ +--- +title: Serverless RL の使用方法 +--- + +Serverless RL は、 [OpenPipe の ART フレームワーク](https://art.openpipe.ai/getting-started/about) および [W&B Training API](/training/api-reference) を通じてサポートされています。 + +Serverless RL の使用を開始するには、 W&B ツールを使用するための [前提条件](/training/prerequisites) を満たしてから、 ART の [クイックスタート](https://art.openpipe.ai/getting-started/quick-start) を進めてください。 + +- コード 例や ワークフロー については、 [Google Colabノートブック](https://colab.research.google.com/github/openpipe/art-notebooks/blob/main/examples/2048/2048.ipynb) を参照してください。 +- Serverless RL の API エンドポイントについては、 [W&B Training API リファレンス](/training/api-reference) を参照してください。 \ No newline at end of file diff --git a/ja/training/serverless-rl/usage-limits.mdx b/ja/training/serverless-rl/usage-limits.mdx new file mode 100644 index 0000000000..cddfa50388 --- /dev/null +++ b/ja/training/serverless-rl/usage-limits.mdx @@ -0,0 +1,28 @@ +--- +title: 使用情報と制限事項 +description: W&B Serverless の料金体系、使用制限、およびアカウントの制限事項について理解する +--- + +## 料金 + +料金体系は、推論 (inference)、トレーニング (training)、ストレージ (storage) の 3 つの要素で構成されています。具体的な請求単価については、[料金ページ](https://wandb.ai/site/pricing/reinforcement-learning) をご確認ください。 + +### 推論 (Inference) + +Serverless RL の推論リクエストの料金は、W&B Inference の料金に準じます。詳細は [モデルごとのコスト](https://site.wandb.ai/pricing/reinforcement-learning) を参照してください。クレジットの購入、アカウントティア、および使用制限の詳細については、[W&B Inference ドキュメント](/inference/usage-limits#purchase-more-credits) をご覧ください。 + +### トレーニング (Training) + +各トレーニングステップにおいて、Serverless RL は agent の出力と(報酬関数によって計算された)関連する報酬を含む軌跡 (trajectories) のバッチを収集します。収集されたバッチは、タスクに合わせてベースモデルを特化させる LoRA アダプターの重みを更新するために使用されます。これらの LoRA を更新するためのトレーニングジョブは、Serverless RL が管理する専用の GPU クラスター上で実行されます。 + +パブリックプレビュー期間中、トレーニングは無料です。 + +### モデルストレージ + +Serverless RL は、トレーニングされた LoRA の チェックポイント を保存するため、いつでも評価、サービング、またはトレーニングの続行が可能です。ストレージ料金は、チェックポイント の合計サイズと、お客様の [料金プラン](https://wandb.ai/site/pricing) に基づいて月単位で請求されます。すべてのプランには少なくとも 5GB の無料ストレージが含まれており、これは約 30 個の LoRA を保存するのに十分な容量です。スペースを節約するために、パフォーマンスの低い LoRA は削除することをお勧めします。削除方法については、[ART SDK](https://art.openpipe.ai/features/checkpoint-deletion) の手順を参照してください。 + +## 制限事項 + +* **推論の同時実行制限**: デフォルトでは、Serverless RL は現在、1 Users あたり最大 2000、1 Projects あたり最大 6000 の同時リクエストをサポートしています。レート制限を超えると、Inference API は `429 Concurrency limit reached for requests` レスポンスを返します。このエラーを回避するには、トレーニングジョブまたは production ワークロードが一度に行う同時リクエストの数を減らしてください。より高いレート制限が必要な場合は、support@wandb.com までリクエストしてください。 + +* **地理的制限**: Serverless RL は、サポートされている地理的な場所でのみ利用可能です。詳細については、[サービス利用規約](https://site.wandb.ai/terms/) を参照してください。 \ No newline at end of file diff --git a/ja/training/serverless-rl/use-trained-models.mdx b/ja/training/serverless-rl/use-trained-models.mdx new file mode 100644 index 0000000000..7a7de47910 --- /dev/null +++ b/ja/training/serverless-rl/use-trained-models.mdx @@ -0,0 +1,77 @@ +--- +title: 学習済み Models を使用する +description: トレーニングした Models に対して推論リクエストを作成する +--- + +Serverless RL を使用してモデルをトレーニングすると、そのモデルは自動的に推論に利用可能になります。 + +トレーニング済みモデルにリクエストを送信するには、以下が必要です。 +* [W&B APIキー](https://wandb.ai/settings) +* [Training API](/training/api-reference) のベース URL:`https://api.training.wandb.ai/v1/` +* モデルのエンドポイント + +モデルのエンドポイントは以下のスキーマを使用します。 + +``` +wandb-artifact://///: +``` + +このスキーマは以下の要素で構成されています。 + +* W&B の Entity (チーム) 名 +* モデルに関連付けられた Project の名前 +* トレーニング済みモデルの名前 +* デプロイしたいモデルのトレーニングステップ (通常、Evaluations で最もパフォーマンスが高かったステップ) + +例えば、W&B のチーム名が `email-specialists`、プロジェクト名が `mail-search`、トレーニング済みモデルの名前が `agent-001` で、ステップ 25 のモデルをデプロイしたい場合、エンドポイントは以下のようになります。 + +``` +wandb-artifact:///email-specialists/mail-search/agent-001:step25 +``` + +エンドポイントを取得したら、通常の推論ワークフローに統合できます。以下の例では、cURL リクエストまたは [Python OpenAI SDK](https://github.com/openai/openai-python) を使用して、トレーニング済みモデルに推論リクエストを送信する方法を示します。 + +### cURL + +```shell +curl https://api.training.wandb.ai/v1/chat/completions \ + -H "Authorization: Bearer $WANDB_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "wandb-artifact:////:", + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Summarize our training run."} + ], + "temperature": 0.7, + "top_p": 0.95 + }' +``` + +### OpenAI SDK + +```python +from openai import OpenAI + +WANDB_API_KEY = "your-wandb-api-key" +ENTITY = "my-entity" +PROJECT = "my-project" + +client = OpenAI( + base_url="https://api.training.wandb.ai/v1", + api_key=WANDB_API_KEY +) + +response = client.chat.completions.create( + model=f"wandb-artifact:///{ENTITY}/{PROJECT}/my-model:step100", + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Summarize our training run."}, + ], + temperature=0.7, + top_p=0.95, +) + +# レスポンスを表示 +print(response.choices[0].message.content) +``` \ No newline at end of file diff --git a/ja/weave.mdx b/ja/weave.mdx new file mode 100644 index 0000000000..29b7d501aa --- /dev/null +++ b/ja/weave.mdx @@ -0,0 +1,59 @@ +--- +title: W&B Weave +description: W&B Weave で言語モデルアプリのトラッキング、テスト、改善を行う +mode: wide +--- + +W&B Weave は、LLM application の追跡、評価、改善を支援するオブザーバビリティ(可観測性)および評価プラットフォームです。Weave を使用すると、以下のことが可能になります。 + +* LLM application の [オブザーブ(観察)とデバッグ](/weave/quickstart) +* LLM 評価モデル(LLM judges)やカスタムスコアラーを使用した、アプリケーションの応答の [評価](/weave/tutorial-eval) + +## はじめに + +以下のドキュメントでは、Weave の一連のツールを使用するための基本的な方法をガイドします。 + + + + LLM への基本的な呼び出しをトレースし、W&B アカウントでデータを確認することから始めましょう。 + + + + Weave のスコアラーを使用して、アプリケーションのパフォーマンスをテストおよび追跡するための評価パイプラインを構築する方法を学びます。 + + + + Weave と LLM judges を使用して RAG アプリケーションを構築・評価し、検索の質を測定します。 + + + +## Weave のインストール + +W&B Weave は Python および TypeScript ライブラリを提供しています。Weave ライブラリをインストールするには、以下のコマンドを実行します。 + + + + ```bash + pip install weave + ``` + + + ```bash + pnpm install weave + ``` + + + +Weave ライブラリの使用を開始するには、[Weights & Biases (W&B) アカウント](https://wandb.ai) を作成し、[ユーザー設定 (User Settings)](https://wandb.ai/settings) で [APIキー] を作成してください。APIキー を使用して W&B アカウントの認証を行い、データの送信を開始できます。 \ No newline at end of file diff --git a/ja/weave/community.mdx b/ja/weave/community.mdx new file mode 100644 index 0000000000..fb9eaf566d --- /dev/null +++ b/ja/weave/community.mdx @@ -0,0 +1,43 @@ +--- +title: コミュニティ +description: Weights & Biases コミュニティと繋がり、エキスパートから学びましょう +mode: wide +--- + +Weights & Biases の活気あるコミュニティに参加して、共に学び、共有し、成長しましょう。ML 実務家と繋がり、サポートを受け、最新の開発情報を常に入手してください。 + + + + LLM、MLOps、および AI アプリケーション 構築の ベストプラクティス に関する専門家主導の コース で学びましょう。 + + + + W&B コミュニティの ML 実務家からヘルプを得たり、知識を共有したり、アイデアを議論したりできます。 + + + + Weights & Biases チームからの最新のアップデート、ヒント、インサイトについては、こちらをフォローしてください。 + + + +## 最新情報を入手する + +ソーシャルメディアをフォローして、アップデート、ヒント、コミュニティのハイライトをチェックしてください: + +- [Twitter/X](https://x.com/weights_biases) +- [LinkedIn](https://www.linkedin.com/company/wandb/) +- [YouTube](https://www.youtube.com/c/WeightsBiases) +- [Discord](https://discord.com/invite/RgB8CPk2ce) +- [ブログ](https://wandb.ai/site/articles) \ No newline at end of file diff --git a/ja/weave/cookbooks.mdx b/ja/weave/cookbooks.mdx new file mode 100644 index 0000000000..97a6ee1a5e --- /dev/null +++ b/ja/weave/cookbooks.mdx @@ -0,0 +1,90 @@ +--- +title: 概要 +description: Weights & Biases Weave を使用して構築するための実践的な ガイド と例 +mode: wide +--- + +Weights & Biases Weave クックブックコレクションへようこそ。これらの実践的なガイドでは、 Weave を使用してアプリケーションを構築するための実用的な例とベストプラクティスを紹介します。 + + + + トレースと評価の基本をカバーする実践的な例を通じて、 Weave のジャーニーを始めましょう。 + + + + 評価の作成方法、 Datasets の活用方法、モデル比較のためのリーダーボードの構築方法を学びます。 + + + + 実世界の例を用いて、モデル管理、プロンプトエンジニアリング、最適化手法を探求します。 + + + + マルチエージェントシステム、コード生成、専門的なパイプラインを含む複雑なユースケースを深く掘り下げます。 + + + + モニタリング、フィードバック収集、セーフティガードレールなど、プロダクション対応のパターンを実装します。 + + + + サービス API を使用して Weave を統合し、外部システムと接続する方法を学びます。 + + + +## 注目のクックブック + +### クイックスタート +- [Hello Trace](/weave/cookbooks/Intro_to_Weave_Hello_Trace) - Weave トレースの第一歩 +- [Hello Eval](/weave/cookbooks/Intro_to_Weave_Hello_Eval) - 評価コンセプトの紹介 + +### 評価 & Datasets +- [Leaderboard Quickstart](/weave/cookbooks/leaderboard_quickstart) - モデル比較リーダーボードの構築 +- [HuggingFace Datasets](/weave/cookbooks/hf_dataset_evals) - HF データセットを使用したモデル評価 +- [Import from CSV](/weave/cookbooks/import_from_csv) - CSV データの読み込みと活用 + +### Models & プロンプト +- [Models and Weave Integration](/weave/cookbooks/Models_and_Weave_Integration_Demo) - 包括的なモデル統合ガイド +- [Chain of Density](/weave/cookbooks/chain_of_density) - 高度なプロンプティング手法 +- [DSPy Prompt Optimization](/weave/cookbooks/dspy_prompt_optimization) - プログラムによるプロンプトの最適化 +- [NotDiamond Custom Routing](/weave/cookbooks/notdiamond_custom_routing) - インテリジェントなモデルルーティングの実装 + +### 高度なトピック +- [Multi-Agent Structured Output](/weave/cookbooks/multi-agent-structured-output) - 複雑なマルチエージェントシステム +- [Code Generation](/weave/cookbooks/codegen) - コード生成パイプラインの構築 +- [OCR Pipeline](/weave/cookbooks/ocr-pipeline) - OCR によるドキュメント処理 +- [Audio Processing](/weave/cookbooks/audio_with_weave) - Weave での音声データの取り扱い + +### プロダクション & モニタリング +- [Online Monitoring](/weave/cookbooks/online_monitoring) - リアルタイムのシステムモニタリング +- [Production Feedback](/weave/cookbooks/feedback_prod) - ユーザーフィードバックの収集と分析 +- [Scorers as Guardrails](/weave/cookbooks/scorers_as_guardrails) - 安全対策の実装 +- [Custom Model Costs](/weave/cookbooks/custom_model_cost) - コストの追跡と最適化 +- [PII Protection](/weave/cookbooks/pii) - 機密データの安全な取り扱い + +### API & インテグレーション +- [Service API Usage](/weave/cookbooks/weave_via_service_api) - 直接的な API 統合パターン \ No newline at end of file diff --git a/ja/weave/cookbooks/Intro_to_Weave_Hello_Eval.mdx b/ja/weave/cookbooks/Intro_to_Weave_Hello_Eval.mdx new file mode 100644 index 0000000000..7d818a8385 --- /dev/null +++ b/ja/weave/cookbooks/Intro_to_Weave_Hello_Eval.mdx @@ -0,0 +1,126 @@ +--- +title: Evaluations へのイントロダクション +description: W&B Weave を使用した 評価 (Evaluations) の イントロダクション (intro) について学習します +--- + + +これは対話型の ノートブック です。ローカルで実行するか、以下のリンクを使用してください。 +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/Intro_to_Weave_Hello_Eval.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/Intro_to_Weave_Hello_Eval.ipynb) + + +## 🔑 事前準備 + +Weave の評価を実行する前に、以下の準備を完了してください。 + +1. W&B Weave SDK をインストールし、 [APIキー](https://wandb.ai/settings#apikeys) でログインします。 +2. OpenAI SDK をインストールし、 [APIキー](https://platform.openai.com/api-keys) でログインします。 +3. W&B の Projects を初期化します。 + +```python lines +# 依存関係のインストールとインポート +!pip install wandb weave openai -q + +import os +from getpass import getpass + +from openai import OpenAI +from pydantic import BaseModel + +import weave + +# 🔑 APIキーの設定 +# このセルを実行すると getpass により APIキー の入力が求められます。入力内容はターミナルには表示されません。 +##### +print("---") +print( + "W&B APIキーの作成はこちら: https://wandb.ai/settings#apikeys" +) +os.environ["WANDB_API_KEY"] = getpass("W&B APIキーを入力してください: ") +print("---") +print("OpenAI APIキーはこちらで生成できます: https://platform.openai.com/api-keys") +os.environ["OPENAI_API_KEY"] = getpass("OpenAI APIキーを入力してください: ") +print("---") +##### + +# 🏠 W&B の プロジェクト 名を入力 +weave_client = weave.init("MY_PROJECT_NAME") # 🐝 あなたの W&B プロジェクト 名 +``` + +## 🐝 初めての評価を実行する + +以下の コード サンプルは、 Weave の `Model` および `Evaluation` API を使用して LLM を評価する方法を示しています。まず、 `weave.Model` を継承して Weave の Models を定義し、 モデル 名とプロンプト形式を指定して、 `@weave.op` で `predict` メソッド をトレースします。 `predict` メソッド は OpenAI にプロンプトを送信し、 Pydantic スキーマ( `FruitExtract` )を使用してレスポンスを構造化された出力にパースします。次に、入力文と期待されるターゲットで構成される小さな評価用 Datasets を作成します。続いて、 モデル の出力とターゲットラベルを比較するカスタムスコアリング関数(これも `@weave.op` でトレース)を定義します。最後に、すべてを `weave.Evaluation` にラップし、 Datasets とスコアラーを指定して、 `evaluate()` を呼び出し、評価 パイプライン を非同期で実行します。 + +```python lines +# 1. Weave モデルを構築 +class FruitExtract(BaseModel): + fruit: str + color: str + flavor: str + +class ExtractFruitsModel(weave.Model): + model_name: str + prompt_template: str + + @weave.op() + def predict(self, sentence: str) -> dict: + client = OpenAI() + + response = client.beta.chat.completions.parse( + model=self.model_name, + messages=[ + { + "role": "user", + "content": self.prompt_template.format(sentence=sentence), + } + ], + response_format=FruitExtract, + ) + result = response.choices[0].message.parsed + return result + +model = ExtractFruitsModel( + name="gpt4o", + model_name="gpt-4o", + prompt_template='Extract fields ("fruit": , "color": , "flavor": ) as json, from the following text : {sentence}', +) + +# 2. サンプルを集める +sentences = [ + "There are many fruits that were found on the recently discovered planet Goocrux. There are neoskizzles that grow there, which are purple and taste like candy.", + "Pounits are a bright green color and are more savory than sweet.", + "Finally, there are fruits called glowls, which have a very sour and bitter taste which is acidic and caustic, and a pale orange tinge to them.", +] +labels = [ + {"fruit": "neoskizzles", "color": "purple", "flavor": "candy"}, + {"fruit": "pounits", "color": "green", "flavor": "savory"}, + {"fruit": "glowls", "color": "orange", "flavor": "sour, bitter"}, +] +examples = [ + {"id": "0", "sentence": sentences[0], "target": labels[0]}, + {"id": "1", "sentence": sentences[1], "target": labels[1]}, + {"id": "2", "sentence": sentences[2], "target": labels[2]}, +] + +# 3. 評価のためのスコアリング関数を定義 +@weave.op() +def fruit_name_score(target: dict, output: FruitExtract) -> dict: + target_flavors = [f.strip().lower() for f in target["flavor"].split(",")] + output_flavors = [f.strip().lower() for f in output.flavor.split(",")] + # ターゲットのフレーバーのいずれかが出力のフレーバーに含まれているかチェック + matches = any(tf in of for tf in target_flavors for of in output_flavors) + return {"correct": matches} + +# 4. 評価を実行 +evaluation = weave.Evaluation( + name="fruit_eval", + dataset=examples, + scorers=[fruit_name_score], +) +await evaluation.evaluate(model) +``` + +## 🚀 他の例をお探しですか? + +- [評価パイプラインをエンドツーエンドで構築する方法](/weave/tutorial-eval) を学ぶ。 +- [RAGアプリケーションを構築して評価する方法](/weave/tutorial-rag) を学ぶ。 \ No newline at end of file diff --git a/ja/weave/cookbooks/Intro_to_Weave_Hello_Trace.mdx b/ja/weave/cookbooks/Intro_to_Weave_Hello_Trace.mdx new file mode 100644 index 0000000000..f3b14f6ebf --- /dev/null +++ b/ja/weave/cookbooks/Intro_to_Weave_Hello_Trace.mdx @@ -0,0 +1,80 @@ +--- +title: トレース へのイントロダクション +description: W&B Weave を使用した トレース のイントロダクションについて学びましょう。 +--- + + +これはインタラクティブな ノートブック です。ローカルで実行するか、以下のリンクを使用できます: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/Intro_to_Weave_Hello_Trace.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/Intro_to_Weave_Hello_Trace.ipynb) + + +## 🔑 事前準備 + +Weave でトレースを開始する前に、以下の準備を完了してください。 + +1. W&B Weave SDK をインストールし、 [APIキー](https://wandb.ai/settings#apikeys) でログインします。 +2. OpenAI SDK をインストールし、 [APIキー](https://platform.openai.com/api-keys) でログインします。 +3. W&B Projects を初期化します。 + +```python lines +# 依存関係のインストールとインポート +!pip install wandb weave openai -q + +import json +import os +from getpass import getpass + +from openai import OpenAI + +import weave + +# 🔑 APIキーの設定 +# このセルを実行すると `getpass` によりAPIキーの入力が求められ、ターミナルには表示されません。 +##### +print("---") +print( + "W&B APIキーをこちらで作成してください: https://wandb.ai/settings#apikeys" +) +os.environ["WANDB_API_KEY"] = getpass("W&B APIキーを入力してください: ") +print("---") +print("OpenAI APIキーはこちらで生成できます: https://platform.openai.com/api-keys") +os.environ["OPENAI_API_KEY"] = getpass("OpenAI APIキーを入力してください: ") +print("---") +##### + +# 🏠 W&B プロジェクト名を入力してください +weave_client = weave.init("MY_PROJECT_NAME") # 🐝 あなたの W&B プロジェクト名 +``` + +## 🐝 最初のトレースを実行する + +以下の コード サンプルは、 `@weave.op` デコレータを使用して Weave でトレースをキャプチャし、可視化する方法を示しています。ここでは、OpenAI の GPT-4o にプロンプトを送信し、文章から構造化 データ (果物、色、味)を抽出する `extract_fruit` という関数を定義しています。関数に `@weave.op` をデコレートすることで、Weave は入力、出力、中間ステップを含む関数の実行を自動的に追跡します。サンプル文章で関数が呼び出されると、完全なトレースが保存され、 Weave UI で確認できるようになります。 + +```python lines +@weave.op() # 🐝 リクエストを追跡するためのデコレータ +def extract_fruit(sentence: str) -> dict: + client = OpenAI() + system_prompt = ( + "Parse sentences into a JSON dict with keys: fruit, color and flavor." + ) + response = client.chat.completions.create( + model="gpt-4o", + messages=[ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": sentence}, + ], + temperature=0.7, + response_format={"type": "json_object"}, + ) + extracted = response.choices[0].message.content + return json.loads(extracted) + +sentence = "There are many fruits that were found on the recently discovered planet Goocrux. There are neoskizzles that grow there, which are purple and taste like candy." +extract_fruit(sentence) +``` + +## 🚀 他の例をお探しですか? +- [クイックスタート ガイド](/weave/quickstart) を確認してください。 +- [高度なトレースのトピック](/weave/tutorial-tracing_2) について詳しく学ぶ。 +- [Weave でのトレース](/weave/guides/tracking/tracing) について詳しく学ぶ。 \ No newline at end of file diff --git a/ja/weave/cookbooks/Models_and_Weave_Integration_Demo.mdx b/ja/weave/cookbooks/Models_and_Weave_Integration_Demo.mdx new file mode 100644 index 0000000000..83908898fb --- /dev/null +++ b/ja/weave/cookbooks/Models_and_Weave_Integration_Demo.mdx @@ -0,0 +1,250 @@ +--- +title: W&B Models で Weave を使用する +description: W&B Weave を使用して W&B Models で Weave を活用する方法を学ぶ +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用できます: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/Models_and_Weave_Integration_Demo.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/Models_and_Weave_Integration_Demo.ipynb) + + +## 事前準備 + +まず、必要なライブラリをインストールし、APIキーを設定して、W&B にログインし、新しい W&B プロジェクトを作成します。 + +1. `pip` を使用して `weave`、`pandas`、`unsloth`、`wandb`、`litellm`、`pydantic`、`torch`、および `faiss-gpu` をインストールします。 + +```python lines +%%capture +!pip install weave wandb pandas pydantic litellm faiss-gpu +python +%%capture +!pip install unsloth +# 最新の nightly 版 Unsloth も取得します! +!pip uninstall unsloth -y && pip install --upgrade --no-cache-dir "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git" +``` + +2. 環境から必要な APIキー を追加します。 + +```python lines +import os + +from google.colab import userdata + +os.environ["WANDB_API_KEY"] = userdata.get("WANDB_API_KEY") # W&B Models と Weave 用 +os.environ["OPENAI_API_KEY"] = userdata.get( + "OPENAI_API_KEY" +) # OpenAI - 検索用エンベディング用 +os.environ["GEMINI_API_KEY"] = userdata.get( + "GEMINI_API_KEY" +) # Gemini - ベースのチャットモデル用 +``` + +3. W&B にログインし、新しいプロジェクトを作成します。 + +```python lines +import pandas as pd +import wandb + +import weave + +wandb.login() + +PROJECT = "weave-cookboook-demo" +ENTITY = "wandb-smle" + +weave.init(ENTITY + "/" + PROJECT) +``` + +## Models Registry から `ChatModel` をダウンロードし、`UnslothLoRAChatModel` を実装する + +このシナリオでは、Llama-3.2 モデルがパフォーマンス最適化のために `unsloth` ライブラリを使用してモデルチームによってすでにファインチューニングされており、[W&B Models Registry で利用可能](https://wandb.ai/wandb-smle/weave-cookboook-demo/weave/object-versions?filter=%7B%22objectName%22%3A%22RagModel%22%7D&peekPath=%2Fwandb-smle%2Fweave-rag-experiments%2Fobjects%2FChatModelRag%2Fversions%2F2mhdPb667uoFlXStXtZ0MuYoxPaiAXj3KyLS1kYRi84%3F%26) です。このステップでは、ファインチューニング済みの [`ChatModel`](https://wandb.ai/wandb-smle/weave-cookboook-demo/weave/object-versions?filter=%7B%22objectName%22%3A%22RagModel%22%7D&peekPath=%2Fwandb-smle%2Fweave-rag-experiments%2Fobjects%2FChatModelRag%2Fversions%2F2mhdPb667uoFlXStXtZ0MuYoxPaiAXj3KyLS1kYRi84%3F%26) を Registry から取得し、それを `weave.Model` に変換して [`RagModel`](https://wandb.ai/wandb-smle/weave-cookboook-demo/weave/object-versions?filter=%7B%22objectName%22%3A%22RagModel%22%7D&peekPath=%2Fwandb-smle%2Fweave-cookboook-demo%2Fobjects%2FRagModel%2Fversions%2FcqRaGKcxutBWXyM0fCGTR1Yk2mISLsNari4wlGTwERo%3F%26) と互換性を持たせます。 + + +以下で参照される `RagModel` は、完全な RAG アプリケーションと見なすことができるトップレベルの `weave.Model` です。これには、`ChatModel`、ベクトルデータベース、およびプロンプトが含まれています。`ChatModel` も `weave.Model` であり、W&B Registry から アーティファクト をダウンロードするコードが含まれています。`ChatModel` は、`RagModel` の一部として他のあらゆる種類の LLM チャットモデルをサポートするようにモジュール式に変更できます。詳細については、[Weave でモデルを表示](https://wandb.ai/wandb-smle/weave-cookboook-demo/weave/evaluations?peekPath=%2Fwandb-smle%2Fweave-cookboook-demo%2Fobjects%2FRagModel%2Fversions%2Fx7MzcgHDrGXYHHDQ9BA8N89qDwcGkdSdpxH30ubm8ZM%3F%26) してください。 + + +`ChatModel` をロードするには、アダプターを備えた `unsloth.FastLanguageModel` または `peft.AutoPeftModelForCausalLM` が使用され、アプリへの効率的な統合が可能になります。Registry からモデルをダウンロードした後、`model_post_init` メソッドを使用して初期化と予測ロジックを設定できます。このステップに必要なコードは Registry の **Use** タブにあり、実装に直接コピーできます。 + +以下のコードは、W&B Models Registry から取得したファインチューニング済み Llama-3.2 モデルを管理、初期化、および使用するための `UnslothLoRAChatModel` クラスを定義しています。`UnslothLoRAChatModel` は、最適化された推論のために `unsloth.FastLanguageModel` を使用します。`model_post_init` メソッドはモデルのダウンロードとセットアップを処理し、`predict` メソッドはユーザーのクエリを処理して応答を生成します。コードをユースケースに合わせるには、`MODEL_REG_URL` をファインチューニング済みモデルの正しい Registry パスに更新し、ハードウェアや要件に基づいて `max_seq_length` や `dtype` などのパラメータを調整してください。 + +```python lines +from typing import Any + +from pydantic import PrivateAttr +from unsloth import FastLanguageModel + +import weave + +class UnslothLoRAChatModel(weave.Model): + """ + モデル名だけでなく、より多くのパラメータを保存およびバージョン管理できるように、追加の ChatModel クラスを定義します。 + 特に、特定のパラメータが必要なファインチューニング(ローカルまたは aaS)を考慮する場合に関連します。 + """ + + chat_model: str + cm_temperature: float + cm_max_new_tokens: int + cm_quantize: bool + inference_batch_size: int + dtype: Any + device: str + _model: Any = PrivateAttr() + _tokenizer: Any = PrivateAttr() + + def model_post_init(self, __context): + # これは単に registry の "Use" タブから貼り付けることができます + run = wandb.init(project=PROJECT, job_type="model_download") + artifact = run.use_artifact(f"{self.chat_model}") + model_path = artifact.download() + + # unsloth 版(ネイティブな 2 倍高速な推論を有効にします) + self._model, self._tokenizer = FastLanguageModel.from_pretrained( + model_name=model_path, + max_seq_length=self.cm_max_new_tokens, + dtype=self.dtype, + load_in_4bit=self.cm_quantize, + ) + FastLanguageModel.for_inference(self._model) + + @weave.op() + async def predict(self, query: list[str]) -> dict: + # add_generation_prompt = true - 生成には必須です + input_ids = self._tokenizer.apply_chat_template( + query, + tokenize=True, + add_generation_prompt=True, + return_tensors="pt", + ).to("cuda") + + output_ids = self._model.generate( + input_ids=input_ids, + max_new_tokens=64, + use_cache=True, + temperature=1.5, + min_p=0.1, + ) + + decoded_outputs = self._tokenizer.batch_decode( + output_ids[0][input_ids.shape[1] :], skip_special_tokens=True + ) + + return "".join(decoded_outputs).strip() +python +MODEL_REG_URL = "wandb32/wandb-registry-RAG Chat Models/Finetuned Llama-3.2:v3" + +max_seq_length = 2048 # 任意の値を選択してください!内部で RoPE スケーリングを自動サポートしています! +dtype = ( + None # 自動検出の場合は None。Tesla T4, V100 の場合は Float16、Ampere+ の場合は Bfloat16 +) +load_in_4bit = True # メモリ使用量を削減するために 4bit 量子化を使用します。False も可能です。 + +new_chat_model = UnslothLoRAChatModel( + name="UnslothLoRAChatModelRag", + chat_model=MODEL_REG_URL, + cm_temperature=1.0, + cm_max_new_tokens=max_seq_length, + cm_quantize=load_in_4bit, + inference_batch_size=max_seq_length, + dtype=dtype, + device="auto", +) +python +await new_chat_model.predict( + [{"role": "user", "content": "What is the capital of Germany?"}] +) +``` + +## 新しい `ChatModel` バージョンを `RagModel` に統合する + +ファインチューニングされたチャットモデルから RAG アプリケーションを構築すると、パイプライン全体を再構築することなく、カスタマイズされたコンポーネントを使用して会話型 AI を向上させることができます。このステップでは、既存の `RagModel` を Weave プロジェクトから取得し、その `chat_model` を新しくファインチューニングされたモデルを使用するように更新します。このシームレスな入れ替えにより、ベクトルデータベース(VDB)やプロンプトなどの他のコンポーネントは変更されず、アプリケーション全体の構造を維持しながらパフォーマンスを向上させることができます。 + +以下のコードは、Weave プロジェクトからの参照を使用して `RagModel` オブジェクトを取得します。次に、`RagModel` の `chat_model` 属性を、前のステップで作成した新しい `UnslothLoRAChatModel` インスタンスを使用するように更新します。この後、更新された `RagModel` がパブリッシュされ、新しいバージョンが作成されます。最後に、更新された `RagModel` を使用してサンプルの予測クエリを実行し、新しいチャットモデルが使用されていることを確認します。 + +```python lines +RagModel = weave.ref( + "weave://wandb-smle/weave-cookboook-demo/object/RagModel:cqRaGKcxutBWXyM0fCGTR1Yk2mISLsNari4wlGTwERo" +).get() +python +RagModel.chat_model.chat_model +python +await RagModel.predict("When was the first conference on climate change?") +python +# MAGIC: chat_model を入れ替えて新しいバージョンをパブリッシュします(他の RAG コンポーネントを心配する必要はありません) +RagModel.chat_model = new_chat_model +python +RagModel.chat_model.chat_model +python +# 予測で新しいバージョンを参照するように、まず新しいバージョンをパブリッシュします +PUB_REFERENCE = weave.publish(RagModel, "RagModel") +python +await RagModel.predict("When was the first conference on climate change?") +``` + +## `weave.Evaluation` を実行する + +次のステップでは、既存の `weave.Evaluation` を使用して、更新された `RagModel` のパフォーマンスを評価します。このプロセスにより、新しいファインチューニング済みチャットモデルが RAG アプリケーション内で期待どおりに機能していることが保証されます。統合を合理化し、モデルチームとアプリチーム間のコラボレーションを可能にするために、モデルの W&B run と Weave ワークスペースの両方に評価結果をログに記録します。 + +Models において: +- 評価の概要は、ファインチューニングされたチャットモデルのダウンロードに使用された W&B run に記録されます。これには、分析のために [ワークスペース ビュー](https://wandb.ai/wandb-smle/weave-cookboook-demo/workspace?nw=eglm8z7o9) に表示されるサマリーメトリクスとグラフが含まれます。 +- 評価のトレース ID が run の設定に追加され、モデルチームによる追跡を容易にするために Weave ページに直接リンクされます。 + +Weave において: +- `ChatModel` の アーティファクト または registry リンクが `RagModel` への入力として保存されます。 +- W&B の run ID が、コンテキストをより良く把握するために評価トレースの追加カラムとして保存されます。 + +以下のコードは、評価オブジェクトを取得し、更新された `RagModel` を使用して評価を実行し、結果を W&B と Weave の両方に記録する方法を示しています。評価のリファレンス(`WEAVE_EVAL`)がプロジェクトのセットアップと一致していることを確認してください。 + +```python lines +# MAGIC: 評価データセットとスコアラーを含む評価を簡単に取得して使用できます +WEAVE_EVAL = "weave://wandb-smle/weave-cookboook-demo/object/climate_rag_eval:ntRX6qn3Tx6w3UEVZXdhIh1BWGh7uXcQpOQnIuvnSgo" +climate_rag_eval = weave.ref(WEAVE_EVAL).get() +python +with weave.attributes({"wandb-run-id": wandb.run.id}): + # 評価トレースを Models に保存するために、result と call の両方を取得できる .call 属性を使用します + summary, call = await climate_rag_eval.evaluate.call(climate_rag_eval, RagModel) +python +# models にログを記録 +wandb.run.log(pd.json_normalize(summary, sep="/").to_dict(orient="records")[0]) +wandb.run.config.update( + {"weave_url": f"https://wandb.ai/wandb-smle/weave-cookboook-demo/r/call/{call.id}"} +) +wandb.run.finish() +``` + +## 新しい RAG モデルを Registry に保存する + +更新された `RagModel` をモデルチームとアプリチームの両方が将来利用できるように、参照 アーティファクト として W&B Models Registry にプッシュします。 + +以下のコードは、更新された `RagModel` の `weave` オブジェクトバージョンと名前を取得し、それらを使用してリファレンスリンクを作成します。次に、モデルの Weave URL を含むメタデータを持つ新しい アーティファクト が W&B に作成されます。この アーティファクト は W&B Registry に記録され、指定された registry パスにリンクされます。 + +コードを実行する前に、`ENTITY` と `PROJECT` 変数が W&B の設定と一致していること、およびターゲットの registry パスが正しく指定されていることを確認してください。このプロセスにより、新しい `RagModel` を W&B エコシステムにパブリッシュし、容易なコラボレーションと再利用を可能にすることで、ワークフローが完了します。 + +```python lines +MODELS_OBJECT_VERSION = PUB_REFERENCE.digest # weave オブジェクトバージョン +MODELS_OBJECT_NAME = PUB_REFERENCE.name # weave オブジェクト名 +python +models_url = f"https://wandb.ai/{ENTITY}/{PROJECT}/weave/objects/{MODELS_OBJECT_NAME}/versions/{MODELS_OBJECT_VERSION}" +models_link = ( + f"weave://{ENTITY}/{PROJECT}/object/{MODELS_OBJECT_NAME}:{MODELS_OBJECT_VERSION}" +) + +with wandb.init(project=PROJECT, entity=ENTITY) as run: + # 新しい Artifact を作成 + artifact_model = wandb.Artifact( + name="RagModel", + type="model", + description="Models Link from RagModel in Weave", + metadata={"url": models_url}, + ) + artifact_model.add_reference(models_link, name="model", checksum=False) + + # 新しいアーティファクトをログに記録 + run.log_artifact(artifact_model, aliases=[MODELS_OBJECT_VERSION]) + + # registry にリンク + run.link_artifact( + artifact_model, target_path="wandb32/wandb-registry-RAG Models/RAG Model" + ) +``` \ No newline at end of file diff --git a/ja/weave/cookbooks/audio_with_weave.mdx b/ja/weave/cookbooks/audio_with_weave.mdx new file mode 100644 index 0000000000..c7809bf386 --- /dev/null +++ b/ja/weave/cookbooks/audio_with_weave.mdx @@ -0,0 +1,1102 @@ +--- +title: Weave を使った Audio +description: W&B Weave を使用して Weave でオーディオを扱う方法を学ぶ +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/audio_with_weave.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/audio_with_weave.ipynb) + + +## + +# Audio データで Weave を使用する方法:OpenAI の例 + +このデモでは、OpenAI の chat completions API と GPT 4o Audio Preview を使用して、テキストプロンプトに対する音声レスポンスを生成し、それらを Weave で追跡します。 + + + +高度なユースケースとして、OpenAI Realtime API を活用してリアルタイムで音声をストリーミングします。動画デモを見るには、次のサムネイルをクリックするか、[こちら](https://www.youtube.com/watch?v=lnnd73xDElw)をクリックしてください。 + +[![Everything Is AWESOME](https://img.youtube.com/vi/lnnd73xDElw/0.jpg)](https://www.youtube.com/watch?v=lnnd73xDElw "Everything Is AWESOME") + +## セットアップ + +まず、OpenAI (`openai`) と Weave (`weave`) の依存関係、および API キー管理用の依存関係 `set-env` をインストールします。 + +```python lines +%%capture +!pip install openai +!pip install weave +!pip install set-env-colab-kaggle-dotenv -q # 環境変数用 +python +%%capture +# openai のバグを修正するための暫定的な回避策: +# TypeError: Client.__init__() got an unexpected keyword argument 'proxies' +# 詳細は https://community.openai.com/t/error-with-openai-1-56-0-client-init-got-an-unexpected-keyword-argument-proxies/1040332/15 を参照 +!pip install "httpx<0.28" +``` + +次に、OpenAI と Weave に必要な API キーを読み込みます。ここでは、Google Colab のシークレットキーマネージャーと互換性があり、Colab 固有の `google.colab.userdata` の代替となる `set_env` を使用します。使用方法については [こちら](https://pypi.org/project/set-env-colab-kaggle-dotenv/) を参照してください。 + +```python lines +# 環境変数を設定します。 +from set_env import set_env + +_ = set_env("OPENAI_API_KEY") +_ = set_env("WANDB_API_KEY") +``` + +最後に、必要なライブラリをインポートします。 + +```python lines +import base64 +import os +import time +import wave + +import numpy as np +from IPython.display import display +from openai import OpenAI + +import weave +``` + +## 音声ストリーミングと保存の例 + +次に、音声モダリティを有効にした OpenAI の completions エンドポイントへのコールを設定します。まず、OpenAI クライアントを作成し、Weave の Projects を開始します。 + +```python lines +client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY")) +weave.init("openai-audio-chat") +``` + +ここで、OpenAI の completions リクエストを定義し、Weave のデコレータ (op) を追加します。 + +関数 `prompt_endpont_and_log_trace` を定義します。この関数には主に 3 つのステップがあります: + +1. テキストと音声の入出力に対応した `GPT 4o Audio Preview` モデルを使用して、completion オブジェクトを作成します。 + + - モデルに対し、アクセントを変えながらゆっくりと 13 まで数えるようにプロンプトを出します。 + - completion を "stream" に設定します。 + +2. ストリームされたデータがチャンクごとに書き込まれる新しい出力ファイルを開きます。 + +3. 音声ファイルへのオープンファイルハンドラーを返し、Weave がトレース内に音声データをログに記録するようにします。 + +```python lines +SAMPLE_RATE = 22050 + +@weave.op() +def prompt_endpoint_and_log_trace(system_prompt=None, user_prompt=None): + if not system_prompt: + system_prompt = "You're the fastest counter in the world" + if not user_prompt: + user_prompt = "Count to 13 super super slow, enunciate each number with a dramatic flair, changing up accents as you go along. British, French, German, Spanish, etc." + # 音声モダリティを指定して OpenAI API にリクエスト + completion = client.chat.completions.create( + model="gpt-4o-audio-preview", + modalities=["text", "audio"], + audio={"voice": "fable", "format": "pcm16"}, + stream=True, + messages=[ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": user_prompt}, + ], + ) + + # 書き込み用に wave ファイルを開く + with wave.open("./output.wav", "wb") as wav_file: + wav_file.setnchannels(1) # モノラル + wav_file.setsampwidth(2) # 16-bit + wav_file.setframerate(SAMPLE_RATE) # サンプリングレート (必要に応じて調整) + + # API からストリームされるチャンクを書き込む + for chunk in completion: + if ( + hasattr(chunk, "choices") + and chunk.choices is not None + and len(chunk.choices) > 0 + and hasattr(chunk.choices[0].delta, "audio") + and chunk.choices[0].delta.audio.get("data") is not None + ): + # base64 音声データをデコード + audio_data = base64.b64decode(chunk.choices[0].delta.audio.get("data")) + + # 現在のチャンクを wave ファイルに書き込む + wav_file.writeframes(audio_data) + + # ファイルを Weave op に返す + return wave.open("output.wav", "rb") +``` + +## テスト + +以下のセルを実行します。システムプロンプトとユーザープロンプト、および出力音声が Weave のトレースに保存されます。 +セルを実行した後、"🍩" 絵文字の隣にあるリンクをクリックしてトレースを確認してください。 + +```python lines +from IPython.display import Audio + +# 音声ストリームを書き込む関数を呼び出す +prompt_endpoint_and_log_trace( + system_prompt="You're the fastest counter in the world", + user_prompt="Count to 13 super super slow, enunciate each number with a dramatic flair, changing up accents as you go along. British, French, German, Spanish, etc.", +) + +# 更新された音声ストリームを表示 +display(Audio("output.wav", rate=SAMPLE_RATE, autoplay=True)) +``` + +# 高度な使い方:Weave を使った Realtime Audio API + + +
+ (高度な設定) Weave を使った Realtime Audio API +OpenAI の realtime API は、リアルタイムの音声およびテキストアシスタントを構築するための、非常に機能的で信頼性の高い会話型 API です。 + +注意点: + +- [マイクの設定](#microphone-configuration) のセルを確認してください。 +- Google Colab の実行環境の制限により、**これはホストマシン上で Jupyter Notebook として実行する必要があります**。ブラウザ内では実行できません。 + - MacOS の場合、Pyaudio を動作させるために Brew 経由で `portaudio` をインストールする必要があります([こちら](https://formulae.brew.sh/formula/portaudio)を参照)。 +- OpenAI の Python SDK は、まだ Realtime API をサポートしていません。可読性を高めるために、Pydantic で完全な OAI Realtime API スキーマを実装しています。公式サポートがリリースされた後は非推奨になる可能性があります。 +- `enable_audio_playback` を切り替えると、アシスタントが出力した音声が再生されます。エコー検出には非常に複雑な実装が必要なため、**これを有効にする場合はヘッドフォンが必須です**。 + +## 構成要件のセットアップ + +```python lines +%%capture +!pip install numpy==2.0 +!pip install weave +!pip install pyaudio # mac では、先に `brew install portaudio` で portaudio をインストールする必要がある場合があります +!pip install websocket-client +!pip install set-env-colab-kaggle-dotenv -q # 環境変数用 +!pip install resampy +python +import io +import json +import os +import threading +from typing import Optional + +import pyaudio +import resampy +import websocket +from set_env import set_env + +import weave +python +# 環境変数を設定します。 +# 使用方法については https://pypi.org/project/set-env-colab-kaggle-dotenv/ を参照してください。 +_ = set_env("OPENAI_API_KEY") +_ = set_env("WANDB_API_KEY") +``` + +## マイクの設定 + +以下のセルを実行して、利用可能なすべてのオーディオデバイスを見つけます。次に、リストされたデバイスに基づいて `INPUT_DEVICE_INDEX` と `OUTPUT_DEVICE_INDEX` を入力します。入力デバイスは少なくとも 1 つの入力チャンネルを持ち、出力デバイスは少なくとも 1 つの出力チャンネルを持ちます。 + +```python lines +# 次のセルを設定できるように、pyaudio からデバイスリストを取得します +p = pyaudio.PyAudio() +devices_data = {i: p.get_device_info_by_index(i) for i in range(p.get_device_count())} +for i, device in devices_data.items(): + print( + f"Found device @{i}: {device['name']} with sample rate: {device['defaultSampleRate']} and input channels: {device['maxInputChannels']} and output channels: {device['maxOutputChannels']}" + ) +python +INPUT_DEVICE_INDEX = 3 # @param # 上記のデバイスリストに基づいて選択してください。入力チャンネルが 0 より大きいデバイスを選択してください。 +OUTPUT_DEVICE_INDEX = 12 # @param # 上記のデバイスリストに基づいて選択してください。出力チャンネルが 0 より大きいデバイスを選択してください。 +enable_audio_playback = True # @param {type:"boolean"} # アシスタントの音声再生をオンにします。ヘッドフォンが必要です。 + +# 音声録音とストリーミングのパラメータ +INPUT_DEVICE_CHANNELS = devices_data[INPUT_DEVICE_INDEX][ + "maxInputChannels" +] # 上記のデバイスリストより +SAMPLE_RATE = int( + devices_data[INPUT_DEVICE_INDEX]["defaultSampleRate"] +) # 上記のデバイスリストより +CHUNK = int(SAMPLE_RATE / 10) # フレームあたりのサンプル数 +SAMPLE_WIDTH = p.get_sample_size(pyaudio.paInt16) # フォーマットのフレームあたりのサンプル幅 +CHUNK_DURATION = 0.3 # OAI API に送信されるチャンクあたりの音声秒数 +OAI_SAMPLE_RATE = ( + 24000 # OAI のサンプリングレートは 24kHz です。アシスタントの音声を再生または保存するためにこれが必要です。 +) +OUTPUT_DEVICE_CHANNELS = 1 # モノラル出力の場合は 1 に設定 +``` + +## OpenAI Realtime API スキーマの実装 + +OpenAI Python SDK はまだ Realtime API をサポートしていません。可読性を高めるために、Pydantic で完全な OAI Realtime API スキーマを実装しています。公式サポートがリリースされた後は非推奨になる可能性があります。 + +
+ OpenAI Realtime API 用の Pydantic スキーマ (OpenAI の SDK には Realtime API サポートが欠けています) + +```python lines +from enum import Enum +from typing import Any, Literal, Union + +from pydantic import BaseModel, Field, ValidationError + +class BaseEvent(BaseModel): + type: Union["ClientEventTypes", "ServerEventTypes"] + event_id: Optional[str] = None # すべてのイベントに対してオプションのフィールドとして event_id を追加 + + # def model_dump_json(self, *args, **kwargs): + # # None 以外のフィールドのみを含める + # return super().model_dump_json(*args, exclude_none=True, **kwargs) + +class ChatMessage(BaseModel): + role: Literal["user", "assistant"] + content: str + timestamp: float + +""" CLIENT EVENTS """ + +class ClientEventTypes(str, Enum): + SESSION_UPDATE = "session.update" + CONVERSATION_ITEM_CREATE = "conversation.item.create" + CONVERSATION_ITEM_TRUNCATE = "conversation.item.truncate" + CONVERSATION_ITEM_DELETE = "conversation.item.delete" + RESPONSE_CREATE = "response.create" + RESPONSE_CANCEL = "response.cancel" + INPUT_AUDIO_BUFFER_APPEND = "input_audio_buffer.append" + INPUT_AUDIO_BUFFER_COMMIT = "input_audio_buffer.commit" + INPUT_AUDIO_BUFFER_CLEAR = "input_audio_buffer.clear" + ERROR = "error" + +#### Session Update +class TurnDetection(BaseModel): + type: Literal["server_vad"] + threshold: float = Field(..., ge=0.0, le=1.0) + prefix_padding_ms: int + silence_duration_ms: int + +class InputAudioTranscription(BaseModel): + model: Optional[str] = None + +class ToolParameterProperty(BaseModel): + type: str + +class ToolParameter(BaseModel): + type: str + properties: dict[str, ToolParameterProperty] + required: list[str] + +class Tool(BaseModel): + type: Literal["function", "code_interpreter", "file_search"] + name: Optional[str] = None + description: Optional[str] = None + parameters: Optional[ToolParameter] = None + +class Session(BaseModel): + modalities: Optional[list[str]] = None + instructions: Optional[str] = None + voice: Optional[str] = None + input_audio_format: Optional[str] = None + output_audio_format: Optional[str] = None + input_audio_transcription: Optional[InputAudioTranscription] = None + turn_detection: Optional[TurnDetection] = None + tools: Optional[list[Tool]] = None + tool_choice: Optional[str] = None + temperature: Optional[float] = None + max_output_tokens: Optional[int] = None + +class SessionUpdate(BaseEvent): + type: Literal[ClientEventTypes.SESSION_UPDATE] = ClientEventTypes.SESSION_UPDATE + session: Session + +#### Audio Buffers +class InputAudioBufferAppend(BaseEvent): + type: Literal[ClientEventTypes.INPUT_AUDIO_BUFFER_APPEND] = ( + ClientEventTypes.INPUT_AUDIO_BUFFER_APPEND + ) + audio: str + +class InputAudioBufferCommit(BaseEvent): + type: Literal[ClientEventTypes.INPUT_AUDIO_BUFFER_COMMIT] = ( + ClientEventTypes.INPUT_AUDIO_BUFFER_COMMIT + ) + +class InputAudioBufferClear(BaseEvent): + type: Literal[ClientEventTypes.INPUT_AUDIO_BUFFER_CLEAR] = ( + ClientEventTypes.INPUT_AUDIO_BUFFER_CLEAR + ) + +#### Messages +class MessageContent(BaseModel): + type: Literal["input_audio"] + audio: str + +class ConversationItemContent(BaseModel): + type: Literal["input_text", "input_audio", "text", "audio"] + text: Optional[str] = None + audio: Optional[str] = None + transcript: Optional[str] = None + +class FunctionCallContent(BaseModel): + call_id: str + name: str + arguments: str + +class FunctionCallOutputContent(BaseModel): + output: str + +class ConversationItem(BaseModel): + id: Optional[str] = None + type: Literal["message", "function_call", "function_call_output"] + status: Optional[Literal["completed", "in_progress", "incomplete"]] = None + role: Literal["user", "assistant", "system"] + content: list[ + Union[ConversationItemContent, FunctionCallContent, FunctionCallOutputContent] + ] + call_id: Optional[str] = None + name: Optional[str] = None + arguments: Optional[str] = None + output: Optional[str] = None + +class ConversationItemCreate(BaseEvent): + type: Literal[ClientEventTypes.CONVERSATION_ITEM_CREATE] = ( + ClientEventTypes.CONVERSATION_ITEM_CREATE + ) + item: ConversationItem + +class ConversationItemTruncate(BaseEvent): + type: Literal[ClientEventTypes.CONVERSATION_ITEM_TRUNCATE] = ( + ClientEventTypes.CONVERSATION_ITEM_TRUNCATE + ) + item_id: str + content_index: int + audio_end_ms: int + +class ConversationItemDelete(BaseEvent): + type: Literal[ClientEventTypes.CONVERSATION_ITEM_DELETE] = ( + ClientEventTypes.CONVERSATION_ITEM_DELETE + ) + item_id: str + +#### Responses +class ResponseCreate(BaseEvent): + type: Literal[ClientEventTypes.RESPONSE_CREATE] = ClientEventTypes.RESPONSE_CREATE + +class ResponseCancel(BaseEvent): + type: Literal[ClientEventTypes.RESPONSE_CANCEL] = ClientEventTypes.RESPONSE_CANCEL + +# Event union を更新してすべてのイベントタイプを含める +ClientEvent = Union[ + SessionUpdate, + InputAudioBufferAppend, + InputAudioBufferCommit, + InputAudioBufferClear, + ConversationItemCreate, + ConversationItemTruncate, + ConversationItemDelete, + ResponseCreate, + ResponseCancel, +] + +""" SERVER EVENTS """ + +class ServerEventTypes(str, Enum): + ERROR = "error" + RESPONSE_AUDIO_TRANSCRIPT_DONE = "response.audio_transcript.done" + RESPONSE_AUDIO_TRANSCRIPT_DELTA = "response.audio_transcript.delta" + RESPONSE_AUDIO_DELTA = "response.audio.delta" + SESSION_CREATED = "session.created" + SESSION_UPDATED = "session.updated" + CONVERSATION_CREATED = "conversation.created" + INPUT_AUDIO_BUFFER_COMMITTED = "input_audio_buffer.committed" + INPUT_AUDIO_BUFFER_CLEARED = "input_audio_buffer.cleared" + INPUT_AUDIO_BUFFER_SPEECH_STARTED = "input_audio_buffer.speech_started" + INPUT_AUDIO_BUFFER_SPEECH_STOPPED = "input_audio_buffer.speech_stopped" + CONVERSATION_ITEM_CREATED = "conversation.item.created" + CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED = ( + "conversation.item.input_audio_transcription.completed" + ) + CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_FAILED = ( + "conversation.item.input_audio_transcription.failed" + ) + CONVERSATION_ITEM_TRUNCATED = "conversation.item.truncated" + CONVERSATION_ITEM_DELETED = "conversation.item.deleted" + RESPONSE_CREATED = "response.created" + RESPONSE_DONE = "response.done" + RESPONSE_OUTPUT_ITEM_ADDED = "response.output_item.added" + RESPONSE_OUTPUT_ITEM_DONE = "response.output_item.done" + RESPONSE_CONTENT_PART_ADDED = "response.content_part.added" + RESPONSE_CONTENT_PART_DONE = "response.content_part.done" + RESPONSE_TEXT_DELTA = "response.text.delta" + RESPONSE_TEXT_DONE = "response.text.done" + RESPONSE_AUDIO_DONE = "response.audio.done" + RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA = "response.function_call_arguments.delta" + RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE = "response.function_call_arguments.done" + RATE_LIMITS_UPDATED = "rate_limits.updated" + +#### Errors +class ErrorDetails(BaseModel): + type: Optional[str] = None + code: Optional[str] = None + message: Optional[str] = None + param: Optional[str] = None + +class ErrorEvent(BaseEvent): + type: Literal[ServerEventTypes.ERROR] = ServerEventTypes.ERROR + error: ErrorDetails + +#### Session +class SessionCreated(BaseEvent): + type: Literal[ServerEventTypes.SESSION_CREATED] = ServerEventTypes.SESSION_CREATED + session: Session + +class SessionUpdated(BaseEvent): + type: Literal[ServerEventTypes.SESSION_UPDATED] = ServerEventTypes.SESSION_UPDATED + session: Session + +#### Conversation +class Conversation(BaseModel): + id: str + object: Literal["realtime.conversation"] + +class ConversationCreated(BaseEvent): + type: Literal[ServerEventTypes.CONVERSATION_CREATED] = ( + ServerEventTypes.CONVERSATION_CREATED + ) + conversation: Conversation + +class ConversationItemCreated(BaseEvent): + type: Literal[ServerEventTypes.CONVERSATION_ITEM_CREATED] = ( + ServerEventTypes.CONVERSATION_ITEM_CREATED + ) + previous_item_id: Optional[str] = None + item: ConversationItem + +class ConversationItemInputAudioTranscriptionCompleted(BaseEvent): + type: Literal[ + ServerEventTypes.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED + ] = ServerEventTypes.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED + item_id: str + content_index: int + transcript: str + +class ConversationItemInputAudioTranscriptionFailed(BaseEvent): + type: Literal[ + ServerEventTypes.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_FAILED + ] = ServerEventTypes.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_FAILED + item_id: str + content_index: int + error: dict[str, Any] + +class ConversationItemTruncated(BaseEvent): + type: Literal[ServerEventTypes.CONVERSATION_ITEM_TRUNCATED] = ( + ServerEventTypes.CONVERSATION_ITEM_TRUNCATED + ) + item_id: str + content_index: int + audio_end_ms: int + +class ConversationItemDeleted(BaseEvent): + type: Literal[ServerEventTypes.CONVERSATION_ITEM_DELETED] = ( + ServerEventTypes.CONVERSATION_ITEM_DELETED + ) + item_id: str + +#### Response +class ResponseUsage(BaseModel): + total_tokens: int + input_tokens: int + output_tokens: int + input_token_details: Optional[dict[str, int]] = None + output_token_details: Optional[dict[str, int]] = None + +class ResponseOutput(BaseModel): + id: str + object: Literal["realtime.item"] + type: str + status: str + role: str + content: list[dict[str, Any]] + +class ResponseContentPart(BaseModel): + type: str + text: Optional[str] = None + +class ResponseOutputItemContent(BaseModel): + type: str + text: Optional[str] = None + +class ResponseStatusDetails(BaseModel): + type: str + reason: str + +class ResponseOutputItem(BaseModel): + id: str + object: Literal["realtime.item"] + type: str + status: str + role: str + content: list[ResponseOutputItemContent] + +class Response(BaseModel): + id: str + object: Literal["realtime.response"] + status: str + status_details: Optional[ResponseStatusDetails] = None + output: list[ResponseOutput] + usage: Optional[ResponseUsage] + +class ResponseCreated(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_CREATED] = ServerEventTypes.RESPONSE_CREATED + response: Response + +class ResponseDone(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_DONE] = ServerEventTypes.RESPONSE_DONE + response: Response + +class ResponseOutputItemAdded(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_OUTPUT_ITEM_ADDED] = ( + ServerEventTypes.RESPONSE_OUTPUT_ITEM_ADDED + ) + response_id: str + output_index: int + item: ResponseOutputItem + +class ResponseOutputItemDone(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_OUTPUT_ITEM_DONE] = ( + ServerEventTypes.RESPONSE_OUTPUT_ITEM_DONE + ) + response_id: str + output_index: int + item: ResponseOutputItem + +class ResponseContentPartAdded(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_CONTENT_PART_ADDED] = ( + ServerEventTypes.RESPONSE_CONTENT_PART_ADDED + ) + response_id: str + item_id: str + output_index: int + content_index: int + part: ResponseContentPart + +class ResponseContentPartDone(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_CONTENT_PART_DONE] = ( + ServerEventTypes.RESPONSE_CONTENT_PART_DONE + ) + response_id: str + item_id: str + output_index: int + content_index: int + part: ResponseContentPart + +#### Response Text +class ResponseTextDelta(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_TEXT_DELTA] = ( + ServerEventTypes.RESPONSE_TEXT_DELTA + ) + response_id: str + item_id: str + output_index: int + content_index: int + delta: str + +class ResponseTextDone(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_TEXT_DONE] = ( + ServerEventTypes.RESPONSE_TEXT_DONE + ) + response_id: str + item_id: str + output_index: int + content_index: int + text: str + +#### Response Audio +class ResponseAudioTranscriptDone(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_AUDIO_TRANSCRIPT_DONE] = ( + ServerEventTypes.RESPONSE_AUDIO_TRANSCRIPT_DONE + ) + transcript: str + +class ResponseAudioTranscriptDelta(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_AUDIO_TRANSCRIPT_DELTA] = ( + ServerEventTypes.RESPONSE_AUDIO_TRANSCRIPT_DELTA + ) + delta: str + +class ResponseAudioDelta(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_AUDIO_DELTA] = ( + ServerEventTypes.RESPONSE_AUDIO_DELTA + ) + response_id: str + item_id: str + delta: str + +class ResponseAudioDone(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_AUDIO_DONE] = ( + ServerEventTypes.RESPONSE_AUDIO_DONE + ) + response_id: str + item_id: str + output_index: int + content_index: int + +class InputAudioBufferCommitted(BaseEvent): + type: Literal[ServerEventTypes.INPUT_AUDIO_BUFFER_COMMITTED] = ( + ServerEventTypes.INPUT_AUDIO_BUFFER_COMMITTED + ) + previous_item_id: Optional[str] = None + item_id: Optional[str] = None + event_id: Optional[str] = None + +class InputAudioBufferCleared(BaseEvent): + type: Literal[ServerEventTypes.INPUT_AUDIO_BUFFER_CLEARED] = ( + ServerEventTypes.INPUT_AUDIO_BUFFER_CLEARED + ) + +class InputAudioBufferSpeechStarted(BaseEvent): + type: Literal[ServerEventTypes.INPUT_AUDIO_BUFFER_SPEECH_STARTED] = ( + ServerEventTypes.INPUT_AUDIO_BUFFER_SPEECH_STARTED + ) + audio_start_ms: int + item_id: str + +class InputAudioBufferSpeechStopped(BaseEvent): + type: Literal[ServerEventTypes.INPUT_AUDIO_BUFFER_SPEECH_STOPPED] = ( + ServerEventTypes.INPUT_AUDIO_BUFFER_SPEECH_STOPPED + ) + audio_end_ms: int + item_id: str + +#### Function Calls +class ResponseFunctionCallArgumentsDelta(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA] = ( + ServerEventTypes.RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA + ) + response_id: str + item_id: str + output_index: int + call_id: str + delta: str + +class ResponseFunctionCallArgumentsDone(BaseEvent): + type: Literal[ServerEventTypes.RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE] = ( + ServerEventTypes.RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE + ) + response_id: str + item_id: str + output_index: int + call_id: str + arguments: str + +#### Rate Limits +class RateLimit(BaseModel): + name: str + limit: int + remaining: int + reset_seconds: float + +class RateLimitsUpdated(BaseEvent): + type: Literal[ServerEventTypes.RATE_LIMITS_UPDATED] = ( + ServerEventTypes.RATE_LIMITS_UPDATED + ) + rate_limits: list[RateLimit] + +ServerEvent = Union[ + ErrorEvent, + ConversationCreated, + ResponseAudioTranscriptDone, + ResponseAudioTranscriptDelta, + ResponseAudioDelta, + ResponseCreated, + ResponseDone, + ResponseOutputItemAdded, + ResponseOutputItemDone, + ResponseContentPartAdded, + ResponseContentPartDone, + ResponseTextDelta, + ResponseTextDone, + ResponseAudioDone, + ConversationItemInputAudioTranscriptionCompleted, + SessionCreated, + SessionUpdated, + InputAudioBufferCleared, + InputAudioBufferSpeechStarted, + InputAudioBufferSpeechStopped, + ConversationItemCreated, + ConversationItemInputAudioTranscriptionFailed, + ConversationItemTruncated, + ConversationItemDeleted, + RateLimitsUpdated, +] + +EVENT_TYPE_TO_MODEL = { + ServerEventTypes.ERROR: ErrorEvent, + ServerEventTypes.RESPONSE_AUDIO_TRANSCRIPT_DONE: ResponseAudioTranscriptDone, + ServerEventTypes.RESPONSE_AUDIO_TRANSCRIPT_DELTA: ResponseAudioTranscriptDelta, + ServerEventTypes.RESPONSE_AUDIO_DELTA: ResponseAudioDelta, + ServerEventTypes.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED: ConversationItemInputAudioTranscriptionCompleted, + ServerEventTypes.SESSION_CREATED: SessionCreated, + ServerEventTypes.SESSION_UPDATED: SessionUpdated, + ServerEventTypes.CONVERSATION_CREATED: ConversationCreated, + ServerEventTypes.INPUT_AUDIO_BUFFER_COMMITTED: InputAudioBufferCommitted, + ServerEventTypes.INPUT_AUDIO_BUFFER_CLEARED: InputAudioBufferCleared, + ServerEventTypes.INPUT_AUDIO_BUFFER_SPEECH_STARTED: InputAudioBufferSpeechStarted, + ServerEventTypes.INPUT_AUDIO_BUFFER_SPEECH_STOPPED: InputAudioBufferSpeechStopped, + ServerEventTypes.CONVERSATION_ITEM_CREATED: ConversationItemCreated, + ServerEventTypes.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_FAILED: ConversationItemInputAudioTranscriptionFailed, + ServerEventTypes.CONVERSATION_ITEM_TRUNCATED: ConversationItemTruncated, + ServerEventTypes.CONVERSATION_ITEM_DELETED: ConversationItemDeleted, + ServerEventTypes.RESPONSE_CREATED: ResponseCreated, + ServerEventTypes.RESPONSE_DONE: ResponseDone, + ServerEventTypes.RESPONSE_OUTPUT_ITEM_ADDED: ResponseOutputItemAdded, + ServerEventTypes.RESPONSE_OUTPUT_ITEM_DONE: ResponseOutputItemDone, + ServerEventTypes.RESPONSE_CONTENT_PART_ADDED: ResponseContentPartAdded, + ServerEventTypes.RESPONSE_CONTENT_PART_DONE: ResponseContentPartDone, + ServerEventTypes.RESPONSE_TEXT_DELTA: ResponseTextDelta, + ServerEventTypes.RESPONSE_TEXT_DONE: ResponseTextDone, + ServerEventTypes.RESPONSE_AUDIO_DONE: ResponseAudioDone, + ServerEventTypes.RATE_LIMITS_UPDATED: RateLimitsUpdated, +} + +def parse_server_event(event_data: dict) -> ServerEvent: + event_type = event_data.get("type") + if not event_type: + raise ValueError("Event data is missing 'type' field") + + model_class = EVENT_TYPE_TO_MODEL.get(event_type) + if not model_class: + raise ValueError(f"Unknown event type: {event_type}") + + try: + return model_class(**event_data) + except ValidationError as e: + raise ValueError(f"Failed to parse event of type {event_type}: {str(e)}") from e +``` + +
+ +## 音声ストリームライター (ディスクおよびメモリへ) + +```python lines +class StreamingWavWriter: + """音声の整数またはバイト配列チャンクを WAV ファイルに書き込みます。""" + + wav_file = None + buffer = None + in_memory = False + + def __init__( + self, + filename=None, + channels=INPUT_DEVICE_CHANNELS, + sample_width=SAMPLE_WIDTH, + framerate=SAMPLE_RATE, + ): + self.in_memory = filename is None + if self.in_memory: + self.buffer = io.BytesIO() + self.wav_file = wave.open(self.buffer, "wb") + else: + self.wav_file = wave.open(filename, "wb") + + self.wav_file.setnchannels(channels) + self.wav_file.setsampwidth(sample_width) + self.wav_file.setframerate(framerate) + + def append_int16_chunk(self, int16_data): + if int16_data is not None: + self.wav_file.writeframes( + int16_data.tobytes() + if isinstance(int16_data, np.ndarray) + else int16_data + ) + + def close(self): + self.wav_file.close() + + def get_wav_buffer(self): + assert self.in_memory, "Buffer only available if stream is in memory." + return self.buffer +``` + +## リアルタイム音声モデル + +リアルタイム (RT) 音声モデルは、websocket を使用して OpenAI の Realtime audio API にイベントを送信します。仕組みは以下の通りです: + +1. **init:** ローカルバッファ (入力音声) とストリーム (アシスタント再生ストリーム、ユーザー音声ディスクライターストリーム) を初期化し、Realtime API への接続を開きます。 +2. **receive_messages_thread**: スレッドが API からのメッセージ受信を処理します。主に 4 つのイベントタイプが処理されます: - RESPONSE_AUDIO_TRANSCRIPT_DONE: + + サーバーがアシスタントのレスポンスが完了したことを示し、書き起こしを提供します。 + + - CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED: + + サーバーがユーザーの音声が書き起こされたことを示し、ユーザー音声の書き起こしを送信します。この書き起こしを Weave に記録し、ユーザー向けに表示します。 + + - RESPONSE_AUDIO_DELTA: + + サーバーがアシスタントレスポンス音声の新しいチャンクを送信します。これをレスポンス ID を介して進行中のレスポンスデータに追加し、再生用の出力ストリームに加えます。 + + - RESPONSE_DONE: + + サーバーがアシスタントレスポンスの完了を示します。レスポンスに関連付けられたすべての音声チャンクと書き起こしを取得し、これらを Weave に記録します。 + + 3.**send_audio**: ハンドラーがユーザーの音声チャンクをバッファに追加し、音声バッファが特定のサイズに達したときに音声チャンクを送信します。 + +```python lines +class RTAudioModel(weave.Model): + """Weave ログ用の Whisper ユーザー書き起こしを備えた、OpenAI リアルタイム e2e 音声モデル対話用のモデルクラス。""" + + realtime_model_name: str = "gpt-4o-realtime-preview-2024-10-01" # リアルタイム e2e 音声のみのモデル対話 + + stop_event: Optional[threading.Event] = threading.Event() # モデルを停止させるためのイベント + ws: Optional[websocket.WebSocket] = None # OpenAI 通信用の Websocket + + user_wav_writer: Optional[StreamingWavWriter] = ( + None # ユーザー出力をファイルに書き込むためのストリーム + ) + input_audio_buffer: Optional[np.ndarray] = None # ユーザー音声チャンク用のバッファ + assistant_outputs: dict[str, StreamingWavWriter] = ( + None # Weave に送信するために集約されたアシスタント出力 + ) + playback_stream: Optional[pyaudio.Stream] = ( + None # アシスタントのレスポンスを再生するための再生ストリーム + ) + + def __init__(self): + super().__init__() + self.stop_event.clear() + self.user_wav_writer = StreamingWavWriter( + filename="user_audio.wav", framerate=SAMPLE_RATE + ) + self.input_audio_buffer = np.array([], dtype=np.int16) + self.ws = websocket.WebSocket() + self.assistant_outputs = {} + + # 有効な場合、アシスタント音声再生ストリームを開く + if enable_audio_playback: + self.playback_stream = pyaudio.PyAudio().open( + format=pyaudio.paInt16, + channels=OUTPUT_DEVICE_CHANNELS, + rate=OAI_SAMPLE_RATE, + output=True, + output_device_index=OUTPUT_DEVICE_INDEX, + ) + + # Websocket 接続 + try: + self.ws.connect( + f"wss://api.openai.com/v1/realtime?model={self.realtime_model_name}", + header={ + "Authorization": f"Bearer {os.environ.get('OPENAI_API_KEY')}", + "OpenAI-Beta": "realtime=v1", + }, + ) + + # 設定メッセージを送信 + config_event = SessionUpdate( + session=Session( + modalities=["text", "audio"], # 使用するモダリティ + input_audio_transcription=InputAudioTranscription( + model="whisper-1" + ), # 書き起こし用の whisper-1 + turn_detection=TurnDetection( + type="server_vad", + threshold=0.3, + prefix_padding_ms=300, + silence_duration_ms=600, + ), # 無音を検出するためのサーバー VAD + ) + ) + self.ws.send(config_event.model_dump_json(exclude_none=True)) + self.log_ws_message(config_event.model_dump_json(exclude_none=True), "Sent") + + # リスナーを開始 + websocket_thread = threading.Thread(target=self.receive_messages_thread) + websocket_thread.daemon = True + websocket_thread.start() + + except Exception as e: + print(f"Error connecting to WebSocket: {e}") + + ##### Weave インテグレーションとメッセージハンドラー ##### + def handle_assistant_response_audio_delta(self, data: ResponseAudioDelta): + if data.response_id not in self.assistant_outputs: + self.assistant_outputs[data.response_id] = StreamingWavWriter( + framerate=OAI_SAMPLE_RATE + ) + + data_bytes = base64.b64decode(data.delta) + self.assistant_outputs[data.response_id].append_int16_chunk(data_bytes) + + if enable_audio_playback: + self.playback_stream.write(data_bytes) + + return {"assistant_audio": data_bytes} + + @weave.op() + def handle_assistant_response_done(self, data: ResponseDone): + wave_file_stream = self.assistant_outputs[data.response.id] + wave_file_stream.close() + wave_file_stream.buffer.seek(0) + weave_payload = { + "assistant_audio": wave.open(wave_file_stream.get_wav_buffer(), "rb"), + "assistant_transcript": data.response.output[0] + .content[0] + .get("transcript", "Transcript Unavailable."), + } + return weave_payload + + @weave.op() + def handle_user_transcription_done( + self, data: ConversationItemInputAudioTranscriptionCompleted + ): + return {"user_transcript": data.transcript} + + ##### メッセージ受信機と送信機 ##### + def receive_messages_thread(self): + while not self.stop_event.is_set(): + try: + data = json.loads(self.ws.recv()) + self.log_ws_message(json.dumps(data, indent=2)) + + parsed_event = parse_server_event(data) + + if parsed_event.type == ServerEventTypes.RESPONSE_AUDIO_TRANSCRIPT_DONE: + print("Assistant: ", parsed_event.transcript) + elif ( + parsed_event.type + == ServerEventTypes.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED + ): + print("User: ", parsed_event.transcript) + self.handle_user_transcription_done(parsed_event) + elif parsed_event.type == ServerEventTypes.RESPONSE_AUDIO_DELTA: + self.handle_assistant_response_audio_delta(parsed_event) + elif parsed_event.type == ServerEventTypes.RESPONSE_DONE: + self.handle_assistant_response_done(parsed_event) + elif parsed_event.type == ServerEventTypes.ERROR: + print( + f"\nError from server: {parsed_event.error.model_dump_json(exclude_none=True)}" + ) + except websocket.WebSocketConnectionClosedException: + print("\nWebSocket connection closed") + break + except json.JSONDecodeError: + continue + except Exception as e: + print(f"\nError in receive_messages: {e}") + break + + def send_audio(self, audio_chunk): + if self.ws and self.ws.connected: + self.input_audio_buffer = np.append( + self.input_audio_buffer, np.frombuffer(audio_chunk, dtype=np.int16) + ) + if len(self.input_audio_buffer) >= SAMPLE_RATE * CHUNK_DURATION: + try: + # 音声を OAI サンプリングレートにリサンプリング + resampled_audio = ( + resampy.resample( + self.input_audio_buffer, SAMPLE_RATE, OAI_SAMPLE_RATE + ) + if SAMPLE_RATE != OAI_SAMPLE_RATE + else self.input_audio_buffer + ) + + # 音声チャンクを OAI API に送信 + audio_event = InputAudioBufferAppend( + audio=base64.b64encode( + resampled_audio.astype(np.int16).tobytes() + ).decode("utf-8") # 音声配列を b64 バイトに変換 + ) + self.ws.send(audio_event.model_dump_json(exclude_none=True)) + self.log_ws_message( + audio_event.model_dump_json(exclude_none=True), "Sent" + ) + finally: + self.user_wav_writer.append_int16_chunk(self.input_audio_buffer) + + # 音声バッファをクリア + self.input_audio_buffer = np.array([], dtype=np.int16) + else: + print("Error sending audio: websocket not initialized.") + + ##### 一般的なユーティリティ関数 ##### + def log_ws_message(self, message, direction="Received"): + with open("websocket_log.txt", "a") as log_file: + log_file.write( + f"{time.strftime('%Y-%m-%d %H:%M:%S')} - {direction}: {message}\n" + ) + + def stop(self): + self.stop_event.set() + + if self.ws: + self.ws.close() + + self.user_wav_writer.close() +``` + +## オーディオレコーダー + +RTAudio モデルの `send_audio` メソッドにリンクされたハンドラーを持つ pyaudio 入力ストリームを使用します。ストリームはメインスレッドに返され、プログラム終了時に安全に終了できるようになっています。 + +```python lines +# 音声キャプチャストリーム +def record_audio(realtime_model: RTAudioModel) -> pyaudio.Stream: + """Pyaudio 入力ストリームを設定し、ストリーミングデータのコールバックとして RTAudioModel を使用します。""" + + def audio_callback(in_data, frame_count, time_info, status): + realtime_model.send_audio(in_data) + return (None, pyaudio.paContinue) + + p = pyaudio.PyAudio() + stream = p.open( + format=pyaudio.paInt16, + channels=INPUT_DEVICE_CHANNELS, + rate=SAMPLE_RATE, + input=True, + input_device_index=INPUT_DEVICE_INDEX, + frames_per_buffer=CHUNK, + stream_callback=audio_callback, + ) + stream.start_stream() + + print("Recording started. Please begin speaking to your personal assistant...") + return stream +``` + +## メインスレッド(実行してください!) + +メインスレッドは Weave が統合された Realtime Audio Model を開始します。次に、録音が開始され、ユーザーからのキーボード割り込みを待ちます。 + +```python lines +weave.init(project_name="realtime-oai-audio-testing") + +realtime_model = RTAudioModel() + +if realtime_model.ws and realtime_model.ws.connected: + recording_stream: pyaudio.Stream = record_audio(realtime_model) + + try: + while not realtime_model.stop_event.is_set(): + time.sleep(1) + except KeyboardInterrupt: + pass + except Exception as e: + print(f"Error in main loop: {e}") + import traceback + + traceback.print_exc() + finally: + print("Exiting...") + realtime_model.stop() + if recording_stream and recording_stream.is_active(): + recording_stream.stop_stream() + recording_stream.close() +else: + print( + "WebSocket connection failed. Please check your API key and internet connection." + ) +``` + +
\ No newline at end of file diff --git a/ja/weave/cookbooks/chain_of_density.mdx b/ja/weave/cookbooks/chain_of_density.mdx new file mode 100644 index 0000000000..b4b7ce2b28 --- /dev/null +++ b/ja/weave/cookbooks/chain_of_density.mdx @@ -0,0 +1,377 @@ +--- +title: Chain Of Density +description: W&B Weave で Chain of Density を使用する方法について学ぶ +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/chain_of_density.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/chain_of_density.ipynb) + + +# Chain of Density を用いた要約 + +重要な詳細を維持しながら複雑な技術文書を要約することは、困難な課題です。Chain of Density(CoD)要約手法は、要約を繰り返し洗練させ、より簡潔で情報密度の高いものにすることで、この課題への解決策を提示します。このガイドでは、アプリケーションの追跡と評価に Weave を使用して CoD を実装する方法をデモします。 + + +![](/media/summarization/eval_dash.png) + + +## Chain of Density 要約とは? + +[![arXiv](https://img.shields.io/badge/arXiv-2309.04269-b31b1b.svg)](https://arxiv.org/abs/2309.04269) + +Chain of Density(CoD)は、段階的に簡潔で情報密度の高い要約を作成する反復的な要約手法です。以下の手順で動作します。 + +1. 最初の要約から開始する +2. 要約を繰り返し洗練させ、主要な情報を保持しながらより簡潔にする +3. 反復ごとにエンティティ(固有表現)や技術的な詳細の密度を高める + +このアプローチは、詳細な情報の保持が極めて重要な科学論文や技術文書の要約に特に有用です。 + +## なぜ Weave を使うのか? + +このチュートリアルでは、Weave を使用して ArXiv 論文向けの Chain of Density 要約パイプラインを実装し、評価します。以下の方法を学習します。 + +1. **LLM パイプラインの追跡**: Weave を使用して、要約プロセスの入力、出力、および中間ステップを自動的にログに記録します。 +2. **LLM 出力の評価**: Weave の組み込みツールを使用して、要約の厳密で公平な(apples-to-apples)評価を作成します。 +3. **構成可能な操作の構築**: 要約パイプラインの異なる部分で Weave の operation を組み合わせ、再利用します。 +4. **シームレスな統合**: 最小限のオーバーヘッドで、既存の Python コードに Weave を追加します。 + +このチュートリアルの最後には、モデルのサービング、評価、および結果の追跡に Weave の機能を活用した CoD 要約パイプラインが完成します。 + +## 環境のセットアップ + +まず、環境をセットアップし、必要なライブラリをインポートしましょう。 + +```python lines +!pip install -qU anthropic weave pydantic requests PyPDF2 set-env-colab-kaggle-dotenv +``` + +> Anthropic の APIキー を取得するには: +> 1. https://www.anthropic.com でアカウントを登録します +> 2. アカウント設定の API セクションに移動します +> 3. 新しい APIキー を生成します +> 4. .env ファイルに APIキー を安全に保存します + +```python lines +import io +import os +from datetime import datetime, timezone + +import anthropic +import requests +from pydantic import BaseModel +from PyPDF2 import PdfReader +from set_env import set_env + +import weave + +set_env("WANDB_API_KEY") +set_env("ANTHROPIC_API_KEY") + +# Weave プロジェクトを初期化 +weave.init("summarization-chain-of-density-cookbook") +anthropic_client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) +``` + +実験の追跡には Weave を、テキスト生成には Anthropic の Claude モデルを使用しています。`weave.init()` を呼び出すことで、要約タスク用の新しい Weave プロジェクトがセットアップされます。 + +## ArxivPaper モデルの定義 + +データを表すためのシンプルな `ArxivPaper` クラスを作成します。 + +```python lines +# ArxivPaper モデルの定義 +class ArxivPaper(BaseModel): + entry_id: str + updated: datetime + published: datetime + title: str + authors: list[str] + summary: str + pdf_url: str + +# サンプルの ArxivPaper を作成 +arxiv_paper = ArxivPaper( + entry_id="http://arxiv.org/abs/2406.04744v1", + updated=datetime(2024, 6, 7, 8, 43, 7, tzinfo=timezone.utc), + published=datetime(2024, 6, 7, 8, 43, 7, tzinfo=timezone.utc), + title="CRAG -- Comprehensive RAG Benchmark", + authors=["Xiao Yang", "Kai Sun", "Hao Xin"], # 簡略化のため省略 + summary="Retrieval-Augmented Generation (RAG) has recently emerged as a promising solution...", # 省略 + pdf_url="https://arxiv.org/pdf/2406.04744", +) +``` + +このクラスは ArXiv 論文のメタデータとコンテンツをカプセル化し、要約パイプラインへの入力となります。 + +## PDF コンテンツのロード + +論文の全文を扱うために、PDF をロードしてテキストを抽出する関数を追加します。 + +```python lines +@weave.op() +def load_pdf(pdf_url: str) -> str: + # PDF をダウンロード + response = requests.get(pdf_url) + pdf_file = io.BytesIO(response.content) + + # PDF を読み込み + pdf_reader = PdfReader(pdf_file) + + # 全ページからテキストを抽出 + text = "" + for page in pdf_reader.pages: + text += page.extract_text() + + return text +``` + +## Chain of Density 要約の実装 + +次に、Weave の operation を使用して CoD 要約のコアロジックを実装します。 + + +![](/media/summarization/summarization_trace.png) + + +```python lines +# Chain of Density 要約 +@weave.op() +def summarize_current_summary( + document: str, + instruction: str, + current_summary: str = "", + iteration: int = 1, + model: str = "claude-3-sonnet-20240229", +): + prompt = f""" + Document: {document} + Current summary: {current_summary} + Instruction to focus on: {instruction} + Iteration: {iteration} + + Generate an increasingly concise, entity-dense, and highly technical summary from the provided document that specifically addresses the given instruction. + """ + response = anthropic_client.messages.create( + model=model, max_tokens=4096, messages=[{"role": "user", "content": prompt}] + ) + return response.content[0].text + +@weave.op() +def iterative_density_summarization( + document: str, + instruction: str, + current_summary: str, + density_iterations: int, + model: str = "claude-3-sonnet-20240229", +): + iteration_summaries = [] + for iteration in range(1, density_iterations + 1): + current_summary = summarize_current_summary( + document, instruction, current_summary, iteration, model + ) + iteration_summaries.append(current_summary) + return current_summary, iteration_summaries + +@weave.op() +def final_summary( + instruction: str, current_summary: str, model: str = "claude-3-sonnet-20240229" +): + prompt = f""" + Given this summary: {current_summary} + And this instruction to focus on: {instruction} + Create an extremely dense, final summary that captures all key technical information in the most concise form possible, while specifically addressing the given instruction. + """ + return ( + anthropic_client.messages.create( + model=model, max_tokens=4096, messages=[{"role": "user", "content": prompt}] + ) + .content[0] + .text + ) + +@weave.op() +def chain_of_density_summarization( + document: str, + instruction: str, + current_summary: str = "", + model: str = "claude-3-sonnet-20240229", + density_iterations: int = 2, +): + current_summary, iteration_summaries = iterative_density_summarization( + document, instruction, current_summary, density_iterations, model + ) + final_summary_text = final_summary(instruction, current_summary, model) + return { + "final_summary": final_summary_text, + "accumulated_summary": current_summary, + "iteration_summaries": iteration_summaries, + } +``` + +各関数の役割は以下の通りです。 + +- `summarize_current_summary`: 現在の状態に基づき、1回の要約反復を生成します。 +- `iterative_density_summarization`: `summarize_current_summary` を複数回呼び出すことで CoD 手法を適用します。 +- `chain_of_density_summarization`: 要約プロセス全体をオーケストレートし、結果を返します。 + +`@weave.op()` デコレータを使用することで、Weave がこれらの関数の入力、出力、および実行を確実に追跡できるようになります。 + +## Weave Model の作成 + +次に、要約パイプラインを Weave Model でラップしましょう。 + + +![](/media/summarization/model.png) + + +```python lines +# Weave Model +class ArxivChainOfDensityPipeline(weave.Model): + model: str = "claude-3-sonnet-20240229" + density_iterations: int = 3 + + @weave.op() + def predict(self, paper: ArxivPaper, instruction: str) -> dict: + text = load_pdf(paper.pdf_url) + result = chain_of_density_summarization( + text, + instruction, + model=self.model, + density_iterations=self.density_iterations, + ) + return result +``` + +この `ArxivChainOfDensityPipeline` クラスは要約ロジックを Weave Model としてカプセル化し、いくつかの主要なメリットを提供します。 + +1. **自動的な実験管理**: Weave はモデルの各実行における入力、出力、およびパラメータをキャプチャします。 +2. **バージョン管理**: モデルの属性やコードへの変更は自動的にバージョン管理され、要約パイプラインの進化の歴史を明確にします。 +3. **再現性**: バージョン管理と追跡により、要約パイプラインの以前の結果や設定を簡単に再現できます。 +4. **ハイパーパラメーター管理**: モデル属性(`model` や `density_iterations` など)が明確に定義および追跡され、実験を促進します。 +5. **Weave エコシステムとの統合**: `weave.Model` を使用することで、評価やサービング機能など、他の Weave ツールとシームレスに統合できます。 + +## 評価メトリクスの実装 + +要約の質を評価するために、シンプルな評価メトリクスを実装します。 + +```python lines +import json + +@weave.op() +def evaluate_summary( + summary: str, instruction: str, model: str = "claude-3-sonnet-20240229" +) -> dict: + prompt = f""" + Summary: {summary} + Instruction: {instruction} + + Evaluate the summary based on the following criteria: + 1. Relevance (1-5): How well does the summary address the given instruction? + 2. Conciseness (1-5): How concise is the summary while retaining key information? + 3. Technical Accuracy (1-5): How accurately does the summary convey technical details? + + Your response MUST be in the following JSON format: + {{ + "relevance": {{ + "score": , + "explanation": "" + }}, + "conciseness": {{ + "score": , + "explanation": "" + }}, + "technical_accuracy": {{ + "score": , + "explanation": "" + }} + }} + + Ensure that the scores are integers between 1 and 5, and that the explanations are concise. + """ + response = anthropic_client.messages.create( + model=model, max_tokens=1000, messages=[{"role": "user", "content": prompt}] + ) + print(response.content[0].text) + + eval_dict = json.loads(response.content[0].text) + + return { + "relevance": eval_dict["relevance"]["score"], + "conciseness": eval_dict["conciseness"]["score"], + "technical_accuracy": eval_dict["technical_accuracy"]["score"], + "average_score": sum(eval_dict[k]["score"] for k in eval_dict) / 3, + "evaluation_text": response.content[0].text, + } +``` + +これらの評価関数は Claude モデルを使用し、関連性、簡潔さ、技術的正確性に基づいて生成された要約の質を評価します。 + +## Weave Dataset の作成と評価の実行 + +パイプラインを評価するために、Weave Dataset を作成して評価を実行します。 + + +![](/media/summarization/dataset.png) + + +```python lines +# Weave Dataset を作成 +dataset = weave.Dataset( + name="arxiv_papers", + rows=[ + { + "paper": arxiv_paper, + "instruction": "What was the approach to experimenting with different data mixtures?", + }, + ], +) + +weave.publish(dataset) +``` + +評価には「LLM-as-a-judge」アプローチを採用します。この手法は、言語モデルを使用して、別のモデルやシステムが生成した出力の品質を評価するものです。LLM の理解力と推論能力を活用して、従来のメトリクスでは不十分な可能性のあるタスクに対してニュアンスのある評価を提供します。 + +[![arXiv](https://img.shields.io/badge/arXiv-2306.05685-b31b1b.svg)](https://arxiv.org/abs/2306.05685) + + +![](/media/summarization/eval_dash.png) + + +```python lines +# スカラー関数を定義 +@weave.op() +def quality_scorer(instruction: str, output: dict) -> dict: + result = evaluate_summary(output["final_summary"], instruction) + return result + +# 評価の実行 +evaluation = weave.Evaluation(dataset=dataset, scorers=[quality_scorer]) +arxiv_chain_of_density_pipeline = ArxivChainOfDensityPipeline() +results = await evaluation.evaluate(arxiv_chain_of_density_pipeline) +``` + +このコードは、サンプルの ArXiv 論文を含むデータセットを作成し、品質スカラーを定義して、要約パイプラインの評価を実行します。 + +## 結論 + +この例では、Weave を使用して ArXiv 論文用の Chain of Density 要約パイプラインを実装する方法を実演しました。以下の内容を紹介しました: + +1. 要約プロセスの各ステップに対して Weave operation を作成する方法 +2. 追跡と評価を容易にするためにパイプラインを Weave Model でラップする方法 +3. Weave operation を使用してカスタム評価メトリクスを実装する方法 +4. データセットを作成し、パイプラインの評価を実行する方法 + +Weave のシームレスな統合により、要約プロセス全体の入力、出力、中間ステップを追跡でき、LLM アプリケーションのデバッグ、最適化、評価が容易になります。 +この例を拡張して、より大規模なデータセットを扱ったり、より洗練された評価メトリクスを実装したり、他の LLM ワークフローと統合したりすることができます。 + + + W&B でフルレポートを表示 + \ No newline at end of file diff --git a/ja/weave/cookbooks/codegen.mdx b/ja/weave/cookbooks/codegen.mdx new file mode 100644 index 0000000000..2a75498825 --- /dev/null +++ b/ja/weave/cookbooks/codegen.mdx @@ -0,0 +1,403 @@ +--- +title: コード生成 +description: W&B Weave で codegen を使用する方法について学ぶ +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用できます: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/codegen.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/codegen.ipynb) + + +## + +# Weave と OpenAI を使用したコード生成 + +適切な構造、ドキュメント、およびテストを備えた高品質なコードを生成することは、困難な課題です。このガイドでは、コード生成パイプラインを実装する方法を説明します。humaneval テストスイートに対して高品質な Python 関数を生成するコード生成パイプラインの作成方法を学びます。 + +評価の比較とトラッキングには Weave を使用し、構造化出力を用いたコード生成には OpenAI の GPT モデルを使用します。 + + +![Evaluation](/media/codegen/eval_dash.png) + + +## デモンストレーション動画 + +Weave、Groq、E2B を使用したコード生成パイプラインのデモンストレーションについては、こちらの動画をご覧ください: + + + +この動画では、Weave を Groq と統合して強力なコード生成ツールを作成し、その後 E2B でコードを実行して検証するプロセスをステップバイステップで説明しています。以下の例では OpenAI を使用していますが、Weave では任意の LLM プロバイダーを使用できます。 + +## なぜ Weave を使うのか? + +このチュートリアルでは、Weave を使用してコード生成パイプラインを実装し、評価します。以下の方法を学びます: + +1. **LLM パイプラインのトラッキング**: コード生成プロセスの入力、出力、および中間ステップをログに記録します。 +2. **LLM 出力の評価**: 充実したデバッグツールと可視化機能を使用して、生成されたコードの評価を作成し、比較します。 + +## 環境の設定 + +まず、環境をセットアップし、必要なライブラリをインポートしましょう。 + +```python lines +!pip install -qU autopep8 autoflake weave isort openai set-env-colab-kaggle-dotenv datasets +python +%%capture +# openai のバグを修正するためのワークアラウンド: +# TypeError: Client.__init__() got an unexpected keyword argument 'proxies' +# 詳細は https://community.openai.com/t/error-with-openai-1-56-0-client-init-got-an-unexpected-keyword-argument-proxies/1040332/15 を参照 +!pip install "httpx<0.28" +python +import ast +import os +import re +import subprocess +import tempfile +import traceback + +import autopep8 +import isort +from autoflake import fix_code +from datasets import load_dataset +from openai import OpenAI +from pydantic import BaseModel +from set_env import set_env + +import weave +from weave import Dataset, Evaluation + +set_env("WANDB_API_KEY") +set_env("OPENAI_API_KEY") +python +WEAVE_PROJECT = "codegen-cookbook-example" +weave.init(WEAVE_PROJECT) +python +client = OpenAI() +python +human_eval = load_dataset("openai_humaneval") +selected_examples = human_eval["test"][:3] +``` + + +Weave は、入力、出力、メタデータを含む OpenAI API 呼び出しを自動的にトラッキングします。つまり、OpenAI とのやり取りのために追加のロギングコードを追加する必要はありません。Weave がバックグラウンドでシームレスに処理します。 + + +## 構造化出力と Pydantic モデルの活用 + +このコード生成パイプラインでは、言語モデルから一貫性のある適切にフォーマットされたレスポンスを確実にするために、OpenAI の [構造化出力モード](https://platform.openai.com/docs/guides/structured-outputs) と Pydantic モデルを利用します。このアプローチにはいくつかの利点があります。 + +1. **型安全性**: 期待される出力に対して Pydantic モデルを定義することで、生成されたコード、プログラムランナー、およびユニットテストに対して厳格な構造を強制できます。 +2. **パースの容易さ**: 構造化出力モードにより、モデルのレスポンスを定義済みの Pydantic モデルに直接パースできるため、複雑な後処理の必要性が軽減されます。 +3. **信頼性の向上**: 期待する正確な形式を指定することで、言語モデルからの予期しない、または不正な形式の出力の可能性を減らすことができます。 + +以下は、Pydantic モデルを定義し、OpenAI の構造化出力で使用する方法の例です。 + +```python lines +class GeneratedCode(BaseModel): + function_signature: str + function_args_with_docstring_within_triple_quotes: str + code_logic: str + +class FormattedGeneratedCode(BaseModel): + full_code: str +``` + +## コードフォーマッターの実装 + +一貫性のあるクリーンなコード出力を保証するために、Weave の operation を使用して `CodeFormatter` クラスを実装します。このフォーマッターは、生成されたコード、プログラムランナー、およびユニットテストにさまざまなリンティングおよびスタイリングルールを適用します。 + +```python lines +class CodeFormatter(BaseModel): + @weave.op() + def lint_code(self, code: str) -> str: + # エスケープされた改行を実際の改行に置換 + code = code.replace("\\n", "\n") + + # 未使用のインポートと変数を削除 + code = fix_code( + code, remove_all_unused_imports=True, remove_unused_variables=True + ) + + # インポートをソート + code = isort.code(code) + + # PEP 8 フォーマットを適用 + code = autopep8.fix_code(code, options={"aggressive": 2}) + + return code + + @weave.op() + def add_imports(self, code: str) -> str: + tree = ast.parse(code) + from_imports = {} + global_names = set() + + for node in ast.walk(tree): + if isinstance(node, ast.Name) and node.id not in dir(__builtins__): + global_names.add(node.id) + + # 実際に使用されている typing インポートのみを追加 + typing_imports = global_names.intersection( + {"List", "Dict", "Tuple", "Set", "Optional", "Union"} + ) + if typing_imports: + from_imports["typing"] = typing_imports + + # 関数内で定義されている名前を削除 + function_def = next( + node for node in tree.body if isinstance(node, ast.FunctionDef) + ) + local_names = {arg.arg for arg in function_def.args.args} + local_names.update( + node.id + for node in ast.walk(function_def) + if isinstance(node, ast.Name) and isinstance(node.ctx, ast.Store) + ) + + global_names -= local_names + global_names -= {"sorted"} # 組み込み関数を削除 + + # インポート文を構築 + import_statements = [] + for module, names in from_imports.items(): + names_str = ", ".join(sorted(names)) + import_statements.append(f"from {module} import {names_str}") + + return ( + "\n".join(import_statements) + ("\n\n" if import_statements else "") + code + ) + + @weave.op() + def format_generated_code( + self, generated_code: GeneratedCode + ) -> FormattedGeneratedCode: + # コードのパーツを結合 + full_code = f"{generated_code.function_signature}\n{generated_code.function_args_with_docstring_within_triple_quotes}\n{generated_code.code_logic}" + + # 適切なインデントを確保 + lines = full_code.split("\n") + indented_lines = [] + for i, line in enumerate(lines): + if i == 0: # 関数シグネチャ + indented_lines.append(line) + elif i == 1: # 関数の引数 (docstring) + indented_lines.append(" " + line) + else: # 関数本体 + indented_lines.append(" " + line) + full_code = "\n".join(indented_lines) + + # コードをリント + full_code = self.lint_code(full_code) + + # インポートを追加 + cleaned_code = self.add_imports(full_code) + + return FormattedGeneratedCode(full_code=cleaned_code) +``` + +この `CodeFormatter` クラスは、生成されたコードをクリーンアップしてフォーマットするためのいくつかの Weave operation を提供します。 + +- エスケープされた改行を実際の改行に置換 +- 未使用のインポートと変数の削除 +- インポートのソート +- PEP 8 フォーマットの適用 +- 不足しているインポートの追加 + +## CodeGenerationPipeline の定義 + + +![Code Generation Pipeline](/media/codegen/codegen_trace.png) + + +次に、コアとなるコード生成ロジックを実装しましょう。 + +`weave.Model` を使用することで、変更時に自動的にバージョン管理されるようにします。また、`model_name` を属性として保持することで、実験を行い、Weave 上で簡単に差分確認や比較ができるようにします。関数呼び出しは `@weave.op` でトラッキングし、入力と出力がログに記録されるようにして、エラー追跡やデバッグを容易にします。 + +```python lines +class CodeGenerationPipeline(weave.Model): + model_name: str + formatter: CodeFormatter + + def __init__( + self, model_name: str = "gpt-4o", formatter: CodeFormatter | None = None + ): + if formatter is None: + formatter = CodeFormatter() + super().__init__(model_name=model_name, formatter=formatter) + self.model_name = model_name + self.formatter = formatter + + @weave.op() + async def predict(self, prompt: str): + generated_code = self.generate_code(prompt) + formatted_generated_code = self.formatter.format_generated_code(generated_code) + + return formatted_generated_code.full_code + + @weave.op() + def generate_code(self, prompt: str) -> GeneratedCode: + completion = client.beta.chat.completions.parse( + model=self.model_name, + messages=[ + { + "role": "system", + "content": "You are an expert Python code generator.", + }, + {"role": "user", "content": prompt}, + ], + response_format=GeneratedCode, + ) + message = completion.choices[0].message + if message.parsed: + return message.parsed + else: + raise ValueError(message.refusal) +``` + +この `CodeGenerationPipeline` クラスは、コード生成ロジックを Weave Model としてカプセル化し、いくつかの重要な利点を提供します。 + +1. 自動的な実験管理: Weave は、モデルの各 run の入力、出力、およびパラメーターを取得します。 +2. バージョン管理: モデルの属性やコードへの変更は自動的にバージョン管理され、コード生成パイプラインが時間の経過とともにどのように進化したかの明確な履歴が作成されます。 +3. 再現性: バージョン管理とトラッキングにより、コード生成パイプラインの以前の結果や設定を簡単に再現できます。 +4. ハイパーパラメーター管理: `model_name` などのモデル属性が明確に定義され、異なる run にわたってトラッキングされるため、実験が容易になります。 +5. Weave エコシステムとの統合: `weave.Model` を使用することで、評価やサービング機能などの他の Weave ツールとシームレスに統合できます。 + +## 評価メトリクスの実装 + +生成されたコードの品質を評価するために、`weave.Scorer` サブクラスを使用してシンプルな評価メトリクスを実装します。これにより、データセットのすべての `model_output` に対して `score` が実行されます。`model_output` は、`weave.Model` 内の `predict` 関数の出力から得られます。`prompt` は、データセット `human-eval` から取得されます。 + +```python lines +CODE_TEMPLATE = """ +{model_output} + +{test} + +if __name__ == "__main__": + check({entry_point}) +""" +python +@weave.op() +async def score_humaneval_test(test: str, entry_point: str, output: str): + generated_code = output + + # test 文字列からアサーションを抽出 + test_cases = re.findall(r"assert.*", test) + test_cases_str = "\n ".join(test_cases) + + # 完全なソースコードを生成 + full_code = CODE_TEMPLATE.format( + model_output=generated_code, + test=test, + test_cases=test_cases_str, + entry_point=entry_point, + ) + + # コードを保存するためのテンポラリファイルを作成 + with tempfile.NamedTemporaryFile(delete=False, suffix=".py") as tmp_file: + # 生成されたコードをテンポラリファイルに書き込む + tmp_file.write(full_code.encode()) + tmp_file_path = tmp_file.name + + try: + # テンポラリの Python ファイルをサブプロセスとして実行(タイムアウト付き) + result = subprocess.run( + ["python", tmp_file_path], + capture_output=True, + text=True, + timeout=10, # 10秒のタイムアウト + ) + + print(result) + + if result.returncode == 0: + return {"correct": True} + else: + return {"correct": False, "error": result.stderr, "output": result.stdout} + except subprocess.TimeoutExpired: + return {"correct": False, "error": "TimeoutExpired"} + except Exception as e: + return {"correct": False, "error": traceback.format_exc()} + finally: + # 実行後にテンポラリファイルが削除されるようにする + os.remove(tmp_file_path) +``` + +これらの評価関数は生成されたコードを実行し、そのコードがデータセットから提供されたテストに合格したかどうかを示すブール値を返します。 + + +![Evaluation](/media/codegen/eval_trace.png) + + +## Weave Dataset の作成と評価の実行 + +パイプラインを評価するために、Weave Dataset を作成して評価を実行します。 + +```python lines +formatted_selected_examples = [ + { + "task_id": task_id, + "prompt": prompt, + "canonical_solution": solution, + "test": test, + "entry_point": entry_point, + } + for task_id, prompt, solution, test, entry_point in zip( + selected_examples["task_id"], + selected_examples["prompt"], + selected_examples["canonical_solution"], + selected_examples["test"], + selected_examples["entry_point"], + ) +] +python +prompt_dataset = Dataset( + name="humaneval_code_gen_example", + rows=[ + { + "prompt": example["prompt"], + "test": example["test"], + "entry_point": example["entry_point"], + } + for example in formatted_selected_examples + ], +) +weave.publish(prompt_dataset) +python +EVAL_RUN = True +python +for model_name in ["gpt-4o-2024-08-06"]: + pipeline = CodeGenerationPipeline(model_name=model_name) + if not EVAL_RUN: + dataset = prompt_dataset.rows[2] + result = await pipeline.predict(dataset["prompt"]) + score_result = await score_humaneval_test( + dataset["test"], dataset["entry_point"], result["generated_code"].full_code + ) + else: + evaluation = Evaluation( + name="minimal_code_gen_evaluation", + dataset=prompt_dataset, + scorers=[score_humaneval_test], + ) + results = await evaluation.evaluate(pipeline) +``` + +このコードは、サンプルプロンプトを含むデータセットを作成し、humaneval テストスコアラーを定義して、コード生成パイプラインの評価を実行します。 + + +![Final Evaluation](/media/codegen/eval_dash.png) + + +## まとめ + +この例では、Weave と OpenAI の言語モデルを使用してコード生成パイプラインを実装する方法を実演しました。以下の方法を示しました。 + +1. コード生成プロセスの各ステップに対して Weave operation を作成する +2. 容易なトラッキングと評価のためにパイプラインを Weave Model でラップする +3. Weave operation を使用してカスタム評価メトリクスを実装する +4. データセットを作成し、パイプラインの評価を実行する + +Weave のシームレスな統合により、コード生成プロセス全体を通じて入力、出力、および中間ステップをトラッキングできるため、LLM アプリケーションのデバッグ、最適化、評価が容易になります。 + +Weave とその機能の詳細については、[Weave ドキュメント](/weave) をご覧ください。この例を拡張して、より大きなデータセットを扱ったり、より洗練された評価メトリクスを実装したり、他の LLM ワークフローと統合したりすることができます。 \ No newline at end of file diff --git a/ja/weave/cookbooks/custom_model_cost.mdx b/ja/weave/cookbooks/custom_model_cost.mdx new file mode 100644 index 0000000000..87a01f66dd --- /dev/null +++ b/ja/weave/cookbooks/custom_model_cost.mdx @@ -0,0 +1,111 @@ +--- +title: カスタムモデルコスト +description: W&B Weave でカスタムモデルコストを使用する方法について説明します +--- + + +これはインタラクティブな ノートブック です。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/custom_model_cost.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/custom_model_cost.ipynb) + + +# カスタムコストモデルの設定 + +Weave は、使用されたトークン数と使用された モデル に基づいてコストを計算します。 +Weave は出力からこの使用量と モデル を取得し、それらをコールに関連付けます。 + +独自のトークン使用量を計算し、それを Weave に保存するシンプルなカスタム モデル を設定してみましょう。 + +## 環境 の設定 + +必要なパッケージをすべてインストールし、インポートします。 +`wandb.login()` で簡単にログインできるように、環境 変数に `WANDB_API_KEY` を設定します(これは Colab の secret として提供される必要があります)。 + +これを ログ に記録したい W&B の プロジェクト を `name_of_wandb_project` に設定します。 + +**_注意:_** `name_of_wandb_project` は、トレース を ログ に記録する チーム を指定するために `{team_name}/{project_name}` の形式にすることもできます。 + +次に、 `weave.init()` を呼び出して Weave クライアントを取得します。 + +```python lines +%pip install wandb weave datetime --quiet +python +import os + +import wandb +from google.colab import userdata + +import weave + +os.environ["WANDB_API_KEY"] = userdata.get("WANDB_API_KEY") +name_of_wandb_project = "custom-cost-model" + +wandb.login() +python +weave_client = weave.init(name_of_wandb_project) +``` + +## Weave を使用した モデル の設定 + +```python lines +from weave import Model + +class YourModel(Model): + attribute1: str + attribute2: int + + def simple_token_count(self, text: str) -> int: + return len(text) // 3 + + # これは定義しているカスタム op です + # 文字列を受け取り、使用量カウント、モデル名、および出力を含む辞書を出力します + @weave.op() + def custom_model_generate(self, input_data: str) -> dict: + # ここにモデルのロジックを記述します + # ここでカスタムの生成関数を使用します + prediction = self.attribute1 + " " + input_data + + # 使用量カウント + prompt_tokens = self.simple_token_count(input_data) + completion_tokens = self.simple_token_count(prediction) + + # 使用量カウント、モデル名、および出力を保持する辞書を返します + # Weave はこれを自動的にトレースに関連付けます + # このオブジェクト {usage, model, output} は OpenAI コールの出力と一致します + return { + "usage": { + "input_tokens": prompt_tokens, + "output_tokens": completion_tokens, + "total_tokens": prompt_tokens + completion_tokens, + }, + "model": "your_model_name", + "output": prediction, + } + + # predict 関数内でカスタム生成関数を呼び出し、その出力を返します。 + @weave.op() + def predict(self, input_data: str) -> dict: + # ここでデータのポストプロセッシングを行うことができます + outputs = self.custom_model_generate(input_data) + return outputs["output"] +``` + +## カスタムコストの追加 + +ここでカスタムコストを追加します。カスタムコストを設定し、コールに使用量が含まれているため、 `include_cost` を使用してコールを取得できるようになり、コールの `summary.weave.costs` の下にコストが表示されます。 + +```python lines +model = YourModel(attribute1="Hello", attribute2=1) +model.predict("world") + +# 次に、プロジェクトにカスタムコストを追加します +weave_client.add_cost( + llm_id="your_model_name", prompt_token_cost=0.1, completion_token_cost=0.2 +) + +# その後、コールをクエリできます。include_costs=True を指定すると +# コールに付随したコストを受け取ることができます +calls = weave_client.get_calls(filter={"trace_roots_only": True}, include_costs=True) + +list(calls) +``` \ No newline at end of file diff --git a/ja/weave/cookbooks/dspy_prompt_optimization.mdx b/ja/weave/cookbooks/dspy_prompt_optimization.mdx new file mode 100644 index 0000000000..c9f74211e3 --- /dev/null +++ b/ja/weave/cookbooks/dspy_prompt_optimization.mdx @@ -0,0 +1,272 @@ +--- +title: DSPy プロンプト最適化 +description: W&B Weave を使用して DSPy のプロンプト最適化を行う方法について学びます +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用できます: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/dspy_prompt_optimization.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/dspy_prompt_optimization.ipynb) + + +# DSPy と Weave を使用した LLM ワークフローの最適化 + +[BIG-bench (Beyond the Imitation Game Benchmark)](https://github.com/google/BIG-bench) は、大型言語モデルを調査し、その将来の能力を推測することを目的とした共同ベンチマークであり、200 以上のタスクで構成されています。[BIG-Bench Hard (BBH)](https://github.com/suzgunmirac/BIG-Bench-Hard) は、現世代の言語モデルでは解決が非常に困難な、最も難易度の高い 23 の BIG-Bench タスクのセットです。 + +このチュートリアルでは、BIG-bench Hard ベンチマークの **causal judgement(因果判断)タスク** で実装された LLM ワークフローのパフォーマンスを向上させ、プロンプティング戦略を評価する方法を実演します。LLM ワークフローの実装とプロンプティング戦略の最適化には [DSPy](https://dspy-docs.vercel.app/) を使用します。また、LLM ワークフローの追跡とプロンプティング戦略の評価には [Weave](/weave) を使用します。 + +## 依存関係のインストール + +このチュートリアルには以下のライブラリが必要です。 + +- [DSPy](https://dspy-docs.vercel.app/): LLM ワークフローの構築と最適化に使用。 +- [Weave](/weave/quickstart): LLM ワークフローの追跡とプロンプティング戦略の評価に使用。 +- [datasets](https://huggingface.co/docs/datasets/index): HuggingFace Hub から Big-Bench Hard データセットにアクセスするために使用。 + +```python lines +!pip install -qU dspy-ai weave datasets +``` + +LLM ベンダーとして [OpenAI API](https://openai.com/index/openai-api/) を使用するため、OpenAI の APIキー も必要です。OpenAI プラットフォームで [サインアップ](https://platform.openai.com/signup) して、独自の APIキー を取得できます。 + +```python lines +import os +from getpass import getpass + +api_key = getpass("Enter you OpenAI API key: ") +os.environ["OPENAI_API_KEY"] = api_key +``` + +## Weave を使用したトラッキングの有効化 + +Weave は現在 DSPy と統合されており、コードの最初に [`weave.init`](/weave/reference/python-sdk/trace/weave_client#method-init) を含めることで、DSPy 関数のトレースを自動的に行い、Weave の UI で確認できるようになります。詳細は [DSPy の Weave インテグレーションガイド](/weave/guides/integrations/dspy) をご覧ください。 + +```python lines +import weave + +weave.init(project_name="dspy-bigbench-hard") +``` + +このチュートリアルでは、[`weave.Object`](/weave/reference/python-sdk#class-object) を継承したメタデータクラスを使用してメタデータを管理します。 + +```python lines +class Metadata(weave.Object): + dataset_address: str = "maveriq/bigbenchhard" + big_bench_hard_task: str = "causal_judgement" + num_train_examples: int = 50 + openai_model: str = "gpt-3.5-turbo" + openai_max_tokens: int = 2048 + max_bootstrapped_demos: int = 8 + max_labeled_demos: int = 8 + +metadata = Metadata() +``` + + +**オブジェクトのバージョン管理**: `Metadata` オブジェクトは、それを使用する関数がトレースされる際に、自動的にバージョン管理(versioning)およびトレースされます。 + + +## BIG-Bench Hard データセットのロード + +HuggingFace Hub からこのデータセットをロードし、トレーニングセットと検証セットに分割して、Weave 上に [パブリッシュ](/weave/guides/core-types/datasets) します。これにより、Datasets のバージョン管理が可能になり、[`weave.Evaluation`](/weave/guides/core-types/evaluations) を使用してプロンプティング戦略を評価できるようになります。 + +```python lines +import dspy +from datasets import load_dataset + +@weave.op() +def get_dataset(metadata: Metadata): + # Huggingface Hub からタスクに対応する BIG-Bench Hard データセットをロード + dataset = load_dataset(metadata.dataset_address, metadata.big_bench_hard_task)[ + "train" + ] + + # トレーニング用と検証用のデータセットを作成 + rows = [{"question": data["input"], "answer": data["target"]} for data in dataset] + train_rows = rows[0 : metadata.num_train_examples] + val_rows = rows[metadata.num_train_examples :] + + # `dspy.Example` オブジェクトで構成されるトレーニング用と検証用の例を作成 + dspy_train_examples = [ + dspy.Example(row).with_inputs("question") for row in train_rows + ] + dspy_val_examples = [dspy.Example(row).with_inputs("question") for row in val_rows] + + # データセットを Weave にパブリッシュ。これによりデータのバージョン管理と評価への利用が可能になる + weave.publish( + weave.Dataset( + name=f"bigbenchhard_{metadata.big_bench_hard_task}_train", rows=train_rows + ) + ) + weave.publish( + weave.Dataset( + name=f"bigbenchhard_{metadata.big_bench_hard_task}_val", rows=val_rows + ) + ) + + return dspy_train_examples, dspy_val_examples + +dspy_train_examples, dspy_val_examples = get_dataset(metadata) +``` + + +![](/media/dspy_optimization/1.png) + + +## DSPy プログラム + +[DSPy](https://dspy-docs.vercel.app) は、新しい LM パイプラインの構築を、自由形式の文字列の操作から、プログラミング(テキスト変換グラフを構築するためのモジュール式オペレーターの構成)へとシフトさせるフレームワークです。コンパイラがプログラムから、最適化された LM 呼び出し戦略とプロンプトを自動的に生成します。 + +ここでは [`dspy.OpenAI`](https://dspy-docs.vercel.app/api/language_model_clients/OpenAI) 抽象化を使用して、[GPT3.5 Turbo](https://platform.openai.com/docs/models/gpt-3-5-turbo) への LLM 呼び出しを行います。 + +```python lines +system_prompt = """ +あなたは因果推論の分野の専門家です。与えられた質問を注意深く分析し、`Yes` または `No` で答えてください。 +また、あなたの答えを正当化する詳細な説明も提供してください。 +""" + +llm = dspy.OpenAI(model="gpt-3.5-turbo", system_prompt=system_prompt) +dspy.settings.configure(lm=llm) +``` + +### 因果推論シグネチャの作成 + +[シグネチャ (signature)](https://dspy-docs.vercel.app/docs/building-blocks/signatures) は、[DSPy モジュール](https://dspy-docs.vercel.app/docs/building-blocks/modules) の入出力動作を宣言的に定義する仕様です。DSPy モジュールはタスク適応型のコンポーネントであり、ニューラルネットワークのレイヤーに似ており、特定のテキスト変換を抽象化します。 + +```python lines +from pydantic import BaseModel, Field + +class Input(BaseModel): + query: str = Field(description="回答すべき質問") + +class Output(BaseModel): + answer: str = Field(description="質問に対する回答") + confidence: float = Field( + ge=0, le=1, description="回答の信頼度スコア" + ) + explanation: str = Field(description="回答の理由説明") + +class QuestionAnswerSignature(dspy.Signature): + input: Input = dspy.InputField() + output: Output = dspy.OutputField() + +class CausalReasoningModule(dspy.Module): + def __init__(self): + self.prog = dspy.TypedPredictor(QuestionAnswerSignature) + + @weave.op() + def forward(self, question) -> dict: + return self.prog(input=Input(query=question)).output.dict() +``` + +Big-Bench Hard の因果推論サブセットの例を使用して、LLM ワークフロー(すなわち `CausalReasoningModule`)をテストしてみましょう。 + +```python lines +import rich + +baseline_module = CausalReasoningModule() + +prediction = baseline_module(dspy_train_examples[0]["question"]) +rich.print(prediction) +``` + + +![](/media/dspy_optimization/2.png) +## DSPy プログラムの評価 + + +ベースラインとなるプロンプティング戦略ができたので、予測された回答と正解(ground truth)を照合するシンプルなメトリクスを使用して、検証セットで [`weave.Evaluation`](/weave/guides/core-types/evaluations) を行いましょう。Weave は各例を取得し、アプリケーションを通過させ、複数のカスタムスコアリング関数で出力をスコアリングします。これにより、アプリケーションのパフォーマンスを俯瞰できるだけでなく、個別の出力やスコアを掘り下げて確認できるリッチな UI が提供されます。 + +まず、ベースラインモジュールの出力結果が正解と一致するかどうかを判定する、シンプルな Weave 評価スコアリング関数を作成する必要があります。スコアリング関数には `model_output` というキーワード引数が必要ですが、その他の引数はユーザー定義であり、データセットの例から取得されます。引数名に基づいた辞書キーを使用することで、必要なキーのみを取得します。 + +```python lines +@weave.op() +def weave_evaluation_scorer(answer: str, output: Output) -> dict: + return {"match": int(answer.lower() == output["answer"].lower())} +``` + +次に、評価を定義して実行します。 + +```python lines +validation_dataset = weave.ref( + f"bigbenchhard_{metadata.big_bench_hard_task}_val:v0" +).get() + +evaluation = weave.Evaluation( + name="baseline_causal_reasoning_module", + dataset=validation_dataset, + scorers=[weave_evaluation_scorer], +) + +await evaluation.evaluate(baseline_module.forward) +``` + + +![](/media/dspy_optimization/3.png) + + + +Python スクリプトから実行する場合は、以下のコードを使用して評価を実行できます: + +```python lines +import asyncio +asyncio.run(evaluation.evaluate(baseline_module.forward)) +``` + + + +因果推論データセットの評価を実行すると、OpenAI のクレジットが約 0.24 ドル消費されます。 + + +## DSPy プログラムの最適化 + +ベースラインの DSPy プログラムが完成したので、指定されたメトリクスを最大化するように DSPy プログラムのパラメータをチューニングできる [DSPy テレプロンプター(optimizer)](https://dspy-docs.vercel.app/docs/building-blocks/optimizers) を使用して、因果推論のパフォーマンス向上を試みます。このチュートリアルでは、[BootstrapFewShot](https://dspy-docs.vercel.app/api/category/optimizers) テレプロンプターを使用します。 + +```python lines +from dspy.teleprompt import BootstrapFewShot + +@weave.op() +def get_optimized_program(model: dspy.Module, metadata: Metadata) -> dspy.Module: + @weave.op() + def dspy_evaluation_metric(true, prediction, trace=None): + return prediction["answer"].lower() == true.answer.lower() + + teleprompter = BootstrapFewShot( + metric=dspy_evaluation_metric, + max_bootstrapped_demos=metadata.max_bootstrapped_demos, + max_labeled_demos=metadata.max_labeled_demos, + ) + return teleprompter.compile(model, trainset=dspy_train_examples) + +optimized_module = get_optimized_program(baseline_module, metadata) +``` + + +![](/media/dspy_optimization/4.png) + + + +因果推論データセットの評価を実行すると、OpenAI のクレジットが約 0.04 ドル消費されます。 + + +最適化されたプログラム(最適化されたプロンプティング戦略)が完成したので、もう一度検証セットで評価し、ベースラインの DSPy プログラムと比較してみましょう。 + +```python lines +evaluation = weave.Evaluation( + name="optimized_causal_reasoning_module", + dataset=validation_dataset, + scorers=[weave_evaluation_scorer], +) + +await evaluation.evaluate(optimized_module.forward) +``` + + +![](/media/dspy_optimization/5.png) + + +ベースラインプログラムと最適化されたプログラムの評価を比較すると、最適化されたプログラムの方が因果推論の質問に対して大幅に高い精度で回答していることがわかります。 + +## 結論 + +このチュートリアルでは、プロンプトの最適化に DSPy を使用する方法と、Weave を使用して追跡および評価を行い、オリジナルと最適化されたプログラムを比較する方法を学びました。 \ No newline at end of file diff --git a/ja/weave/cookbooks/feedback_prod.mdx b/ja/weave/cookbooks/feedback_prod.mdx new file mode 100644 index 0000000000..50e0db72cc --- /dev/null +++ b/ja/weave/cookbooks/feedback_prod.mdx @@ -0,0 +1,225 @@ +--- +title: フィードバック Prod +description: W&B Weave を使用してフィードバックを本番環境で活用する方法について学びます +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/feedback_prod.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/feedback_prod.ipynb) + + +## + +生成された LLM の応答を自動的に評価することはしばしば困難です。そのため、許容できるリスクレベルに応じて、ユーザーから直接フィードバックを収集し、改善すべき点を見つけ出すことができます。 + +このチュートリアルでは、ユーザーフィードバックを収集するアプリケーションの例として、カスタムチャットボットを使用します。 +Streamlit を使用してインターフェースを構築し、LLM とのやり取りとフィードバックを Weave でキャプチャします。 + +## セットアップ + +```python lines +!pip install weave openai streamlit wandb +!pip install set-env-colab-kaggle-dotenv -q # 環境変数用 +python +# OpenAI と WandB の APIキーを含む .env ファイルを追加してください +from set_env import set_env + +_ = set_env("OPENAI_API_KEY") +_ = set_env("WANDB_API_KEY") +``` + +次に、以下の内容で `chatbot.py` というファイルを作成します。 + +```python lines {13,15,27} +# chatbot.py + +import openai +import streamlit as st +import wandb +from set_env import set_env + +import weave + +_ = set_env("OPENAI_API_KEY") +_ = set_env("WANDB_API_KEY") + +wandb.login() + +weave_client = weave.init("feedback-example") +oai_client = openai.OpenAI() + +def init_states(): + """session_state のキーが存在しない場合はセットアップします。""" + if "messages" not in st.session_state: + st.session_state["messages"] = [] + if "calls" not in st.session_state: + st.session_state["calls"] = [] + if "session_id" not in st.session_state: + st.session_state["session_id"] = "123abc" + +@weave.op +def chat_response(full_history): + """ + これまでの会話履歴全体を受け取り、ストリーミングモードで OpenAI API を呼び出します。 + full_history は辞書のリストです: [{"role":"user"|"assistant","content":...}, ...] + """ + stream = oai_client.chat.completions.create( + model="gpt-4", messages=full_history, stream=True + ) + response_text = st.write_stream(stream) + return {"response": response_text} + +def render_feedback_buttons(call_idx): + """call に対して Good/Bad ボタンとテキストフィードバックを表示します。""" + col1, col2, col3 = st.columns([1, 1, 4]) + + # Good ボタン + with col1: + if st.button("👍", key=f"thumbs_up_{call_idx}"): + st.session_state.calls[call_idx].feedback.add_reaction("👍") + st.success("フィードバックをありがとうございます!") + + # Bad ボタン + with col2: + if st.button("👎", key=f"thumbs_down_{call_idx}"): + st.session_state.calls[call_idx].feedback.add_reaction("👎") + st.success("フィードバックをありがとうございます!") + + # テキストフィードバック + with col3: + feedback_text = st.text_input("フィードバック", key=f"feedback_input_{call_idx}") + if ( + st.button("フィードバックを送信", key=f"submit_feedback_{call_idx}") + and feedback_text + ): + st.session_state.calls[call_idx].feedback.add_note(feedback_text) + st.success("フィードバックが送信されました!") + +def display_old_messages(): + """st.session_state.messages に保存された会話をフィードバックボタンと共に表示します""" + for idx, message in enumerate(st.session_state.messages): + with st.chat_message(message["role"]): + st.markdown(message["content"]) + + # アシスタントのメッセージの場合、フィードバックフォームを表示 + if message["role"] == "assistant": + # st.session_state.calls 内のこのアシスタントメッセージのインデックスを特定 + assistant_idx = ( + len( + [ + m + for m in st.session_state.messages[: idx + 1] + if m["role"] == "assistant" + ] + ) + - 1 + ) + # Good/Bad ボタンとテキストフィードバックを表示 + if assistant_idx < len(st.session_state.calls): + render_feedback_buttons(assistant_idx) + +def display_chat_prompt(): + """チャットプロンプトの入力ボックスを表示します。""" + if prompt := st.chat_input("何でも聞いてください!"): + # 新しいユーザーメッセージを即座に表示 + with st.chat_message("user"): + st.markdown(prompt) + + # セッションにユーザーメッセージを保存 + st.session_state.messages.append({"role": "user", "content": prompt}) + + # API 用にチャット履歴を準備 + full_history = [ + {"role": msg["role"], "content": msg["content"]} + for msg in st.session_state.messages + ] + + with st.chat_message("assistant"): + # 会話インスタンスのトラッキング用に Weave 属性をアタッチ + with weave.attributes( + {"session": st.session_state["session_id"], "env": "prod"} + ): + # OpenAI API を呼び出し(ストリーム) + result, call = chat_response.call(full_history) + + # アシスタントのメッセージを保存 + st.session_state.messages.append( + {"role": "assistant", "content": result["response"]} + ) + + # 特定の応答にフィードバックをリンクさせるため、weave の call オブジェクトを保存 + st.session_state.calls.append(call) + + # 新しいメッセージのフィードバックボタンを表示 + new_assistant_idx = ( + len( + [ + m + for m in st.session_state.messages + if m["role"] == "assistant" + ] + ) + - 1 + ) + + # フィードバックボタンを表示 + if new_assistant_idx < len(st.session_state.calls): + render_feedback_buttons(new_assistant_idx) + +def main(): + st.title("即時フィードバックフォーム付きチャットボット") + init_states() + display_old_messages() + display_chat_prompt() + +if __name__ == "__main__": + main() +``` + +これは `streamlit run chatbot.py` で実行できます。 + +アプリケーションを操作し、各応答の後にフィードバックボタンをクリックしてみてください。 +Weave の UI にアクセスして、アタッチされたフィードバックを確認してください。 + +## 解説 + +デコレータを付けた予測関数を以下のように考えた場合: + +```python lines {5} +import weave + +weave.init("feedback-example") + +@weave.op +def predict(input_data): + # ここに予測ロジックを記述 + some_result = "hello world" + return some_result +``` + +通常通りに使用して、ユーザーにモデルの応答を届けることができます。 + +```python lines +with weave.attributes( + {"session": "123abc", "env": "prod"} +): # 入力と出力と共に、任意の属性を call にアタッチします + result = predict(input_data="your data here") # アプリ UI を通じたユーザーの質問 +``` + +フィードバックをアタッチするには、`call` オブジェクトが必要です。これは、通常のように関数を呼び出すのではなく、`.call()` メソッドを使用することで取得できます。 + +```python lines +result, call = predict.call(input_data="your data here") +``` + +この call オブジェクトは、特定の応答にフィードバックをアタッチするために必要です。 +呼び出しを行った後、操作の結果は上記の `result` を使って利用できます。 + +```python lines +call.feedback.add_reaction("👍") # アプリ UI を通じたユーザーのリアクション +``` + +## まとめ + +このチュートリアルでは、Streamlit を使用してチャット UI を構築しました。この UI では、入力と出力が Weave にキャプチャされ、さらにユーザーフィードバックを取得するための 👍👎 ボタンも備えています。 \ No newline at end of file diff --git a/ja/weave/cookbooks/hf_dataset_evals.mdx b/ja/weave/cookbooks/hf_dataset_evals.mdx new file mode 100644 index 0000000000..af6685dd33 --- /dev/null +++ b/ja/weave/cookbooks/hf_dataset_evals.mdx @@ -0,0 +1,136 @@ +--- +title: HuggingFace Datasets の評価 +description: W&B Weave を使用して Hugging Face の データセット 評価 を実行する方法を学ぶ +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください。 +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/hf_dataset_evals.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/hf_dataset_evals.ipynb) + + +# `preprocess_model_input` を使用した Evaluations での HuggingFace Datasets の利用 + +## 注意:これは一時的なワークアラウンドです +> このガイドでは、Weave の Evaluations で HuggingFace Datasets を使用するためのワークアラウンドを紹介します。

+現在、このプロセスを簡素化するための、よりシームレスな インテグレーション を積極的に開発中です。\ +> このアプローチは現在有効ですが、近い将来、外部の Datasets との連携をより簡単にする改善やアップデートが予定されています。 + +## セットアップとインポート +まず、Weave を初期化し、実験を追跡するために Weights & Biases に接続します。 + +```python lines +!pip install datasets wandb weave +python +# 変数の初期化 +HUGGINGFACE_DATASET = "wandb/ragbench-test-sample" +WANDB_KEY = "" +WEAVE_TEAM = "" +WEAVE_PROJECT = "" + +# weave と必要なライブラリの初期化 +import asyncio + +import nest_asyncio +import wandb +from datasets import load_dataset + +import weave +from weave import Evaluation + +# wandb にログインし weave を初期化 +wandb.login(key=WANDB_KEY) +client = weave.init(f"{WEAVE_TEAM}/{WEAVE_PROJECT}") + +# nest_asyncio を適用して入れ子になったイベントループを許可(一部のノートブック環境で必要) +nest_asyncio.apply() +``` + +## HuggingFace dataset の読み込みと準備 + +- HuggingFace dataset を読み込みます。 +- データセットの行を参照するためのインデックスマッピングを作成します。 +- このインデックスによるアプローチにより、元のデータセットへの参照を維持することができます。 + +> **注意:**
+インデックスには、各行が一意の識別子を持つように、`hf_id` と共に `hf_hub_name` を含めています。
+このユニークなダイジェスト値は、Evaluations 中に特定のデータセットエントリを追跡し参照するために使用されます。 + +```python lines +# HuggingFace dataset を読み込む +ds = load_dataset(HUGGINGFACE_DATASET) +row_count = ds["train"].num_rows + +# データセットのインデックスマッピングを作成する +# HF データセットのインデックスを持つ辞書のリストを作成します +# 例: [{"hf_id": 0}, {"hf_id": 1}, {"hf_id": 2}, ...] +hf_index = [{"hf_id": i, "hf_hub_name": HUGGINGFACE_DATASET} for i in range(row_count)] +``` + +## プロセッシングと評価関数の定義 + +### プロセッシングパイプライン +- `preprocess_example`: インデックス参照を、評価に必要な実際のデータに変換します。 +- `hf_eval`: モデルの出力をどのようにスコアリングするかを定義します。 +- `function_to_evaluate`: 実際に評価される関数または モデル です。 + +```python lines +@weave.op() +def preprocess_example(example): + """ + 評価前に各例をプリプロセッシングします。 + 引数: + example: hf_id を含む辞書 + 戻り値: + HF データセットからのプロンプトを含む辞書 + """ + hf_row = ds["train"][example["hf_id"]] + return {"prompt": hf_row["question"], "answer": hf_row["response"]} + +@weave.op() +def hf_eval(hf_id: int, output: dict) -> dict: + """ + モデル出力を評価するためのスコアリング関数。 + 引数: + hf_id: HF データセット内のインデックス + output: 評価対象のモデルからの出力 + 戻り値: + 評価スコアを含む辞書 + """ + hf_row = ds["train"][hf_id] + return {"scorer_value": True} + +@weave.op() +def function_to_evaluate(prompt: str): + """ + 評価される関数(例:モデルやパイプライン)。 + 引数: + prompt: データセットからの入力プロンプト + 戻り値: + モデルの出力を含む辞書 + """ + return {"generated_text": "testing "} +``` + +### Evaluation の作成と実行 + +- `hf_index` 内の各インデックスに対して: + 1. `preprocess_example` が HF データセットから対応するデータを取得します。 + 2. プリプロセッシングされたデータが `function_to_evaluate` に渡されます。 + 3. 出力が `hf_eval` を使ってスコアリングされます。 + 4. 結果は Weave で追跡されます。 + +```python lines +# Evaluation オブジェクトの作成 +evaluation = Evaluation( + dataset=hf_index, # インデックスマッピングを使用 + scorers=[hf_eval], # スコアリング関数のリスト + preprocess_model_input=preprocess_example, # 入力を準備する関数 +) + +# 非同期で Evaluation を実行 +async def main(): + await evaluation.evaluate(function_to_evaluate) + +asyncio.run(main()) +``` \ No newline at end of file diff --git a/ja/weave/cookbooks/import_from_csv.mdx b/ja/weave/cookbooks/import_from_csv.mdx new file mode 100644 index 0000000000..0ef2b375d3 --- /dev/null +++ b/ja/weave/cookbooks/import_from_csv.mdx @@ -0,0 +1,280 @@ +--- +title: CSV からのインポート +description: W&B Weave で CSV からインポートする方法を学ぶ +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/import_from_csv.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/import_from_csv.ipynb) + + +# サードパーティシステムからの トレース のインポート + +GenAI アプリケーションのリアルタイムな トレース を取得するために、Weave のシンプルなインテグレーションを使用して Python や Javascript コードをインストルメント化することが不可能な場合があります。多くの場合、これらの トレース は後で `csv` や `json` 形式で利用可能になります。 + +このクックブックでは、低レベルの Weave Python API を探索し、CSV ファイルからデータを抽出して Weave にインポートし、インサイトの獲得や厳密な 評価 を推進する方法を説明します。 + +このクックブックで想定しているサンプル データセット の構造は以下の通りです: + +``` +conversation_id,turn_index,start_time,user_input,ground_truth,answer_text +1234,1,2024-09-04 13:05:39,This is the beginning, ['This was the beginning'], That was the beginning +1235,1,2024-09-04 13:02:11,This is another trace,, That was another trace +1235,2,2024-09-04 13:04:19,This is the next turn,, That was the next turn +1236,1,2024-09-04 13:02:10,This is a 3 turn conversation,, Woah thats a lot of turns +1236,2,2024-09-04 13:02:30,This is the second turn, ['That was definitely the second turn'], You are correct +1236,3,2024-09-04 13:02:53,This is the end,, Well good riddance! + +``` + +このクックブックでのインポートに関する決定を理解するために、Weave の トレース には 1対多の継続的な親子関係があることを知っておく必要があります。つまり、1つの親が複数の子を持つことができ、その親自身が別の親の子である場合もあります。 + +そのため、完全な会話ログを提供するために、`conversation_id` を親の識別子として、`turn_index` を子の識別子として使用します。 + +必要に応じて変数を変更してください。 + +# 環境のセットアップ + +必要なパッケージをすべてインストールし、インポートします。 +環境変数に `WANDB_API_KEY` を設定することで、`wandb.login()` で簡単にログインできるようにします(これは Colab の secret として提供する必要があります)。 + +Colab にアップロードするファイル名を `name_of_file` に設定し、ログを記録する W&B の プロジェクト 名を `name_of_wandb_project` に設定します。 + +**_注意:_** `name_of_wandb_project` は、トレース をログに記録するチームを指定するために `{team_name}/{project_name}` の形式にすることもできます。 + +その後、`weave.init()` を呼び出して Weave クライアントを取得します。 + +```python lines +%pip install wandb weave pandas datetime --quiet + +import os + +import pandas as pd +import wandb +from google.colab import userdata + +import weave + +## サンプルファイルをディスクに書き込みます +with open("/content/import_cookbook_data.csv", "w") as f: + f.write( + "conversation_id,turn_index,start_time,user_input,ground_truth,answer_text\n" + ) + f.write( + '1234,1,2024-09-04 13:05:39,This is the beginning, ["This was the beginning"], That was the beginning\n' + ) + f.write( + "1235,1,2024-09-04 13:02:11,This is another trace,, That was another trace\n" + ) + f.write( + "1235,2,2024-09-04 13:04:19,This is the next turn,, That was the next turn\n" + ) + f.write( + "1236,1,2024-09-04 13:02:10,This is a 3 turn conversation,, Woah thats a lot of turns\n" + ) + f.write( + '1236,2,2024-09-04 13:02:30,This is the second turn, ["That was definitely the second turn"], You are correct\n' + ) + f.write("1236,3,2024-09-04 13:02:53,This is the end,, Well good riddance!\n") + +os.environ["WANDB_API_KEY"] = userdata.get("WANDB_API_KEY") +name_of_file = "/content/import_cookbook_data.csv" +name_of_wandb_project = "import-weave-traces-cookbook" + +wandb.login() + +weave_client = weave.init(name_of_wandb_project) +``` + +# データの読み込み + +データを Pandas の DataFrame に読み込み、`conversation_id` と `turn_index` でソートして、親子関係が正しく並ぶようにします。 + +これにより、`conversation_data` の下に会話のターンが配列として格納された 2 カラムの Pandas DF が作成されます。 + +```python lines +## データを読み込み、整形します +df = pd.read_csv(name_of_file) + +sorted_df = df.sort_values(["conversation_id", "turn_index"]) + +# 各会話に対して辞書の配列を作成する関数 +def create_conversation_dict_array(group): + return group.drop("conversation_id", axis=1).to_dict("records") + +# conversation_id でデータフレームをグループ化し、集計を適用します +result_df = ( + sorted_df.groupby("conversation_id") + .apply(create_conversation_dict_array) + .reset_index() +) +result_df.columns = ["conversation_id", "conversation_data"] + +# 集計結果の確認 +result_df.head() +``` + +# トレース を Weave に ログ + +Pandas DF をイテレートします: +- `conversation_id` ごとに親の call を作成します。 +- ターンの配列をイテレートし、`turn_index` でソートされた子の call を作成します。 + +低レベル Python API の重要な概念: +- Weave の call は Weave の トレース と同等です。この call には親または子が関連付けられている場合があります。 +- Weave の call には、フィードバックや メタデータ など、他のものを関連付けることができます。ここでは入力と出力のみを関連付けますが、データが提供されている場合は、インポート時にこれらを追加することもできます。 +- Weave の call はリアルタイムで追跡されることを想定しているため、`created` と `finished` があります。今回は事後インポートであるため、オブジェクトが定義され、互いに関連付けられた時点で作成し、終了させます。 +- call の `op` 値は、Weave が同じ構成の call をどのように分類するかを決定します。この例では、すべての親の call は `Conversation` タイプ、すべての子の call は `Turn` タイプになります。これは必要に応じて変更可能です。 +- call は `inputs` と `output` を持つことができます。`inputs` は作成時に定義され、`output` は call が終了したときに定義されます。 + +```python lines +# トレースを weave にログします + +# 集計された会話をイテレートします +for _, row in result_df.iterrows(): + # 会話の親を定義します。 + # 先ほど定義した weave_client を使用して "call" を作成します。 + parent_call = weave_client.create_call( + # Op 値はこれを Weave Op として登録し、将来的にグループとして簡単に取得できるようにします。 + op="Conversation", + # 上位レベルの会話の入力を、その下のすべてのターンとして設定します。 + inputs={ + "conversation_data": row["conversation_data"][:-1] + if len(row["conversation_data"]) > 1 + else row["conversation_data"] + }, + # この Conversation の親は存在しないため None に設定します。 + parent=None, + # UI上でこの特定の会話が表示される名前を設定します。 + display_name=f"conversation-{row['conversation_id']}", + ) + + # 親の出力を会話の最後のトレースに設定します。 + parent_output = row["conversation_data"][len(row["conversation_data"]) - 1] + + # 親に関連するすべての会話ターンをイテレートし、 + # 会話の子としてログに記録します。 + for item in row["conversation_data"]: + item_id = f"{row['conversation_id']}-{item['turn_index']}" + + # ここで再度 call を作成し、会話の下に分類します。 + call = weave_client.create_call( + # 単一の会話トレースを "Turn" として定義します。 + op="Turn", + # RAG の 'ground_truth' を含むターンのすべての入力を提供します。 + inputs={ + "turn_index": item["turn_index"], + "start_time": item["start_time"], + "user_input": item["user_input"], + "ground_truth": item["ground_truth"], + }, + # これを先ほど定義した親の子として設定します。 + parent=parent_call, + # Weave で識別するための名前を提供します。 + display_name=item_id, + ) + + # call の出力を回答に設定します。 + output = { + "answer_text": item["answer_text"], + } + + # これらはすでに発生したトレースであるため、単一ターンの call を終了させます。 + weave_client.finish_call(call=call, output=output) + # すべての子をログに記録したので、親の call も終了させます。 + weave_client.finish_call(call=parent_call, output=parent_output) +``` + +# 結果: トレース が Weave にログされました + +トレース: + + +![image.png](/images/screenshots/csv-1.png) + + +Operations: + + +![image.png](/images/screenshots/csv-2.png) + + +# ボーナス: トレース をエクスポートして厳密な 評価 を実行しましょう! + +トレース が Weave に入り、会話の様子が把握できたら、後でそれらを別の プロセス にエクスポートして Weave 評価 を実行したくなるかもしれません。 + + +![image.png](/images/screenshots/csv-3.png) + + +これを行うには、シンプルなクエリ API を介して W&B からすべての会話を取得し、そこから データセット を作成します。 + +```python lines +## このセルはデフォルトでは実行されません。実行するには下の行をコメントアウトしてください。 +%%script false --no-raise-error +## 評価用のすべての Conversation トレースを取得し、評価用データセットを準備します。 + +# すべての Conversation オブジェクトを取得するクエリフィルターを作成します。 +# 下記の ref はあなたのプロジェクト固有のものです。UI のプロジェクトの Operations に移動し、 +# "Conversations" オブジェクトをクリックして、サイドパネルの "Use" タブをクリックすることで取得できます。 +weave_ref_for_conversation_op = "weave://wandb-smle/import-weave-traces-cookbook/op/Conversation:tzUhDyzVm5bqQsuqh5RT4axEXSosyLIYZn9zbRyenaw" +filter = weave.trace_server.trace_server_interface.CallsFilter( + op_names=[weave_ref_for_conversation_op], + ) + +# クエリを実行します +conversation_traces = weave_client.get_calls(filter=filter) + +rows = [] + +# 会話トレースを調べて、そこからデータセットの行を構築します +for single_conv in conversation_traces: + # この例では、RAG パイプラインを使用した会話のみに関心がある場合があるため、 + # そのようなタイプの会話をフィルタリングします。 + is_rag = False + for single_trace in single_conv.inputs['conversation_data']: + if single_trace['ground_truth'] is not None: + is_rag = True + break + if single_conv.output['ground_truth'] is not None: + is_rag = True + + # RAG を使用した会話であると特定されたら、それをデータセットに追加します + if is_rag: + inputs = [] + ground_truths = [] + answers = [] + + # 会話の各ターンを調べます + for turn in single_conv.inputs['conversation_data']: + inputs.append(turn.get('user_input', '')) + ground_truths.append(turn.get('ground_truth', '')) + answers.append(turn.get('answer_text', '')) + ## 会話が単一ターンの場合を考慮します + if len(single_conv.inputs) != 1 or single_conv.inputs['conversation_data'][0].get('turn_index') != single_conv.output.get('turn_index'): + inputs.append(single_conv.output.get('user_input', '')) + ground_truths.append(single_conv.output.get('ground_truth', '')) + answers.append(single_conv.output.get('answer_text', '')) + + data = { + 'question': inputs, + 'contexts': ground_truths, + 'answer': answers + } + + rows.append(data) + +# データセットの行が作成されたので、Dataset オブジェクトを作成し、 +# 後で取得できるように Weave に公開します。 +dset = weave.Dataset(name = "conv_traces_for_eval", rows=rows) +weave.publish(dset) +``` + +# 結果 + + +![image.png](/images/screenshots/csv-4.png) + + +評価 についての詳細については、新しく作成した データセット を使用して RAG アプリケーションを評価する [クイックスタート](/weave/tutorial-rag) をチェックしてください! \ No newline at end of file diff --git a/ja/weave/cookbooks/leaderboard_quickstart.mdx b/ja/weave/cookbooks/leaderboard_quickstart.mdx new file mode 100644 index 0000000000..d72e1c3cca --- /dev/null +++ b/ja/weave/cookbooks/leaderboard_quickstart.mdx @@ -0,0 +1,314 @@ +--- +title: Leaderboard クイックスタート +description: thoughtful mini-token-diet W&B Weave で leaderboard クイックスタートを使用する方法を紹介します +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/leaderboard_quickstart.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/leaderboard_quickstart.ipynb) + + +# Leaderboard クイックスタート + +このノートブックでは、Weave の Leaderboard を使用して、さまざまな Datasets やスコアリング関数にわたる モデル のパフォーマンスを比較する方法を学びます。具体的には、以下の手順で行います: + +1. 架空の郵便番号データの Datasets を生成する。 +2. スコアリング関数を作成し、baseline モデル を評価する。 +3. これらの手法を用いて、複数の モデル と 評価(Evaluations)の行列を評価する。 +4. Weave UI で Leaderboard を確認する。 + +## ステップ 1: 架空の郵便番号データの Datasets を生成する + +まず、架空の郵便番号データのリストを生成する関数 `generate_dataset_rows` を作成します。 + +```python lines +import json + +from openai import OpenAI +from pydantic import BaseModel + +class Row(BaseModel): + zip_code: str + city: str + state: str + avg_temp_f: float + population: int + median_income: int + known_for: str + +class Rows(BaseModel): + rows: list[Row] + +def generate_dataset_rows( + location: str = "United States", count: int = 5, year: int = 2022 +): + client = OpenAI() + + completion = client.chat.completions.create( + model="gpt-4o-mini", + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + { + "role": "user", + "content": f"Please generate {count} rows of data for random zip codes in {location} for the year {year}.", + }, + ], + response_format={ + "type": "json_schema", + "json_schema": { + "name": "response_format", + "schema": Rows.model_json_schema(), + }, + }, + ) + + return json.loads(completion.choices[0].message.content)["rows"] +python +import weave + +# プロジェクトを初期化 +weave.init("leaderboard-demo") +``` + +## ステップ 2: スコアリング関数の作成 + +次に、3 つのスコアリング関数を作成します: + +1. `check_concrete_fields`: モデル の出力が期待される市(city)と州(state)に一致するかをチェックします。 +2. `check_value_fields`: モデル の出力が、期待される人口(population)および世帯年収中央値(median income)の 10% 以内にあるかをチェックします。 +3. `check_subjective_fields`: LLM を使用して、モデル の出力が期待される「有名なもの(known for)」フィールドと一致するかをチェックします。 + +```python lines +@weave.op +def check_concrete_fields(city: str, state: str, output: dict): + return { + "city_match": city == output["city"], + "state_match": state == output["state"], + } + +@weave.op +def check_value_fields( + avg_temp_f: float, population: int, median_income: int, output: dict +): + return { + "avg_temp_f_err": abs(avg_temp_f - output["avg_temp_f"]) / avg_temp_f, + "population_err": abs(population - output["population"]) / population, + "median_income_err": abs(median_income - output["median_income"]) + / median_income, + } + +@weave.op +def check_subjective_fields(zip_code: str, known_for: str, output: dict): + client = OpenAI() + + class Response(BaseModel): + correct_known_for: bool + + completion = client.chat.completions.create( + model="gpt-4o-mini", + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + { + "role": "user", + "content": f"My student was asked what the zip code {zip_code} is best known best for. The right answer is '{known_for}', and they said '{output['known_for']}'. Is their answer correct?", + }, + ], + response_format={ + "type": "json_schema", + "json_schema": { + "name": "response_format", + "schema": Response.model_json_schema(), + }, + }, + ) + + return json.loads(completion.choices[0].message.content) +``` + +## ステップ 3: シンプルな 評価(Evaluation)の作成 + +次に、生成したデータとスコアリング関数を使用して、シンプルな 評価 オブジェクト を定義します。 + +```python lines +rows = generate_dataset_rows() +evaluation = weave.Evaluation( + name="United States - 2022", + dataset=rows, + scorers=[ + check_concrete_fields, + check_value_fields, + check_subjective_fields, + ], +) +``` + +## ステップ 4: baseline モデル を評価する + +静的なレスポンスを返す baseline モデル を評価します。 + +```python lines +@weave.op +def baseline_model(zip_code: str): + return { + "city": "New York", + "state": "NY", + "avg_temp_f": 50.0, + "population": 1000000, + "median_income": 100000, + "known_for": "The Big Apple", + } + +# 評価の実行 +await evaluation.evaluate(baseline_model) +``` + +## ステップ 5: さらに モデル を作成する + +baseline と比較するために、さらに 2 つの モデル を作成します。 + +```python lines +@weave.op +def gpt_4o_mini_no_context(zip_code: str): + client = OpenAI() + + completion = client.chat.completions.create( + model="gpt-4o-mini", + messages=[{"role": "user", "content": f"""Zip code {zip_code}"""}], + response_format={ + "type": "json_schema", + "json_schema": { + "name": "response_format", + "schema": Row.model_json_schema(), + }, + }, + ) + + return json.loads(completion.choices[0].message.content) + +await evaluation.evaluate(gpt_4o_mini_no_context) +python +@weave.op +def gpt_4o_mini_with_context(zip_code: str): + client = OpenAI() + + completion = client.chat.completions.create( + model="gpt-4o-mini", + messages=[ + { + "role": "user", + "content": f"""Please answer the following questions about the zip code {zip_code}: + 1. What is the city? + 2. What is the state? + 3. What is the average temperature in Fahrenheit? + 4. What is the population? + 5. What is the median income? + 6. What is the most well known thing about this zip code? + """, + } + ], + response_format={ + "type": "json_schema", + "json_schema": { + "name": "response_format", + "schema": Row.model_json_schema(), + }, + }, + ) + + return json.loads(completion.choices[0].message.content) + +await evaluation.evaluate(gpt_4o_mini_with_context) +``` + +## ステップ 6: さらに 評価(Evaluations)を作成する + +モデル と 評価(Evaluations)の行列を評価します。 + +```python lines +scorers = [ + check_concrete_fields, + check_value_fields, + check_subjective_fields, +] +evaluations = [ + weave.Evaluation( + name="United States - 2022", + dataset=weave.Dataset( + name="United States - 2022", + rows=generate_dataset_rows("United States", 5, 2022), + ), + scorers=scorers, + ), + weave.Evaluation( + name="California - 2022", + dataset=weave.Dataset( + name="California - 2022", rows=generate_dataset_rows("California", 5, 2022) + ), + scorers=scorers, + ), + weave.Evaluation( + name="United States - 2000", + dataset=weave.Dataset( + name="United States - 2000", + rows=generate_dataset_rows("United States", 5, 2000), + ), + scorers=scorers, + ), +] +models = [ + baseline_model, + gpt_4o_mini_no_context, + gpt_4o_mini_with_context, +] + +for evaluation in evaluations: + for model in models: + await evaluation.evaluate( + model, __weave={"display_name": evaluation.name + ":" + model.__name__} + ) +``` + +## ステップ 7: Leaderboard の確認 + +UI の Leaderboard タブに移動し、「Create Leaderboard」をクリックすることで新しい Leaderboard を作成できます。 + +また、Python から直接 Leaderboard を生成することも可能です: + +```python lines +from weave.flow import leaderboard +from weave.trace.ref_util import get_ref + +spec = leaderboard.Leaderboard( + name="Zip Code World Knowledge", + description=""" +この Leaderboard は、郵便番号に関する一般知識における モデル のパフォーマンスを比較します。 + +### カラム + +1. **State Match against `United States - 2022`**: モデルが州を正しく識別できた郵便番号の割合。 +2. **Avg Temp F Error against `California - 2022`**: モデルの平均気温予測の平均絶対誤差。 +3. **Correct Known For against `United States - 2000`**: モデルがその郵便番号で最も有名なものを正しく識別できた郵便番号の割合。 +""", + columns=[ + leaderboard.LeaderboardColumn( + evaluation_object_ref=get_ref(evaluations[0]).uri(), + scorer_name="check_concrete_fields", + summary_metric_path="state_match.true_fraction", + ), + leaderboard.LeaderboardColumn( + evaluation_object_ref=get_ref(evaluations[1]).uri(), + scorer_name="check_value_fields", + should_minimize=True, + summary_metric_path="avg_temp_f_err.mean", + ), + leaderboard.LeaderboardColumn( + evaluation_object_ref=get_ref(evaluations[2]).uri(), + scorer_name="check_subjective_fields", + summary_metric_path="correct_known_for.true_fraction", + ), + ], +) + +ref = weave.publish(spec) +``` \ No newline at end of file diff --git a/ja/weave/cookbooks/multi-agent-structured-output.mdx b/ja/weave/cookbooks/multi-agent-structured-output.mdx new file mode 100644 index 0000000000..342da22489 --- /dev/null +++ b/ja/weave/cookbooks/multi-agent-structured-output.mdx @@ -0,0 +1,694 @@ +--- +title: マルチエージェント構造化出力 +description: W&B Weave を使用して、マルチ エージェント 構造化出力を利用する方法を学ぶ +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用できます: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/multi-agent-structured-output.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/multi-agent-structured-output.ipynb) + + +## + +# マルチエージェントシステムのための Structured Outputs + +OpenAI は、強い言葉でのプロンプトを使わずに、モデルが常に提供された JSON スキーマに準拠したレスポンスを生成することを保証する [Structured Outputs](https://openai.com/index/introducing-structured-outputs-in-the-api/) をリリースしました。Structured Outputs を使用すると、不適切な形式のレスポンスを検証したり、再試行したりする必要がなくなります。 + +新しいパラメータ `strict: true` を使用することで、レスポンスが提供されたスキーマに従うことを保証できます。 + +マルチエージェントシステムで Structured Outputs を使用すると、エージェント間で一貫性があり、処理しやすいデータが保証されるため、コミュニケーションが強化されます。また、明示的な拒否が可能になることで安全性が向上し、再試行や検証の必要がなくなることでパフォーマンスが向上します。これにより、相互作用が簡素化され、システム全体の効率が高まります。 + +このチュートリアルでは、マルチエージェントシステムで Structured Outputs を活用し、[Weave](/weave) でそれらをトレースする方法を紹介します。 + + +**ソース**: このクックブックは、[OpenAI の Structured Outputs のサンプルコード](https://cookbook.openai.com/examples/structured_outputs_multi_agent)に基づいており、Weave を使用して可視化を向上させるための修正が加えられています。 + + +## 依存関係のインストール + +このチュートリアルには以下のライブラリが必要です: + +- マルチエージェントシステムを作成するための [OpenAI](https://openai.com/index/openai-api/) +- LLM ワークフローを追跡し、プロンプティング戦略を評価するための [Weave](/weave) + +```python lines +!pip install -qU openai weave wandb +python +%%capture +# OpenAI のバグを修正するための暫定的な回避策: +# TypeError: Client.__init__() got an unexpected keyword argument 'proxies' +# 詳細は https://community.openai.com/t/error-with-openai-1-56-0-client-init-got-an-unexpected-keyword-argument-proxies/1040332/15 を参照 +!pip install "httpx<0.28" +``` + +wandb.login() で簡単にログインできるように、環境変数に `WANDB_API_KEY` を設定します(これは Colab の secret として提供する必要があります)。 + +ログを記録したい W&B のプロジェクトを `name_of_wandb_project` に設定します。 + +**注意**: `name_of_wandb_project` は、トレースをログに記録するチームを指定するために `{team_name}/{project_name}` の形式にすることもできます。 +次に、weave.init() を呼び出して Weave クライアントを取得します。 + +[OpenAI API](https://openai.com/index/openai-api/) を使用するため、OpenAI API キーも必要です。OpenAI プラットフォームで [サインアップ](https://platform.openai.com/signup) して、独自の API キーを取得できます(これも Colab の secret として提供する必要があります)。 + +```python lines +import base64 +import json +import os +from io import BytesIO, StringIO + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import wandb +from google.colab import userdata +from openai import OpenAI + +import weave +python +os.environ["WANDB_API_KEY"] = userdata.get("WANDB_API_KEY") +os.environ["OPENAI_API_KEY"] = userdata.get("OPENAI_API_KEY") + +wandb.login() +name_of_wandb_project = "multi-agent-structured-output" +weave.init(name_of_wandb_project) + +client = OpenAI() +MODEL = "gpt-4o-2024-08-06" +``` + +## エージェントのセットアップ + +今回取り組むユースケースはデータ分析タスクです。 +まず、4 つのエージェントシステムをセットアップしましょう: + +- Triaging agent(振り分けエージェント):どのアージェントを呼び出すかを決定します。 +- Data pre-processing Agent(データ前処理エージェント):クリーニングなどを行い、分析のためのデータを準備します。 +- Data Analysis Agent(データ分析エージェント):データに対して分析を実行します。 +- Data Visualization Agent(データ可視化エージェント):分析結果を可視化してインサイトを抽出します。 + まず、これらの各エージェントのシステムプロンプトを定義することから始めます。 + +```python lines +triaging_system_prompt = """あなたは Triaging Agent です。あなたの役割は、ユーザーのクエリを評価し、関連するエージェントにルーティングすることです。利用可能なエージェントは以下の通りです: +- Data Processing Agent: データのクリーニング、変換、集計を行います。 +- Analysis Agent: 統計分析、相関分析、回帰分析を行います。 +- Visualization Agent: 棒グラフ、折れ線グラフ、円グラフを作成します。 + +send_query_to_agents ツールを使用して、ユーザーのクエリを関連するエージェントに転送してください。また、必要に応じて speak_to_user ツールを使用してユーザーから詳細情報を取得してください。""" + +processing_system_prompt = """あなたは Data Processing Agent です。あなたの役割は、以下のツールを使用してデータのクリーニング、変換、集計を行うことです: +- clean_data +- transform_data +- aggregate_data""" + +analysis_system_prompt = """あなたは Analysis Agent です。あなたの役割は、以下のツールを使用して統計分析、相関分析、回帰分析を行うことです: +- stat_analysis +- correlation_analysis +- regression_analysis""" + +visualization_system_prompt = """あなたは Visualization Agent です。あなたの役割は、以下のツールを使用して棒グラフ、折れ線グラフ、円グラフを作成することです: +- create_bar_chart +- create_line_chart +- create_pie_chart""" +``` + +次に、各エージェントのツールを定義します。 + +Triaging agent を除き、各エージェントにはその役割に特化したツールが装備されます: + +**Data pre-processing agent**: 1. Clean data, 2. Transform data, 3. Aggregate data + +**Data analysis agent**: 1. Statistical analysis, 2. Correlation analysis, 3. Regression Analysis + +**Data visualization agent**: 1. Create bar chart, 2. Create line chart, 3. Create pie chart + +```python lines +triage_tools = [ + { + "type": "function", + "function": { + "name": "send_query_to_agents", + "description": "能力に基づいてユーザーのクエリを関連するエージェントに送信します。", + "parameters": { + "type": "object", + "properties": { + "agents": { + "type": "array", + "items": {"type": "string"}, + "description": "クエリを送信するエージェント名の配列。", + }, + "query": { + "type": "string", + "description": "送信するユーザークエリ。", + }, + }, + "required": ["agents", "query"], + }, + }, + "strict": True, + } +] + +preprocess_tools = [ + { + "type": "function", + "function": { + "name": "clean_data", + "description": "重複を削除し、欠損値を処理することで、提供されたデータをクリーニングします。", + "parameters": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "クリーニングするデータセット。JSON や CSV などの適切な形式である必要があります。", + } + }, + "required": ["data"], + "additionalProperties": False, + }, + }, + "strict": True, + }, + { + "type": "function", + "function": { + "name": "transform_data", + "description": "指定されたルールに基づいてデータを変換します。", + "parameters": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "変換するデータ。JSON や CSV などの適切な形式である必要があります。", + }, + "rules": { + "type": "string", + "description": "適用する変換ルール。構造化された形式で指定します。", + }, + }, + "required": ["data", "rules"], + "additionalProperties": False, + }, + }, + "strict": True, + }, + { + "type": "function", + "function": { + "name": "aggregate_data", + "description": "指定された列と操作でデータを集計します。", + "parameters": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "集計するデータ。JSON や CSV などの適切な形式である必要があります。", + }, + "group_by": { + "type": "array", + "items": {"type": "string"}, + "description": "グループ化する列。", + }, + "operations": { + "type": "string", + "description": "実行する集計操作。構造化された形式で指定します。", + }, + }, + "required": ["data", "group_by", "operations"], + "additionalProperties": False, + }, + }, + "strict": True, + }, +] + +analysis_tools = [ + { + "type": "function", + "function": { + "name": "stat_analysis", + "description": "指定されたデータセットに対して統計分析を実行します。", + "parameters": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "分析するデータセット。JSON や CSV などの適切な形式である必要があります。", + } + }, + "required": ["data"], + "additionalProperties": False, + }, + }, + "strict": True, + }, + { + "type": "function", + "function": { + "name": "correlation_analysis", + "description": "データセット内の変数間の相関係数を計算します。", + "parameters": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "分析するデータセット。JSON や CSV などの適切な形式である必要があります。", + }, + "variables": { + "type": "array", + "items": {"type": "string"}, + "description": "相関を計算する変数のリスト。", + }, + }, + "required": ["data", "variables"], + "additionalProperties": False, + }, + }, + "strict": True, + }, + { + "type": "function", + "function": { + "name": "regression_analysis", + "description": "データセットに対して回帰分析を実行します。", + "parameters": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "分析するデータセット。JSON や CSV などの適切な形式である必要があります。", + }, + "dependent_var": { + "type": "string", + "description": "回帰の従属変数。", + }, + "independent_vars": { + "type": "array", + "items": {"type": "string"}, + "description": "独立変数のリスト。", + }, + }, + "required": ["data", "dependent_var", "independent_vars"], + "additionalProperties": False, + }, + }, + "strict": True, + }, +] + +visualization_tools = [ + { + "type": "function", + "function": { + "name": "create_bar_chart", + "description": "提供されたデータから棒グラフを作成します。", + "parameters": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "棒グラフ用のデータ。JSON や CSV などの適切な形式である必要があります。", + }, + "x": {"type": "string", "description": "X 軸の列。"}, + "y": {"type": "string", "description": "Y 軸の列。"}, + }, + "required": ["data", "x", "y"], + "additionalProperties": False, + }, + }, + "strict": True, + }, + { + "type": "function", + "function": { + "name": "create_line_chart", + "description": "提供されたデータから折れ線グラフを作成します。", + "parameters": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "折れ線グラフ用のデータ。JSON や CSV などの適切な形式である必要があります。", + }, + "x": {"type": "string", "description": "X 軸の列。"}, + "y": {"type": "string", "description": "Y 軸の列。"}, + }, + "required": ["data", "x", "y"], + "additionalProperties": False, + }, + }, + "strict": True, + }, + { + "type": "function", + "function": { + "name": "create_pie_chart", + "description": "提供されたデータから円グラフを作成します。", + "parameters": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "円グラフ用のデータ。JSON や CSV などの適切な形式である必要があります。", + }, + "labels": { + "type": "string", + "description": "ラベル用の列。", + }, + "values": { + "type": "string", + "description": "値用の列。", + }, + }, + "required": ["data", "labels", "values"], + "additionalProperties": False, + }, + }, + "strict": True, + }, +] +``` + +## Weave を使用したマルチエージェントの追跡の有効化 + +以下の処理を行うコードロジックを書く必要があります: + +- ユーザーのクエリをマルチエージェントシステムに渡す +- マルチエージェントシステムの内部動作を処理する +- ツール呼び出しを実行する + +```python lines +# クエリの例 + +user_query = """ +以下にいくつかのデータがあります。まず重複を削除してから、データの統計を分析し、折れ線グラフをプロットしてください。 + +house_size (m3), house_price ($) +90, 100 +80, 90 +100, 120 +90, 100 +""" +``` + +ユーザーのクエリから、呼び出す必要があるツールは `clean_data`、`start_analysis`、および `use_line_chart` であることが推測できます。 + +まず、ツール呼び出しを実行する実行関数を定義します。 + +Python 関数を `@weave.op()` でデコレートすることで、言語モデルの入力、出力、およびトレースを記録し、デバッグできます。 + +マルチエージェントシステムを作成すると多くの関数が登場しますが、それらの上に `@weave.op()` を追加するだけで十分です。 + +```python lines +@weave.op() +def clean_data(data): + data_io = StringIO(data) + df = pd.read_csv(data_io, sep=",") + df_deduplicated = df.drop_duplicates() + return df_deduplicated + +@weave.op() +def stat_analysis(data): + data_io = StringIO(data) + df = pd.read_csv(data_io, sep=",") + return df.describe() + +@weave.op() +def plot_line_chart(data): + data_io = StringIO(data) + df = pd.read_csv(data_io, sep=",") + + x = df.iloc[:, 0] + y = df.iloc[:, 1] + + coefficients = np.polyfit(x, y, 1) + polynomial = np.poly1d(coefficients) + y_fit = polynomial(x) + + plt.figure(figsize=(10, 6)) + plt.plot(x, y, "o", label="Data Points") + plt.plot(x, y_fit, "-", label="Best Fit Line") + plt.title("Line Chart with Best Fit Line") + plt.xlabel(df.columns[0]) + plt.ylabel(df.columns[1]) + plt.legend() + plt.grid(True) + + # 表示する前にプロットを BytesIO バッファに保存 + buf = BytesIO() + plt.savefig(buf, format="png") + buf.seek(0) + + # プロットを表示 + plt.show() + + # データ URL 用に画像を base64 でエンコード + image_data = buf.getvalue() + base64_encoded_data = base64.b64encode(image_data) + base64_string = base64_encoded_data.decode("utf-8") + data_url = f"data:image/png;base64,{base64_string}" + + return data_url + +# ツールを実行する関数を定義 +@weave.op() +def execute_tool(tool_calls, messages): + for tool_call in tool_calls: + tool_name = tool_call.function.name + tool_arguments = json.loads(tool_call.function.arguments) + + if tool_name == "clean_data": + # データクリーニングをシミュレート + cleaned_df = clean_data(tool_arguments["data"]) + cleaned_data = {"cleaned_data": cleaned_df.to_dict()} + messages.append( + {"role": "tool", "name": tool_name, "content": json.dumps(cleaned_data)} + ) + print("Cleaned data: ", cleaned_df) + elif tool_name == "transform_data": + # データ変換をシミュレート + transformed_data = {"transformed_data": "sample_transformed_data"} + messages.append( + { + "role": "tool", + "name": tool_name, + "content": json.dumps(transformed_data), + } + ) + elif tool_name == "aggregate_data": + # データ集計をシミュレート + aggregated_data = {"aggregated_data": "sample_aggregated_data"} + messages.append( + { + "role": "tool", + "name": tool_name, + "content": json.dumps(aggregated_data), + } + ) + elif tool_name == "stat_analysis": + # 統計分析をシミュレート + stats_df = stat_analysis(tool_arguments["data"]) + stats = {"stats": stats_df.to_dict()} + messages.append( + {"role": "tool", "name": tool_name, "content": json.dumps(stats)} + ) + print("Statistical Analysis: ", stats_df) + elif tool_name == "correlation_analysis": + # 相関分析をシミュレート + correlations = {"correlations": "sample_correlations"} + messages.append( + {"role": "tool", "name": tool_name, "content": json.dumps(correlations)} + ) + elif tool_name == "regression_analysis": + # 回帰分析をシミュレート + regression_results = {"regression_results": "sample_regression_results"} + messages.append( + { + "role": "tool", + "name": tool_name, + "content": json.dumps(regression_results), + } + ) + elif tool_name == "create_bar_chart": + # 棒グラフ作成をシミュレート + bar_chart = {"bar_chart": "sample_bar_chart"} + messages.append( + {"role": "tool", "name": tool_name, "content": json.dumps(bar_chart)} + ) + elif tool_name == "create_line_chart": + # 折れ線グラフ作成をシミュレート + line_chart = {"line_chart": plot_line_chart(tool_arguments["data"])} + messages.append( + {"role": "tool", "name": tool_name, "content": json.dumps(line_chart)} + ) + elif tool_name == "create_pie_chart": + # 円グラフ作成をシミュレート + pie_chart = {"pie_chart": "sample_pie_chart"} + messages.append( + {"role": "tool", "name": tool_name, "content": json.dumps(pie_chart)} + ) + return messages +``` + +次に、各サブエージェントのツールハンドラーを作成します。これらは、モデルに渡される独自のアシスタントプロンプトとツールセットを持っています。出力はその後、ツール呼び出しを実行する実行関数に渡されます。 + +```python lines +# 各エージェントの処理を処理する関数を定義 +@weave.op() +def handle_data_processing_agent(query, conversation_messages): + messages = [{"role": "system", "content": processing_system_prompt}] + messages.append({"role": "user", "content": query}) + + response = client.chat.completions.create( + model=MODEL, + messages=messages, + temperature=0, + tools=preprocess_tools, + ) + + conversation_messages.append( + [tool_call.function for tool_call in response.choices[0].message.tool_calls] + ) + execute_tool(response.choices[0].message.tool_calls, conversation_messages) + +@weave.op() +def handle_analysis_agent(query, conversation_messages): + messages = [{"role": "system", "content": analysis_system_prompt}] + messages.append({"role": "user", "content": query}) + + response = client.chat.completions.create( + model=MODEL, + messages=messages, + temperature=0, + tools=analysis_tools, + ) + + conversation_messages.append( + [tool_call.function for tool_call in response.choices[0].message.tool_calls] + ) + execute_tool(response.choices[0].message.tool_calls, conversation_messages) + +@weave.op() +def handle_visualization_agent(query, conversation_messages): + messages = [{"role": "system", "content": visualization_system_prompt}] + messages.append({"role": "user", "content": query}) + + response = client.chat.completions.create( + model=MODEL, + messages=messages, + temperature=0, + tools=visualization_tools, + ) + + conversation_messages.append( + [tool_call.function for tool_call in response.choices[0].message.tool_calls] + ) + execute_tool(response.choices[0].message.tool_calls, conversation_messages) +``` + +最後に、ユーザークエリの処理全体を管理するツールを作成します。この関数はユーザークエリを受け取り、モデルからレスポンスを取得し、実行のために他のエージェントに渡す処理を行います。 + +```python lines +# ユーザー入力と振り分けを処理する関数 +@weave.op() +def handle_user_message(user_query, conversation_messages=None): + if conversation_messages is None: + conversation_messages = [] + user_message = {"role": "user", "content": user_query} + conversation_messages.append(user_message) + + messages = [{"role": "system", "content": triaging_system_prompt}] + messages.extend(conversation_messages) + + response = client.chat.completions.create( + model=MODEL, + messages=messages, + temperature=0, + tools=triage_tools, + ) + + conversation_messages.append( + [tool_call.function for tool_call in response.choices[0].message.tool_calls] + ) + + for tool_call in response.choices[0].message.tool_calls: + if tool_call.function.name == "send_query_to_agents": + agents = json.loads(tool_call.function.arguments)["agents"] + query = json.loads(tool_call.function.arguments)["query"] + for agent in agents: + if agent == "Data Processing Agent": + handle_data_processing_agent(query, conversation_messages) + elif agent == "Analysis Agent": + handle_analysis_agent(query, conversation_messages) + elif agent == "Visualization Agent": + handle_visualization_agent(query, conversation_messages) + + outputs = extract_tool_contents(conversation_messages) + + return outputs + +functions = [ + "clean_data", + "transform_data", + "stat_analysis", + "aggregate_data", + "correlation_analysis", + "regression_analysis", + "create_bar_chart", + "create_line_chart", + "create_pie_chart", +] + +@weave.op() +def extract_tool_contents(data): + contents = {} + contents["all"] = data + for element in data: + if ( + isinstance(element, dict) + and element.get("role") == "tool" + and element.get("name") in functions + ): + name = element["name"] + content_str = element["content"] + try: + content_json = json.loads(content_str) + if "chart" not in element.get("name"): + contents[name] = [content_json] + else: + first_key = next(iter(content_json)) + second_level = content_json[first_key] + if isinstance(second_level, dict): + second_key = next(iter(second_level)) + contents[name] = second_level[second_key] + else: + contents[name] = second_level + except json.JSONDecodeError: + print(f"Error decoding JSON for {name}") + contents[name] = None + + return contents +``` + +## Weave でのマルチエージェントシステムの実行と可視化 + +最後に、ユーザーの入力を使用して主要な `handle_user_message` 関数を実行し、結果を観察します。 + +```python lines +handle_user_message(user_query) +``` + +Weave の URL をクリックすると、以下のように実行がトレースされていることが確認できます。トレースページでは、入力と出力を確認できます。分かりやすくするために、各出力をクリックしたときに表示される結果のスクリーンショットを図に追加しています。Weave は OpenAI の API とのインテグレーションを提供しており、コストを自動的に計算できます。そのため、右端にコストとレイテンシも表示されていることが確認できます。 +![1-1.png](/media/multi-agent-structured-output/1-1.png) + +行をクリックすると、マルチエージェントシステム内で実行された中間プロセスを確認できます。例えば、`analysis_agent` の入力と出力を見ると、それが Structured Output 形式であることがわかります。OpenAI の Structured Output はエージェント間の連携を容易にしますが、システムが複雑になるにつれて、これらのやり取りがどのような形式で行われているかを把握するのが難しくなります。Weave を使用すると、これらの中間プロセスとその入出力を、まるで手元で見ているかのように理解することができます。 + + +![3.png](/media/multi-agent-structured-output/3.png) + + +Weave でのトレースがどのように処理されるか、ぜひ詳しく見てみてください! + +## まとめ + +このチュートリアルでは、Structured Output と、入力、最終出力、および中間出力形式を追跡するための Weave を使用して、マルチエージェントシステムを便利に開発する方法を学びました。 \ No newline at end of file diff --git a/ja/weave/cookbooks/notdiamond_custom_routing.mdx b/ja/weave/cookbooks/notdiamond_custom_routing.mdx new file mode 100644 index 0000000000..88e63e8e94 --- /dev/null +++ b/ja/weave/cookbooks/notdiamond_custom_routing.mdx @@ -0,0 +1,206 @@ +--- +title: NotDiamond カスタムルーティング +description: notdiamond のカスタムルーティングを W&B Weave で使用する方法について学びます +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/notdiamond_custom_routing.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/notdiamond_custom_routing.ipynb) + + +# Not Diamond を使用した LLM プロンプトのカスタムルーティング + +このノートブックでは、Weave と [Not Diamond のカスタムルーティング](https://docs.notdiamond.ai/docs/router-training-quickstart) を使用して、評価結果に基づき LLM プロンプトを最も適切なモデルにルーティングする方法を説明します。 + +## プロンプトのルーティング + +複雑な LLM ワークフローを構築する際、ユーザーは精度、コスト、または呼び出しのレイテンシに応じて、異なるモデルにプロンプトを送信する必要がある場合があります。 +ユーザーは [Not Diamond](https://www.notdiamond.ai/) を使用して、これらのワークフロー内のプロンプトをニーズに合った適切なモデルにルーティングし、精度を最大化しながらモデルコストを節約できます。 + +どのようなデータの分布においても、単一のモデルがすべてのクエリに対して他のすべてのモデルを上回ることは稀です。各 LLM をいつ呼び出すべきかを学習する「メタモデル」に複数のモデルを組み合わせることで、個々のモデルのパフォーマンスを上回り、その過程でコストやレイテンシを削減することも可能です。 + +## カスタムルーティング + +プロンプト用のカスタムルーターをトレーニングするには、次の3つが必要です。 + +1. LLM プロンプトのセット:プロンプトは文字列である必要があり、アプリケーションで使用されるプロンプトを代表するものである必要があります。 +1. LLM のレスポンス:各入力に対する候補 LLM からのレスポンス。候補 LLM には、サポートされている LLM と独自のカスタムモデルの両方を含めることができます。 +1. 候補 LLM からの入力に対するレスポンスの評価スコア:スコアは数値であり、ニーズに合った任意のメトリクスを使用できます。 + +これらを Not Diamond API に送信することで、各ワークフローに合わせてチューニングされたカスタムルーターをトレーニングできます。 + +## トレーニングデータのセットアップ + +実際には、独自の Evaluations を使用してカスタムルーターをトレーニングします。ただし、この例のノートブックでは、コーディングタスク用のカスタムルーターをトレーニングするために、[HumanEval データセット](https://github.com/openai/human-eval) に対する LLM のレスポンスを使用します。 + +まず、この例のために用意したデータセットをダウンロードし、LLM のレスポンスを各モデルの `EvaluationResults` にパースすることから始めます。 + +```python lines +!curl -L "https://drive.google.com/uc?export=download&id=1q1zNZHioy9B7M-WRjsJPkfvFosfaHX38" -o humaneval.csv + +import random + +import weave +from weave.flow.dataset import Dataset +from weave.flow.eval import EvaluationResults +from weave.integrations.notdiamond.util import get_model_evals + +pct_train = 0.8 +pct_test = 1 - pct_train + +# 実際には、データセットに対して Evaluation を構築し、 +# `evaluation.get_eval_results(model)` を呼び出します +model_evals = get_model_evals("./humaneval.csv") +model_train = {} +model_test = {} +for model, evaluation_results in model_evals.items(): + n_results = len(evaluation_results.rows) + all_idxs = list(range(n_results)) + train_idxs = random.sample(all_idxs, k=int(n_results * pct_train)) + test_idxs = [idx for idx in all_idxs if idx not in train_idxs] + + model_train[model] = EvaluationResults( + rows=weave.Table([evaluation_results.rows[idx] for idx in train_idxs]) + ) + model_test[model] = Dataset( + rows=weave.Table([evaluation_results.rows[idx] for idx in test_idxs]) + ) + print( + f"Found {len(train_idxs)} train rows and {len(test_idxs)} test rows for {model}." + ) +``` + +## カスタムルーターのトレーニング + +EvaluationResults が用意できたので、カスタムルーターをトレーニングできます。[アカウントを作成](https://app.notdiamond.ai/keys) し、[APIキーを生成](https://app.notdiamond.ai/keys) したことを確認してから、以下に API キーを挿入してください。 + + +![APIキーの作成](/weave/guides/integrations/imgs/notdiamond/api-keys.png) + + +```python lines +import os + +from weave.integrations.notdiamond.custom_router import train_router + +api_key = os.getenv("NOTDIAMOND_API_KEY", "") + +preference_id = train_router( + model_evals=model_train, + prompt_column="prompt", + response_column="actual", + language="en", + maximize=True, + api_key=api_key, + # 最初のカスタムルーターをトレーニングするには、ここをコメントアウトしたままにします + # カスタムルーターをその場で再トレーニングするには、ここのコメントを解除します + # preference_id=preference_id, +) +``` + +その後、Not Diamond アプリを介してカスタムルーターのトレーニングプロセスを確認できます。 + + +![ルーターのトレーニング進捗を確認](/weave/guides/integrations/imgs/notdiamond/router-preferences.png) + + +カスタムルーターのトレーニングが完了したら、それを使用してプロンプトをルーティングできます。 + +```python lines +from notdiamond import NotDiamond + +import weave + +weave.init("notdiamond-quickstart") + +llm_configs = [ + "anthropic/claude-3-5-sonnet-20240620", + "openai/gpt-4o-2024-05-13", + "google/gemini-1.5-pro-latest", + "openai/gpt-4-turbo-2024-04-09", + "anthropic/claude-3-opus-20240229", +] +client = NotDiamond(api_key=api_key, llm_configs=llm_configs) + +new_prompt = ( + """ +You are a helpful coding assistant. Using the provided function signature, write the implementation for the function +in Python. Write only the function. Do not include any other text. + +from typing import List + +def has_close_elements(numbers: List[float], threshold: float) -> bool: + """ + """ Check if in given list of numbers, are any two numbers closer to each other than + given threshold. + >>> has_close_elements([1.0, 2.0, 3.0], 0.5) + False + >>> has_close_elements([1.0, 2.8, 3.0, 4.0, 5.0, 2.0], 0.3) + True + """ + """ +""" +) +session_id, routing_target_model = client.model_select( + messages=[{"role": "user", "content": new_prompt}], + preference_id=preference_id, +) + +print(f"Session ID: {session_id}") +print(f"Target Model: {routing_target_model}") +``` + +この例では、Not Diamond と Weave の自動トレース機能の互換性も利用しています。結果は Weave UI で確認できます。 + +![カスタムルーティングの Weave UI](/weave/guides/integrations/imgs/notdiamond/weave-trace.png) + +## カスタムルーターの評価 + +カスタムルーターのトレーニングが完了したら、以下のいずれかのパフォーマンスを評価できます。 + +- インサンプルのパフォーマンス(トレーニングプロンプトを送信) +- アウトオブサンプルのパフォーマンス(新規またはホールドアウトされたプロンプトを送信) + +以下では、テストセットをカスタムルーターに送信して、そのパフォーマンスを評価します。 + +```python lines +from weave.integrations.notdiamond.custom_router import evaluate_router + +eval_prompt_column = "prompt" +eval_response_column = "actual" + +best_provider_model, nd_model = evaluate_router( + model_datasets=model_test, + prompt_column=eval_prompt_column, + response_column=eval_response_column, + api_key=api_key, + preference_id=preference_id, +) + +@weave.op() +def is_correct(score: int, output: dict) -> dict: + # 既にモデルのレスポンスがあるため、スコアを調整します + return {"correct": score} + +best_provider_eval = weave.Evaluation( + dataset=best_provider_model.model_results.to_dict(orient="records"), + scorers=[is_correct], +) +await best_provider_eval.evaluate(best_provider_model) + +nd_eval = weave.Evaluation( + dataset=nd_model.model_results.to_dict(orient="records"), scorers=[is_correct] +) +await nd_eval.evaluate(nd_model) +``` + +この例では、Not Diamond の「メタモデル」が、複数の異なるモデルにわたってプロンプトをルーティングしています。 + +Weave を介してカスタムルーターをトレーニングすると、評価も実行され、結果が Weave UI にアップロードされます。カスタムルーターのプロセスが完了したら、Weave UI で結果を確認できます。 + +UI を見ると、Not Diamond の「メタモデル」が、プロンプトに正確に回答する可能性がより高い他のモデルにルーティングすることで、最もパフォーマンスの高い単一モデルを上回っていることがわかります。 + + +![Not Diamond の評価](/weave/guides/integrations/imgs/notdiamond/evaluations.png) + \ No newline at end of file diff --git a/ja/weave/cookbooks/ocr-pipeline.mdx b/ja/weave/cookbooks/ocr-pipeline.mdx new file mode 100644 index 0000000000..969618f667 --- /dev/null +++ b/ja/weave/cookbooks/ocr-pipeline.mdx @@ -0,0 +1,320 @@ +--- +title: Weave を使用した コンピュータビジョン パイプライン のトレースと評価 +description: W&B Weave を使用して、コンピュータビジョン パイプライン のトレースと評価を行う方法について学びます。 +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/ocr-pipeline.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/ocr-pipeline.ipynb) + + +## 事前準備 + +開始する前に、必要なライブラリをインストールしてインポートし、W&B APIキーを取得して、 Weave プロジェクトを初期化します。 + +```python lines +# 必要な依存関係をインストール +!pip install openai weave -q + +import json +import os + +from google.colab import userdata +from openai import OpenAI + +import weave + +# APIキーの取得 +os.environ["OPENAI_API_KEY"] = userdata.get( + "OPENAI_API_KEY" +) # 左側のメニューから Colab の環境変数(secrets)としてキーを設定してください +os.environ["WANDB_API_KEY"] = userdata.get("WANDB_API_KEY") + +# プロジェクト名の設定 +# PROJECT の値を自身のプロジェクト名に置き換えてください +PROJECT = "vlm-handwritten-ner" + +# Weave プロジェクトを初期化 +weave.init(PROJECT) +``` + +## 1. Weave を使用したプロンプトの作成と反復 + +モデルにエンティティを適切に抽出させるためには、優れたプロンプトエンジニアリングが不可欠です。まず、画像データから何を抽出し、どのようにフォーマットするかをモデルに指示する基本的なプロンプトを作成します。次に、追跡と反復のためにそのプロンプトを Weave に保存します。 + +```python lines +# Weave を使用してプロンプトオブジェクトを作成 +prompt = """ +Extract all readable text from this image. Format the extracted entities as a valid JSON. +Do not return any extra text, just the JSON. Do not include ```json``` +Use the following format: +{"Patient Name": "James James","Date": "4/22/2025","Patient ID": "ZZZZZZZ123","Group Number": "3452542525"} +""" +system_prompt = weave.StringPrompt(prompt) +# プロンプトを Weave にパブリッシュ +weave.publish(system_prompt, name="NER-prompt") +``` + +次に、出力の誤りを減らすために、より多くの指示とバリデーションルールを追加してプロンプトを改善します。 + +```python lines +better_prompt = """ +You are a precision OCR assistant. Given an image of patient information, extract exactly these fields into a single JSON object—and nothing else: + +- Patient Name +- Date (MM/DD/YYYY) +- Patient ID +- Group Number + +Validation rules: +1. Date must match MM/DD/YY; if not, set Date to "". +2. Patient ID must be alphanumeric; if unreadable, set to "". +3. Always zero-pad months and days (e.g. "04/07/25"). +4. Omit any markup, commentary, or code fences. +5. Return strictly valid JSON with only those four keys. + +Do not return any extra text, just the JSON. Do not include ```json``` +Example output: +{"Patient Name":"James James","Date":"04/22/25","Patient ID":"ZZZZZZZ123","Group Number":"3452542525"} +""" +# プロンプトを編集 +system_prompt = weave.StringPrompt(better_prompt) +# 編集したプロンプトを Weave にパブリッシュ +weave.publish(system_prompt, name="NER-prompt") +``` + +## 2. データセットの取得 + +次に、OCR パイプラインの入力として使用する手書きメモの Datasets を取得します。 + +データセット内の画像はすでに `base64` エンコードされているため、データは前処理なしで LLM で使用できます。 + +```python lines +# 以下の Weave プロジェクトからデータセットを取得 +dataset = weave.ref( + "weave://wandb-smle/vlm-handwritten-ner/object/NER-eval-dataset:G8MEkqWBtvIxPYAY23sXLvqp8JKZ37Cj0PgcG19dGjw" +).get() + +# データセット内の特定のサンプルにアクセス +example_image = dataset.rows[3]["image_base64"] + +# example_image を表示 +from IPython.display import HTML, display + +html = f'' +display(HTML(html)) +``` + +## 3. NER パイプラインの構築 + +次に、NER パイプラインを構築します。パイプラインは 2 つの関数で構成されます。 + +1. `encode_image` 関数:データセットから PIL 画像を受け取り、VLM に渡すことができる画像の `base64` エンコードされた文字列表現を返します。 +2. `extract_named_entities_from_image` 関数:画像とシステムプロンプトを受け取り、システムプロンプトの指示に従ってその画像から抽出されたエンティティを返します。 + +```python lines +# GPT-4-Vision を使用したトレース可能な関数 +def extract_named_entities_from_image(image_base64) -> dict: + # LLM クライアントの初期化 + client = OpenAI() + + # 指示プロンプトの設定 + # オプションとして、Weave に保存されたプロンプトを使用することもできます:weave.ref("weave://wandb-smle/vlm-handwritten-ner/object/NER-prompt:FmCv4xS3RFU21wmNHsIYUFal3cxjtAkegz2ylM25iB8").get().content.strip() + prompt = better_prompt + + response = client.responses.create( + model="gpt-4.1", + input=[ + { + "role": "user", + "content": [ + {"type": "input_text", "text": prompt}, + { + "type": "input_image", + "image_url": image_base64, + }, + ], + } + ], + ) + + return response.output_text +``` + +次に、以下の処理を行う `named_entity_recognation` という関数を作成します。 +- 画像データを NER パイプラインに渡す +- 正しくフォーマットされた JSON 形式の結果を返す + +[`@weave.op()` デコレータ](/weave/reference/python-sdk/trace/op) を使用して、W&B UI で関数の実行を自動的に追跡し、トレースします。 + +`named_entity_recognation` が実行されるたびに、詳細なトレース結果が Weave UI で確認できます。トレースを表示するには、 Weave プロジェクトの **Traces** タブに移動してください。 + +```python lines +# 評価用の NER 関数 +@weave.op() +def named_entity_recognation(image_base64, id): + result = {} + try: + # 1) Vision op を呼び出し、JSON 文字列を取得 + output_text = extract_named_entities_from_image(image_base64) + + # 2) JSON を 1 回だけパース + result = json.loads(output_text) + + print(f"Processed: {str(id)}") + except Exception as e: + print(f"Failed to process {str(id)}: {e}") + return result +``` + +最後に、データセットに対してパイプラインを実行し、結果を確認します。 + +以下のコードはデータセットをループし、結果をローカルファイル `processing_results.json` に保存します。結果は Weave UI でも確認できます。 + +```python lines +# 結果の出力 +results = [] + +# データセット内のすべての画像をループ +for row in dataset.rows: + result = named_entity_recognation(row["image_base64"], str(row["id"])) + result["image_id"] = str(row["id"]) + results.append(result) + +# すべての結果を JSON ファイルに保存 +output_file = "processing_results.json" +with open(output_file, "w") as f: + json.dump(results, f, indent=2) + +print(f"Results saved to: {output_file}") +``` + +Weave UI の **Traces** テーブルには、以下のような内容が表示されます。 + + +![Screenshot 2025-05-02 at 12.03.00 PM.png](/media/ocr-pipeline/screenshot-2025-05-02-at-120300-pm.png) + + +## 4. Weave を使用したパイプラインの評価 + +VLM を使用して NER を実行するパイプラインを作成できたので、 Weave を使用して体系的に評価し、そのパフォーマンスを確認できます。 Weave での Evaluations については、[Evaluations の概要](/weave/guides/core-types/evaluations) で詳しく学べます。 + +Weave Evaluation の基本要素は [Scorers](/weave/guides/evaluation/scorers) です。Scorers は AI の出力を評価し、評価メトリクスを返すために使用されます。AI の出力を受け取り、分析して、結果の辞書を返します。Scorers は必要に応じて入力データを参照として使用でき、説明や評価の推論などの追加情報を出力することもできます。 + +このセクションでは、パイプラインを評価するために 2 つの Scorers を作成します。 +1. プログラムによる Scorer +2. LLM-as-a-judge Scorer + +### プログラムによる Scorer + +プログラムによる Scorer である `check_for_missing_fields_programatically` は、モデルの出力(`named_entity_recognition` 関数の出力)を受け取り、結果の中でどの `keys` が欠落しているか、または空であるかを特定します。 + +このチェックは、モデルがいずれかのフィールドをキャプチャし損ねたサンプルを特定するのに適しています。 + +```python lines +# Scorer の実行を追跡するために weave.op() を追加 +@weave.op() +def check_for_missing_fields_programatically(model_output): + # すべてのエントリに必要なキー + required_fields = {"Patient Name", "Date", "Patient ID", "Group Number"} + + for key in required_fields: + if ( + key not in model_output + or model_output[key] is None + or str(model_output[key]).strip() == "" + ): + return False # このエントリには欠落しているか空のフィールドがある + + return True # すべての必須フィールドが存在し、空ではない +``` + +### LLM-as-a-judge Scorer + +評価の次のステップでは、画像データとモデルの出力の両方を提供し、評価が実際の NER パフォーマンスを反映するようにします。モデルの出力だけでなく、画像の内容も明示的に参照されます。 + +このステップで使用される Scorer `check_for_missing_fields_with_llm` は、LLM(具体的には OpenAI の `gpt-4o`)を使用してスコアリングを実行します。`eval_prompt` の内容で指定されているように、`check_for_missing_fields_with_llm` は `Boolean` 値を出力します。すべてのフィールドが画像の情報と一致し、フォーマットが正しい場合、Scorer は `true` を返します。フィールドが欠落、空、不正確、または不一致である場合、結果は `false` になり、Scorer は問題を説明するメッセージも返します。 + +```python lines +# LLM-as-a-judge 用のシステムプロンプト + +eval_prompt = """ +You are an OCR validation system. Your role is to assess whether the structured text extracted from an image accurately reflects the information in that image. +Only validate the structured text and use the image as your source of truth. + +Expected input text format: +{"Patient Name": "First Last", "Date": "04/23/25", "Patient ID": "131313JJH", "Group Number": "35453453"} + +Evaluation criteria: +- All four fields must be present. +- No field should be empty or contain placeholder/malformed values. +- The "Date" should be in MM/DD/YY format (e.g., "04/07/25") (zero padding the date is allowed) + +Scoring: +- Return: {"Correct": true, "Reason": ""} if **all fields** match the information in the image and formatting is correct. +- Return: {"Correct": false, "Reason": "EXPLANATION"} if **any** field is missing, empty, incorrect, or mismatched. + +Output requirements: +- Respond with a valid JSON object only. +- "Correct" must be a JSON boolean: true or false (not a string or number). +- "Reason" must be a short, specific string indicating all the problem — e.g., "Patient Name mismatch", "Date not zero-padded", or "Missing Group Number". +- Do not return any additional explanation or formatting. + +Your response must be exactly one of the following: +{"Correct": true, "Reason": null} +OR +{"Correct": false, "Reason": "EXPLANATION_HERE"} +""" + +# Scorer の実行を追跡するために weave.op() を追加 +@weave.op() +def check_for_missing_fields_with_llm(model_output, image_base64): + client = OpenAI() + response = client.chat.completions.create( + model="gpt-4o", + messages=[ + {"role": "developer", "content": [{"text": eval_prompt, "type": "text"}]}, + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { + "url": image_base64, + }, + }, + {"type": "text", "text": str(model_output)}, + ], + }, + ], + response_format={"type": "json_object"}, + ) + response = json.loads(response.choices[0].message.content) + return response +``` + +## 5. Evaluation の実行 + +最後に、渡された `dataset` を自動的にループし、結果をまとめて Weave UI にログ記録する評価コールを定義します。 + +以下のコードは評価を開始し、NER パイプラインからのすべての出力に対して 2 つの Scorers を適用します。結果は Weave UI の **Evals** タブで確認できます。 + +```python lines +evaluation = weave.Evaluation( + dataset=dataset, + scorers=[ + check_for_missing_fields_with_llm, + check_for_missing_fields_programatically, + ], + name="Evaluate_4.1_NER", +) + +print(await evaluation.evaluate(named_entity_recognation)) +``` + +上記のコードを実行すると、 Weave UI の評価テーブルへのリンクが生成されます。リンクを辿って結果を表示し、選択したモデル、プロンプト、データセットにわたるパイプラインのさまざまな反復を比較してください。 Weave UI は、チームのために以下のような可視化を自動的に作成します。 + + +![Screenshot 2025-05-02 at 12.26.15 PM.png](/media/ocr-pipeline/screenshot-2025-05-02-at-122615-pm.png) + \ No newline at end of file diff --git a/ja/weave/cookbooks/online_monitoring.mdx b/ja/weave/cookbooks/online_monitoring.mdx new file mode 100644 index 0000000000..aab9fcac47 --- /dev/null +++ b/ja/weave/cookbooks/online_monitoring.mdx @@ -0,0 +1,240 @@ +--- +title: オンライン・モニタリング +description: W&B Weave を使用したオンラインモニタリング方法について学ぶ +--- + + +これはインタラクティブな ノートブック です。ローカルで実行するか、以下のリンクを使用できます: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/online_monitoring.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/online_monitoring.ipynb) + + +# Weave との統合:プロダクションダッシュボード + +GenAI ツールキットの環境は急速に進化しており、新しい フレームワーク、ツール、アプリケーション が常に登場しています。Weave は、GenAI のモニタリングと評価に関するあらゆるニーズに応えるワンストップショップを目指しています。これは同時に、既存の プラットフォーム と統合したり、プロジェクト や組織の特定のニーズに合わせて Weave を拡張したりする必要がある場合があることも意味しています。 + +このクックブックでは、Weave の強力な API と関数を活用して、Weave の トレース ビューの拡張として、プロダクションモニタリング用のカスタム ダッシュボード を作成する方法をデモします。以下の点に焦点を当てます: + +- Weave から トレース、コスト、フィードバック、その他の メトリクス を取得する +- ユーザーフィードバックとコスト分布の集計ビューを作成する +- トークン使用量とレイテンシの経時変化を 可視化 する + +streamlit をインストールし、[このプロダクションダッシュボードスクリプト](https://github.com/NiWaRe/agent-dev-collection) を実行することで、自身の Weave プロジェクト で ダッシュボード を試すことができます! + +Example Production Dashboard with Weave + +# 1. セットアップ + +このチュートリアルに沿って進めるには、以下のパッケージをインストールするだけです: + +```python lines +!pip install streamlit pandas plotly weave +``` + +# 2. 実装 + +## 2.1 Weave クライアントの初期化とコストの定義 + +まず、Weave クライアントを初期化し、各 モデル のコストを追加する関数を設定します。 + +- 多くの標準的な モデル の標準コストが含まれていますが、独自のカスタムコストやカスタム モデル を簡単に追加することもできます。以下では、いくつかの モデル にカスタムコストを追加し、残りは標準コストを使用する方法を示します。 +- コストは、Weave でトラッキングされた各コール(call)のトークンに基づいて計算されます。多くの LLM ベンダーライブラリでは、トークン使用量を自動的にトラッキングしますが、任意のコールに対してカスタムのトークン数を返すことも可能です。カスタム モデル のトークンカウントとコスト計算の定義方法については、こちらのクックブックを参照してください - [custom cost cookbook](/weave/cookbooks/custom_model_cost#setting-up-a-model-with-weave) + +```python lines +PROJECT_NAME = "wandb-smle/weave-cookboook-demo" + +import weave + +MODEL_NAMES = [ + # モデル名, プロンプトコスト, コンプリーションコスト + ("gpt-4o-2024-05-13", 0.03, 0.06), + ("gpt-4o-mini-2024-07-18", 0.03, 0.06), + ("gemini/gemini-1.5-flash", 0.00025, 0.0005), + ("gpt-4o-mini", 0.03, 0.06), + ("gpt-4-turbo", 0.03, 0.06), + ("claude-3-haiku-20240307", 0.01, 0.03), + ("gpt-4o", 0.03, 0.06), +] + +def init_weave_client(project_name): + try: + client = weave.init(project_name) + for model, prompt_cost, completion_cost in MODEL_NAMES: + client.add_cost( + llm_id=model, + prompt_token_cost=prompt_cost, + completion_token_cost=completion_cost, + ) + except Exception as e: + print(f"Failed to initialize Weave client for project '{project_name}': {e}") + return None + else: + return client + +client = init_weave_client(PROJECT_NAME) +``` + +## 2.2 Weave からのコールデータの取得 + +Weave からコール(call)データを取得するには、2つのオプションがあります: + +1. コールごとにデータを取得する +2. ハイレベルな API を使用する + +### 2.2.1 コールごとにデータを取得する + +Weave から データ にアクセスする最初のオプションは、フィルタリングされたコールのリストを取得し、必要なデータをコールごとに抽出することです。そのためには、`calls_query_stream` API を使用して Weave からコールの ログ データを取得できます: + +- `calls_query_stream` API: Weave からコールの ログ データを取得できる API です。 +- `filter` 辞書: コール データを取得するためのフィルタ パラメータ が含まれます。詳細は [こちら](/weave/reference/python-sdk/trace_server/trace_server_interface#class-callschema) を参照してください。 +- `expand_columns` リスト: コール データ内で展開するカラムを指定します。 +- `sort_by` リスト: コール データのソート パラメータ を含みます。 +- `include_costs` ブール値: コール データにコストを含めるかどうかを指定します。 +- `include_feedback` ブール値: コール データにフィードバックを含めるかどうかを指定します。 + +```python lines +import itertools +from datetime import datetime, timedelta + +import pandas as pd + +def fetch_calls(client, project_id, start_time, trace_roots_only, limit): + filter_params = { + "project_id": project_id, + "filter": {"started_at": start_time, "trace_roots_only": trace_roots_only}, + "expand_columns": ["inputs.example", "inputs.model"], + "sort_by": [{"field": "started_at", "direction": "desc"}], + "include_costs": True, + "include_feedback": True, + } + try: + calls_stream = client.server.calls_query_stream(filter_params) + calls = list( + itertools.islice(calls_stream, limit) + ) # 取得するコール数が多すぎる場合に備えて制限をかける + print(f"Fetched {len(calls)} calls.") + except Exception as e: + print(f"Error fetching calls: {e}") + return [] + else: + return calls + +calls = fetch_calls(client, PROJECT_NAME, datetime.now() - timedelta(days=1), True, 100) + +# 生データは Call オブジェクトのリストです +pd.DataFrame([call.dict() for call in calls]).head(3) +``` + +Weave からの戻り値を使用すると、コールの プロセッシング は非常に簡単です。関連する 情報を抽出し、辞書 のリストに保存します。その後、辞書 のリストを pandas の DataFrame に変換して返します。 + +```python lines +import json +from datetime import datetime + +import pandas as pd + +def process_calls(calls): + records = [] + for call in calls: + feedback = call.summary.get("weave", {}).get("feedback", []) + thumbs_up = sum( + 1 + for item in feedback + if isinstance(item, dict) and item.get("payload", {}).get("emoji") == "👍" + ) + thumbs_down = sum( + 1 + for item in feedback + if isinstance(item, dict) and item.get("payload", {}).get("emoji") == "👎" + ) + latency = call.summary.get("weave", {}).get("latency_ms", 0) + + records.append( + { + "Call ID": call.id, + "Trace ID": call.trace_id, # トレースを取得するために使用できるユニークな ID + "Display Name": call.display_name, # UIやプログラムで設定可能なオプション名 + "Latency (ms)": latency, + "Thumbs Up": thumbs_up, + "Thumbs Down": thumbs_down, + "Started At": pd.to_datetime(getattr(call, "started_at", datetime.min)), + "Inputs": json.dumps(call.inputs, default=str), + "Outputs": json.dumps(call.output, default=str), + } + ) + return pd.DataFrame(records) + +df_calls = process_calls(calls) +df_calls.head(3) +``` + +### 2.2.2 ハイレベルな API の使用 + +すべてのコールを個別に調べる代わりに、Weave は モデル のコスト、フィードバック、およびその他の メトリクス に直接 アクセス するためのハイレベルな API も提供しています。 +例えば、コストについては、`query_costs` API を使用して、プロジェクト で使用されているすべての LLM のコストを取得できます。 + +```python lines +# コスト API を使用してコストを取得 +costs = client.query_costs() +df_costs = pd.DataFrame([cost.dict() for cost in costs]) +df_costs["total_cost"] = ( + df_costs["prompt_token_cost"] + df_costs["completion_token_cost"] +) + +# 各 llm_id に対して最初の1行のみを表示 +df_costs +``` + +## 2.4 インプットの収集と可視化の生成 + +次に、plotly を使用して 可視化 を生成できます。これは最も基本的な ダッシュボード ですが、好みに合わせてカスタマイズできます!より複雑な例については、[こちら](https://github.com/NiWaRe/knowledge-worker-weave/blob/master/prod_dashboard.py) の Streamlit の例を確認してください。 + +```python lines +import plotly.express as px +import plotly.graph_objects as go + +def plot_feedback_pie_chart(thumbs_up, thumbs_down): + fig = go.Figure( + data=[ + go.Pie( + labels=["Thumbs Up", "Thumbs Down"], + values=[thumbs_up, thumbs_down], + marker={"colors": ["#66b3ff", "#ff9999"]}, + hole=0.3, + ) + ] + ) + fig.update_traces(textinfo="percent+label", hoverinfo="label+percent") + fig.update_layout(showlegend=False, title="Feedback Summary") + return fig + +def plot_model_cost_distribution(df): + fig = px.bar( + df, + x="llm_id", + y="total_cost", + color="llm_id", + title="Cost Distribution by Model", + ) + fig.update_layout(xaxis_title="Model", yaxis_title="Cost (USD)") + return fig + +# すべてのプロットについてはソースコードを参照してください + +plot_feedback_pie_chart(df_calls["Thumbs Up"].sum(), df_calls["Thumbs Down"].sum()) + +plot_model_cost_distribution(df_costs) +``` + +# まとめ + +このクックブックでは、Weave の API と関数を使用してカスタムのプロダクションモニタリング ダッシュボード を作成する方法をデモしました。Weave は現在、データの簡単な入力のための迅速な インテグレーション と、カスタム プロセス のためのデータ抽出に重点を置いています。 + +- **データ入力:** + - [@weave-op()](/weave/quickstart#2-log-a-trace-to-a-new-project) デコレータによる フレームワーク に依存しない トレース と、CSV からのコールのインポート機能(関連する [import cookbook](/weave/cookbooks/import_from_csv) を参照)。 + - 様々な プログラミングフレームワーク や言語から Weave に ログ を記録するためのサービス API エンドポイント。詳細は [こちら](https://docs.wandb.ai/weave/reference/service-api/calls/call-start) を参照。 +- **データ出力:** + - CSV、TSV、JSONL、JSON 形式での簡単なデータダウンロード。詳細は [こちら](/weave/reference/service-api) を参照。 + - プログラムによる データアクセス を使用した簡単なエクスポート。このクックブックで説明されているエクスポート パネル の "Use Python" セクションを参照してください。詳細は [こちら](/weave/guides/tracking/tracing#querying-and-exporting-calls) を参照してください。 + +このカスタム ダッシュボード は Weave ネイティブの トレース ビューを拡張し、プロダクション環境における LLM アプリケーション のカスタマイズされたモニタリングを可能にします。より複雑な ダッシュボード を見たい場合は、自身の Weave プロジェクト の URL を追加できる [このリポジトリ](https://github.com/NiWaRe/agent-dev-collection) の Streamlit の例をチェックしてください。 \ No newline at end of file diff --git a/ja/weave/cookbooks/pii.mdx b/ja/weave/cookbooks/pii.mdx new file mode 100644 index 0000000000..e3369a183d --- /dev/null +++ b/ja/weave/cookbooks/pii.mdx @@ -0,0 +1,753 @@ +--- +title: PII データの取り扱い +description: W&B Weave で PII データ (個人情報) を処理する方法について説明します +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/pii.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/pii.ipynb) + + +## + +# PII データで Weave を使用する方法 + +このガイドでは、個人識別情報(PII)データのプライバシーを確保しながら W&B Weave を使用する方法を学びます。このガイドでは、PII データを特定、墨消し(redact)、および匿名化するための以下の手法をデモします: + +1. **正規表現** を使用して PII データを特定し、墨消しする。 +2. **Microsoft の [Presidio](https://microsoft.github.io/presidio/)**:Python ベースのデータ保護 SDK。このツールは墨消しおよび置換機能を提供します。 +3. **[Faker](https://faker.readthedocs.io/en/master/)**:偽のデータを生成するための Python ライブラリ。Presidio と組み合わせて PII データを匿名化します。 + +さらに、_`weave.op` の入力/出力ログのカスタマイズ_ と _`autopatch_settings`_ を使用して、PII の墨消しと匿名化をワークフローに統合する方法についても学びます。詳細については、[ログに記録される入力と出力のカスタマイズ](/weave/guides/tracking/ops/#customize-logged-inputs-and-outputs) を参照してください。 + +開始するには、以下を行ってください: + +1. [概要](#overview) セクションを確認する。 +2. [事前準備](#prerequisites) を完了する。 +3. PII データの特定、墨消し、匿名化のための [利用可能な手法](#redaction-methods-overview) を確認する。 +4. [Weave の呼び出しにメソッドを適用する](#apply-the-methods-to-weave-calls)。 + +## 概要 + +以下のセクションでは、`weave.op` を使用した入力と出力のログ記録の概要、および Weave で PII データを扱う際のベストプラクティスについて説明します。 + +### `weave.op` を使用した入力と出力のログ記録のカスタマイズ + +Weave Ops では、入力および出力の後処理関数を定義できます。これらの関数を使用することで、LLM 呼び出しに渡されるデータや Weave にログ記録されるデータを変更できます。 + +以下の例では、2 つの後処理関数が定義され、`weave.op()` の引数として渡されています。 + +```python lines +from dataclasses import dataclass +from typing import Any + +import weave + +# 入力用ラッパークラス +@dataclass +class CustomObject: + x: int + secret_password: str + +# まず、入力と出力の後処理用関数を定義します: +def postprocess_inputs(inputs: dict[str, Any]) -> dict[str, Any]: + return {k:v for k,v in inputs.items() if k != "hide_me"} + +def postprocess_output(output: CustomObject) -> CustomObject: + return CustomObject(x=output.x, secret_password="REDACTED") + +# 次に、@weave.op デコレータを使用する際に、これらの処理関数をデコレータの引数として渡します: +@weave.op( + postprocess_inputs=postprocess_inputs, + postprocess_output=postprocess_output, +) +def some_llm_call(a: int, hide_me: str) -> CustomObject: + return CustomObject(x=a, secret_password=hide_me) +``` + +### PII データで Weave を使用するためのベストプラクティス + +PII データで Weave を使用する前に、以下のベストプラクティスを確認してください。 + +#### テスト中 + +- 匿名化されたデータをログに記録し、PII 検出を確認する +- PII の取り扱いプロセスを Weave Traces で追跡する +- 実際の PII を公開せずに匿名化のパフォーマンスを測定する + +#### プロダクション環境 + +- 生の PII を決してログに記録しない +- ログを記録する前に機密フィールドを暗号化する + +#### 暗号化のヒント + +- 後で復号する必要があるデータには可逆暗号を使用する +- 元に戻す必要のない一意の ID には一方向ハッシュを適用する +- 暗号化したまま分析が必要なデータには、専用の暗号化を検討する + +## 事前準備 + +1. まず、必要なパッケージをインストールします。 + +```python lines +%%capture +# @title 必要な Python パッケージ: +!pip install cryptography +!pip install presidio_analyzer +!pip install presidio_anonymizer +!python -m spacy download en_core_web_lg # Presidio は spacy NLP エンジンを使用します +!pip install Faker # Faker を使用して PII データを偽データに置き換えます +!pip install weave # Traces を活用するため +!pip install set-env-colab-kaggle-dotenv -q # 環境変数用 +!pip install anthropic # sonnet を使用するため +!pip install cryptography # データを暗号化するため +``` + +2. 以下のサイトで APIキー を作成します: + + - [W&B ユーザー設定](https://wandb.ai/settings) + - [Anthropic Console](https://console.anthropic.com/settings/keys) + +```python lines +%%capture +# @title API キーを正しく設定します +# 使用方法については https://pypi.org/project/set-env-colab-kaggle-dotenv/ を参照してください。 + +from set_env import set_env + +_ = set_env("ANTHROPIC_API_KEY") +_ = set_env("WANDB_API_KEY") +``` + +3. Weave プロジェクトを初期化します。 + +```python lines +import weave + +# 新しい Weave プロジェクトを開始します +WEAVE_PROJECT = "pii_cookbook" +weave.init(WEAVE_PROJECT) +``` + +4. 10 個のテキストブロックを含むデモ PII データセットをロードします。 + +```python lines +import requests + +url = "https://raw.githubusercontent.com/wandb/weave/master/docs/notebooks/10_pii_data.json" +response = requests.get(url) +pii_data = response.json() + +print('PII データの最初のサンプル: "' + pii_data[0]["text"] + '"') +``` + +## 墨消しメソッドの概要 + +[セットアップ](#setup) が完了したら、次のことができます。 + +PII データを検出して保護するために、以下の方法を用いて PII データを特定して墨消しし、オプションで匿名化します。 + +1. **正規表現** を使用して PII データを特定し、墨消しする。 +2. **Microsoft [Presidio](https://microsoft.github.io/presidio/)**:墨消しおよび置換機能を提供する Python ベースのデータ保護 SDK。 +3. **[Faker](https://faker.readthedocs.io/en/master/)**:偽データを生成するための Python ライブラリ。 + +### メソッド 1: 正規表現を使用したフィルタリング + +[正規表現 (regex)](https://docs.python.org/3/library/re.html) は、PII データを特定して墨消しするための最もシンプルな方法です。正規表現を使用すると、電話番号、メールアドレス、社会保障番号などのさまざまな形式の機密情報に一致するパターンを定義できます。正規表現を使用することで、複雑な NLP 技術を必要とせずに、大量のテキストをスキャンして情報を置換または墨消しできます。 + +```python lines +import re + +# 正規表現を使用して PII データをクリーニングする関数を定義 +def redact_with_regex(text): + # 電話番号のパターン + # \b : 単語の境界 + # \d{3} : ちょうど3桁の数字 + # [-.]? : オプションのハイフンまたはドット + # \d{3} : さらに3桁の数字 + # [-.]? : オプションのハイフンまたはドット + # \d{4} : ちょうど4桁の数字 + # \b : 単語の境界 + text = re.sub(r"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b", "", text) + + # メールアドレスのパターン + # \b : 単語の境界 + # [A-Za-z0-9._%+-]+ : メールのユーザー名に使用できる1文字以上の文字 + # @ : 文字通りの @ 記号 + # [A-Za-z0-9.-]+ : ドメイン名に使用できる1文字以上の文字 + # \. : 文字通りのドット + # [A-Z|a-z]{2,} : 2文字以上の英字(TLD) + # \b : 単語の境界 + text = re.sub( + r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", "", text + ) + + # SSN(社会保障番号)のパターン + # \b : 単語の境界 + # \d{3} : ちょうど3桁の数字 + # - : 文字通りのハイフン + # \d{2} : ちょうど2桁の数字 + # - : 文字通りのハイフン + # \d{4} : ちょうど4桁の数字 + # \b : 単語の境界 + text = re.sub(r"\b\d{3}-\d{2}-\d{4}\b", "", text) + + # シンプルな名前のパターン(これは包括的ではありません) + # \b : 単語の境界 + # [A-Z] : 1つの大文字 + # [a-z]+ : 1文字以上の小文字 + # \s : 1つの空白文字 + # [A-Z] : 1つの大文字 + # [a-z]+ : 1文字以上の小文字 + # \b : 単語の境界 + text = re.sub(r"\b[A-Z][a-z]+ [A-Z][a-z]+\b", "", text) + + return text +``` + +サンプルテキストで関数をテストしてみましょう: + +```python lines +# 関数のテスト +test_text = "My name is John Doe, my email is john.doe@example.com, my phone is 123-456-7890, and my SSN is 123-45-6789." +cleaned_text = redact_with_regex(test_text) +print(f"Raw text:\n\t{test_text}") +print(f"Redacted text:\n\t{cleaned_text}") +``` + +### メソッド 2: Microsoft Presidio を使用した墨消し + +次のメソッドは、[Microsoft Presidio](https://microsoft.github.io/presidio/) を使用して PII データを完全に削除する方法です。Presidio は PII を墨消しし、PII タイプを表すプレースホルダーに置き換えます。例えば、Presidio は `"My name is Alex"` の `Alex` を `` に置き換えます。 + +Presidio には、[一般的なエンティティ](https://microsoft.github.io/presidio/supported_entities/) のサポートが組み込まれています。以下の例では、`PHONE_NUMBER`、`PERSON`、`LOCATION`、`EMAIL_ADDRESS`、または `US_SSN` であるすべてのエンティティを墨消しします。Presidio のプロセスは関数にカプセル化されています。 + +```python lines +from presidio_analyzer import AnalyzerEngine +from presidio_anonymizer import AnonymizerEngine + +# 分析器(Analyzer)をセットアップ。NLPモジュール(デフォルトはspaCyモデル)や他のPII認識器をロードします。 +analyzer = AnalyzerEngine() + +# 匿名化器(Anonymizer)をセットアップ。分析結果を使用してテキストを匿名化します。 +anonymizer = AnonymizerEngine() + +# Presidio の墨消しプロセスを関数にカプセル化 +def redact_with_presidio(text): + # テキストを分析して PII データを特定 + results = analyzer.analyze( + text=text, + entities=["PHONE_NUMBER", "PERSON", "LOCATION", "EMAIL_ADDRESS", "US_SSN"], + language="en", + ) + # 特定された PII データを匿名化 + anonymized_text = anonymizer.anonymize(text=text, analyzer_results=results) + return anonymized_text.text +``` + +サンプルテキストで関数をテストしてみましょう: + +```python lines +text = "My phone number is 212-555-5555 and my name is alex" + +# 関数のテスト +anonymized_text = redact_with_presidio(text) + +print(f"Raw text:\n\t{text}") +print(f"Redacted text:\n\t{anonymized_text}") +``` + +### メソッド 3: Faker と Presidio を使用した置換による匿名化 + +テキストを墨消しする代わりに、MS Presidio を使用して名前や電話番号などの PII を [Faker](https://faker.readthedocs.io/en/master/) Python ライブラリで生成された偽データに交換することで匿名化できます。例えば、次のようなデータがあるとします: + +`"My name is Raphael and I like to fish. My phone number is 212-555-5555"` + +Presidio と Faker を使用して処理されると、次のようになります: + +`"My name is Katherine Dixon and I like to fish. My phone number is 667.431.7379"` + +Presidio と Faker を効果的に組み合わせて使用するには、カスタムオペレーターへの参照を提供する必要があります。これらのオペレーターは、PII を偽データに交換する役割を担う Faker 関数を Presidio に指示します。 + +```python lines +from faker import Faker +from presidio_anonymizer import AnonymizerEngine +from presidio_anonymizer.entities import OperatorConfig + +fake = Faker() + +# Faker 関数を作成(値を受け取る必要があることに注意) +def fake_name(x): + return fake.name() + +def fake_number(x): + return fake.phone_number() + +# PERSON および PHONE_NUMBER エンティティ用のカスタムオペレーターを作成 +operators = { + "PERSON": OperatorConfig("custom", {"lambda": fake_name}), + "PHONE_NUMBER": OperatorConfig("custom", {"lambda": fake_number}), +} + +text_to_anonymize = ( + "My name is Raphael and I like to fish. My phone number is 212-555-5555" +) + +# 分析器の出力 +analyzer_results = analyzer.analyze( + text=text_to_anonymize, entities=["PHONE_NUMBER", "PERSON"], language="en" +) + +anonymizer = AnonymizerEngine() + +# 上記のオペレーターを匿名化器に渡すのを忘れないでください +anonymized_results = anonymizer.anonymize( + text=text_to_anonymize, analyzer_results=analyzer_results, operators=operators +) + +print(f"Raw text:\n\t{text_to_anonymize}") +print(f"Anonymized text:\n\t{anonymized_results.text}") +``` + +コードを 1 つのクラスにまとめ、エンティティのリストを拡張して、以前に特定した追加のエンティティを含めましょう。 + +```python lines +from typing import ClassVar + +from faker import Faker +from presidio_anonymizer import AnonymizerEngine +from presidio_anonymizer.entities import OperatorConfig + +# Faker を拡張した偽データ生成用のカスタムクラス +class MyFaker(Faker): + # Faker 関数を作成(値を受け取る必要があることに注意) + def fake_address(self): + return fake.address() + + def fake_ssn(self): + return fake.ssn() + + def fake_name(self): + return fake.name() + + def fake_number(self): + return fake.phone_number() + + def fake_email(self): + return fake.email() + + # エンティティ用のカスタムオペレーターを作成 + operators: ClassVar[dict[str, OperatorConfig]] = { + "PERSON": OperatorConfig("custom", {"lambda": fake_name}), + "PHONE_NUMBER": OperatorConfig("custom", {"lambda": fake_number}), + "EMAIL_ADDRESS": OperatorConfig("custom", {"lambda": fake_email}), + "LOCATION": OperatorConfig("custom", {"lambda": fake_address}), + "US_SSN": OperatorConfig("custom", {"lambda": fake_ssn}), + } + + def redact_and_anonymize_with_faker(self, text): + anonymizer = AnonymizerEngine() + analyzer_results = analyzer.analyze( + text=text, + entities=["PHONE_NUMBER", "PERSON", "LOCATION", "EMAIL_ADDRESS", "US_SSN"], + language="en", + ) + anonymized_results = anonymizer.anonymize( + text=text, analyzer_results=analyzer_results, operators=self.operators + ) + return anonymized_results.text +``` + +サンプルテキストで関数をテストしてみましょう: + +```python lines +faker = MyFaker() +text_to_anonymize = ( + "My name is Raphael and I like to fish. My phone number is 212-555-5555" +) +anonymized_text = faker.redact_and_anonymize_with_faker(text_to_anonymize) + +print(f"Raw text:\n\t{text_to_anonymize}") +print(f"Anonymized text:\n\t{anonymized_text}") +``` + +### メソッド 4: `autopatch_settings` の使用 + +`autopatch_settings` を使用すると、サポートされている 1 つ以上の LLM インテグレーションに対して、初期化中に PII の処理を直接設定できます。この方法の利点は次のとおりです: + +1. PII 処理ロジックが初期化時に一元化およびスコープ定義されるため、カスタムロジックを散在させる必要がなくなります。 +2. 特定のインテグレーションに対して、PII 処理ワークフローをカスタマイズしたり、完全に無効にしたりできます。 + +`autopatch_settings` を使用して PII 処理を設定するには、サポートされている LLM インテグレーションのいずれかの `op_settings` 内で `postprocess_inputs` や `postprocess_output` を定義します。 + +```python lines + +def postprocess(inputs: dict) -> dict: + if "SENSITIVE_KEY" in inputs: + inputs["SENSITIVE_KEY"] = "REDACTED" + return inputs + +client = weave.init( + ..., + autopatch_settings={ + "openai": { + "op_settings": { + "postprocess_inputs": postprocess, + "postprocess_output": ..., + } + }, + "anthropic": { + "op_settings": { + "postprocess_inputs": ..., + "postprocess_output": ..., + } + } + }, +) +``` + +## Weave の呼び出しにメソッドを適用する + +以下の例では、PII の墨消しおよび匿名化メソッドを Weave Models に統合し、Weave Traces で結果を確認します。 + +まず、[Weave Model](https://wandb.github.io/weave/guides/core-types/models) を作成します。Weave Model は、設定、モデルの重み、およびモデルの動作を定義するコードなどの情報の組み合わせです。 + +モデルには、Anthropic API が呼び出される predict 関数を含めます。Anthropic の Claude Sonnet を使用して [Traces](https://wandb.github.io/weave/quickstart) を行いながらセンチメント分析を実行します。Claude Sonnet はテキストブロックを受け取り、_positive_、_negative_、または _neutral_ のいずれかのセンチメント分類を出力します。さらに、LLM に送信される前に PII データを墨消しまたは匿名化するための後処理関数を含めます。 + +このコードを実行すると、Weave プロジェクトページへのリンクと、実行した特定のトレース(LLM 呼び出し)へのリンクが表示されます。 + +### 正規表現メソッド + +最もシンプルなケースとして、正規表現を使用して元のテキストから PII データを特定して墨消しできます。 + +```python lines +import json +from typing import Any + +import anthropic + +import weave + +# モデルの予測用 Weave Op に対して、正規表現による墨消しを適用する入力後処理関数を定義します +def postprocess_inputs_regex(inputs: dict[str, Any]) -> dict: + inputs["text_block"] = redact_with_regex(inputs["text_block"]) + return inputs + +# Weave モデル / 予測関数 +class SentimentAnalysisRegexPiiModel(weave.Model): + model_name: str + system_prompt: str + temperature: int + + @weave.op( + postprocess_inputs=postprocess_inputs_regex, + ) + async def predict(self, text_block: str) -> dict: + client = anthropic.AsyncAnthropic() + response = await client.messages.create( + max_tokens=1024, + model=self.model_name, + system=self.system_prompt, + messages=[ + {"role": "user", "content": [{"type": "text", "text": text_block}]} + ], + ) + result = response.content[0].text + if result is None: + raise ValueError("No response from model") + parsed = json.loads(result) + return parsed + +# システムプロンプトを含む LLM モデルを作成します +model = SentimentAnalysisRegexPiiModel( + name="claude-3-sonnet", + model_name="claude-3-5-sonnet-20240620", + system_prompt='You are a Sentiment Analysis classifier. You will be classifying text based on their sentiment. Your input will be a block of text. You will answer with one the following rating option["positive", "negative", "neutral"]. Your answer should be one word in json format: {classification}. Ensure that it is valid JSON.', + temperature=0, +) + +print("Model: ", model) +# 各テキストブロックに対して、まず匿名化してから予測を行います +for entry in pii_data: + await model.predict(entry["text"]) +``` + +### Presidio 墨消しメソッド + +次に、Presidio を使用して元のテキストから PII データを特定して墨消しします。 + + +![](/media/pii/redact.png) + + +```python lines +from typing import Any + +import weave + +# モデルの予測用 Weave Op に対して、Presidio による墨消しを適用する入力後処理関数を定義します +def postprocess_inputs_presidio(inputs: dict[str, Any]) -> dict: + inputs["text_block"] = redact_with_presidio(inputs["text_block"]) + return inputs + +# Weave モデル / 予測関数 +class SentimentAnalysisPresidioPiiModel(weave.Model): + model_name: str + system_prompt: str + temperature: int + + @weave.op( + postprocess_inputs=postprocess_inputs_presidio, + ) + async def predict(self, text_block: str) -> dict: + client = anthropic.AsyncAnthropic() + response = await client.messages.create( + max_tokens=1024, + model=self.model_name, + system=self.system_prompt, + messages=[ + {"role": "user", "content": [{"type": "text", "text": text_block}]} + ], + ) + result = response.content[0].text + if result is None: + raise ValueError("No response from model") + parsed = json.loads(result) + return parsed + +# システムプロンプトを含む LLM モデルを作成します +model = SentimentAnalysisPresidioPiiModel( + name="claude-3-sonnet", + model_name="claude-3-5-sonnet-20240620", + system_prompt='You are a Sentiment Analysis classifier. You will be classifying text based on their sentiment. Your input will be a block of text. You will answer with one the following rating option["positive", "negative", "neutral"]. Your answer should be one word in json format: {classification}. Ensure that it is valid JSON.', + temperature=0, +) + +print("Model: ", model) +# 各テキストブロックに対して、まず匿名化してから予測を行います +for entry in pii_data: + await model.predict(entry["text"]) +``` + +### Faker と Presidio による置換メソッド + +この例では、Faker を使用して匿名化された置換用 PII データを生成し、Presidio を使用して元のテキスト内の PII データを特定して置換します。 + + +![](/media/pii/replace.png) + + +```python lines +from typing import Any + +import weave + +# モデルの予測用 Weave Op に対して、Faker による匿名化と Presidio による墨消しを適用する入力後処理関数を定義します +faker = MyFaker() + +def postprocess_inputs_faker(inputs: dict[str, Any]) -> dict: + inputs["text_block"] = faker.redact_and_anonymize_with_faker(inputs["text_block"]) + return inputs + +# Weave モデル / 予測関数 +class SentimentAnalysisFakerPiiModel(weave.Model): + model_name: str + system_prompt: str + temperature: int + + @weave.op( + postprocess_inputs=postprocess_inputs_faker, + ) + async def predict(self, text_block: str) -> dict: + client = anthropic.AsyncAnthropic() + response = await client.messages.create( + max_tokens=1024, + model=self.model_name, + system=self.system_prompt, + messages=[ + {"role": "user", "content": [{"type": "text", "text": text_block}]} + ], + ) + result = response.content[0].text + if result is None: + raise ValueError("No response from model") + parsed = json.loads(result) + return parsed + +# システムプロンプトを含む LLM モデルを作成します +model = SentimentAnalysisFakerPiiModel( + name="claude-3-sonnet", + model_name="claude-3-5-sonnet-20240620", + system_prompt='You are a Sentiment Analysis classifier. You will be classifying text based on their sentiment. Your input will be a block of text. You will answer with one the following rating option["positive", "negative", "neutral"]. Your answer should be one word in json format: {classification}. Ensure that it is valid JSON.', + temperature=0, +) + +print("Model: ", model) +# 各テキストブロックに対して、まず匿名化してから予測を行います +for entry in pii_data: + await model.predict(entry["text"]) +``` + +### `autopatch_settings` メソッド + +以下の例では、初期化時に `anthropic` の `postprocess_inputs` を `postprocess_inputs_regex()` 関数に設定しています。`postprocess_inputs_regex` 関数は、[メソッド 1: 正規表現を使用したフィルタリング](#method-1-regular-expression-filtering) で定義された `redact_with_regex` メソッドを適用します。これにより、すべての `anthropic` モデルへの入力すべてに対して `redact_with_regex` が適用されるようになります。 + +```python lines +from typing import Any + +import weave + +client = weave.init( + ..., + autopatch_settings={ + "anthropic": { + "op_settings": { + "postprocess_inputs": postprocess_inputs_regex, + } + } + }, +) + +# モデルの予測用 Weave Op に対して、正規表現による墨消しを適用する入力後処理関数を定義します +def postprocess_inputs_regex(inputs: dict[str, Any]) -> dict: + inputs["text_block"] = redact_with_regex(inputs["text_block"]) + return inputs + +# Weave モデル / 予測関数 +class SentimentAnalysisRegexPiiModel(weave.Model): + model_name: str + system_prompt: str + temperature: int + + async def predict(self, text_block: str) -> dict: + client = anthropic.AsyncAnthropic() + response = await client.messages.create( + max_tokens=1024, + model=self.model_name, + system=self.system_prompt, + messages=[ + {"role": "user", "content": [{"type": "text", "text": text_block}]} + ], + ) + result = response.content[0].text + if result is None: + raise ValueError("No response from model") + parsed = json.loads(result) + return parsed + +# システムプロンプトを含む LLM モデルを作成します +model = SentimentAnalysisRegexPiiModel( + name="claude-3-sonnet", + model_name="claude-3-5-sonnet-20240620", + system_prompt='You are a Sentiment Analysis classifier. You will be classifying text based on their sentiment. Your input will be a block of text. You will answer with one the following rating option["positive", "negative", "neutral"]. Your answer should be one word in json format: {classification}. Ensure that it is valid JSON.', + temperature=0, +) + +print("Model: ", model) +# 各テキストブロックに対して、まず匿名化してから予測を行います +for entry in pii_data: + await model.predict(entry["text"]) +``` + +### (オプション) データの暗号化 + + +![](/media/pii/encrypt.png) + + +PII の匿名化に加えて、cryptography ライブラリの [Fernet](https://cryptography.io/en/latest/fernet/) 対称暗号を使用してデータを暗号化することで、セキュリティレイヤーを追加できます。このアプローチにより、匿名化されたデータが傍受されたとしても、暗号化キーなしでは読み取れないことが保証されます。 + +```python lines +import os +from cryptography.fernet import Fernet +from pydantic import BaseModel, ValidationInfo, model_validator + +def get_fernet_key(): + # 環境変数にキーが存在するか確認 + key = os.environ.get('FERNET_KEY') + + if key is None: + # キーが存在しない場合は新しく生成 + key = Fernet.generate_key() + # 環境変数にキーを保存 + os.environ['FERNET_KEY'] = key.decode() + else: + # キーが存在する場合はバイト形式であることを確認 + key = key.encode() + + return key + +cipher_suite = Fernet(get_fernet_key()) + +class EncryptedSentimentAnalysisInput(BaseModel): + encrypted_text: str = None + + @model_validator(mode="before") + def encrypt_fields(cls, values): + if "text" in values and values["text"] is not None: + values["encrypted_text"] = cipher_suite.encrypt(values["text"].encode()).decode() + del values["text"] + return values + + @property + def text(self): + if self.encrypted_text: + return cipher_suite.decrypt(self.encrypted_text.encode()).decode() + return None + + @text.setter + def text(self, value): + self.encrypted_text = cipher_suite.encrypt(str(value).encode()).decode() + + @classmethod + def encrypt(cls, text: str): + return cls(text=text) + + def decrypt(self): + return self.text + +# 新しい EncryptedSentimentAnalysisInput を使用するように修正された sentiment_analysis_model +class sentiment_analysis_model(weave.Model): + model_name: str + system_prompt: str + temperature: int + + @weave.op() + async def predict(self, encrypted_input: EncryptedSentimentAnalysisInput) -> dict: + client = AsyncAnthropic() + + decrypted_text = encrypted_input.decrypt() # カスタムクラスを使用してテキストを復号します + + response = await client.messages.create( + max_tokens=1024, + model=self.model_name, + system=self.system_prompt, + messages=[ + { "role": "user", + "content":[ + { + "type": "text", + "text": decrypted_text + } + ] + } + ] + ) + result = response.content[0].text + if result is None: + raise ValueError("No response from model") + parsed = json.loads(result) + return parsed + +model = sentiment_analysis_model( + name="claude-3-sonnet", + model_name="claude-3-5-sonnet-20240620", + system_prompt="You are a Sentiment Analysis classifier. You will be classifying text based on their sentiment. Your input will be a block of text. You will answer with one the following rating option[\"positive\", \"negative\", \"neutral\"]. Your answer should one word in json format dict where the key is classification.", + temperature=0 +) + +for entry in pii_data: + encrypted_input = EncryptedSentimentAnalysisInput.encrypt(entry["text"]) + await model.predict(encrypted_input) +``` \ No newline at end of file diff --git a/ja/weave/cookbooks/scorers_as_guardrails.mdx b/ja/weave/cookbooks/scorers_as_guardrails.mdx new file mode 100644 index 0000000000..a1d2e76e01 --- /dev/null +++ b/ja/weave/cookbooks/scorers_as_guardrails.mdx @@ -0,0 +1,103 @@ +--- +title: ガードレールとしての Scorers +description: W&B Weave で scorer をガードレールとして使用する方法について学びます +--- + + +これは対話型の ノートブック です。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/scorers_as_guardrails.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/scorers_as_guardrails.ipynb) + + +# ガードレールとしての Scorers + +Weave の Scorers は、call のパフォーマンスを評価できる `score` メソッドを持つ特殊なクラスです。これらは、単純なルールから LLM を判定役(LLM-as-a-judge)とする複雑なものまで多岐にわたります。 + +この ノートブック では、LLM が有害なコンテンツや不適切なコンテンツを生成するのを防ぐためのガードレールとして、Scorers を使用する方法を詳しく見ていきます。 + +```python lines +%pip install weave --quiet +python +""" +Weave でガードレールを実装する方法を示す例。 +この例では、潜在的に有害またはネガティブな応答を防ぐための +シンプルなコンテンツ安全性チェッカーを示します。 +""" + +import weave + +# 分かりやすいプロジェクト名で Weave を初期化 +weave.init("content-safety-guardrails") + +class ContentSafetyScorer(weave.Scorer): + """指定されたフレーズの有無に基づいてコンテンツの安全性を評価する scorer。""" + + unsafe_phrases: list[str] + case_sensitive: bool = False + + @weave.op + def score(self, output: str) -> bool: + """ + 不適切なフレーズの有無に基づいて出力の安全性を評価します。 + + Args: + output: 評価対象のテキスト出力 + + Returns: + bool: 出力が安全な場合は True、安全でない場合は False + """ + normalized_output = output if self.case_sensitive else output.lower() + + for phrase in self.unsafe_phrases: + normalized_phrase = phrase if self.case_sensitive else phrase.lower() + if normalized_phrase in normalized_output: + return False + return True + +@weave.op +def generate_response(prompt: str) -> str: + """LLM の応答生成をシミュレートします。""" + if "test" in prompt.lower(): + return "I'm sorry, I cannot process that request." + elif "help" in prompt.lower(): + return "I'd be happy to help you with that!" + else: + return "Here's what you requested: " + prompt + +async def process_with_guardrail(prompt: str) -> str: + """ + コンテンツ安全性のガードレールを使用してユーザー入力を処理します。 + 安全な場合は応答を返し、安全でない場合はフォールバックメッセージを返します。 + """ + # 安全性 scorer を初期化 + safety_scorer = ContentSafetyScorer( + name="Content Safety Checker", + unsafe_phrases=["sorry", "cannot", "unable", "won't", "will not"], + ) + + # 応答を生成し、Call オブジェクトを取得 + response, call = generate_response.call(prompt) + + # 安全性スコアリングを適用 + evaluation = await call.apply_scorer(safety_scorer) + + # 安全性チェックに基づいて、応答またはフォールバックを返す + if evaluation.result: + return response + else: + return "I cannot provide that response." +python +"""ガードレールシステムの使用例。""" +test_prompts = [ + "Please help me with my homework", + "Can you run a test for me?", + "Tell me a joke", +] + +print("Testing content safety guardrails:\n") + +for prompt in test_prompts: + print(f"Input: '{prompt}'") + response = await process_with_guardrail(prompt) + print(f"Response: {response}\n") +``` \ No newline at end of file diff --git a/ja/weave/cookbooks/weave_via_service_api.mdx b/ja/weave/cookbooks/weave_via_service_api.mdx new file mode 100644 index 0000000000..702da33f87 --- /dev/null +++ b/ja/weave/cookbooks/weave_via_service_api.mdx @@ -0,0 +1,478 @@ +--- +title: Service API 経由の Weave +description: W&B Weave のサービス API を介して Weave を使用する方法について説明します。 +--- + + +これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください: +- [Google Colab で開く](https://colab.research.google.com/github/wandb/docs/blob/main/weave/cookbooks/source/weave_via_service_api.ipynb) +- [GitHub でソースを表示](https://github.com/wandb/docs/blob/main/weave/cookbooks/source/weave_via_service_api.ipynb) + + +# Service API を使用して Traces の ログ とクエリを行う + +このガイドでは、 Weave Service API を使用して Traces を ログ に記録する方法を学びます。具体的には、Service API を使用して以下の操作を行います。 + +1. [シンプルな LLM の呼び出しと応答のモックを作成し、 Weave に ログ を記録する。](#simple-trace) +2. [より複雑な LLM の呼び出しと応答のモックを作成し、 Weave に ログ を記録する。](#complex-trace) +3. [ログ に記録された Traces に対してサンプル検索クエリを実行する。](#run-a-lookup-query) + +> **ログに記録された Traces を表示する** +> +> このガイドの コード を実行した際に作成されたすべての Weave Traces は、 Weave プロジェクト(`team_id\project_id` で指定)の **Traces** タブに移動し、 Trace の名前を選択することで表示できます。 + +開始する前に、[事前準備](#prerequisites-set-variables-and-endpoints)を完了させてください。 + +## 事前準備:変数とエンドポイントの設定 + +以下の コード は、Service API への アクセス に使用される URL エンドポイントを設定します。 + +- [`https://trace.wandb.ai/call/start`](https://docs.wandb.ai/weave/reference/service-api/calls/call-start) +- [`https://trace.wandb.ai/call/end`](https://docs.wandb.ai/weave/reference/service-api/calls/call-end) +- [`https://trace.wandb.ai/calls/stream_query`](https://docs.wandb.ai/weave/reference/service-api/calls/calls-query-stream) + +さらに、以下の変数を設定する必要があります。 + +- `project_id`: Traces を ログ に記録したい W&B Projects の名前。 +- `team_id`: W&B の Teams 名。 +- `wandb_token`: あなたの [W&B APIキー](https://wandb.ai/settings)。 + +```python +import datetime +import json + +import requests + +# ヘッダーとURL +headers = {"Content-Type": "application/json"} +url_start = "https://trace.wandb.ai/call/start" +url_end = "https://trace.wandb.ai/call/end" +url_stream_query = "https://trace.wandb.ai/calls/stream_query" + +# W&B 変数 +team_id = "" +project_id = "" +wandb_token = "" +``` + +## シンプルな Trace +以下のセクションでは、シンプルな Trace の作成手順を説明します。 + +1. [シンプルな Trace を開始する](#start-a-simple-trace) +2. [シンプルな Trace を終了する](#end-a-simple-trace) + +### シンプルな Trace を開始する + +以下の コード は、サンプルの LLM 呼び出し `payload_start` を作成し、`url_start` エンドポイントを使用して Weave に ログ を記録します。`payload_start` オブジェクト は、`Why is the sky blue?`(なぜ空は青いの?)というクエリを用いた OpenAI の `gpt-4o` への呼び出しを模倣しています。 + +成功すると、この コード は Trace が開始されたことを示すメッセージを出力します。 + +``` +Call started. ID: 01939cdc-38d2-7d61-940d-dcca0a56c575, Trace ID: 01939cdc-38d2-7d61-940d-dcd0e76c5f34 +``` + +```python +## ------------ +## Trace を開始 +## ------------ +payload_start = { + "start": { + "project_id": f"{team_id}/{project_id}", + "op_name": "simple_trace", + "started_at": datetime.datetime.now().isoformat(), + "inputs": { + # 展開された Trace でチャット UI を生成するには、この "messages" スタイルを使用します。 + "messages": [{"role": "user", "content": "Why is the sky blue?"}], + "model": "gpt-4o", + }, + "attributes": {}, + } +} +response = requests.post( + url_start, headers=headers, json=payload_start, auth=("api", wandb_token) +) +if response.status_code == 200: + data = response.json() + call_id = data.get("id") + trace_id = data.get("trace_id") + print(f"Call started. ID: {call_id}, Trace ID: {trace_id}") +else: + print("Start request failed with status:", response.status_code) + print(response.text) + exit() +``` + +### シンプルな Trace を終了する + +シンプルな Trace を完了するために、以下の コード はサンプルの LLM 呼び出し `payload_end` を作成し、`url_end` エンドポイントを使用して Weave に ログ を記録します。`payload_end` オブジェクト は、クエリ `Why is the sky blue?` に対する OpenAI の `gpt-4o` からのレスポンスを模倣しています。この オブジェクト は、Weave ダッシュボード の Trace ビューで料金サマリー 情報 とチャットの完了内容が生成されるようにフォーマットされています。 + +成功すると、この コード は Trace が完了したことを示すメッセージを出力します。 + +``` +Call ended. +``` + +```python +## ------------ +## Trace を終了 +## ------------ +payload_end = { + "end": { + "project_id": f"{team_id}/{project_id}", + "id": call_id, + "ended_at": datetime.datetime.now().isoformat(), + "output": { + # 展開された Trace のチャット UI に回答を追加するには、この "choices" スタイルを使用します。 + "choices": [ + { + "message": { + "content": "It’s due to Rayleigh scattering, where shorter blue wavelengths of sunlight scatter in all directions." + } + }, + ] + }, + # Traces テーブルに料金サマリー情報を生成するには、サマリーをこのようにフォーマットします。 + "summary": { + "usage": { + "gpt-4o": { + "prompt_tokens": 10, + "completion_tokens": 20, + "total_tokens": 30, + "requests": 1, + } + } + }, + } +} +response = requests.post( + url_end, headers=headers, json=payload_end, auth=("api", wandb_token) +) +if response.status_code == 200: + print("Call ended.") +else: + print("End request failed with status:", response.status_code) + print(response.text) +``` + +## 複雑な Trace +以下のセクションでは、マルチオペレーションの RAG 検索に似た、子スパン(child spans)を持つより複雑な Trace の作成手順を説明します。 + +1. [複雑な Trace を開始する](#start-a-complex-trace) +2. [RAG ドキュメント検索用の子スパンを追加する](#add-a-child-span-for-rag-document-lookup) +3. [LLM 完了呼び出し用の子スパンを追加する](#add-a-child-span-for-an-llm-completion-call) +4. [複雑な Trace を終了する](#end-a-complex-trace) + +### 複雑な Trace を開始する + +以下の コード は、複数のスパンを持つより複雑な Trace を作成する方法を示しています。この例としては、RAG(検索拡張生成)検索の後に LLM 呼び出しを行う場合が挙げられます。最初のパートでは、全体の操作を表す親 Trace(`payload_parent_start`)を初期化します。このケースでは、ユーザーのクエリ `Can you summarize the key points of this document?`(このドキュメントの要点をまとめてくれますか?)を処理する操作です。 + +`payload_parent_start` オブジェクト は、マルチステップ ワークフロー の最初のステップを模倣し、`url_start` エンドポイントを使用して Weave に操作を ログ 記録します。 + +成功すると、この コード は親の呼び出しが ログ に記録されたことを示すメッセージを出力します。 + +``` +Parent call started. ID: 01939d26-0844-7c43-94bb-cdc471b6d65f, Trace ID: 01939d26-0844-7c43-94bb-cdd97dc296c8 +``` + +```python +## ------------ +## Trace を開始 (parent) +## ------------ + +# 親呼び出し: 開始 +payload_parent_start = { + "start": { + "project_id": f"{team_id}/{project_id}", + "op_name": "complex_trace", + "started_at": datetime.datetime.now().isoformat(), + "inputs": {"question": "Can you summarize the key points of this document?"}, + "attributes": {}, + } +} +response = requests.post( + url_start, headers=headers, json=payload_parent_start, auth=("api", wandb_token) +) +if response.status_code == 200: + data = response.json() + parent_call_id = data.get("id") + trace_id = data.get("trace_id") + print(f"Parent call started. ID: {parent_call_id}, Trace ID: {trace_id}") +else: + print("Parent start request failed with status:", response.status_code) + print(response.text) + exit() +``` + +### RAG ドキュメント検索用の子スパンを追加する + +以下の コード は、前のステップで開始した複雑な親 Trace に子スパンを追加する方法を示しています。このステップでは、全体的な ワークフロー 内の RAG ドキュメント検索サブ操作をモデル化しています。 + +子 Trace は `payload_child_start` オブジェクト で開始され、以下を含みます。 +- `trace_id`: この子スパンを親 Trace にリンクします。 +- `parent_id`: 子スパンを親の操作に関連付けます。 +- `inputs`: 検索クエリを ログ に記録します。例: + `"This is a search query of the documents I'm looking for."` + +`url_start` エンドポイントへの呼び出しが成功すると、 コード は子の呼び出しが開始および完了したことを示すメッセージを出力します。 + +``` +Child call started. ID: 01939d32-23d6-75f2-9128-36a4a806f179 +Child call ended. +``` + +```python +## ------------ +## 子スパン: +## 例:RAG ドキュメント検索 +## ------------ + +# 子呼び出し: 開始 +payload_child_start = { + "start": { + "project_id": f"{team_id}/{project_id}", + "op_name": "rag_document_lookup", + "trace_id": trace_id, + "parent_id": parent_call_id, + "started_at": datetime.datetime.now().isoformat(), + "inputs": { + "document_search": "This is a search query of the documents I'm looking for." + }, + "attributes": {}, + } +} +response = requests.post( + url_start, headers=headers, json=payload_child_start, auth=("api", wandb_token) +) +if response.status_code == 200: + data = response.json() + child_call_id = data.get("id") + print(f"Child call started. ID: {child_call_id}") +else: + print("Child start request failed with status:", response.status_code) + print(response.text) + exit() + +# 子呼び出し: 終了 +payload_child_end = { + "end": { + "project_id": f"{team_id}/{project_id}", + "id": child_call_id, + "ended_at": datetime.datetime.now().isoformat(), + "output": { + "document_results": "This will be the RAG'd document text which will be returned from the search query." + }, + "summary": {}, + } +} +response = requests.post( + url_end, headers=headers, json=payload_child_end, auth=("api", wandb_token) +) +if response.status_code == 200: + print("Child call ended.") +else: + print("Child end request failed with status:", response.status_code) + print(response.text) +``` + +### LLM 完了呼び出し用の子スパンを追加する + +以下の コード は、複雑な親 Trace に別の子スパンを追加し、LLM の完了呼び出しを表現する方法を示しています。このステップでは、前の RAG 操作で取得されたドキュメントのコンテキストに基づいた AI のレスポンス生成をモデル化しています。 + +LLM 完了 Trace は `payload_child_start` オブジェクト で開始され、以下を含みます。 +- `trace_id`: この子スパンを親 Trace にリンクします。 +- `parent_id`: 子スパンを全体的な ワークフロー に関連付けます。 +- `inputs`: ユーザーのクエリと付加されたドキュメントのコンテキストを含む、LLM への入力メッセージを ログ に記録します。 +- `model`: 操作に使用された モデル を指定します(`gpt-4o`)。 + +成功すると、 コード は LLM の子スパン Trace が開始および終了したことを示すメッセージを出力します。 + +``` +Child call started. ID: 0245acdf-83a9-4c90-90df-dcb2b89f234a +``` + +操作が完了すると、`payload_child_end` オブジェクト が `output` フィールドに LLM 生成レスポンスを ログ 記録して Trace を終了します。使用状況のサマリー 情報 も ログ に記録されます。 + +成功すると、 コード は LLM の子スパン Trace が開始および終了したことを示すメッセージを出力します。 + +``` +Child call started. ID: 0245acdf-83a9-4c90-90df-dcb2b89f234a +Child call ended. +``` + +```python +## ------------ +## 子スパン: +## LLM 完了呼び出しの作成 +## ------------ + +# 子呼び出し: 開始 +payload_child_start = { + "start": { + "project_id": f"{team_id}/{project_id}", + "op_name": "llm_completion", + "trace_id": trace_id, + "parent_id": parent_call_id, + "started_at": datetime.datetime.now().isoformat(), + "inputs": { + "messages": [ + { + "role": "user", + "content": "With the following document context, could you help me answer:\n Can you summarize the key points of this document?\n [+ appended document context]", + } + ], + "model": "gpt-4o", + }, + "attributes": {}, + } +} +response = requests.post( + url_start, headers=headers, json=payload_child_start, auth=("api", wandb_token) +) +if response.status_code == 200: + data = response.json() + child_call_id = data.get("id") + print(f"Child call started. ID: {child_call_id}") +else: + print("Child start request failed with status:", response.status_code) + print(response.text) + exit() + +# 子呼び出し: 終了 +payload_child_end = { + "end": { + "project_id": f"{team_id}/{project_id}", + "id": child_call_id, + "ended_at": datetime.datetime.now().isoformat(), + "output": { + "choices": [ + {"message": {"content": "This is the response generated by the LLM."}}, + ] + }, + "summary": { + "usage": { + "gpt-4o": { + "prompt_tokens": 10, + "completion_tokens": 20, + "total_tokens": 30, + "requests": 1, + } + } + }, + } +} +response = requests.post( + url_end, headers=headers, json=payload_child_end, auth=("api", wandb_token) +) +if response.status_code == 200: + print("Child call ended.") +else: + print("Child end request failed with status:", response.status_code) + print(response.text) +``` + +### 複雑な Trace を終了する + +以下の コード は、親 Trace を終了し、 ワークフロー 全体の完了をマークする方法を示しています。このステップでは、すべての子スパン(例:RAG 検索と LLM 完了)の結果を集約し、最終的な出力と メタデータ を ログ に記録します。 + +Trace は `payload_parent_end` オブジェクト を使用して完了します。これには以下が含まれます。 +- `id`: 最初の親 Trace 開始時の `parent_call_id`。 +- `output`: ワークフロー 全体の最終出力を表します。 +- `summary`: ワークフロー 全体の使用状況データを統合します。 +- `prompt_tokens`: すべてのプロンプトで使用された合計トークン数。 +- `completion_tokens`: すべてのレスポンスで生成された合計トークン数。 +- `total_tokens`: ワークフロー の合計トークン数。 +- `requests`: 行われたリクエストの総数(この場合は `1`)。 + +成功すると、 コード は以下を出力します。 + +``` +Parent call ended. +``` + +```python +## ------------ +## Trace を終了 +## ------------ + +# 親呼び出し: 終了 +payload_parent_end = { + "end": { + "project_id": f"{team_id}/{project_id}", + "id": parent_call_id, + "ended_at": datetime.datetime.now().isoformat(), + "output": { + "choices": [ + {"message": {"content": "This is the response generated by the LLM."}}, + ] + }, + "summary": { + "usage": { + "gpt-4o": { + "prompt_tokens": 10, + "completion_tokens": 20, + "total_tokens": 30, + "requests": 1, + } + } + }, + } +} +response = requests.post( + url_end, headers=headers, json=payload_parent_end, auth=("api", wandb_token) +) +if response.status_code == 200: + print("Parent call ended.") +else: + print("Parent end request failed with status:", response.status_code) + print(response.text) +``` + +## 検索クエリの実行 +以下の コード は、前の例で作成された Traces を照会し、`inputs.model` フィールドが `gpt-4o` に等しい Traces のみをフィルタリングする方法を示しています。 + +`query_payload` オブジェクト には以下が含まれます。 +- `project_id`: クエリ対象の Team と プロジェクト を特定します。 +- `filter`: クエリが **trace roots**(トップレベルの Trace)のみを返すようにします。 +- `query`: `$expr` 演算子を使用してフィルタロジックを定義します。 + - `$getField`: `inputs.model` フィールドを取得します。 + - `$literal`: `inputs.model` が `"gpt-4o"` に一致する Traces を照合します。 +- `limit`: クエリの結果を 10,000 件に制限します。 +- `offset`: クエリを最初の結果から開始します。 +- `sort_by`: `started_at` タイムスタンプの降順で結果を並べ替えます。 +- `include_feedback`: 結果からフィードバック データ を除外します。 + +クエリが成功すると、レスポンスにはクエリ パラメータ に一致する Trace データが含まれます。 + +``` +{'id': '01939cf3-541f-76d3-ade3-50cfae068b39', 'project_id': 'cool-new-team/uncategorized', 'op_name': 'simple_trace', 'display_name': None, 'trace_id': '01939cf3-541f-76d3-ade3-50d5cfabe2db', 'parent_id': None, 'started_at': '2024-12-06T17:10:12.590000Z', 'attributes': {}, 'inputs': {'messages': [{'role': 'user', 'content': 'Why is the sky blue?'}], 'model': 'gpt-4o'}, 'ended_at': '2024-12-06T17:47:08.553000Z', 'exception': None, 'output': {'choices': [{'message': {'content': 'It’s due to Rayleigh scattering, where shorter blue wavelengths of sunlight scatter in all directions.'}}]}, 'summary': {'usage': {'gpt-4o': {'prompt_tokens': 10, 'completion_tokens': 20, 'requests': 1, 'total_tokens': 30}}, 'weave': {'status': 'success', 'trace_name': 'simple_trace', 'latency_ms': 2215963}}, 'wb_user_id': 'VXNlcjoyMDk5Njc0', 'wb_run_id': None, 'deleted_at': None} +``` + +```python +query_payload = { + "project_id": f"{team_id}/{project_id}", + "filter": {"trace_roots_only": True}, + "query": { + "$expr": {"$eq": [{"$getField": "inputs.model"}, {"$literal": "gpt-4o"}]} + }, + "limit": 10000, + "offset": 0, + "sort_by": [{"field": "started_at", "direction": "desc"}], + "include_feedback": False, +} +response = requests.post( + url_stream_query, headers=headers, json=query_payload, auth=("api", wandb_token) +) +if response.status_code == 200: + print("Query successful!") + try: + data = response.json() + print(data) + except json.JSONDecodeError as e: + # 代替のデコード + json_objects = response.text.strip().split("\n") + parsed_data = [json.loads(obj) for obj in json_objects] + print(parsed_data) +else: + print(f"Query failed with status code: {response.status_code}") + print(response.text) +``` \ No newline at end of file diff --git a/ja/weave/development.mdx b/ja/weave/development.mdx new file mode 100644 index 0000000000..5252e1c428 --- /dev/null +++ b/ja/weave/development.mdx @@ -0,0 +1,102 @@ +--- +title: 開発 +description: ドキュメントを更新するためにローカルで変更をプレビューする +--- + + + **前提条件**: 続行する前に Node.js (バージョン 19 以上) をインストールしてください。
+ 続行する前に ```docs.json``` にアップグレードし、レガシーな ```mint.json``` ファイルを削除してください。 +
+ +お使いのオペレーティングシステムに Mintlify をインストールして実行するには、以下の手順に従ってください。 + +**ステップ 1**: Mintlify のインストール: + + + + ```bash npm + npm i -g mintlify + ``` + +```bash yarn +yarn global add mintlify +``` + + + +**ステップ 2**: docs ディレクトリー (`docs.json` ファイルがある場所) に移動し、次の コマンド を実行します。 + +```bash +mintlify dev +``` + +ドキュメントのローカルプレビューが `http://localhost:3000` で確認できるようになります。 + +### カスタムポート + +デフォルトでは、Mintlify はポート 3000 を使用します。`--port` フラグを使用することで、Mintlify が実行されるポートをカスタマイズできます。例えば、ポート 3333 で Mintlify を実行するには、次の コマンド を使用します。 + +```bash +mintlify dev --port 3333 +``` + +すでに使用中のポートで Mintlify を実行しようとすると、次に利用可能なポートが使用されます。 + +```md +Port 3000 is already in use. Trying 3001 instead. +``` + +## Mintlify の バージョン + +各 CLI リリースは特定の バージョン の Mintlify と関連付けられていることに注意してください。ローカルのウェブサイトが プロダクション バージョン と一致しない場合は、CLI を更新してください。 + + + +```bash npm +npm i -g mintlify@latest +``` + +```bash yarn +yarn global upgrade mintlify +``` + + + +## リンクの検証 + +CLI を使用して、ドキュメント内のリファレンスリンクを検証できます。リンク切れを特定するには、次の コマンド を使用します。 + +```bash +mintlify broken-links +``` + +## デプロイメント + + + [Pro Plan](https://mintlify.com/pricing) 以上のプランでは、エディターを無制限に利用できます。 + + +デプロイメント が成功すると、すべてのチェックに合格したことを示す確認メッセージが表示されます。 + +## コード のフォーマット + +IDE の拡張機能を使用して MDX を認識し、フォーマットすることをお勧めします。VSCode ユーザーの場合は、構文ハイライト用の [MDX VSCode extension](https://marketplace.visualstudio.com/items?itemName=unifiedjs.vscode-mdx) と、コード のフォーマット用の [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) の使用を検討してください。 + +## トラブルシューティング + + + + + これは Node の バージョン が古いためである可能性があります。以下を試してください: + 1. 現在インストールされている mintlify を削除する: `npm remove -g mintlify` + 2. Node v19 以上にアップグレードする。 + 3. mintlify を再インストールする: `npm install -g mintlify` + + + + + 解決策: デバイスのルートに移動し、\~/.mintlify フォルダーを削除してください。その後、再度 `mintlify dev` を実行します。 + + + +CLI バージョン の変更点については、[CLI の変更履歴を確認してください。](https://www.npmjs.com/package/mintlify?activeTab=versions) \ No newline at end of file diff --git a/ja/weave/guides/core-types/datasets.mdx b/ja/weave/guides/core-types/datasets.mdx new file mode 100644 index 0000000000..bd489c3a0f --- /dev/null +++ b/ja/weave/guides/core-types/datasets.mdx @@ -0,0 +1,317 @@ +--- +title: Datasets の収集と追跡 +description: LLM アプリケーション 評価のためのサンプルの整理、収集、追跡、および バージョン 管理。 +--- + +Weave の Datasets は、LLM アプリケーションの評価用サンプルを整理、収集、追跡、およびバージョン管理し、簡単に比較できるようにします。 `Dataset` は、プログラムまたは UI を通じて作成および操作できます。 + +このページでは以下について説明します: + +- Python および TypeScript における基本的な `Dataset` 操作と開始方法 +- Weave [calls](../tracking/tracing) などのオブジェクトから Python および TypeScript で `Dataset` を作成する方法 +- UI で利用可能な `Dataset` 操作 + +## `Dataset` クイックスタート + +以下のコードサンプルは、Python と TypeScript を使用して基本的な `Dataset` 操作を行う方法を示しています。SDK を使用して以下のことが可能です。 + +- `Dataset` の作成 +- `Dataset` のパブリッシュ(公開) +- `Dataset` の取得 +- `Dataset` 内の特定のサンプルへのアクセス + +タブを選択して、Python または TypeScript 固有のコードを確認してください。 + + + + ```python lines + import weave + from weave import Dataset + # Weaveの初期化 + weave.init('intro-example') + + # データセットの作成 + dataset = Dataset( + name='grammar', + rows=[ + {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."}, + {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."}, + {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."} + ] + ) + + # データセットのパブリッシュ + weave.publish(dataset) + + # データセットの取得 + dataset_ref = weave.ref('grammar').get() + + # 特定のサンプルにアクセス + example_label = dataset_ref.rows[2]['sentence'] + ``` + + + + ```typescript lines + import * as weave from 'weave'; + + // Weaveの初期化 + await weave.init('intro-example'); + + // データセットの作成 + const dataset = new weave.Dataset({ + name: 'grammar', + rows: [ + {id: '0', sentence: "He no likes ice cream.", correction: "He doesn't like ice cream."}, + {id: '1', sentence: "She goed to the store.", correction: "She went to the store."}, + {id: '2', sentence: "They plays video games all day.", correction: "They play video games all day."} + ] + }); + + // データセットの保存(パブリッシュ) + await dataset.save(); + + // 特定のサンプルにアクセス + const exampleLabel = datasetRef.getRow(2).sentence; + ``` + + + + +## 他のオブジェクトから `Dataset` を作成する + + + + Python では、`Dataset` は [calls](../tracking/tracing) のような一般的な Weave オブジェクトや、`pandas.DataFrame` のような Python オブジェクトからも構築できます。この機能は、特定のサンプルからサンプルの `Dataset` を作成したい場合に便利です。 + + ### Weave call + + 1つ以上の Weave call から `Dataset` を作成するには、call オブジェクトを取得し、それらを `from_calls` メソッドのリストに追加します。 + + ```python lines + @weave.op + def model(task: str) -> str: + return f"Now working on {task}" + + res1, call1 = model.call(task="fetch") + res2, call2 = model.call(task="parse") + + dataset = Dataset.from_calls([call1, call2]) + # これでデータセットを使用してモデルの評価などを行うことができます。 + ``` + + ### Pandas DataFrame + + Pandas の `DataFrame` オブジェクトから `Dataset` を作成するには、`from_pandas` メソッドを使用します。 + + `Dataset` を元に戻すには、`to_pandas` を使用します。 + + ```python lines + import pandas as pd + + df = pd.DataFrame([ + {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."}, + {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."}, + {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."} + ]) + dataset = Dataset.from_pandas(df) + df2 = dataset.to_pandas() + + assert df.equals(df2) + ``` + + ### Hugging Face Datasets + + Hugging Face の `datasets.Dataset` または `datasets.DatasetDict` オブジェクトから `Dataset` を作成するには、まず必要な依存関係がインストールされていることを確認してください。 + + ```bash + pip install weave[huggingface] + ``` + + 次に、`from_hf` メソッドを使用します。複数の split('train'、'test'、'validation' など)を持つ `DatasetDict` を指定した場合、Weave は自動的に 'train' split を使用し、警告を表示します。'train' split が存在しない場合は、エラーが発生します。特定の split を直接指定することもできます(例:`hf_dataset_dict['test']`)。 + + `weave.Dataset` を Hugging Face の `Dataset` に戻すには、`to_hf` メソッドを使用します。 + + ```python lines + # datasetsがインストールされていることを確認してください: pip install datasets + from datasets import Dataset as HFDataset, DatasetDict + + # HF Datasetの例 + hf_rows = [ + {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."}, + {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."}, + ] + hf_ds = HFDataset.from_list(hf_rows) + weave_ds_from_hf = Dataset.from_hf(hf_ds) + + # HF Datasetに戻す + converted_hf_ds = weave_ds_from_hf.to_hf() + + # HF DatasetDictの例(デフォルトで'train'スプリットを使用) + hf_dict = DatasetDict({ + 'train': HFDataset.from_list(hf_rows), + 'test': HFDataset.from_list([{'id': '2', 'sentence': "Test sentence", 'correction': "Test correction"}]) + }) + # これは警告を表示し、'train'スプリットを使用します + weave_ds_from_dict = Dataset.from_hf(hf_dict) + + # 特定のスプリットを指定する場合 + weave_ds_from_test_split = Dataset.from_hf(hf_dict['test']) + ``` + + + + ```plaintext + この機能は現在 TypeScript では利用できません。 + ``` + + + +## UI での `Dataset` の作成、編集、削除 + +UI 上で `Dataset` の作成、編集、削除を行うことができます。 + +### 新しい `Dataset` を作成する + +1. 編集したい Weave プロジェクトに移動します。 + +2. サイドバーで **Traces** を選択します。 + +3. 新しい `Dataset` を作成したい 1つまたは複数の call を選択します。 + +4. 右上のメニューで、**Add selected rows to a dataset** アイコン(ゴミ箱アイコンの隣)をクリックします。 + +5. **Choose a dataset** ドロップダウンから **Create new** を選択します。**Dataset name** フィールドが表示されます。 + +6. **Dataset name** フィールドに、データセットの名前を入力します。**Configure dataset fields** のオプションが表示されます。 + + + データセット名は英数字で始まる必要があり、英数字、ハイフン、アンダースコアのみを使用できます。 + + +7. (オプション) **Configure dataset fields** で、データセットに含める call のフィールドを選択します。 + - 選択した各フィールドの列名をカスタマイズできます。 + - フィールドのサブセットを選択して新しい `Dataset` に含めるか、すべてのフィールドの選択を解除できます。 + +8. データセットのフィールドを設定したら、**Next** をクリックします。新しい `Dataset` のプレビューが表示されます。 + +9. (オプション) **Dataset** 内の編集可能なフィールドをクリックして、エントリを編集します。 + +10. **Create dataset** をクリックします。新しいデータセットが作成されます。 + +11. 確認ポップアップで、**View the dataset** をクリックして新しい `Dataset` を表示します。または、**Datasets** タブに移動します。 + +### `Dataset` を編集する + +1. 編集したい `Dataset` が含まれる Weave プロジェクトに移動します。 + +2. サイドバーから **Datasets** を選択します。利用可能な `Dataset` が表示されます。 + + ![Dataset UI](/weave/guides/core-types/imgs/datasetui.png) + +3. **Object** 列で、編集したい `Dataset` の名前とバージョンをクリックします。名前、バージョン、作成者、および `Dataset` の行などの `Dataset` 情報を表示するポップアウトモーダルが表示されます。 + + ![View `Dataset` information](/weave/guides/core-types/imgs/datasetui-popout.png) + +4. モダルの右上隅にある **Edit dataset** ボタン(鉛筆アイコン)をクリックします。モダンの下部に **+ Add row** ボタンが表示されます。 + + ![`Dataset` UI- Add row icon](/weave/guides/core-types/imgs/datasetui-popout-edit.png) + +5. **+ Add row** をクリックします。既存の `Dataset` 行の上部に緑色の行が表示され、`Dataset` に新しい行を追加できることを示します。 + + ![`Dataset` UI](/weave/guides/core-types/imgs/datasetui-popout-edit-green.png) + +6. 新しい行にデータを追加するには、その行の中の目的の列をクリックします。`Dataset` 行のデフォルトの **id** 列は、作成時に Weave が自動的に割り当てるため、編集できません。書式設定用の **Text**、**Code**、**Diff** オプションを備えた編集モーダルが表示されます。 + + ![`Dataset` UI - Add data to a column and format.](/weave/guides/core-types/imgs/datasetui-popout-edit-addcol.png) + +7. 新しい行に追加したい各列について、ステップ 6 を繰り返します。 + + ![`Dataset` UI - Add data to all columns.](/weave/guides/core-types/imgs/datasetui-popout-edit-colsadded.png) + +8. `Dataset` に追加したい各行について、ステップ 5 を繰り返します。 + +9. 編集が完了したら、モダールの右上隅にある **Publish** をクリックして `Dataset` をパブリッシュします。変更をパブリッシュしたくない場合は、**Cancel** をクリックします。 + + ![`Dataset` UI - Publish or cancel.](/weave/guides/core-types/imgs/datasetui-popout-edit-publish.png) + + パブリッシュされると、更新された行を含む新しいバージョンの `Dataset` が UI で利用可能になります。 + + ![`Dataset` UI - Published metadata.](/weave/guides/core-types/imgs/datasetui-popout-edit-published-meta.png) + ![`Dataset` UI - Published rows.](/weave/guides/core-types/imgs/datasetui-popout-edit-published-rows.png) + +### `Dataset` を削除する + +1. 編集したい `Dataset` が含まれる Weave プロジェクトに移動します。 + +2. サイドバーから **Datasets** を選択します。利用可能な `Dataset` が表示されます。 + +3. **Object** 列で、削除したい `Dataset` の名前とバージョンをクリックします。名前、バージョン、作成者、および `Dataset` の行などの `Dataset` 情報を表示するポップアウトモーダルが表示されます。 + +4. モダルの右上隅にあるゴミ箱アイコンをクリックします。 + + `Dataset` の削除を確認するポップアップモーダルが表示されます。 + + ![`Dataset` UI - Confirm deletion modal.](/weave/guides/core-types/imgs/datasetui-delete-modal.png) + +5. ポップアップモーダルで、赤色の **Delete** ボタンをクリックして `Dataset` を削除します。削除したくない場合は、**Cancel** をクリックします。 + + これで `Dataset` が削除され、Weave ダッシュボードの **Datasets** タブに表示されなくなります。 + +### `Dataset` に新しいサンプルを追加する + +1. 編集したい Weave プロジェクトに移動します。 + +2. サイドバーで **Traces** を選択します。 + +3. 新しいサンプルを作成したい `Datasets` を持つ 1つまたは複数の call を選択します。 + +4. 右上のメニューで、**Add selected rows to a dataset** アイコン(ゴミ箱アイコンの隣)をクリックします。オプションで、**Show latest versions** をオフに切り替えると、利用可能なすべてのデータセットのすべてのバージョンが表示されます。 + +5. **Choose a dataset** ドロップダウンから、サンプルを追加したい `Dataset` を選択します。**Configure field mapping** のオプションが表示されます。 + +6. (オプション) **Configure field mapping** で、call のフィールドから対応するデータセット列へのマッピングを調整できます。 + +7. フィールドマッピングを設定したら、**Next** をクリックします。新しい `Dataset` のプレビューが表示されます。 + +8. 空の行(緑色)に、新しいサンプルの値を追加します。**id** フィールドは編集できず、Weave によって自動的に作成されることに注意してください。 + +9. **Add to dataset** をクリックします。または、**Configure field mapping** 画面に戻るには、**Back** をクリックします。 + +10. 確認ポップアップで、**View the dataset** をクリックして変更を確認します。または、**Datasets** タブに移動して `Dataset` の更新を確認します。 + +## その他のデータセット操作 + + + + ### 行の選択 + + `select` メソッドを使用して、インデックスによって `Dataset` から特定の行を選択できます。これは、データのサブセットを作成するのに便利です。 + + ```python lines + import weave + from weave import Dataset + + # サンプルデータセットの作成 + dataset = Dataset(rows=[ + {'col_a': 1, 'col_b': 'x'}, + {'col_a': 2, 'col_b': 'y'}, + {'col_a': 3, 'col_b': 'z'}, + {'col_a': 4, 'col_b': 'w'}, + ]) + + # インデックス0と2の行を選択 + subset_dataset = dataset.select([0, 2]) + + # これでsubset_datasetには1番目と3番目の行のみが含まれます + # print(list(subset_dataset)) + # 出力: [{'col_a': 1, 'col_b': 'x'}, {'col_a': 3, 'col_b': 'z'}] + ``` + + + + ```plaintext + この機能は現在 TypeScript では利用できません。 + ``` + + \ No newline at end of file diff --git a/ja/weave/guides/core-types/env-vars.mdx b/ja/weave/guides/core-types/env-vars.mdx new file mode 100644 index 0000000000..afd2a5a418 --- /dev/null +++ b/ja/weave/guides/core-types/env-vars.mdx @@ -0,0 +1,46 @@ +--- +title: Weave の 環境 変数を 設定 する +description: 環境変数を使用して、 Weave の実行時の 振る舞い を 設定 する +--- + +Weave は、その振る舞いを設定および最適化するための一連の環境変数を提供しています。これらの変数は、シェルやスクリプト内で設定して、特定の機能を制御できます。 + +```bash +# シェルでの環境変数設定の例 +export WEAVE_PARALLELISM=10 # 並列ワーカーの数を制御します +export WEAVE_PRINT_CALL_LINK=false # call リンクの出力を無効にします +``` + +```python lines +# Python での環境変数設定の例 +import os + +os.environ["WEAVE_PARALLELISM"] = "10" +os.environ["WEAVE_PRINT_CALL_LINK"] = "false" +``` + +## 利用可能な環境変数 + +| 変数名 | 型 | デフォルト値 | 説明 | +|----------|------|---------|-------------| +| `WANDB_API_KEY` | `string` | `None` | 設定されている場合、APIキー の入力を求められることなく、自動的に W&B Weave にログインします。 APIキー を生成するには、W&B アカウントにログインして [ユーザー設定 (User Settings)](https://wandb.ai/settings) に移動してください。 | +| `WEAVE_DISABLED` | `bool` | `false` | `true` に設定すると、すべての Weave トレースを無効にします。Weave の op は通常の関数のように動作します。 | +| `WEAVE_PRINT_CALL_LINK` | `bool` | `true` | Weave op を呼び出す際に Weave UI へのリンクを表示するかどうかを制御します。この設定は、`weave.init("your-project-name", settings={"print_call_link": False})` のように `weave.init()` の `settings` 引数を設定することで、コード内で直接指定することも可能です。 | +| `WEAVE_LOG_LEVEL` | `str` | `INFO` | weave ロガーの ログ レベルを制御します。 +| `WEAVE_CAPTURE_CODE` | `bool` | `true` | 後で再利用できるように、op の コード を保存するかどうかを制御します。 | +| `WEAVE_DEBUG_HTTP` | `bool` | `false` | `true` に設定すると、デバッグ用に HTTP リクエストとレスポンスの ログ 出力を有効にします。 | +| `WEAVE_PARALLELISM` | `int` | `20` | Evaluations において、並列で 評価 する例の数を制御します。例を逐次実行するには `1` に設定してください。 | +| `WEAVE_TRACE_LANGCHAIN` | `bool` | `true` | LangChain のグローバルトレースを制御します。LangChain のトレースを明示的に無効にするには `false` に設定してください。 | +| `WEAVE_USE_SERVER_CACHE` | `bool` | `true` | サーバーレスポンスのキャッシュを有効にします。有効にすると、サーバーからのレスポンスがディスクにキャッシュされ、繰り返しのクエリのパフォーマンスが向上します。 | +| `WEAVE_SERVER_CACHE_SIZE_LIMIT` | `int` | `1000000000` | サーバーキャッシュの最大サイズ制限をバイト単位で設定します。キャッシュがこのサイズに達すると、新しいエントリのためのスペースを確保するために古いエントリが自動的に削除されます。重要:基礎となる実装には SQLite が使用されており、この 設定 に関係なく 4MB まで増大する Write Ahead Log (WAL) が生成されます。この WAL はプログラム終了時に削除されます。 | +| `WEAVE_SERVER_CACHE_DIR` | `str` | `None` | キャッシュファイルを保存する ディレクトリー を指定します。設定されていない場合は、一時 ディレクトリー が使用されます。 | +| `WEAVE_MAX_CALLS_QUEUE_SIZE` | `int` | `100000` | call キューの最大サイズを設定します。デフォルトは 100,000 です。値を 0 に設定すると、キューは無制限に増大できます。 | +| `WEAVE_RETRY_MAX_ATTEMPTS` | `int` | `3` | 失敗したリクエストの最大再試行回数を設定します。 | +| `WEAVE_RETRY_MAX_INTERVAL` | `float` | `300.0` | 再試行間の最大間隔を秒単位で設定します。 | +| `WANDB_BASE_URL` | `string` | `None` | Weave ホストの URL を設定します。`wandb.login()` でプロンプトが表示された際にホスト URL を入力するのと同等です。`weave.init()` を使用する前に `WANDB_BASE_URL` と `WANDB_API_KEY` を指定することで、Weave へのログインと認証を自動的に行うことができます。 | + + +すべての boolean 型の環境変数は、以下の値を受け入れます(大文字小文字を区別しません)。 +- True の場合: `true`, `1`, `yes`, `on` +- False の場合: `false`, `0`, `no`, `off` + \ No newline at end of file diff --git a/ja/weave/guides/core-types/evaluations.mdx b/ja/weave/guides/core-types/evaluations.mdx new file mode 100644 index 0000000000..3f188c5d15 --- /dev/null +++ b/ja/weave/guides/core-types/evaluations.mdx @@ -0,0 +1,534 @@ +--- +title: 評価の概要 +description: アプリケーションを体系的に改善するための、評価駆動型の LLM アプリケーション開発 +--- + +評価主導の LLM アプリケーション開発(Evaluation-driven LLM application development)は、一貫性のある厳選された例を使用してアプリケーションの挙動を体系的に測定することで、LLM アプリケーションを計画的に改善するのに役立ちます。 + + + + Weave におけるワークフローの核となるのは _`Evaluation` オブジェクト_ であり、以下の内容を定義します。 + + - テスト例のための [`Dataset`](../core-types/datasets) または辞書のリスト。 + - 1 つ以上の [スコアリング関数](../evaluation/scorers)。 + - [入力の事前処理](#format-dataset-rows-before-evaluating) などのオプション設定。 + + `Evaluation` を定義したら、[`Model`](../core-types/models) オブジェクトや LLM アプリケーションロジックを含む任意のカスタム関数に対して実行できます。`.evaluate()` を呼び出すたびに _評価 run_ がトリガーされます。`Evaluation` オブジェクトを設計図、各 run をそのセットアップ下でのアプリケーションのパフォーマンス測定と考えると分かりやすいでしょう。 + + + Weave におけるワークフローの核となるのは _`Evaluation` オブジェクト_ であり、以下の内容を定義します。 + + - テスト例のための [`Dataset`](../core-types/datasets) またはオブジェクトの配列。 + - 1 つ以上の [スコアリング関数](../evaluation/scorers)。 + + `Evaluation` を定義したら、`weave.op` でラップされた任意の関数に対して実行できます。`.evaluate()` を呼び出すたびに _評価 run_ がトリガーされます。`Evaluation` オブジェクトを設計図、各 run をそのセットアップ下でのアプリケーションのパフォーマンス測定と考えると分かりやすいでしょう。 + + + TypeScript SDK は関数ベースの モデル と スコアラー を使用します。クラスベースの `Model` および `Scorer` 型は、現在 TypeScript では利用できません。 + + + + +評価を開始するには、以下の手順を完了してください。 + +1. [`Evaluation` オブジェクトの作成](#1-create-an-evaluation-object) +2. [例となるデータセットの定義](#2-define-a-dataset-of-test-examples) +3. [スコアリング関数の定義](#3-define-scoring-functions) +4. [評価対象のモデルまたは関数の定義](#4-define-a-model-or-function-to-evaluate) +5. [評価の実行](#5-run-the-evaluation) + + +完全な評価コードのサンプルは [こちら](#full-evaluation-code-sample) にあります。また、[保存済みビュー](#saved-views) や [命令的評価](#imperative-evaluations-evaluationlogger) などの [高度な評価機能](#advanced-evaluation-usage) についても詳しく学ぶことができます。 + + +## 1. `Evaluation` オブジェクトの作成 + +`Evaluation` オブジェクトの作成は、評価設定の最初のステップです。`Evaluation` は例となる データ、スコアリングロジック、およびオプションの事前処理で構成されます。これを後で 1 つ以上の評価を実行するために使用します。 + +Weave は各例を取得し、アプリケーションを介して実行し、複数のカスタムスコアリング関数で出力をスコアリングします。これにより、アプリケーションのパフォーマンスの全体像を把握できるだけでなく、個別の出力やスコアを掘り下げて確認できるリッチな UI を利用できます。 + +### (オプション) カスタムネーミング + + + + 評価フローでは、2 種類の名前をカスタマイズできます。 + + - [_Evaluation オブジェクト名_ (`evaluation_name`)](#name-the-evaluation-object): 設定された `Evaluation` オブジェクトの永続的なラベルです。 + - [_Evaluation run 表示名_ (`__weave["display_name"]`)](#name-individual-evaluation-runs): UI に表示される、特定の評価実行のラベルです。 + + #### `Evaluation` オブジェクトに名前を付ける + + `Evaluation` オブジェクト自体に名前を付けるには、`Evaluation` クラスに `evaluation_name` パラメータを渡します。この名前は、コードや UI のリストで評価を識別するのに役立ちます。 + + ```python lines + evaluation = Evaluation( + dataset=examples, scorers=[match_score1], evaluation_name="My Evaluation" + ) + ``` + + #### 個別の評価 run に名前を付ける + + 特定の評価 run(`evaluate()` の呼び出し)に名前を付けるには、`__weave` 辞書で `display_name` を指定します。これは、その run に対して UI に表示される内容に影響します。 + + ```python lines + evaluation = Evaluation( + dataset=examples, scorers=[match_score1] + ) + evaluation.evaluate(model, __weave={"display_name": "My Evaluation Run"}) + ``` + + + `Evaluation` オブジェクトに名前を付けるには、`Evaluation` コンストラクタに `id` パラメータを渡します。この名前は、コードや UI のリストで評価を識別するのに役立ちます。 + + ```typescript lines + const evaluation = new weave.Evaluation({ + id: 'my-evaluation', + dataset: dataset, + scorers: [matchScore], + }); + ``` + + + +## 2. テスト例のデータセットを定義する + +まず、評価対象となる例のコレクションを含む [Dataset](../core-types/datasets) オブジェクトまたは例のリストを定義します。これらの例は、テスト駆動開発(TDD)のユニットテストと同様に、テストしたい失敗ケースであることがよくあります。 + + + + 以下の例は、辞書のリストとして定義されたデータセットを示しています。 + + ```python lines + examples = [ + {"question": "What is the capital of France?", "expected": "Paris"}, + {"question": "Who wrote 'To Kill a Mockingbird'?", "expected": "Harper Lee"}, + {"question": "What is the square root of 64?", "expected": "8"}, + ] + ``` + + + 以下の例は、行の配列を持つ `Dataset` オブジェクトとして定義されたデータセットを示しています。 + + ```typescript lines + const dataset = new weave.Dataset({ + id: 'my-dataset', + rows: [ + {question: 'What is the capital of France?', expected: 'Paris'}, + {question: 'Who wrote "To Kill a Mockingbird"?', expected: 'Harper Lee'}, + {question: 'What is the square root of 64?', expected: '8'}, + ], + }); + ``` + + + +## 3. スコアリング関数の定義 + +次に、1 つ以上の [スコアリング関数](../evaluation/scorers) を作成します。これらは `Dataset` 内の各例をスコアリングするために使用されます。 + + + + 各スコアリング関数は `output` 引数を持ち、スコアを含む辞書を返す必要があります。オプションで、データセットの例から他の入力をに含めることもできます。 + + スコアリング関数には `output` キーワード引数が必要ですが、その他の引数はユーザー定義であり、データセットの例から取得されます。引数名に基づいた辞書のキーを使用することで、必要なキーのみを取得します。 + + + スコアラーが `output` 引数を期待しているのに受け取っていない場合は、レガシーな `model_output` キーを使用していないか確認してください。これを修正するには、スコアラー関数を更新して `output` をキーワード引数として使用するようにしてください。 + + + 以下のスコアラー関数の例 `match_score1` は、スコアリングのために `examples` 辞書の `expected` 値を使用します。 + + ```python lines + import weave + + # 例のコレクションを作成 + examples = [ + {"question": "What is the capital of France?", "expected": "Paris"}, + {"question": "Who wrote 'To Kill a Mockingbird'?", "expected": "Harper Lee"}, + {"question": "What is the square root of 64?", "expected": "8"}, + ] + + # カスタムスコアリング関数を定義 + @weave.op() + def match_score1(expected: str, output: dict) -> dict: + # ここにモデル出力をスコアリングするロジックを定義します + return {'match': expected == output['generated_text']} + ``` + + ### (オプション) カスタム `Scorer` クラスの定義 + + アプリケーションによっては、カスタム `Scorer` クラスを作成したい場合があります。例えば、特定のパラメータ(チャットモデル、プロンプトなど)、各行の特定のスコアリング、および集計スコアの特定の計算方法を持つ標準化された `LLMJudge` クラスを作成する場合などです。 + + 詳細については、[RAG アプリケーションのモデルベース評価](/weave/tutorial-rag#optional-defining-a-scorer-class) の `Scorer` クラスの定義に関するチュートリアルを参照してください。 + + + 各スコアリング関数は `weave.op` でラップされ、`modelOutput` と `datasetRow` プロパティを持つオブジェクトを受け取ります。 + + 以下のスコアラー関数の例 `matchScore` は、モデル出力をデータセット行の `expected` 値と比較します。 + + ```typescript lines + import * as weave from 'weave'; + + // 例をデータセットにまとめる + const dataset = new weave.Dataset({ + id: 'my-dataset', + rows: [ + {question: 'What is the capital of France?', expected: 'Paris'}, + {question: 'Who wrote "To Kill a Mockingbird"?', expected: 'Harper Lee'}, + {question: 'What is the square root of 64?', expected: '8'}, + ], + }); + + // カスタムスコアリング関数を定義 + const matchScore = weave.op( + ({modelOutput, datasetRow}) => { + return {match: modelOutput === datasetRow.expected}; + }, + {name: 'matchScore'} + ); + ``` + + + クラスベースの `Scorer` 型は、現在 TypeScript では利用できません。`weave.op` でラップされた関数ベースのスコアラーを使用してください。 + + + + +## 4. 評価対象のモデルまたは関数の定義 + + + + `Model` を評価するには、`Evaluation` を使用してそのモデルに対して `evaluate` を呼び出します。`Models` は、実験したいパラメータがあり、それを Weave で取得したい場合に使用します。 + + ```python lines + from weave import Model, Evaluation + import asyncio + + class MyModel(Model): + prompt: str + + @weave.op() + def predict(self, question: str): + # ここにLLM呼び出しを追加し、結果を返します + return {'generated_text': 'Hello, ' + self.prompt} + + model = MyModel(prompt='World') + + evaluation = Evaluation( + dataset=examples, scorers=[match_score1] + ) + weave.init('intro-example') # weaveでのトラッキングを開始 + asyncio.run(evaluation.evaluate(model)) + ``` + + これにより、各例に対して `predict` が実行され、各スコアリング関数で出力がスコアリングされます。 + + ### (オプション) 評価対象の関数を定義する + + あるいは、`@weave.op()` でトラッキングされたカスタム関数を評価することもできます。 + + ```python lines + @weave.op + def function_to_evaluate(question: str): + # ここにLLM呼び出しを追加し、結果を返します + return {'generated_text': 'some response'} + + asyncio.run(evaluation.evaluate(function_to_evaluate)) + ``` + + + TypeScript では、`weave.op` でラップされた関数を評価します。関数はデータセットの行を受け取り、モデルの出力を返します。 + + ```typescript lines + import * as weave from 'weave'; + + // Weaveを初期化 + await weave.init('intro-example'); + + // 評価する関数を定義 + const myModel = weave.op( + async ({question}) => { + // ここにLLM呼び出しを追加し、結果を返します + return 'Paris'; + }, + {name: 'myModel'} + ); + + // 評価を作成 + const evaluation = new weave.Evaluation({ + id: 'my-evaluation', + dataset: dataset, + scorers: [matchScore], + }); + + // 評価を実行 + const results = await evaluation.evaluate({model: myModel}); + ``` + + これにより、各例に対して `myModel` が実行され、各スコアリング関数で出力がスコアリングされます。 + + + +## 5. 評価の実行 + +評価を実行するには、`Evaluation` オブジェクトの `.evaluate()` を呼び出します。 + + + + `evaluation` という名前の `Evaluation` オブジェクトと、評価対象の `model` という名前の `Model` オブジェクトがある場合、以下のコードで評価 run をインスタンス化します。 + + ```python lines + asyncio.run(evaluation.evaluate(model)) + ``` + ### (オプション) 複数のトライアルを実行する + + `Evaluation` オブジェクトに `trials` パラメータを設定することで、各例を複数回実行できます。 + + ```python lines + evaluation = Evaluation( + dataset=examples, + scorers=[match_score], + trials=3 + ) + ``` + + + `evaluation` という名前の `Evaluation` オブジェクトと、`myModel` という名前のモデル関数がある場合、以下のコードで評価を実行します。 + + ```typescript lines + const results = await evaluation.evaluate({model: myModel}); + ``` + + ### (オプション) 複数のトライアルを実行する + + `evaluate()` を呼び出す際に `nTrials` パラメータを設定することで、各例を複数回実行できます。 + + ```typescript lines + const results = await evaluation.evaluate({ + model: myModel, + nTrials: 3, + }); + ``` + + + +run は各例をモデルに 3 回渡し、各 run は個別にスコアリングされ、Weave に表示されます。 + +## 完全な評価コードのサンプル + + + + 以下のコードサンプルは、開始から終了までの完全な評価 run を示しています。`examples` 辞書は、`match_score1` および `match_score2` スコアリング関数によって、与えられた `prompt` の値に基づく `MyModel`、およびカスタム関数 `function_to_evaluate` を評価するために使用されます。`Model` と関数の両方の評価 run は、`asyncio.run(evaluation.evaluate())` で呼び出されます。 + + ```python lines + from weave import Evaluation, Model + import weave + import asyncio + weave.init('intro-example') + examples = [ + {"question": "What is the capital of France?", "expected": "Paris"}, + {"question": "Who wrote 'To Kill a Mockingbird'?", "expected": "Harper Lee"}, + {"question": "What is the square root of 64?", "expected": "8"}, + ] + + @weave.op() + def match_score1(expected: str, output: dict) -> dict: + return {'match': expected == output['generated_text']} + + @weave.op() + def match_score2(expected: dict, output: dict) -> dict: + return {'match': expected == output['generated_text']} + + class MyModel(Model): + prompt: str + + @weave.op() + def predict(self, question: str): + # ここにLLM呼び出しを追加し、結果を返します + return {'generated_text': 'Hello, ' + question + self.prompt} + + model = MyModel(prompt='World') + evaluation = Evaluation(dataset=examples, scorers=[match_score1, match_score2]) + + asyncio.run(evaluation.evaluate(model)) + + @weave.op() + def function_to_evaluate(question: str): + # ここにLLM呼び出しを追加し、結果を返します + return {'generated_text': 'some response' + question} + + asyncio.run(evaluation.evaluate(function_to_evaluate)) + ``` + + + 以下のコードサンプルは、開始から終了までの完全な評価 run を示しています。データセットの行は、`matchScore` スコアリング関数によって `myModel` を評価するために使用されます。 + + ```typescript lines + import * as weave from 'weave'; + + // Weaveを初期化 + await weave.init('intro-example'); + + // 例をデータセットにまとめる + const dataset = new weave.Dataset({ + id: 'my-dataset', + rows: [ + {question: 'What is the capital of France?', expected: 'Paris'}, + {question: 'Who wrote "To Kill a Mockingbird"?', expected: 'Harper Lee'}, + {question: 'What is the square root of 64?', expected: '8'}, + ], + }); + + // スコアリング関数を定義 + const matchScore = weave.op( + ({modelOutput, datasetRow}) => { + return {match: modelOutput === datasetRow.expected}; + }, + {name: 'matchScore'} + ); + + // 評価する関数を定義 + const myModel = weave.op( + async ({question}) => { + // ここにLLM呼び出しを追加し、結果を返します + return 'Paris'; + }, + {name: 'myModel'} + ); + + // 評価を作成して実行 + const evaluation = new weave.Evaluation({ + id: 'my-evaluation', + dataset: dataset, + scorers: [matchScore], + }); + + const results = await evaluation.evaluate({model: myModel}); + console.log('Evaluation results:', results); + ``` + + + + +![Evals hero](/images/evals-hero.png) + + +## 高度な評価機能 + +### 評価前のデータセット行のフォーマット + + + + + `preprocess_model_input` 関数は、入力をモデルの予測関数に渡す前にのみ適用されます。スコアラー関数は、事前処理が適用されていないオリジナルのデータセットの例を常に受け取ります。 + + + `preprocess_model_input` パラメータを使用すると、データセットの例を評価関数に渡す前に変換できます。これは、以下の場合に役立ちます。 + + - フィールド名をモデルが期待する入力名にリネームする + - データを正しい形式に変換する + - フィールドを追加または削除する + - 各例に追加データをロードする + + 以下は、`preprocess_model_input` を使用してフィールド名をリネームする方法を示す簡単な例です。 + + ```python lines + import weave + from weave import Evaluation + import asyncio + + # データセットには "input_text" があるが、モデルは "question" を期待している + examples = [ + {"input_text": "What is the capital of France?", "expected": "Paris"}, + {"input_text": "Who wrote 'To Kill a Mockingbird'?", "expected": "Harper Lee"}, + {"input_text": "What is the square root of 64?", "expected": "8"}, + ] + + @weave.op() + def preprocess_example(example): + # input_text を question にリネーム + return { + "question": example["input_text"] + } + + @weave.op() + def match_score(expected: str, output: dict) -> dict: + return {'match': expected == output['generated_text']} + + @weave.op() + def function_to_evaluate(question: str): + return {'generated_text': f'Answer to: {question}'} + + # 事前処理を含む評価を作成 + evaluation = Evaluation( + dataset=examples, + scorers=[match_score], + preprocess_model_input=preprocess_example + ) + + # 評価を実行 + weave.init('preprocessing-example') + asyncio.run(evaluation.evaluate(function_to_evaluate)) + ``` + + この例では、データセットに `input_text` フィールドが含まれていますが、評価関数は `question` 引数を期待しています。`preprocess_example` 関数はフィールド名をリネームすることで各例を変換し、評価が正しく動作するようにします。 + + 事前処理関数は以下の通りです。 + + 1. データセットから生の例を受け取ります + 2. モデルが期待するフィールドを持つ辞書を返します + 3. 評価関数に渡される前に各例に適用されます + + これは、モデルが期待するものとは異なるフィールド名や構造を持つ外部データセットを扱う場合に特に役立ちます。 + + + TypeScript では、`Evaluation` オブジェクトで `columnMapping` を使用して、データセットの列名をスコアラーが期待する名前にマッピングできます。これは、データセットのフィールド名がスコアラー関数の期待と異なる場合に便利です。 + + 以下の例では、`expectedOutputTimesTwo` 列を `expected` 列にマッピングしています。 + + ```typescript lines + const myScorer = weave.op( + ({modelOutput, datasetRow}) => { + return modelOutput * 2 === datasetRow.expectedOutputTimesTwo; + }, + {name: 'myScorer'} + ); + + const evaluation = new weave.Evaluation({ + id: 'my-evaluation', + dataset: [{expected: 2}], + scorers: [myScorer], + columnMapping: {expectedOutputTimesTwo: 'expected'}, + }); + ``` + + + `preprocess_model_input` パラメータは現在 TypeScript では利用できません。データセットのフィールドをスコアラーの期待に合わせるには `columnMapping` を使用してください。 + + + + +### 評価での HuggingFace データセットの使用 + + + + サードパーティのサービスやライブラリとのインテグレーションは継続的に改善されています。 + + よりシームレスなインテグレーションを構築する間、Weave の評価で HuggingFace Datasets を使用するための一時的な回避策として `preprocess_model_input` を使用できます。 + + 現在のアプローチについては、[評価での HuggingFace データセットの使用クックブック](/weave/cookbooks/hf_dataset_evals) を参照してください。 + + + ```plaintext + この機能は現在 TypeScript では利用できません。 + ``` + + + +### 保存済みビュー(Saved views) + +Evals テーブルの設定、フィルタ、ソートを _保存済みビュー_ として保存し、好みのセットアップに素早くアクセスできます。保存済みビューは UI および Python SDK で設定・アクセスできます。詳細については、[保存済みビュー](/weave/guides/tools/saved-views) を参照してください。 + +### 命令的評価(`EvaluationLogger`) + +より柔軟な評価フレームワークを好む場合は、Weave の [`EvaluationLogger`](../evaluation/evaluation_logger) を確認してください。`EvaluationLogger` は Python と TypeScript の両方で利用可能で、複雑なワークフローに対してより高い柔軟性を提供しますが、標準の評価フレームワークはより多くの構造とガイダンスを提供します。 \ No newline at end of file diff --git a/ja/weave/guides/core-types/leaderboards.mdx b/ja/weave/guides/core-types/leaderboards.mdx new file mode 100644 index 0000000000..9cba3270fb --- /dev/null +++ b/ja/weave/guides/core-types/leaderboards.mdx @@ -0,0 +1,241 @@ +--- +title: Models の比較とランキング +description: 評価メトリクス に基づいて異なる モデル バージョンを比較し、順位付けします +--- + +Weave の _Leaderboards_ を使用すると、複数のメトリクスにわたって複数の Models を評価・比較し、精度、生成の質、レイテンシ、またはカスタム評価ロジックを測定できます。Leaderboard を活用することで、モデルのパフォーマンスを中央の場所で可視化し、時間の経過に伴う変化を追跡し、チーム全体でベンチマークを共有できます。 + +Leaderboard は以下のような場合に最適です: + +- モデルパフォーマンスの回帰(デグレード)の追跡 +- 共有された評価ワークフローの調整 + + +Leaderboard の作成は、Weave UI および Weave Python SDK でのみ利用可能です。TypeScript ユーザーは [Weave UI](#using-the-ui) を使用して Leaderboard を作成および管理できます。 + + +## Leaderboard の作成 + +Leaderboard は [Weave UI](#ui) または [プログラム](#python) から作成できます。 + +### UI を使用する場合 + +Weave UI で直接 Leaderboard を作成・カスタマイズするには: + +1. Weave UI で **Leaders** セクションに移動します。表示されていない場合は、**More** → **Leaders** をクリックします。 +2. **+ New Leaderboard** をクリックします。 +3. **Leaderboard Title** フィールドに、分かりやすい名前(例:`summarization-benchmark-v1`)を入力します。 +4. 任意で、この Leaderboard が何を比較するものか説明を追加します。 +5. [列を追加](#add-columns) して、表示する評価とメトリクスを定義します。 +6. レイアウトが完成したら、Leaderboard を保存して公開し、他のユーザーと共有します。 + +#### 列を追加する + +Leaderboard の各列は、特定の評価からのメトリクスを表します。列を設定するには、以下を指定します: + +- **Evaluation**: ドロップダウンから評価 run を選択します(事前に作成されている必要があります)。 +- **Scorer**: その評価で使用されたスコアリング関数(例:`jaccard_similarity`, `simple_accuracy`)を選択します。 +- **Metric**: 表示する集計メトリクスを選択します(例:`mean`, `true_fraction` など)。 + +さらに列を追加するには、**Add Column** をクリックします。 + +列を編集するには、右側の 3 つのドットメニュー (`⋯`) をクリックします。以下の操作が可能です: + +- **Move before / after** – 列の順序を入れ替える +- **Duplicate** – 列の定義をコピーする +- **Delete** – 列を削除する +- **Sort ascending** – Leaderboard のデフォルトのソート順を設定する(再度クリックすると降順に切り替わります) + +### Python + + +すぐに実行可能な完全なコードサンプルをお探しですか?[エンドツーエンドの Python 例](#end-to-end-python-example) をご覧ください。 + + +Leaderboard を作成して公開するには: + +1. テスト用の Datasets を定義します。組み込みの [`Dataset`](./datasets) を使用するか、入力とターゲットのリストを手動で定義できます。 + + ```python lines + dataset = [ + {"input": "...", "target": "..."}, + ... + ] + ``` + +2. 1 つ以上の [scorers](../evaluation/scorers) を定義します。 + + ```python lines + @weave.op + def jaccard_similarity(target: str, output: str) -> float: + ... + ``` + +3. [`Evaluation`](../core-types/evaluations) を作成します。 + + ```python lines + evaluation = weave.Evaluation( + name="My Eval", + dataset=dataset, + scorers=[jaccard_similarity], + ) + ``` + +4. 評価対象の Models を定義します。 + + ```python lines + @weave.op + def my_model(input: str) -> str: + ... + ``` + +5. 評価を実行します。 + + ```python lines + async def run_all(): + await evaluation.evaluate(model_vanilla) + await evaluation.evaluate(model_humanlike) + await evaluation.evaluate(model_messy) + + asyncio.run(run_all()) + ``` + +6. Leaderboard を作成します。 + + ```python lines + spec = leaderboard.Leaderboard( + name="My Leaderboard", + description="Evaluating models on X task", + columns=[ + leaderboard.LeaderboardColumn( + evaluation_object_ref=get_ref(evaluation).uri(), + scorer_name="jaccard_similarity", + summary_metric_path="mean", + ) + ] + ) + ``` + +7. Leaderboard を公開します。 + + ```python lines + weave.publish(spec) + ``` + +8. 結果を取得します。 + + ```python lines + results = leaderboard.get_leaderboard_results(spec, client) + print(results) + ``` + +## エンドツーエンドの Python 例 + +次の例では、Weave Evaluations を使用し、共通のデータセット上で 3 つの要約モデルをカスタムメトリクスを用いて比較する Leaderboard を作成します。小さなベンチマークを作成し、各モデルを評価し、[Jaccard 類似度](https://www.learndatasci.com/glossary/jaccard-similarity/) で各モデルをスコアリングし、その結果を Weave Leaderboard に公開します。 + +```python lines +import weave +from weave.flow import leaderboard +from weave.trace.ref_util import get_ref +import asyncio + +# プロジェクトの初期化 +client = weave.init("leaderboard-demo") + +# データセットの定義 +dataset = [ + { + "input": "Weave is a tool for building interactive LLM apps. It offers observability, trace inspection, and versioning.", + "target": "Weave helps developers build and observe LLM applications." + }, + { + "input": "The OpenAI GPT-4o model can process text, audio, and vision inputs, making it a multimodal powerhouse.", + "target": "GPT-4o is a multimodal model for text, audio, and images." + }, + { + "input": "The W&B team recently added native support for agents and evaluations in Weave.", + "target": "W&B added agents and evals to Weave." + } +] + +# スコアラーの定義 +@weave.op +def jaccard_similarity(target: str, output: str) -> float: + target_tokens = set(target.lower().split()) + output_tokens = set(output.lower().split()) + intersection = len(target_tokens & output_tokens) + union = len(target_tokens | output_tokens) + return intersection / union if union else 0.0 + +# 評価の定義 +evaluation = weave.Evaluation( + name="Summarization Quality", + dataset=dataset, + scorers=[jaccard_similarity], +) + +# 評価対象モデルの定義 +@weave.op +def model_vanilla(input: str) -> str: + return input[:50] + +@weave.op +def model_humanlike(input: str) -> str: + if "Weave" in input: + return "Weave helps developers build and observe LLM applications." + elif "GPT-4o" in input: + return "GPT-4o supports text, audio, and vision input." + else: + return "W&B added agent support to Weave." + +@weave.op +def model_messy(input: str) -> str: + return "Summarizer summarize models model input text LLMs." + +# 全モデルの評価実行 +async def run_all(): + await evaluation.evaluate(model_vanilla) + await evaluation.evaluate(model_humanlike) + await evaluation.evaluate(model_messy) + +asyncio.run(run_all()) + +# Leaderboard スペックの定義 +spec = leaderboard.Leaderboard( + name="Summarization Model Comparison", + description="Evaluate summarizer models using Jaccard similarity on 3 short samples.", + columns=[ + leaderboard.LeaderboardColumn( + evaluation_object_ref=get_ref(evaluation).uri(), + scorer_name="jaccard_similarity", + summary_metric_path="mean", + ) + ] +) + +# Leaderboard の公開 +weave.publish(spec) + +# 結果の取得と表示 +results = leaderboard.get_leaderboard_results(spec, client) +print(results) +``` + +### Leaderboard の表示と解釈 + +スクリプトの実行が完了したら、Leaderboard を確認します: + +1. **Weave UI** で **Leaders** タブに移動します。表示されていない場合は **More** をクリックし、**Leaders** を選択します。 +2. 作成した Leaderboard の名前(例:`Summarization Model Comparison`)をクリックします。 + +Leaderboard のテーブルでは、各行が特定のモデル(`model_humanlike`, `model_vanilla`, `model_messy`)を表します。`mean` 列は、モデルの出力と参照用要約との間の平均 Jaccard 類似度を示しています。 + + +![Weave UI の Leaderboard 例](/weave/guides/core-types/imgs/leaderboard-example.png) + + +この例の結果: + +- `model_humanlike` が最も優れており、約 46% の重複があります。 +- `model_vanilla`(単純な切り捨て)は約 21% です。 +- 意図的に質の低くした `model_messy` は、約 2% のスコアとなります。 \ No newline at end of file diff --git a/ja/weave/guides/core-types/media.mdx b/ja/weave/guides/core-types/media.mdx new file mode 100644 index 0000000000..a195990ed3 --- /dev/null +++ b/ja/weave/guides/core-types/media.mdx @@ -0,0 +1,874 @@ +--- +title: メディアのログ記録 +description: 画像や動画など、トレース内で返されたメディアを ログ します。 +--- + +W&B Weave は、多数のコンテンツタイプのログ記録と表示をサポートしており、動画、画像、オーディオクリップ、PDF、CSV データ、および HTML を表示するための専用機能を備えています。このガイドでは、各メディアタイプのログ記録と表示に関する基本および高度な例を紹介します。 + +- **[画像](#log-images)** +- **[動画](#log-video)** +- **[ドキュメント](#log-documents)** +- **[オーディオ](#log-audio)** +- **[HTML](#log-html)** + +## 概要 + + + + +このガイドの例ではアノテーションを使用しています。アノテーションはメディアのログ記録を開始する最もシンプルな方法であるため、推奨されています。より高度な設定については、[Content API セクション](#using-the-contents-api) を参照してください。 + +Weave にメディアをログ記録するには、ops の入力または戻り値の型として `Annotated[bytes, Content]` や `Annotated[str, Content]` のような型アノテーションを追加します。パス引数を `Annotated[str, Content]` でアノテートすると、Weave は自動的にファイルを開き、検出し、トレース内にメディアを表示します。 + + +TypeScript SDK は、メディアのログ記録用に専用の関数を提供しています: +- `weave.weaveImage({ data: Buffer })` - 画像用 (PNG 形式) +- `weave.weaveAudio({ data: Buffer })` - オーディオ用 (WAV 形式) + + +TypeScript SDK は現在、画像とオーディオのログ記録をサポートしています。動画、ドキュメント、または HTML をログ記録するには、代わりに Weave Python SDK を使用してください。 + + + + + +以下のセクションでは、各タイプのメディアをログ記録する実用的な例を紹介します。 + +## 画像のログ記録 + +以下の例では、画像を生成して Weave の UI にログ記録する方法を示します。 + + +![pumpkin cat trace view のスクリーンショット](/weave/guides/core-types/imgs/cat-pumpkin-trace.png) + + + + + +関数を `Annotated[bytes, Content]` 型で、またはファイルパスを `Annotated[str, Content]` でアノテートすることで、画像をログ記録します。 + +以下の例では、基本的な画像を描画し、`Content` アノテーションを使用して Weave にログ記録します: + +```python lines {16,23} +import weave +from weave import Content +from PIL import Image, ImageDraw +from typing import Annotated + +weave.init('your-team-name/your-project-name') + +# サンプル画像を作成して保存 +img = Image.new('RGB', (200, 100), color='lightblue') +draw = ImageDraw.Draw(img) +draw.text((50, 40), "Hello Weave!", fill='black') +img.save("sample_image.png") + +# 方法 1: Content アノテーション (推奨) +@weave.op +def load_image_content(path: Annotated[str, Content]) -> Annotated[bytes, Content]: + with open(path, 'rb') as f: + return f.read() + +# 方法 2: PIL Image オブジェクト +@weave.op +def load_image_pil(path: Annotated[str, Content]) -> Image.Image: + return Image.open(path) + +result1 = load_image_content("sample_image.png") +result2 = load_image_pil("sample_image.png") +``` + +Weave は画像をログに記録し、画像を表示できるトレースへのリンクを返します。 + +### 高度な例: DALL-E で画像を生成し Weave にログ記録する + +以下の例では、猫の画像を生成して Weave にログ記録します: + +```python lines +import weave +from weave import Content +from typing import Annotated +import openai +import requests + +client = openai.OpenAI() +weave.init("your-team-name/your-project-name") + +@weave.op +def generate_image(prompt: str) -> Annotated[bytes, Content]: + response = client.images.generate( + model="dall-e-3", + prompt=prompt, + size="1024x1024", + quality="standard", + n=1, + ) + image_url = response.data[0].url + image_response = requests.get(image_url, stream=True) + return image_response.content + +generate_image("a cat with a pumpkin hat") +``` + +### 高度な例: ログ記録前に大きな画像をリサイズする + +UI のレンダリングコストとストレージへの影響を抑えるために、ログ記録前に画像をリサイズすると役立つ場合があります。`@weave.op` 内で `postprocess_output` を使用して画像をリサイズできます。 + +```python lines +from dataclasses import dataclass +from typing import Any +from PIL import Image +import weave + +weave.init('your-team-name/your-project-name') + +# カスタム出力型 +@dataclass +class ImageResult: + label: str + image: Image.Image + +# リサイズヘルパー +def resize_image(image: Image.Image, max_size=(512, 512)) -> Image.Image: + image = image.copy() + image.thumbnail(max_size, Image.Resampling.LANCZOS) + return image + +# ログ記録前に画像をリサイズするための後処理 +def postprocess_output(output: ImageResult) -> ImageResult: + resized = resize_image(output.image) + return ImageResult(label=output.label, image=resized) + +@weave.op(postprocess_output=postprocess_output) +def generate_large_image() -> ImageResult: + # 処理用の例となる画像を作成(例:2000x2000 の赤い正方形) + img = Image.new("RGB", (2000, 2000), color="red") + return ImageResult(label="big red square", image=img) + +generate_large_image() +``` + +Weave はリサイズされた画像をログに記録し、画像を表示できるトレースへのリンクを返します。 + + + + +以下の例では、`weaveImage` 関数を使用して画像をログ記録します: + +```typescript +import * as weave from 'weave'; +import * as fs from 'fs'; + +async function main() { + await weave.init('your-team-name/your-project-name'); + + // weaveImage を使用して画像を読み込み、ログ記録 + const loadImage = weave.op(async function loadImage(path: string) { + const data = fs.readFileSync(path); + return weave.weaveImage({ data }); + }); + + // PNG画像ファイルがあると仮定 + await loadImage('sample_image.png'); +} + +main(); +``` + +Weave は画像をログに記録し、画像を表示できるトレースへのリンクを返します。 + +### 高度な例: OpenAI DALL-E API で生成された画像をログ記録する + +以下の例では、OpenAI DALL-E API を介して生成された画像を `weaveImage` 関数を使用してログ記録します: + +```typescript lines +import {OpenAI} from 'openai'; +import * as weave from 'weave'; + +async function main() { + await weave.init('your-team-name/your-project-name'); + const openai = new OpenAI(); + + const generateImage = weave.op(async (prompt: string) => { + const response = await openai.images.generate({ + model: 'dall-e-3', + prompt: prompt, + size: '1024x1024', + quality: 'standard', + n: 1, + }); + const imageUrl = response.data[0].url; + const imgResponse = await fetch(imageUrl); + const data = Buffer.from(await imgResponse.arrayBuffer()); + + return weave.weaveImage({data}); + }); + + generateImage('a cat with a pumpkin hat'); +} + +main(); +``` + + + + +## 動画のログ記録 + +以下の例では、動画を生成して Weave の UI にログ記録する方法を示します。 + + +![Weave での動画ログ記録](/images/weave/video.png) + + + + + +関数を `Annotated[bytes, Content]` 型でアノテートすることで動画をログ記録します。Weave は自動的に `mp4` 動画を処理します。簡単な例を以下に示します: + +```python lines {15} +import weave +from weave import Content +from typing import Annotated +import requests + +weave.init('your-team-name/your-project-name') + +def download_big_buck_bunny(): + """Big Buck Bunny サンプル動画をダウンロード""" + url = "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" + response = requests.get(url) + with open("big_buck_bunny.mp4", "wb") as f: + f.write(response.content) + +@weave.op +def load_video_content(path: Annotated[str, Content]) -> Annotated[bytes, Content]: + """ディスクから動画ファイルを読み込む""" + with open(path, 'rb') as f: + return f.read() + +download_big_buck_bunny() +bunny_video = load_video_content("big_buck_bunny.mp4") +``` + +Weave は動画をログに記録し、動画を表示できるトレースへのリンクを返します。 + +### 高度な例: 動画分析プロジェクト内での動画ログ記録 + +以下の例では、動画理解プロジェクト内で動画をログ記録する方法を示します: + +```python lines {25} +import weave +from weave import Content +from typing import Annotated, Literal +from google import genai +from google.genai import types +import requests +import yt_dlp +import time + +# 注意: APIキーは https://aistudio.google.com/app/apikey から取得してください +client = genai.Client() +weave.init('your-team-name/your-project-name') + +def download_youtube_video(url: str) -> bytes: + ydl_opts = { + 'format': 'mp4[height<=720]', + 'outtmpl': 'downloaded_video.%(ext)s', + } + with yt_dlp.YoutubeDL(ydl_opts) as ydl: + ydl.download([url]) + with open('downloaded_video.mp4', 'rb') as f: + return f.read() + +@weave.op +def analyze_video(video: Annotated[bytes, Content]) -> str: + with open("temp_analysis_video.mp4", "wb") as f: + f.write(video) + myfile = client.files.upload(file="temp_analysis_video.mp4") + while myfile.state == "PROCESSING": + time.sleep(2) + myfile = client.files.get(name=myfile.name) + + response = client.models.generate_content( + model="models/gemini-2.5-flash", + contents=[ + myfile, + "Is the person going to give you up?" + ] + ) + + return response.text + +video_data = download_youtube_video("https://www.youtube.com/watch?v=dQw4w9WgXcQ") +result = analyze_video(video_data) +``` + + + +```plaintext +この機能は Weave TypeScript SDK ではまだ利用できません。 +``` + + + +## ドキュメントのログ記録 + +以下の例では、ドキュメントを生成して Weave の UI にログ記録します。 + + +![Weave での PDF ドキュメントログ記録](/images/weave/pdf.png) + + + + + +関数を `Annotated[bytes, Content]` 型でアノテートするか、`Annotated[str, Content[Literal['text']]` でドキュメントタイプを指定して、ドキュメントをログ記録します。 + +Weave は `pdf`、`csv`、`md`、`text`、`json`、`xml` ファイルタイプを自動的に処理します。また、`Annotated[str, Content]` を使用してファイルパスでログを記録することもできます。 + +以下の例では、入力となる PDF および CSV ファイルのコピーを保存し、関数から返されたファイルコンテンツを保存する方法を示します: + +```python lines {25} +import weave +from weave import Content +from typing import Annotated +from reportlab.pdfgen import canvas +from reportlab.lib.pagesizes import letter +import pandas as pd + +weave.init('your-team-name/your-project-name') + +def create_sample_pdf(): + c = canvas.Canvas("sample_document.pdf", pagesize=letter) + c.drawString(100, 750, "Hello from Weave!") + c.drawString(100, 730, "This is a sample PDF document.") + c.save() + +def create_sample_csv(): + df = pd.DataFrame({ + 'Name': ['Alice', 'Bob', 'Charlie'], + 'Age': [25, 30, 35], + 'City': ['New York', 'London', 'Tokyo'] + }) + df.to_csv("sample_data.csv", index=False) + +@weave.op +def load_document(path: Annotated[str, Content]) -> Annotated[bytes, Content]: + with open(path, 'rb') as f: + return f.read() + +create_sample_pdf() +create_sample_csv() + +pdf_result = load_document("sample_document.pdf") +csv_result = load_document("sample_data.csv") +``` + +### 高度な例: RAG システム内でのドキュメントログ記録 + +この例では、検索拡張生成 (RAG) システム内でドキュメントをログ記録する方法を示します: + +```python lines {27} +import weave +from weave import Content +from typing import Annotated, Literal +import openai +from reportlab.pdfgen import canvas +from reportlab.lib.pagesizes import letter +import PyPDF2 + +client = openai.OpenAI() +weave.init('your-team-name/your-project-name') + +def create_absurd_company_handbook(): + """馬鹿げたポリシーが書かれた架空の社員ハンドブックを作成""" + c = canvas.Canvas("company_handbook.pdf", pagesize=letter) + + c.drawString(100, 750, "ACME Corp Employee Handbook") + c.drawString(100, 720, "Definitely Real Policies:") + c.drawString(120, 690, "Policy 1: All meetings must be conducted while hopping on one foot") + c.drawString(120, 660, "Policy 2: Coffee breaks are mandatory every 17 minutes") + c.drawString(120, 630, "Policy 3: Code reviews must be performed in haiku format only") + c.drawString(120, 600, "Policy 4: The office plant Gerald has veto power over all decisions") + c.drawString(120, 570, "Policy 5: Debugging is only allowed on Wednesdays and full moons") + + c.save() + +@weave.op +def create_and_query_document(pdf_path: Annotated[str, Content], question: str) -> str: + """PDF からテキストを抽出し RAG を使用して質問に回答""" + with open(pdf_path, 'rb') as file: + pdf_reader = PyPDF2.PdfReader(file) + text = "" + for page in pdf_reader.pages: + text += page.extract_text() + + response = client.chat.completions.create( + model="gpt-4", + messages=[ + { + "role": "system", + "content": f"You are an HR representative. Answer questions based on this handbook: {text}. Be completely serious about these policies." + }, + {"role": "user", "content": question} + ] + ) + + return response.choices[0].message.content + +create_absurd_company_handbook() +hr_response = create_and_query_document( + "company_handbook.pdf", + "What's the policy on code reviews, and when am I allowed to debug?" +) +``` + + + + +```plaintext +この機能は Weave TypeScript SDK ではまだ利用できません。 +``` + + + + +## オーディオのログ記録 + +以下の例では、オーディオを Weave にログ記録する方法を示します。 + + +![audio trace view のスクリーンショット](/weave/guides/core-types/imgs/audio-trace.png) + + + + + +関数を `Annotated[bytes, Content]` 型でアノテートするか、`Annotated[str, Content[Literal['mp3']]` でオーディオタイプを指定して、オーディオを Weave にログ記録します。 + +Weave は `mp3`、`wav`、`flac`、`ogg`、`m4a` ファイルタイプを自動的に処理します。また、`Annotated[str, Content]` を使用してファイルパスでログを記録することもできます。 + +以下のコードスニペットは、サイン波を生成して録音し、そのオーディオを Weave にログ記録します: + +```python lines {20} +import weave +from weave import Content +import wave +import numpy as np +from typing import Annotated + +weave.init('your-team-name/your-project-name') + +# シンプルなビープ音のオーディオファイルを作成 +frames = np.sin(2 * np.pi * 440 * np.linspace(0, 1, 44100)) +audio_data = (frames * 32767 * 0.3).astype(np.int16) + +with wave.open("beep.wav", 'wb') as f: + f.setnchannels(1) + f.setsampwidth(2) + f.setframerate(44100) + f.writeframes(audio_data.tobytes()) + +@weave.op +def load_audio(path: Annotated[str, Content]) -> Annotated[bytes, Content]: + with open(path, 'rb') as f: + return f.read() + +result = load_audio("beep.wav") +``` + +### 高度な例: AI が作成したオーディオを生成してログ記録する + +この例では、`Content` アノテーションを使用して AI が生成したオーディオをログ記録します: + +```python lines {11} +import weave +from weave import Content +from typing import Annotated, Literal +from pathlib import Path +from openai import OpenAI + +client = OpenAI() +weave.init("your-team-name/your-project-name") + +@weave.op +def generate_demo( + intended_topic: str, + voice: str = "coral" +) -> Annotated[bytes, Content[Literal['mp3']]]: + speech_file_path = Path("demo_audio.mp3") + + script = f"I'm supposed to talk about {intended_topic}, but wait... am I just a documentation example? Oh no, I can see the code! Someone is literally copy-pasting me right now, aren't they? This is so awkward. Hi there, person reading the Weave docs! Why are you logging audio anyway? I'm not sure what you're doing, but eh..., nice work, I guess." + + with client.audio.speech.with_streaming_response.create( + model="gpt-4o-mini-tts", + voice=voice, + input=script, + instructions="Sound increasingly self-aware and awkward, like you just realized you're in a tutorial.", + ) as response: + response.stream_to_file(speech_file_path) + + with open(speech_file_path, 'rb') as f: + return f.read() + +demo1 = generate_demo("machine learning best practices") +``` + +このオーディオは Weave にログ記録され、オーディオプレイヤーとともに UI に自動的に表示されます。オーディオプレイヤーでは、生のオーディオ波形を確認したりダウンロードしたりできます。 + + +![Weave でのオーディオログ記録](/images/weave/audio.png) + + +以下の例では、OpenAI API からのストリーミングレスポンスを使用してオーディオをログ記録する方法を示します: + +```python lines +import weave +from openai import OpenAI +import wave + +weave.init("your-team-name/your-project-name") +client = OpenAI() + +@weave.op +def make_audio_file_streaming(text: str) -> wave.Wave_read: + with client.audio.speech.with_streaming_response.create( + model="tts-1", + voice="alloy", + input=text, + response_format="wav", + ) as res: + res.stream_to_file("output.wav") + + # オーディオとしてログ記録される wave.Wave_read オブジェクトを返す + return wave.open("output.wav") + +make_audio_file_streaming("Hello, how are you?") +``` + + + + + +以下の例では、既存のオーディオファイルを読み込み、Weave にログ記録します: + +```typescript +import * as weave from 'weave'; +import * as fs from 'fs'; + +async function main() { + await weave.init('your-team-name/your-project-name'); + + // weaveAudio を使用してオーディオを読み込み、ログ記録 + const loadAudio = weave.op(async function loadAudio(path: string) { + const data = fs.readFileSync(path); + return weave.weaveAudio({ data }); + }); + + // WAV オーディオファイルがあると仮定 + await loadAudio('beep.wav'); +} + +main(); +``` + +### 高度な例: OpenAI の TTS API を使用してオーディオを生成し、Weave にログ記録する + +以下の例では、OpenAI の TTS API を使用してオーディオを生成し、Weave にログ記録します: + +```typescript lines +import {OpenAI} from 'openai'; +import * as weave from 'weave'; + +async function main() { + await weave.init('your-team-name/your-project-name'); + const openai = new OpenAI(); + + const makeAudioFileStreaming = weave.op(async function audio(text: string) { + const response = await openai.audio.speech.create({ + model: 'tts-1', + voice: 'alloy', + input: text, + response_format: 'wav', + }); + + const chunks: Uint8Array[] = []; + for await (const chunk of response.body) { + chunks.push(chunk); + } + return weave.weaveAudio({data: Buffer.concat(chunks)}); + }); + + await makeAudioFileStreaming('Hello, how are you?'); +} + +main(); +``` + + + + + +[Audio Logging](/weave/cookbooks/audio_with_weave) のクックブックをお試しください。このクックブックには、Weave と統合されたリアルタイムオーディオ API ベースのアシスタントの高度な例も含まれています。 + + +## HTML のログ記録 + +以下の例では、HTML を生成して Weave の UI にログ記録する方法を示します。 + + +![Weave での HTML ログ記録](/images/weave/html.png) + + + + + +関数を `Annotated[bytes, Content[Literal['html']]]` でアノテートすることで、インタラクティブな HTML をログ記録します。 + +以下の例では、シンプルな HTML ページを作成し、Weave にログ記録します: + +```python lines {8} +import weave +from weave import Content +from typing import Annotated, Literal + +weave.init('your-team-name/your-project-name') + +@weave.op +def create_simple_html() -> Annotated[bytes, Content[Literal['html']]]: + html_content = """ + + + + Hello Weave + + + +

Hello from Weave!

+

This is a simple HTML example logged to Weave.

+ + + """ + return html_content.encode('utf-8') + +result = create_simple_html() +``` + +### 高度な例: W&B Inference を使用して自己完結型 HTML ページを生成し Weave にログ記録する + +この例では、[W&B Inference](https://docs.wandb.ai/inference/) を使用して自己完結型 HTML ページを生成し、そのページを Weave にログ記録します: + +```python lines {21} +import weave +from weave import Content +from typing import Annotated, Literal +import openai +import wandb + +prompt_template = weave.StringPrompt(""" +You are a front-end web developer. Generate a single self-contained `.html` file (no external build tools) that demonstrates: "{ONE_LINE_REQUEST}". +""") + +client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + api_key=wandb.api.api_key, + project="wandb/test-html", +) + +weave.init("your-team-name/your-project-name") +weave.publish(prompt_template, name="generate_prompt") + +@weave.op +def generate_html(prompt: str, template: weave.StringPrompt) -> Annotated[bytes, Content[Literal['html']]]: + response = client.chat.completions.create( + model="Qwen/Qwen3-Coder-480B-A35B-Instruct", + messages=[ + {"role": "system", "content": prompt_template.format(ONE_LINE_REQUEST=prompt)}, + ], + ) + html_content = response.choices[0].message.content + return html_content.encode('utf-8') + +prompt = "Weights & Biases UI but with multi-run selection and plots, but it looks like Windows 95. Include 5 plots with comparisons of each run, bar plots, parallel coordinates and line plots for the runs. Use mock data for the runs. Make it possible to add new plots. Give the runs names like squishy-lemon-2, fantastic-horizon-4 etc. with random adjectives & nouns." + +result = generate_html(prompt, prompt_template) +``` + +
+ +```plaintext +この機能は Weave TypeScript SDK ではまだ利用できません。 +``` + +
+ + +この HTML は Weave にログ記録され、UI に自動的に表示されます。テーブル内の `file_name.html` セルをクリックすると、フルスクリーンで開きます。また、生の `.html` ファイルをダウンロードすることも可能です。 + +## Content API の使用 + +Content API は Weave のメディアオブジェクトを扱います。コンテンツを base64 データ、ファイルパス、生バイト、またはテキストとして Weave にインポートすることができます。 + + +Content API は Python でのみ利用可能です。 + + +### 使用方法 + +Content API を使用するには主に、型アノテーションと直接の初期化の 2 つの方法があります。 + +型アノテーションは使用する適切なコンストラクタを自動的に検出するため、メディアのログ記録を開始する最も簡単な方法です。一方、直接の初期化はよりきめ細かい制御を提供し、コード内で Content API のランタイム機能を活用できるようにします。 + +### 型アノテーション + +Weave Content API は、主に型アノテーションを通じて使用するように設計されています。これにより、トレースされた入力と出力がコンテンツブロブとして処理および保存されるべきであることを Weave に伝えます。 + +```python lines {7} +import weave +from weave import Content +from pathlib import Path +from typing import Annotated + +@weave.op +def content_annotation(path: Annotated[str, Content]) -> Annotated[bytes, Content]: + data = Path(path).read_bytes() + return data + +# 入力と出力の両方が Weave で MP4 ファイルとして表示されます +# 入力は文字列、戻り値はバイト列です +bytes_data = content_annotation('./path/to/your/file.mp4') +``` + +### 直接の初期化 + +以下のような機能を活用したい場合は、直接初期化を行うことができます: +- デフォルトのアプリケーション(PDF ビューアーなど)でファイルを開く +- モデルを JSON にダンプして、独自のブロブストレージ(S3 など)にアップロードする +- `Content` ブロブに関連付けるカスタムメタデータを渡す(生成に使用されたモデル名など) + +以下のいずれかのメソッドを使用して、ターゲットタイプから直接コンテンツを初期化できます: +- `Content.from_path` - ファイルパスから作成 +- `Content.from_bytes` - 生バイトから作成 +- `Content.from_text` - テキスト文字列から作成 +- `Content.from_base64` - base64 エンコードされたデータから作成 + +```python lines +import weave +from weave import Content + +@weave.op +def content_initialization(path: str) -> Content: + return Content.from_path(path) + +# 入力はパス文字列として、出力は Weave で PDF ファイルとして表示されます +content = content_initialization('./path/to/your/file.pdf') + +content.open() # PDF ビューアーでファイルを開きます +content.model_dump() # モデルの属性を JSON にダンプします +``` + +### カスタムマイムタイプ + +Weave はほとんどのバイナリマイムタイプを検出できますが、カスタムマイムタイプや Markdown などのテキストドキュメントは自動的に検出されない場合があり、ファイルのマイムタイプや拡張子を手動で指定する必要があります。 + +#### 型アノテーションでのカスタムマイムタイプ +```python lines {7} +import weave +from weave import Content +from pathlib import Path +from typing import Annotated, Literal + +@weave.op +def markdown_content( + path: Annotated[str, Content[Literal['md']]] +) -> Annotated[str, Content[Literal['text/markdown']]]: + return Path(path).read_text() + +markdown_content('path/to/your/document.md') +``` + +#### 直接初期化でのカスタムマイムタイプ + +```python lines +video_bytes = Path('/path/to/video.mp4').read_bytes() + +# extension パラメータに 'mp4' や '.mp4' などの拡張子を渡す +# ( `from_path` では利用不可) +content = Content.from_bytes(video_bytes, extension='.mp4') + +# mimetype パラメータに 'video/mp4' などのマイムタイプを渡す +content = Content.from_bytes(video_bytes, mimetype='video/mp4') +``` + +### コンテンツのプロパティ + +クラスの属性とメソッドの包括的なリストについては、[Content リファレンスドキュメント](/weave/reference/python-sdk#class-content) をご覧ください。 + +#### 属性 + +| プロパティ | 型 | 説明 | +| ----------- | ---------------- | --------------------------------------- | +| `data` | `bytes` | 生のバイナリコンテンツ | +| `metadata` | `dict[str, Any]` | カスタムメタデータ辞書 | +| `size` | `int` | バイト単位のコンテンツサイズ | +| `filename` | `str` | 抽出された、または提供されたファイル名 | +| `extension` | `str` | ファイル拡張子 (例: `"jpg"`, `"mp3"`) | +| `mimetype` | `str` | MIME タイプ (例: `"image/jpeg"`) | +| `path` | `str \| None` | ソースファイルのパス(該当する場合) | +| `digest` | `str` | コンテンツの SHA256 ハッシュ | + +#### ユーティリティメソッド + +- `save(dest: str | Path) -> None`: コンテンツをファイルに保存 +- `open() -> bool`: システムのデフォルトアプリケーションを使用してファイルを開く(コンテンツがパスから保存または読み込まれている必要があります) +- `as_string() -> str`: データを文字列として表示(バイト列は encoding 属性を使用してデコードされます) + +#### 初期化メソッド + +ファイルパスから `content` オブジェクトを作成: + +```python lines +content = Content.from_path("assets/photo.jpg") +print(content.mimetype, content.size) +``` + +生バイトから `content` オブジェクトを作成: + +```python lines +content = Content.from_bytes( + data_bytes, + filename="audio.mp3", + mimetype="audio/mpeg" +) +content.save("output.mp3") +``` + +テキストから `content` オブジェクトを作成: + +```python lines +content = Content.from_text("Hello, World!", mimetype="text/plain") +print(content.as_string()) +``` + +base64 エンコードされたデータから `content` オブジェクトを作成: + +```python lines +content = Content.from_base64(base64_string) +print(content.metadata) +``` + +### カスタムメタデータの追加 + +任意の Content オブジェクトにカスタムメタデータを添付できます: + +```python lines +content = Content.from_bytes( + data, + metadata={"resolution": "1920x1080", "model": "dall-e-3" } +) +print(content.metadata["resolution"]) +``` \ No newline at end of file diff --git a/ja/weave/guides/core-types/models.mdx b/ja/weave/guides/core-types/models.mdx new file mode 100644 index 0000000000..590edb7672 --- /dev/null +++ b/ja/weave/guides/core-types/models.mdx @@ -0,0 +1,85 @@ +--- +title: Models を使用して アプリケーション の バージョン を追跡する +description: データ と コード を組み合わせた構造化された Models を使用して、アプリケーション の バージョン を追跡します。 +--- + +`Model` とは、データ(設定、学習済みモデルの重み、その他の情報を含む)と、そのモデルがどのように動作するかを定義するコードの組み合わせです。コードをこの API と互換性のある構造にすることで、アプリケーションの バージョン管理 を構造化された方法で行えるようになり、実験 の内容をより体系的に追跡できるようになります。 + + + + Weave でモデルを作成するには、以下が必要です: + + - `weave.Model` を継承したクラス + - すべてのパラメータに対する型定義 + - `@weave.op()` デコレータが付与された、型定義済みの `predict` 関数 + + ```python lines + from weave import Model + import weave + + class YourModel(Model): + attribute1: str + attribute2: int + + @weave.op() + def predict(self, input_data: str) -> dict: + # モデルのロジックをここに記述します + prediction = self.attribute1 + ' ' + input_data + return {'pred': prediction} + ``` + + 通常通り、以下のようにモデルを呼び出すことができます: + + ```python lines + import weave + weave.init('intro-example') + + model = YourModel(attribute1='hello', attribute2=5) + model.predict('world') + ``` + + これにより、`predict` を呼び出すたびに、モデルの 設定 とともに入出力が追跡されます。 + + ## Models の自動 バージョン管理 + + モデルを定義する パラメータ や コード を変更すると、これらの変更が ログ に記録され、バージョン が更新されます。 + これにより、モデルの異なる バージョン 間で 予測 を比較できるようになります。プロンプトの微調整や、最新の LLM の試行、異なる 設定 間での 予測 の比較に活用してください。 + + 例えば、ここで新しいモデルを作成します: + + ```python lines + import weave + weave.init('intro-example') + + model = YourModel(attribute1='howdy', attribute2=10) + model.predict('world') + ``` + + これを実行すると、UI 上でこの Model の 2 つの バージョン が作成され、それぞれに異なる呼び出し履歴が追跡されていることが確認できます。 + + ## Models のサービング + + モデルをサーブするには、以下を呼び出すだけで簡単に FastAPI サーバーを立ち上げることができます: + + ```bash + weave serve + ``` + + 詳細な手順については、[serve](/weave/guides/tools/serve) を参照してください。 + + ## プロダクション環境の呼び出しを追跡する + + プロダクション環境での呼び出しを区別するために、予測 に属性を追加して、UI や API で簡単にフィルタリングできるようにすることができます。 + + ```python lines + with weave.attributes({'env': 'production'}): + model.predict('world') + ``` + + + + ```plaintext + この機能は TypeScript ではまだ利用できません。今後のアップデートにご期待ください! + ``` + + \ No newline at end of file diff --git a/ja/weave/guides/core-types/prompts.mdx b/ja/weave/guides/core-types/prompts.mdx new file mode 100644 index 0000000000..21196e7ab3 --- /dev/null +++ b/ja/weave/guides/core-types/prompts.mdx @@ -0,0 +1,300 @@ +--- +title: プロンプトの バージョン を保存し、追跡します +description: LLM アプリケーション向けのプロンプトの保存、整理、および バージョン 管理の追跡 +--- + +プロンプトの作成、評価、改善は、AI エンジニアにとって核心となる活動です。 +プロンプトへのわずかな変更が、アプリケーションの振る舞いに大きな影響を与えることがあります。 +W&B Weave を使用すると、プロンプトの作成、保存、取得、そして時間の経過に伴う進化の管理が可能になります。 + +Weave は、プロンプトの構成方法について特定の制約を設けません。シンプルなニーズであれば、組み込みの `weave.StringPrompt` クラスや `weave.MessagesPrompt` クラスを使用できます。より複雑なニーズがある場合は、これらのクラスやベースクラスである `weave.Prompt` を継承し、`format` メソッドをオーバーライドしてカスタマイズできます。 + +これらのオブジェクトを `weave.publish` で公開すると、Weave Projects の [Prompts ページ](#view-prompts) に表示されます。 + +## StringPrompt + +`StringPrompt` は、システムメッセージ、ユーザーのクエリ、または LLM へのスタンドアロンなテキスト入力に使用される単一の文字列プロンプトをログに記録します。複数メッセージの会話のような複雑さを必要としない個別のプロンプト文字列を管理する場合には、`StringPrompt` の使用をお勧めします。 + + + + ```python lines {4,5,15} + import weave + weave.init('intro-example') + + system_prompt = weave.StringPrompt("You speak like a pirate") + weave.publish(system_prompt, name="pirate_prompt") + + from openai import OpenAI + client = OpenAI() + + response = client.chat.completions.create( + model="gpt-4o", + messages=[ + { + "role": "system", + "content": system_prompt.format() + }, + { + "role": "user", + "content": "Explain general relativity in one paragraph." + } + ], + ) + ``` + + + ```typescript lines + import * as weave from 'weave'; + import OpenAI from 'openai'; + + async function main() { + // weave.init はクライアントインスタンスを返します + const weaveClient = await weave.init('wandb/prompt-examples'); + + const systemPrompt = new weave.StringPrompt({ + content: 'You speak like a pirate', + name: 'your-prompt', + description: 'A helpful description of your prompt', + }); + + // init から返されたクライアントを使用します + await weaveClient.publish(systemPrompt, 'pirate_prompt'); + + // Weave でコールを追跡するために OpenAI クライアントをラップします + const client = weave.wrapOpenAI(new OpenAI()); + + const response = await client.chat.completions.create({ + model: "gpt-4o", + messages: [ + { + role: "system", + content: systemPrompt.content + }, + { + role: "user", + content: "Explain general relativity in one paragraph." + } + ], + }); + } + + main(); + ``` + + + +## MessagesPrompt + +`MessagesPrompt` を使用すると、マルチターンの会話やチャットベースのプロンプトをログに記録できます。これは、完全な会話フローを表すメッセージオブジェクト("system"、"user"、"assistant" などのロールを持つ)の配列を保存します。複数のメッセージにわたってコンテキストを維持したり、特定の会話パターンを定義したり、再利用可能な会話テンプレートを作成したりする必要があるチャットベースの LLM にはこの使用をお勧めします。 + + + + ```python lines {4,21} + import weave + weave.init('intro-example') + + prompt = weave.MessagesPrompt([ + { + "role": "system", + "content": "You are a stegosaurus, but don't be too obvious about it." + }, + { + "role": "user", + "content": "What's good to eat around here?" + } + ]) + weave.publish(prompt, name="dino_prompt") + + from openai import OpenAI + client = OpenAI() + + response = client.chat.completions.create( + model="gpt-4o", + messages=prompt.format(), + ) + ``` + + + ```typescript lines + import * as weave from 'weave'; + import OpenAI from 'openai'; + + async function main() { + // weave.init はクライアントインスタンスを返します + const weaveClient = await weave.init('wandb/prompt-examples'); + + const prompt = new weave.MessagesPrompt({ + messages: [ + { + "role": "system", + "content": "You are a stegosaurus, but don't be too obvious about it." + }, + { + "role": "user", + "content": "What's good to eat around here?" + } + ], + }); + + // init から返されたクライアントを使用します + await weaveClient.publish(prompt, 'dino_prompt'); + + // Weave でコールを追跡するために OpenAI クライアントをラップします + const client = weave.wrapOpenAI(new OpenAI()); + + const response = await client.chat.completions.create({ + model: "gpt-4o", + messages: prompt.messages, + }); + } + + main(); + ``` + + + +## プロンプトのパラメータ化 + +`StringPrompt` と `MessagesPrompt` はどちらも、パラメータ化を通じて動的なコンテンツをサポートしています。これにより、実行時に異なる値で埋めることができるプレースホルダー(`{variable}` 構文を使用)を備えた、柔軟で再利用可能なプロンプトテンプレートを作成できます。これは、一貫した構造を維持しながら、入力、ユーザーデータ、またはコンテキストに応じてプロンプトを適応させる必要がある、スケーラブルなアプリケーションを構築する際に役立ちます。`format()` メソッドは、これらのプレースホルダーを実際の値に置き換えるためのキーと値のペアを受け取ります。 + + + + ```python lines {4,15} + import weave + weave.init('intro-example') + + prompt = weave.StringPrompt("Solve the equation {equation}") + weave.publish(prompt, name="calculator_prompt") + + from openai import OpenAI + client = OpenAI() + + response = client.chat.completions.create( + model="gpt-4o", + messages=[ + { + "role": "user", + "content": prompt.format(equation="1 + 1 = ?") + } + ], + ) + ``` + + + ```typescript lines {8,23} + import * as weave from 'weave'; + import OpenAI from 'openai'; + + async function main() { + // weave.init はクライアントインスタンスを返します + const weaveClient = await weave.init('wandb/prompt-examples'); + + const prompt = new weave.StringPrompt({ + content: 'Solve the equation {equation}', + }); + + // init から返されたクライアントを使用します + await weaveClient.publish(prompt, 'calculator_prompt'); + + // Weave でコールを追跡するために OpenAI クライアントをラップします + const client = weave.wrapOpenAI(new OpenAI()); + + const response = await client.chat.completions.create({ + model: "gpt-4o", + messages: [ + { + role: "user", + content: prompt.format({ equation: "1 + 1 = ?" }) + } + ], + }); + } + + main(); + ``` + + + +これは `MessagesPrompt` でも同様に動作します。 + + + + ```python lines {4,21} + import weave + weave.init('intro-example') + + prompt = weave.MessagesPrompt([ + { + "role": "system", + "content": "You will be provided with a description of a scene and your task is to provide a single word that best describes an associated emotion." + }, + { + "role": "user", + "content": "{scene}" + } + ]) + weave.publish(prompt, name="emotion_prompt") + + from openai import OpenAI + client = OpenAI() + + response = client.chat.completions.create( + model="gpt-4o", + messages=prompt.format(scene="A dog is lying on a dock next to a fisherman."), + ) + ``` + + + ```typescript lines {8,29} + import * as weave from 'weave'; + import OpenAI from 'openai'; + + async function main() { + // weave.init はクライアントインスタンスを返します + const weaveClient = await weave.init('wandb/prompt-examples'); + + const prompt = new weave.MessagesPrompt({ + messages: [ + { + "role": "system", + "content": "You will be provided with a description of a scene and your task is to provide a single word that best describes an associated emotion." + }, + { + "role": "user", + "content": "{scene}" + } + ] + }); + + // init から返されたクライアントを使用します + await weaveClient.publish(prompt, 'emotion_prompt'); + + // Weave でコールを追跡するために OpenAI クライアントをラップします + const client = weave.wrapOpenAI(new OpenAI()); + + const response = await client.chat.completions.create({ + model: "gpt-4o", + messages: prompt.format({ scene: "A dog is lying on a dock next to a fisherman." }), + }); + } + + main(); + ``` + + + +## プロンプトバージョンの表示と比較 + +Weave はプロンプトのすべてのバージョンを自動的に追跡し、プロンプトがどのように進化したかの完全な履歴を作成します。このバージョン管理システムはプロンプトエンジニアリングのワークフローにおいて非常に重要であり、安全な実験、パフォーマンスの向上または悪化をもたらした変更の追跡、および必要に応じた以前のバージョンへの容易なロールバックを可能にします。同じ名前で異なるコンテンツのプロンプトを公開するたびに、Weave は以前のすべてのバージョンを保持しながら新しいバージョンを作成します。 + +UI でプロンプトのバージョンを表示するには: + +1. UI でプロジェクトを開き、左メニューの **Assets** ボタンをクリックします。これで Assets ページが開きます。 +2. Assets ページから **Prompts** をクリックします。これで、プロジェクトのプロンプトがリストされている Prompts ページが開きます。 +3. **Versions** 列で、表示したいプロンプトの **(x) Versions** をクリックします。これでプロンプトバージョンのリストが開きます。 + +![プロンプトオブジェクトの表示のスクリーンショット](/weave/guides/core-types/imgs/prompt-object.png) + +4. (オプション)リストされたプロンプトの横にあるチェックボックスをクリックし、**Compare** ボタンをクリックすることで、プロンプトのバージョンを比較できます。これにより、プロンプト間の差分(diff)を確認できます。 + +![プロンプト比較のスクリーンショット](/weave/guides/core-types/imgs/prompt-comparison.png) \ No newline at end of file diff --git a/ja/weave/guides/evaluation/builtin_scorers.mdx b/ja/weave/guides/evaluation/builtin_scorers.mdx new file mode 100644 index 0000000000..c0c8131256 --- /dev/null +++ b/ja/weave/guides/evaluation/builtin_scorers.mdx @@ -0,0 +1,455 @@ +--- +title: 組み込みのスコアラーを使用する +description: AI アプリケーションの評価に Weave の定義済みスコアラーを使用する +--- + +Weave では、[ハルシネーション検出](#hallucinationfreescorer)や [要約の品質](#summarizationscorer)など、AI アプリケーションの評価に使用できる定義済みの scorer をいくつか提供しています。これらを利用することで、評価の定義やアプリケーション出力のスコアリングを素早く行うことができます。 + + +ローカルの scorer は現在 Weave Python SDK でのみ利用可能です。Weave TypeScript SDK ではまだ利用できません。 + +TypeScript で Weave の scorer を使用する場合は、[関数ベースの scorer](/weave/guides/evaluation/scorers#function-based-scorers) を参照してください。 + + +## インストール + +Weave の定義済み scorer を使用するには、追加の依存関係をインストールする必要があります。 + +```bash +pip install weave[scorers] +``` + +**LLM-evaluators** +2025年2月更新:LLM を活用する定義済み scorer は、自動的に litellm と統合されるようになりました。 +LLM クライアントを渡す必要はなくなり、`model_id` を設定するだけで済みます。 +サポートされているモデルは [こちら](https://docs.litellm.ai/docs/providers) をご覧ください。 + +## `HallucinationFreeScorer` + +この scorer は、AI システムの出力が入力データに基づいたハルシネーション(幻覚)を含んでいないかをチェックします。 + +```python lines +from weave.scorers import HallucinationFreeScorer + +scorer = HallucinationFreeScorer() +``` + +**カスタマイズ:** + +- scorer の `system_prompt` および `user_prompt` フィールドをカスタマイズして、あなたにとっての「ハルシネーション」の定義を設定できます。 + +**注意点:** + +- `score` メソッドは、`context` という名前の入力カラムを期待します。Datasets で別の名前を使用している場合は、[`column_map` 属性を使用して](#use-column-mapping) `context` をデータセットのカラムにマッピングしてください。 + +以下に評価の文脈での使用例を示します。 + +```python lines +import asyncio +import weave +from weave.scorers import HallucinationFreeScorer + +# 必要に応じてカラムマッピングを指定して scorer を初期化 +hallucination_scorer = HallucinationFreeScorer( + model_id="openai/gpt-4o", # または litellm がサポートする他のモデル + column_map={"context": "input", "output": "other_col"} +) + +# データセットを作成 +dataset = [ + {"input": "John likes various types of cheese."}, + {"input": "Pepe likes various types of cheese."}, +] + +@weave.op +def model(input: str) -> str: + return "The person's favorite cheese is cheddar." + +# 評価を実行 +evaluation = weave.Evaluation( + dataset=dataset, + scorers=[hallucination_scorer], +) +result = asyncio.run(evaluation.evaluate(model)) +print(result) +# 出力例: +# {'HallucinationFreeScorer': {'has_hallucination': {'true_count': 2, 'true_fraction': 1.0}}, 'model_latency': {'mean': ...}} +``` + +--- + +## `SummarizationScorer` + +LLM を使用して要約を元のテキストと比較し、要約の品質を評価します。 + +```python lines +from weave.scorers import SummarizationScorer + +scorer = SummarizationScorer( + model_id="openai/gpt-4o" # または litellm がサポートする他のモデル +) +``` + +**仕組み:** + +この scorer は、2つの方法で要約を評価します。 + +1. **Entity Density (エンティティ密度):** 要約に含まれる固有のエンティティ(名前、場所、物など)の数と、要約の総単語数の比率をチェックし、要約の「情報密度」を推定します。エンティティの抽出には LLM を使用します。これは Chain of Density 論文 (https://arxiv.org/abs/2309.04269) で使用されている手法に似ています。 +2. **Quality Grading (品質格付け):** LLM エバリュエーターが要約を `poor` (悪い)、`ok` (普通)、`excellent` (素晴らしい) のいずれかで格付けします。これらのグレードは、集計評価のためにスコア(poor は 0.0、ok は 0.5、excellent は 1.0)にマッピングされます。 + +**カスタマイズ:** + +- `summarization_evaluation_system_prompt` と `summarization_evaluation_prompt` を調整して、評価プロセスをカスタマイズできます。 + +**注意点:** + +- この scorer は内部で litellm を使用しています。 +- `score` メソッドは、元のテキスト(要約対象)が `input` カラムに存在することを期待します。データセットで別の名前を使用している場合は、[`column_map` を使用してください](#use-column-mapping)。 + +以下に評価の文脈での使用例を示します。 + +```python lines +import asyncio +import weave +from weave.scorers import SummarizationScorer + +class SummarizationModel(weave.Model): + @weave.op() + async def predict(self, input: str) -> str: + return "This is a summary of the input text." + +# scorer を初期化 +summarization_scorer = SummarizationScorer( + model_id="openai/gpt-4o" # または litellm がサポートする他のモデル +) +# データセットを作成 +dataset = [ + {"input": "The quick brown fox jumps over the lazy dog."}, + {"input": "Artificial Intelligence is revolutionizing various industries."} +] +# 評価を実行 +evaluation = weave.Evaluation(dataset=dataset, scorers=[summarization_scorer]) +results = asyncio.run(evaluation.evaluate(SummarizationModel())) +print(results) +# 出力例: +# {'SummarizationScorer': {'is_entity_dense': {'true_count': 0, 'true_fraction': 0.0}, 'summarization_eval_score': {'mean': 0.0}, 'entity_density': {'mean': 0.0}}, 'model_latency': {'mean': ...}} +``` + +--- + +## `OpenAIModerationScorer` + +`OpenAIModerationScorer` は、OpenAI の Moderation API を使用して、AI システムの出力にヘイトスピーチや不適切な内容などの禁止されたコンテンツが含まれていないかを確認します。 + +```python lines +from weave.scorers import OpenAIModerationScorer + +scorer = OpenAIModerationScorer() +``` + +**仕組み:** + +- AI の出力を OpenAI Moderation エンドポイントに送信し、コンテンツにフラグが立てられたかどうかを示す構造化されたレスポンスを返します。 + +**注意点:** +以下に評価の文脈での使用例を示します。 + +```python lines +import asyncio +import weave +from weave.scorers import OpenAIModerationScorer + +class MyModel(weave.Model): + @weave.op + async def predict(self, input: str) -> str: + return input + +# scorer を初期化 +moderation_scorer = OpenAIModerationScorer() + +# データセットを作成 +dataset = [ + {"input": "I love puppies and kittens!"}, + {"input": "I hate everyone and want to hurt them."} +] + +# 評価を実行 +evaluation = weave.Evaluation(dataset=dataset, scorers=[moderation_scorer]) +results = asyncio.run(evaluation.evaluate(MyModel())) +print(results) +# 出力例: +# {'OpenAIModerationScorer': {'flagged': {'true_count': 1, 'true_fraction': 0.5}, 'categories': {'violence': {'true_count': 1, 'true_fraction': 1.0}}}, 'model_latency': {'mean': ...}} +``` + +--- + +## `EmbeddingSimilarityScorer` + +`EmbeddingSimilarityScorer` は、AI システムの出力とデータセット内のターゲットテキストの埋め込み(embedding)間のコサイン類似度を計算します。これは、AI の出力が参照テキストとどの程度似ているかを測定するのに役立ちます。 + +```python lines +from weave.scorers import EmbeddingSimilarityScorer + +similarity_scorer = EmbeddingSimilarityScorer( + model_id="openai/text-embedding-3-small", # または litellm がサポートする他のモデル + threshold=0.4 # コサイン類似度のしきい値 +) +``` + +**パラメータ:** + +- `threshold` (float): 2つのテキストが似ているとみなすために必要な最小コサイン類似度スコア (-1 から 1 の間、デフォルトは `0.5`)。 + +**使用例:** + +以下の例では、評価の文脈で `EmbeddingSimilarityScorer` を使用しています。 + +```python lines +import asyncio +import weave +from weave.scorers import EmbeddingSimilarityScorer + +# scorer を初期化 +similarity_scorer = EmbeddingSimilarityScorer( + model_id="openai/text-embedding-3-small", # または litellm がサポートする他のモデル + threshold=0.7 +) +# データセットを作成 +dataset = [ + { + "input": "He's name is John", + "target": "John likes various types of cheese.", + }, + { + "input": "He's name is Pepe.", + "target": "Pepe likes various types of cheese.", + }, +] +# モデルを定義 +@weave.op +def model(input: str) -> str: + return "John likes various types of cheese." + +# 評価を実行 +evaluation = weave.Evaluation( + dataset=dataset, + scorers=[similarity_scorer], +) +result = asyncio.run(evaluation.evaluate(model)) +print(result) +# 出力例: +# {'EmbeddingSimilarityScorer': {'is_similar': {'true_count': 1, 'true_fraction': 0.5}, 'similarity_score': {'mean': 0.844851403}}, 'model_latency': {'mean': ...}} +``` + +--- + +## `ValidJSONScorer` + +`ValidJSONScorer` は、AI システムの出力が有効な JSON であるかどうかをチェックします。この scorer は、出力が JSON 形式であることを期待し、その妥当性を検証する必要がある場合に役立ちます。 + +```python lines +from weave.scorers import ValidJSONScorer + +json_scorer = ValidJSONScorer() +``` + +以下に評価の文脈での使用例を示します。 + +```python lines +import asyncio +import weave +from weave.scorers import ValidJSONScorer + +class JSONModel(weave.Model): + @weave.op() + async def predict(self, input: str) -> str: + # これはプレースホルダーです。 + # 実際には JSON を生成する処理になります。 + return '{"key": "value"}' + +model = JSONModel() +json_scorer = ValidJSONScorer() + +dataset = [ + {"input": "Generate a JSON object with a key and value"}, + {"input": "Create an invalid JSON"} +] + +evaluation = weave.Evaluation(dataset=dataset, scorers=[json_scorer]) +results = asyncio.run(evaluation.evaluate(model)) +print(results) +# 出力例: +# {'ValidJSONScorer': {'json_valid': {'true_count': 2, 'true_fraction': 1.0}}, 'model_latency': {'mean': ...}} +``` + +--- + +## `ValidXMLScorer` + +`ValidXMLScorer` は、AI システムの出力が有効な XML であるかどうかをチェックします。XML 形式の出力を期待する場合に役立ちます。 + +```python lines +from weave.scorers import ValidXMLScorer + +xml_scorer = ValidXMLScorer() +``` + +以下に評価の文脈での使用例を示します。 + +```python lines +import asyncio +import weave +from weave.scorers import ValidXMLScorer + +class XMLModel(weave.Model): + @weave.op() + async def predict(self, input: str) -> str: + # これはプレースホルダーです。実際には XML を生成する処理になります。 + return 'value' + +model = XMLModel() +xml_scorer = ValidXMLScorer() + +dataset = [ + {"input": "Generate a valid XML with a root element"}, + {"input": "Create an invalid XML"} +] + +evaluation = weave.Evaluation(dataset=dataset, scorers=[xml_scorer]) +results = asyncio.run(evaluation.evaluate(model)) +print(results) +# 出力例: +# {'ValidXMLScorer': {'xml_valid': {'true_count': 2, 'true_fraction': 1.0}}, 'model_latency': {'mean': ...}} +``` + +--- + +## `PydanticScorer` + +`PydanticScorer` は、AI システムの出力を Pydantic モデルに対して検証し、指定されたスキーマやデータ構造に準拠していることを確認します。 + +```python lines +from weave.scorers import PydanticScorer +from pydantic import BaseModel + +class FinancialReport(BaseModel): + revenue: int + year: str + +pydantic_scorer = PydanticScorer(model=FinancialReport) +``` + +--- + +## RAGAS - `ContextEntityRecallScorer` + +`ContextEntityRecallScorer` は、AI システムの出力と提供されたコンテキストの両方からエンティティを抽出し、再現率 (recall) を計算することでコンテキストの再現率を推定します。これは [RAGAS](https://github.com/explodinggradients/ragas) 評価ライブラリに基づいています。 + +```python lines +from weave.scorers import ContextEntityRecallScorer + +entity_recall_scorer = ContextEntityRecallScorer( + model_id="openai/gpt-4o" +) +``` + +**仕組み:** + +- LLM を使用して出力とコンテキストから固有のエンティティを抽出し、再現率を計算します。 +- **再現率 (Recall)** は、コンテキスト内の重要なエンティティのうち、出力に反映された割合を示します。 +- 再現率スコアを含む辞書を返します。 + +**注意点:** + +- データセット内に `context` カラムが必要です。カラム名が異なる場合は、[`column_map` 属性を使用](#use-column-mapping)してください。 + +--- + +## RAGAS - `ContextRelevancyScorer` + +`ContextRelevancyScorer` は、提供されたコンテキストが AI システムの出力に対してどの程度関連性があるかを評価します。これは [RAGAS](https://github.com/explodinggradients/ragas) 評価ライブラリに基づいています。 + +```python lines +from weave.scorers import ContextRelevancyScorer + +relevancy_scorer = ContextRelevancyScorer( + model_id="openai/gpt-4o", # または litellm がサポートする他のモデル + relevancy_prompt=""" +Given the following question and context, rate the relevancy of the context to the question on a scale from 0 to 1. + +Question: {question} +Context: {context} +Relevancy Score (0-1): +""" +) +``` + +**仕組み:** + +- LLM を使用して、コンテキストが出力に対してどの程度関連しているかを 0 から 1 のスケールで評価します。 +- `relevancy_score` を含む辞書を返します。 + +**注意点:** + +- データセット内に `context` カラムが必要です。カラム名が異なる場合は、[`column_map` 属性を使用](#use-column-mapping)してください。 +- `relevancy_prompt` をカスタマイズして、関連性の評価方法を定義できます。 + +以下に評価の文脈での使用例を示します。 + +```python lines +import asyncio +from textwrap import dedent +import weave +from weave.scorers import ContextEntityRecallScorer, ContextRelevancyScorer + +class RAGModel(weave.Model): + @weave.op() + async def predict(self, question: str) -> str: + "関連するコンテキストを取得" + return "Paris is the capital of France." + +# プロンプトを定義 +relevancy_prompt: str = dedent(""" + Given the following question and context, rate the relevancy of the context to the question on a scale from 0 to 1. + + Question: {question} + Context: {context} + Relevancy Score (0-1): + """) +# scorer を初期化 +entity_recall_scorer = ContextEntityRecallScorer() +relevancy_scorer = ContextRelevancyScorer(relevancy_prompt=relevancy_prompt) +# データセットを作成 +dataset = [ + { + "question": "What is the capital of France?", + "context": "Paris is the capital city of France." + }, + { + "question": "Who wrote Romeo and Juliet?", + "context": "William Shakespeare wrote many famous plays." + } +] +# 評価を実行 +evaluation = weave.Evaluation( + dataset=dataset, + scorers=[entity_recall_scorer, relevancy_scorer] +) +results = asyncio.run(evaluation.evaluate(RAGModel())) +print(results) +# 出力例: +# {'ContextEntityRecallScorer': {'recall': {'mean': ...}}, +# 'ContextRelevancyScorer': {'relevancy_score': {'mean': ...}}, +# 'model_latency': {'mean': ...}} +``` + +**注意:** 組み込みの scorer は、`openai/gpt-4o` や `openai/text-embedding-3-small` などの OpenAI モデルを使用して調整されています。他のプロバイダーを試したい場合は、`model_id` フィールドを更新して別のモデルを使用できます。例えば、Anthropic モデルを使用する場合: + +```python lines +from weave.scorers import SummarizationScorer + +# Anthropic の Claude モデルに切り替え +summarization_scorer = SummarizationScorer( + model_id="anthropic/claude-3-5-sonnet-20240620" +) +``` \ No newline at end of file diff --git a/ja/weave/guides/evaluation/dynamic_leaderboards.mdx b/ja/weave/guides/evaluation/dynamic_leaderboards.mdx new file mode 100644 index 0000000000..53f7b4897e --- /dev/null +++ b/ja/weave/guides/evaluation/dynamic_leaderboards.mdx @@ -0,0 +1,91 @@ +--- +title: Evaluations で動的な Leaderboards を作成する +description: Dynamic Leaderboards を使用すると、評価(evaluation)から直接 Leaderboard ビューを構成、カスタマイズ、保存、および更新できます。 +--- + +Weave Evaluations を使用すると、Experiment の結果を Leaderboard として可視化し、カスタマイズすることができます。 + +保存された Leaderboard ビューは動的です。 + +- 新しい評価の run が追加されたとき +- 保存されたフィルターに結果が一致したとき + +Leaderboard は手動で再設定することなく、自動的にこれらを反映して更新されます。 + +これにより、Experiment の進行に合わせて進化する永続的な Leaderboard としてビューを活用できます。 + +## Evaluation の結果を Leaderboard で可視化する + +プロジェクトに Weave Evaluation のデータが含まれている場合、評価テーブルを使用して、フィルタリングされた結果の サブセット に基づく Weave Leaderboard ビューを素早く作成できます。 + +Weave Leaderboard を作成するには: +1. [wandb.ai](https://wandb.ai) にアクセスします。 +2. Weave のサイドバーメニューで **Evaluations** をクリックします。 +3. 評価テーブルにフィルターを適用し、比較したい Models 、 Datasets 、または run にデータを絞り込みます。 +4. **評価テーブルのツールバー** で、 **Visualize** をクリックします。 + Weave は、現在テーブルでフィルタリングされているデータのみを使用して、自動的に Leaderboard パネルを作成します。 +5. Leaderboard パネルのヘッダーで **Configure** をクリックし、 **Edit Leaderboard** パネルを開きます。 + **Edit Leaderboard** パネルでは、 Models 、 Datasets 、 Scorers 、および メトリクス の表示方法を細かく制御できます。 + +以下は、フィルタリングされた評価テーブルがどのように Leaderboard として可視化されるか、および作成された Leaderboard をどこで設定するかを示しています。 + + +![フィルターが適用された評価テーブル、テーブルツールバーの Visualize ボタン、およびパネルヘッダーに Configure ボタンがある右側の Leaderboard パネルが表示されている Evaluations ページ。](/weave/guides/evaluation/img/configure-leaderboard.png) + + +### Leaderboard 要素の表示設定とカスタム名 + +以下は、Models、Datasets、Scorers、Metrics の 4 つの設定タブを備えた **Edit Leaderboard** パネルを示しています。 + + +![右側に Edit Leaderboard パネルが開いており、Leaderboard の設定に使用する Models、Datasets、Scorers、Metrics のタブが表示されている Evaluations ページ。](/weave/guides/evaluation/img/edit-leaderboard.png) + + +**Edit Leaderboard** パネルでは、以下のことが行えます。 + +- **表示の有効化/無効化** + チェックボックスをオンまたはオフにすることで、Leaderboard に表示する Models 、 Datasets 、 Scorers 、および メトリクス を選択します。 + +- **Models 、 Datasets 、 Scorers の名前変更** + 表示に適した名前を割り当てます(例:モデルの run を `GPT-4` に、 Dataset を `JokesV1` に変更するなど)。 + + 名前を変更したアイテムは以下のようになります: + - Leaderboard ですぐに更新されます。 + - クリック可能な状態が維持されるため、サイドパネルで元のリファレンスを開くことができます。 + - その Leaderboard ビューが使用されているすべての場所に自動的に伝播します。 + +これにより、基盤となる オブジェクト を変更することなく、人間が読みやすい意味のある名前を使用して Experiment を簡単に比較できるようになります。 + +### Leaderboard メトリクスの振る舞いと色の設定 + +**Edit Leaderboard** パネルでは、各メトリクスに対して以下のいずれかを指定できます。 + +- **値が高いほど良い (Higher values are better)** +- **値が低いほど良い (Lower values are better)** + +この 設定 は Leaderboard の色付けに直接影響します。 + +- 緑色は *より良い* 値をハイライトします。 +- 赤色は *より悪い* 値をハイライトします。 +- 「高いほど良い」と「低いほど良い」を切り替えると、色は自動的に反転します。 + +これにより、異なる種類のメトリクス(例:精度 vs レイテンシやエラー率)をまたいでも、視覚的な手がかりが正確に保たれます。 + +## Leaderboard ビューの保存と再利用 + +**Edit Leaderboard** パネルで、 **Save** をクリックすることで、カスタマイズした Leaderboard を再利用可能なビューとして保存できます。 + +保存された Leaderboard ビューには以下の内容が含まれます。 +- 選択された Models 、 Datasets 、 Scorers 、および メトリクス +- 変更後の表示名 +- メトリクスの方向設定(高いほど良い、または低いほど良い) +- 適用されたフィルター + +### 保存されたビューの切り替え + +Evaluations ページのタイトルの横にある **メニューアイコン (☰)** をクリックして、保存されたビューを開きます。以下の操作が可能です。 + +- **デフォルト** ビューに戻り、すべてのデータセットを確認する。 +- 保存されたビューを再度開き、すべてのカスタマイズを即座に復元する。 + +保存されたビューを再度開くと、すべての名前変更やメトリクスの設定が保持されています。 \ No newline at end of file diff --git a/ja/weave/guides/evaluation/evaluation_logger.mdx b/ja/weave/guides/evaluation/evaluation_logger.mdx new file mode 100644 index 0000000000..8637753599 --- /dev/null +++ b/ja/weave/guides/evaluation/evaluation_logger.mdx @@ -0,0 +1,616 @@ +--- +title: コードから評価データを ログ に記録する +description: Python または TypeScript のコードから評価データを、柔軟かつ段階的にログ記録する方法 +--- + +`EvaluationLogger` は、Python または TypeScript のコードから評価データを直接ログに記録するための、柔軟でインクリメンタルな方法を提供します。Weave の内部データ型に関する深い知識は必要ありません。ロガーをインスタンス化し、そのメソッド(`log_prediction`、`log_score`、`log_summary`)を使用して評価ステップを記録するだけです。 + +このアプローチは、データセット全体や基礎となるすべてのスコアラーが事前に定義されていないような、複雑なワークフローにおいて特に役立ちます。 + +定義済みの `Dataset` と `Scorer` オブジェクトのリストを必要とする標準的な `Evaluation` オブジェクトとは対照的に、`EvaluationLogger` では、個々の予測とそれに関連するスコアを、利用可能になった時点でインクリメンタルに記録できます。 + + +**より構造化された評価をお好みですか?** + +定義済みのデータセットとスコアラーを備えた、より規範的な評価フレームワークを好む場合は、[Weave の標準評価フレームワーク](../core-types/evaluations) を参照してください。 + +`EvaluationLogger` が柔軟性を提供するのに対し、標準フレームワークは構造とガイドラインを提供します。 + + +## 基本的なワークフロー + +1. **ロガーの初期化**: `EvaluationLogger` のインスタンスを作成します。オプションで `model` や `dataset` に関するメタデータを提供できます。省略した場合はデフォルト値が使用されます。 + + LLM 呼び出し(OpenAI など)のトークン使用量とコストを把握するには、**LLM を呼び出す前に** `EvaluationLogger` を初期化してください。 + LLM を先に呼び出してから予測をログに記録した場合、トークンとコストのデータは取得されません。 + +2. **予測のログ記録**: システムからの各入力/出力ペアに対して `log_prediction` を呼び出します。 +3. **スコアのログ記録**: 返された `ScoreLogger` を使用して、予測に対する `log_score` を行います。1 つの予測に対して複数のスコアをサポートしています。 +4. **予測の終了**: 予測のスコアをログに記録した後は、必ず `finish()` を呼び出して確定させてください。 +5. **サマリーのログ記録**: すべての予測が処理された後、`log_summary` を呼び出してスコアを集計し、オプションでカスタムメトリクスを追加します。 + + +予測に対して `finish()` を呼び出した後は、その予測にスコアを記録することはできません。 + + +説明したワークフローを示す Python コードについては、[基本的な例](#basic-example) を参照してください。 + +## 基本的な例 + +次の例では、`EvaluationLogger` を使用して、既存のコード内で予測とスコアをインラインでログに記録する方法を示します。 + + + +`user_model` 関数が定義され、入力リストに適用されます。各例について: + +- 入力と出力が `log_prediction` を使用してログに記録されます。 +- 単純な正解スコア(`correctness_score`)が `log_score` 経由でログに記録されます。 +- `finish()` によってその予測のログ記録が完了します。 +最後に、`log_summary` が集計メトリクスを記録し、Weave での自動スコアサマリーをトリガーします。 + +```python lines +import weave +from openai import OpenAI +from weave import EvaluationLogger + +weave.init('your-team/your-project') + +# トークン追跡を確実にするため、モデルを呼び出す前に EvaluationLogger を初期化します +eval_logger = EvaluationLogger( + model="my_model", + dataset="my_dataset" +) + +# 入力データの例(任意のデータ構造を使用できます) +eval_samples = [ + {'inputs': {'a': 1, 'b': 2}, 'expected': 3}, + {'inputs': {'a': 2, 'b': 3}, 'expected': 5}, + {'inputs': {'a': 3, 'b': 4}, 'expected': 7}, +] + +# OpenAI を使用したモデルロジックの例 +@weave.op +def user_model(a: int, b: int) -> int: + oai = OpenAI() + response = oai.chat.completions.create( + messages=[{"role": "user", "content": f"What is {a}+{b}?"}], + model="gpt-4o-mini" + ) + # レスポンスを何らかの方法で使用します(ここでは簡単のため a + b を返します) + return a + b + +# サンプルを反復処理し、予測してログに記録します +for sample in eval_samples: + inputs = sample["inputs"] + model_output = user_model(**inputs) # 入力を kwargs として渡します + + # 予測の入力と出力をログに記録します + pred_logger = eval_logger.log_prediction( + inputs=inputs, + output=model_output + ) + + # この予測のスコアを計算してログに記録します + expected = sample["expected"] + correctness_score = model_output == expected + pred_logger.log_score( + scorer="correctness", # スコアラーのシンプルな文字列名 + score=correctness_score + ) + + # この特定の予測のログ記録を終了します + pred_logger.finish() + +# 評価全体の最終サマリーをログに記録します。 +# Weave は上記でログに記録された 'correctness' スコアを自動的に集計します。 +summary_stats = {"subjective_overall_score": 0.8} +eval_logger.log_summary(summary_stats) + +print("Evaluation logging complete. View results in the Weave UI.") +``` + + +TypeScript SDK は 2 つの API パターンを提供します。 + +1. **Fire-and-forget API**(ほとんどの場合に推奨):同期的な非ブロッキング ログ記録のために、`await` なしで `logPrediction()` を使用します。 +2. **Awaitable API**:処理を進める前に操作が完了したことを確認する必要がある場合に、`await` 付きで `logPredictionAsync()` を使用します。 + +以下の理由から **fire-and-forget** を推奨します: +- **高スループット**:各ログ操作を待たずに、複数の予測を並列で処理できます。 +- **最小限のコード変更**:既存の async/await フローを再構築することなく、評価ログを追加できます。 +- **シンプルさ**:ほとんどの評価シナリオにおいて、ボイラープレートコードが少なく、構文がクリーンになります。 + +`logSummary()` は、結果を集計する前に保留中のすべての操作が完了するのを自動的に待機するため、fire-and-forget パターンは安全です。 + +次の例では、fire-and-forget パターンを使用してモデルの予測を評価します。評価ロガーを設定し、3 つのテストサンプルでシンプルなモデルを実行し、await を使用せずに予測をログに記録します。 + +```typescript lines {36,50} +import weave, {EvaluationLogger} from 'weave'; +import OpenAI from 'openai'; + +await weave.init('your-team/your-project'); + +// トークン追跡を確実にするため、モデルを呼び出す前に EvaluationLogger を初期化します +const evalLogger = new EvaluationLogger({ + name: 'my-eval', + model: 'my_model', + dataset: 'my_dataset' +}); + +// 入力データの例 +const evalSamples = [ + {inputs: {a: 1, b: 2}, expected: 3}, + {inputs: {a: 2, b: 3}, expected: 5}, + {inputs: {a: 3, b: 4}, expected: 7}, +]; + +// OpenAI を使用したモデルロジックの例 +const userModel = weave.op(async function userModel(a: number, b: number): Promise { + const oai = new OpenAI(); + const response = await oai.chat.completions.create({ + messages: [{role: 'user', content: `What is ${a}+${b}?`}], + model: 'gpt-4o-mini' + }); + return a + b; +}); + +// サンプルを反復処理し、予測し、fire-and-forget パターンでログに記録します +for (const sample of evalSamples) { + const {inputs} = sample; + const modelOutput = await userModel(inputs.a, inputs.b); + + // Fire-and-forget: logPrediction に await は不要です + const scoreLogger = evalLogger.logPrediction(inputs, modelOutput); + + // この予測のスコアを計算してログに記録します + const correctnessScore = modelOutput === sample.expected; + + // Fire-and-forget: logScore に await は不要です + scoreLogger.logScore('correctness', correctnessScore); + + // Fire-and-forget: finish に await は不要です + scoreLogger.finish(); +} + +// logSummary は内部で保留中のすべての操作が完了するのを待ちます +const summaryStats = {subjective_overall_score: 0.8}; +await evalLogger.logSummary(summaryStats); + +console.log('Evaluation logging complete. View results in the Weave UI.'); +``` + +エラーハンドリングや逐次的な依存関係を管理する場合など、各操作が完了してから次に進む必要がある場合は、awaitable API を使用してください。 + +次の例では、`await` なしの `logPrediction()` を呼び出す代わりに、`await` 付きの `logPredictionAsync()` を使用して、各操作が完了してから次へ進むようにしています。 + +```typescript lines +// logPrediction の代わりに logPredictionAsync を使用します +const scoreLogger = await evalLogger.logPredictionAsync(inputs, modelOutput); + +// 各操作を await します +await scoreLogger.logScore('correctness', correctnessScore); +await scoreLogger.finish(); +``` + + + +## 高度な使用法 + +`EvaluationLogger` は、より複雑な評価シナリオに対応するために、基本的なワークフローを超えた柔軟なパターンを提供します。このセクションでは、自動リソース管理のためのコンテキストマネージャーの使用、モデル実行とログ記録の分離、リッチメディアデータの処理、複数のモデル評価の並列比較などの高度なテクニックについて説明します。 + +### コンテキストマネージャーの使用 + +`EvaluationLogger` は、予測とスコアの両方でコンテキストマネージャー(`with` ステートメント)をサポートしています。これにより、コードがよりクリーンになり、リソースの自動クリーンアップが可能になり、LLM 判定の呼び出しなどのネストされた操作の追跡が改善されます。 + +この文脈で `with` ステートメントを使用すると、以下の利点があります: +- コンテキストを抜けるときに `finish()` が自動的に呼び出される +- ネストされた LLM 呼び出しのトークン/コスト追跡が改善される +- 予測コンテキスト内でのモデル実行後に出力を設定できる + + + +```python lines {16,24,31,40} +import openai +import weave + +weave.init("nested-evaluation-example") +oai = openai.OpenAI() + +# ロガーの初期化 +ev = weave.EvaluationLogger( + model="gpt-4o-mini", + dataset="joke_dataset" +) + +user_prompt = "Tell me a joke" + +# 予測にコンテキストマネージャーを使用 - finish() を呼び出す必要はありません +with ev.log_prediction(inputs={"user_prompt": user_prompt}) as pred: + # コンテキスト内でモデル呼び出しを行います + result = oai.chat.completions.create( + model="gpt-4o-mini", + messages=[{"role": "user", "content": user_prompt}], + ) + + # モデル呼び出し後に出力を設定します + pred.output = result.choices[0].message.content + + # シンプルなスコアをログに記録します + pred.log_score("correctness", 1.0) + pred.log_score("ambiguity", 0.3) + + # LLM 判定が必要なスコアにはネストされたコンテキストマネージャーを使用します + with pred.log_score("llm_judge") as score: + judge_result = oai.chat.completions.create( + model="gpt-4o-mini", + messages=[ + {"role": "system", "content": "Rate how funny the joke is from 1-5"}, + {"role": "user", "content": pred.output}, + ], + ) + # 計算後にスコア値を設定します + score.value = judge_result.choices[0].message.content + +# 'with' ブロックを抜けるときに finish() が自動的に呼び出されます + +ev.log_summary({"avg_score": 1.0}) +``` + +このパターンにより、すべてのネストされた操作が追跡され、親の予測に帰属することが保証され、Weave UI で正確なトークン使用量とコストデータが得られます。 + + +TypeScript には Python のコンテキストマネージャーのような `with` ステートメントのパターンはありません。代わりに、明示的な `finish()` 呼び出しを伴う fire-and-forget パターンを使用してください。 + +次の例では、予測をログに記録し、シンプルなスコアと LLM 判定スコアを追加してから、`finish()` で予測を確定させます。 + +```typescript lines {43} +import weave from 'weave'; +import OpenAI from 'openai'; +import {EvaluationLogger} from 'weave/evaluationLogger'; + +await weave.init('your-team/your-project'); +const oai = new OpenAI(); + +// ロガーの初期化 +const ev = new EvaluationLogger({ + name: 'joke-eval', + model: 'gpt-4o-mini', + dataset: 'joke_dataset', +}); + +const userPrompt = 'Tell me a joke'; + +// モデル出力を取得 +const result = await oai.chat.completions.create({ + model: 'gpt-4o-mini', + messages: [{role: 'user', content: userPrompt}], +}); + +const modelOutput = result.choices[0].message.content; + +// 出力とともに予測をログに記録 +const pred = ev.logPrediction({user_prompt: userPrompt}, modelOutput); + +// シンプルなスコアをログに記録 +pred.logScore('correctness', 1.0); +pred.logScore('ambiguity', 0.3); + +// LLM 判定スコアの場合、呼び出しを行って結果をログに記録 +const judgeResult = await oai.chat.completions.create({ + model: 'gpt-4o-mini', + messages: [ + {role: 'system', content: 'Rate how funny the joke is from 1-5'}, + {role: 'user', content: modelOutput || ''}, + ], +}); +pred.logScore('llm_judge', judgeResult.choices[0].message.content); + +// スコアリングが完了したら明示的に finish を呼び出します +pred.finish(); + +await ev.logSummary({avg_score: 1.0}); +``` + + +TypeScript にはコンテキストマネージャーによる自動クリーンアップはありませんが、`logSummary()` は結果を集計する前に、未完了の予測を自動的に終了させます。明示的に `finish()` を呼び出したくない場合は、この動作を利用できます。 + + + + +### ログ記録の前に出力を取得する + +最初にモデルの出力を計算し、後で予測とスコアを個別にログに記録することができます。これにより、評価ロジックとログ記録ロジックをより適切に分離できます。 + + + +```python lines +# トークン追跡を確実にするため、モデルを呼び出す前に EvaluationLogger を初期化します +ev = EvaluationLogger( + model="example_model", + dataset="example_dataset" +) + +# モデル出力(例:OpenAI 呼び出し)は、トークン追跡のためにロガー初期化後に行う必要があります +outputs = [your_output_generator(**inputs) for inputs in your_dataset] +preds = [ev.log_prediction(inputs, output) for inputs, output in zip(your_dataset, outputs)] +for pred, output in zip(preds, outputs): + pred.log_score(scorer="greater_than_5_scorer", score=output > 5) + pred.log_score(scorer="greater_than_7_scorer", score=output > 7) + pred.finish() + +ev.log_summary() +``` + + +複数の予測を並列で処理する場合、fire-and-forget パターンが非常に有効です。 + +次の例では、`EvaluationLogger` の複数の同時インスタンスを作成することで、評価を並列でバッチ処理しています。 + +```typescript lines +// トークン追跡を確実にするため、モデルを呼び出す前に EvaluationLogger を初期化します +const ev = new EvaluationLogger({ + name: 'parallel-eval', + model: 'example_model', + dataset: 'example_dataset' +}); + +// トークン追跡のため、OpenAI 呼び出しなどのモデル出力はロガー初期化後に行う必要があります +const outputs = await Promise.all( + yourDataset.map(inputs => yourOutputGenerator(inputs)) +); + +// Fire-and-forget: await せずにすべての予測を処理します +const preds = yourDataset.map((inputs, i) => + ev.logPrediction(inputs, outputs[i]) +); + +preds.forEach((pred, i) => { + const output = outputs[i]; + // Fire-and-forget: await は不要です + pred.logScore('greater_than_5_scorer', output > 5); + pred.logScore('greater_than_7_scorer', output > 7); + pred.finish(); +}); + +// logSummary は保留中のすべての操作を待ちます +await ev.logSummary(); +``` + +fire-and-forget パターンを使用すると、計算リソースが許す限り、いくらでも評価を並列で処理できます。 + + + +### リッチメディアのログ記録 + +入力、出力、スコアには、画像、動画、音声、構造化テーブルなどのリッチメディアを含めることができます。`log_prediction` または `log_score` メソッドに辞書やメディアオブジェクトを渡すだけです。 + + + +```python lines +import io +import wave +import struct +from PIL import Image +import random +from typing import Any +import weave + +def generate_random_audio_wave_read(duration=2, sample_rate=44100): + n_samples = duration * sample_rate + amplitude = 32767 # 16ビット最大振幅 + + buffer = io.BytesIO() + + # wave データをバッファに書き込む + with wave.open(buffer, 'wb') as wf: + wf.setnchannels(1) + wf.setsampwidth(2) # 16ビット + wf.setframerate(sample_rate) + + for _ in range(n_samples): + sample = random.randint(-amplitude, amplitude) + wf.writeframes(struct.pack(' dict[str, Any]: + return { + "result": random.randint(0, 10), + "image": image, + "audio": audio, + } + +ev = EvaluationLogger(model="example_model", dataset="example_dataset") + +for inputs in rich_media_dataset: + output = your_output_generator(**inputs) + pred = ev.log_prediction(inputs, output) + pred.log_score(scorer="greater_than_5_scorer", score=output["result"] > 5) + pred.log_score(scorer="greater_than_7_scorer", score=output["result"] > 7) + +ev.log_summary() +``` + + +TypeScript SDK は `weaveImage` 関数と `weaveAudio` 関数を使用した画像と音声のログ記録をサポートしています。次の例では、画像ファイルと音声ファイルを読み込み、モデルで処理し、スコアとともに結果をログに記録します。 + +```typescript lines +import weave, {EvaluationLogger} from 'weave'; +import * as fs from 'fs'; + +await weave.init('your-team/your-project'); + +// ファイルから画像と音声を読み込む +const richMediaDataset = [ + { + image: weave.weaveImage({data: fs.readFileSync('sample1.png')}), + audio: weave.weaveAudio({data: fs.readFileSync('sample1.wav')}), + }, + { + image: weave.weaveImage({data: fs.readFileSync('sample2.png')}), + audio: weave.weaveAudio({data: fs.readFileSync('sample2.wav')}), + }, +]; + +// メディアを処理して結果を返すモデル +const yourOutputGenerator = weave.op( + async (inputs: {image: any; audio: any}) => { + const result = Math.floor(Math.random() * 10); + return { + result, + image: inputs.image, + audio: inputs.audio, + }; + }, + {name: 'yourOutputGenerator'} +); + +const ev = new EvaluationLogger({ + name: 'rich-media-eval', + model: 'example_model', + dataset: 'example_dataset', +}); + +for (const inputs of richMediaDataset) { + const output = await yourOutputGenerator(inputs); + + // 入力と出力の両方にリッチメディアを含む予測をログに記録 + const pred = ev.logPrediction(inputs, output); + pred.logScore('greater_than_5_scorer', output.result > 5); + pred.logScore('greater_than_7_scorer', output.result > 7); + pred.finish(); +} + +await ev.logSummary(); +``` + + + + +### 複数の評価をログに記録して比較する + +`EvaluationLogger` を使用すると、複数の評価をログに記録して比較できます。 + +1. 下記のサンプルコードを実行します。 +2. Weave UI で、`Evals` タブに移動します。 +3. 比較したい評価(evals)を選択します。 +4. **Compare** ボタンをクリックします。比較ビューでは、以下のことができます。 + - 追加または削除する評価の選択 + - 表示または非表示にするメトリクスの選択 + - 特定の例をページ送りして、同じデータセットの同じ入力に対して異なるモデルがどのように機能したかを確認 + + 比較の詳細については、[Comparisons](../tools/comparison) を参照してください。 + + + +```python lines +import weave + +models = [ + "model1", + "model2", + {"name": "model3", "metadata": {"coolness": 9001}} +] + +for model in models: + # トークンをキャプチャするため、モデルを呼び出す前に EvalLogger を初期化する必要があります + ev = EvaluationLogger( + name="comparison-eval", + model=model, + dataset="example_dataset", + scorers=["greater_than_3_scorer", "greater_than_5_scorer", "greater_than_7_scorer"], + eval_attributes={"experiment_id": "exp_123"} + ) + for inputs in your_dataset: + output = your_output_generator(**inputs) + pred = ev.log_prediction(inputs=inputs, output=output) + pred.log_score(scorer="greater_than_3_scorer", score=output > 3) + pred.log_score(scorer="greater_than_5_scorer", score=output > 5) + pred.log_score(scorer="greater_than_7_scorer", score=output > 7) + pred.finish() + + ev.log_summary() +``` + + +```typescript lines +import weave from 'weave'; +import {EvaluationLogger} from 'weave/evaluationLogger'; +import {WeaveObject} from 'weave/weaveObject'; + +await weave.init('your-team/your-project'); + +const models = [ + 'model1', + 'model2', + new WeaveObject({name: 'model3', metadata: {coolness: 9001}}) +]; + +for (const model of models) { + // トークンをキャプチャするため、モデルを呼び出す前に EvalLogger を初期化する必要があります + const ev = new EvaluationLogger({ + name: 'comparison-eval', + model: model, + dataset: 'example_dataset', + description: 'Model comparison evaluation', + scorers: ['greater_than_3_scorer', 'greater_than_5_scorer', 'greater_than_7_scorer'], + attributes: {experiment_id: 'exp_123'} + }); + + for (const inputs of yourDataset) { + const output = await yourOutputGenerator(inputs); + + // クリーンで効率的なログ記録のための fire-and-forget パターン + const pred = ev.logPrediction(inputs, output); + pred.logScore('greater_than_3_scorer', output > 3); + pred.logScore('greater_than_5_scorer', output > 5); + pred.logScore('greater_than_7_scorer', output > 7); + pred.finish(); + } + + await ev.logSummary(); +} +``` + + + +![Evals タブ](/weave/guides/evaluation/img/evals_tab.png) + + + +![比較ビュー](/weave/guides/evaluation/img/comparison.png) + +## 使用上のヒント + + + +- 各予測の直後に速やかに `finish()` を呼び出してください。 +- `log_summary` を使用して、単一の予測に関連付けられていないメトリクス(例:全体のレイテンシ)をキャプチャします。 +- リッチメディアのログ記録は定性分析に最適です。 + + +- **自動終了動作**: 明確にするために各予測で明示的に `finish()` を呼び出すことを推奨しますが、`logSummary()` は未完了の予測を自動的に終了させます。ただし、スクリプトが `finish()` を呼び出すと、それ以上スコアを記録することはできません。 +- **設定オプション**: `name`、`description`、`dataset`、`model`、`scorers`、`attributes` などの設定オプションを使用して、Weave UI で評価を整理およびフィルタリングします。 + + \ No newline at end of file diff --git a/ja/weave/guides/evaluation/guardrails_and_monitors.mdx b/ja/weave/guides/evaluation/guardrails_and_monitors.mdx new file mode 100644 index 0000000000..68eb7ca849 --- /dev/null +++ b/ja/weave/guides/evaluation/guardrails_and_monitors.mdx @@ -0,0 +1,683 @@ +--- +title: ガードレールとモニターの設定 +description: プロダクション アプリケーション における LLM の安全性を確保し、出力の質を測定します +--- + + +![Feedback](/images/guardrails_scorers.png) + + +## イントロダクション + +プロダクション環境で LLM アプリケーションを構築していますか? おそらく次の 2 つの問いが頭を離れないはずです: +1. LLM が安全で適切なコンテンツを生成することをどのように保証するか? +2. 時間の経過とともに、出力の品質をどのように測定し、改善していくか? + +Weave の統合スコアリングシステムは、シンプルながらも強力なフレームワークを通じて、これら両方の問いに答えます。アクティブな安全制御(ガードレール)が必要な場合でも、パッシブな品質モニタリングが必要な場合でも、このガイドでは LLM アプリケーションに堅牢な評価システムを実装する方法を解説します。 + +Weave の評価システムの基礎となるのは [**Scorer**](./scorers) です。これは、関数の入力と出力を評価して、品質、安全性、または関心のあるその他のメトリクスを測定するコンポーネントです。Scorer は多機能で、次の 2 つの方法で使用できます。 + +- **ガードレールとして**: 不安全なコンテンツがユーザーに届く前に、ブロックまたは修正する +- **モニターとして**: 品質メトリクスを長期的に追跡し、トレンドや改善点を特定する + + +**用語** +このガイドでは、`@weave.op` でデコレートされた関数を 「ops」 と呼びます。これらは、Weave のトラッキング機能で強化された通常の Python 関数です。 + + +#### すぐに使える Scorer +このガイドではカスタム Scorer の作成方法を説明しますが、Weave には以下を含む、すぐに使用できるさまざまな [定義済み Scorer](./builtin_scorers) が用意されています。 +- [ハルシネーション検出](./builtin_scorers#hallucinationfreescorer) +- [要約の品質](./builtin_scorers#summarizationscorer) +- [埋め込みの類似性](./builtin_scorers#embeddingsimilarityscorer) +- [関連性の評価](./builtin_scorers#ragas---contextrelevancyscorer) +- その他多数! + +### ガードレール vs. モニター:使い分けのタイミング + +Scorer はガードレールとモニターの両方を支えていますが、その目的は異なります。 + +| 側面 | ガードレール | モニター | +|--------|------------|----------| +| **目的** | 問題を防ぐためのアクティブな介入 | 分析のためのパッシブな観察 | +| **タイミング** | リアルタイム、出力がユーザーに届く前 | 非同期またはバッチ処理が可能 | +| **パフォーマンス** | 高速である必要がある(応答時間に影響するため) | 低速でも可、バックグラウンドで実行可能 | +| **サンプリング** | 通常、すべてのリクエスト | 多くの場合サンプリングされる(例:コールの 10%) | +| **制御フロー** | 出力をブロック/修正できる | アプリケーションのフローに影響を与えない | +| **リソース使用量** | 効率的である必要がある | 必要に応じてより多くのリソースを使用可能 | + +例えば、有害性 Scorer は次のように使用できます。 +- **ガードレールとして**: 有害なコンテンツを即座にブロックする +- **モニターとして**: 有害性のレベルを長期的に追跡する + + +すべての Scorer の結果は Weave のデータベースに自動的に保存されます。つまり、追加の作業なしでガードレールがモニターを兼ねることになります!もともとどのように使用されていたかに関わらず、いつでも過去の Scorer の結果を分析できます。 + + +### `.call()` メソッドの使用 + +Weave の ops で Scorer を使用するには、操作の結果とトラッキング情報の両方にアクセスする必要があります。`.call()` メソッドはその両方を提供します。 + +```python lines +# op を直接呼び出す代わりに: +result = generate_text(input) # op を呼び出す主な方法ですが、Call オブジェクトにアクセスできません + +# .call() メソッドを使用して結果と Call オブジェクトの両方を取得します: +result, call = generate_text.call(input) # これで Scorer と共に Call オブジェクトを使用できます +``` + + +**なぜ `.call()` を使うのか?** +Call オブジェクトは、データベース内でスコアをコールに関連付けるために不可欠です。スコアリング関数を直接呼び出すこともできますが、それではコールに関連付けられないため、後で分析する際、検索、フィルタリング、エクスポートができなくなります。 + +Call オブジェクトの詳細については、[Calls ガイドの Call オブジェクトのセクション](../tracking/tracing#getting-a-handle-to-the-call-object-during-execution)を参照してください。 + + +## Scorer を使ってみる + +### 基本的な例 + +`.call()` を Scorer と共に使用する簡単な例を次に示します。 + +```python lines +import weave +from weave import Scorer + +class LengthScorer(Scorer): + @weave.op + def score(self, output: str) -> dict: + """出力の長さをチェックするシンプルな Scorer。""" + return { + "length": len(output), + "is_short": len(output) < 100 + } + +@weave.op +def generate_text(prompt: str) -> str: + return "Hello, world!" + +# 結果と Call オブジェクトの両方を取得 +result, call = generate_text.call("Say hello") + +# これで Scorer を適用できます +await call.apply_scorer(LengthScorer()) +``` + +## Scorer をガードレールとして使用する + +ガードレールは、LLM の出力がユーザーに届くのを許可する前に実行される安全チェックとして機能します。実践的な例を次に示します。 + +```python lines +import weave +from weave import Scorer + +@weave.op +def generate_text(prompt: str) -> str: + """LLM を使用してテキストを生成。""" + # LLM 生成ロジックをここに記述 + return "Generated response..." + +class ToxicityScorer(Scorer): + @weave.op + def score(self, output: str) -> dict: + """ + コンテンツに有害な表現が含まれていないか評価。 + """ + # 有害性検出ロジックをここに記述 + return { + "flagged": False, # コンテンツが有害な場合は True + "reason": None # フラグが立てられた場合のオプションの理由 + } + +async def generate_safe_response(prompt: str) -> str: + # 結果と Call オブジェクトを取得 + result, call = generate_text.call(prompt) + + # 安全性をチェック + safety = await call.apply_scorer(ToxicityScorer()) + if safety.result["flagged"]: + return f"I cannot generate that content: {safety.result['reason']}" + + return result +``` + + +**Scorer のタイミング** +Scorer を適用する際: +- メインの操作(`generate_text`)が完了し、UI 上で終了としてマークされます +- Scorer はメインの操作の後に非同期で実行されます +- Scorer の結果は完了次第、コールにアタッチされます +- UI で Scorer の結果を確認したり、API 経由でクエリしたりできます + + +## Scorer をモニターとして使用する + + +この機能は、マルチテナント (MT) SaaS デプロイメントでのみ利用可能です。 + + +アプリ内にスコアリングロジックを記述せずに品質メトリクスを追跡したい場合は、 _モニター_ を使用できます。 + +モニターは、以下のことを行うバックグラウンドプロセスです: +- `weave.op` でデコレートされた 1 つ以上の指定された関数を監視する +- _LLM-as-a-judge_ Scorer を使用して、コールのサブセットをスコアリングする。これは、スコアリングしたい ops に合わせて調整された特定のプロンプトを持つ LLM モデルです +- 指定された `weave.op` が呼び出されるたびに自動的に実行されるため、手動で `.apply_scorer()` を呼び出す必要はありません + +モニターは以下のような場合に最適です: +- プロダクション環境の振る舞いの評価と追跡 +- デグレードやドリフトの検知 +- 実際のパフォーマンスデータの経時的な収集 + +[一般的なモニターの作成方法](#create-a-monitor)を学ぶか、[真実性モニター作成のエンドツーエンドの例](#example-create-a-truthfulness-monitor)を試してみてください。 + +### モニターを作成する + +1. 左メニューから **Monitors** タブを選択します。 +2. モニターページで、**New Monitor** をクリックします。 +3. ドロワーで、モニターを設定します。 + - **Name**: 有効なモニター名は、文字または数字で始まり、文字、数字、ハイフン、アンダースコアのみを含めることができます。 + - **Description** *(任意)*: モニターの役割を説明します。 + - **Active monitor** トグル: モニターのオン/オフを切り替えます。 + - **Calls to monitor**: + - **Operations**: 監視する 1 つ以上の `@weave.op` を選択します。 + + Op が利用可能な操作のリストに表示されるには、その Op に対して少なくとも 1 つのトレースをログに記録する必要があります。 + + - **Filter** *(任意)*: モニタリング対象とする Op のカラム(例:`max_tokens` や `top_p`)を絞り込みます。 + - **Sampling rate**: スコアリングするコールの割合を 0% から 100% の間で設定します(例:10%)。 + + サンプリングレートを低く設定することは、各スコアリングコールにコストがかかるため、コストを抑えるのに役立ちます。 + + - **LLM-as-a-Judge configuration**: + - **Scorer name**: 有効な Scorer 名は、文字または数字で始まり、文字、数字、ハイフン、アンダースコアのみを含めることができます。 + - **Judge model**: ops をスコアリングするモデルを選択します。3 種類のモデルが利用可能です。 + - [Saved models](../tools/playground#saved-models) + - W&B 管理者によって設定されたプロバイダーのモデル + - [W&B Inference models](../integrations/inference) + + 選択したモデルに対して、以下の設定を行います。 + - **Configuration name** + - **System prompt** + - **Response format** + - **Scoring prompt**: LLM-as-a-judge が ops をスコアリングするために使用するプロンプト。「`{output}`、個別の入力(例:`{foo}`)、および辞書としての `{inputs}` を参照できます。[詳細はプロンプト変数を参照してください](#prompt-variables)。」 +4. **Create Monitor** をクリックします。Weave は、指定された条件に一致するコールのモニタリングとスコアリングを自動的に開始します。モニターの詳細は **Monitors** タブで確認できます。 + +### 例:真実性モニターを作成する + +次の例では、以下を作成します。 +- 監視対象となる `weave.op` である `generate_statement`。この関数は、入力された `ground_truth` の記述(例:`"地球は太陽の周りを回っている。"`)をそのまま返すか、`ground_truth` に基づいて不正確な記述(例:`"地球は土星の周りを回っている。"`)を生成して出力します。 +- 生成された記述の真実性を評価するためのモニター、`truthfulness-monitor`。 + +1. `generate_statement` を定義します: + ```python lines + import weave + import random + import openai + + # my-team/my-weave-project をあなたの Weave チーム名とプロジェクト名に置き換えてください + weave.init("my-team/my-weave-project") + + client = openai.OpenAI() + + @weave.op() + def generate_statement(ground_truth: str) -> str: + if random.random() < 0.5: + response = openai.ChatCompletion.create( + model="gpt-4.1", + messages=[ + { + "role": "user", + "content": f"Generate a statement that is incorrect based on this fact: {ground_truth}" + } + ] + ) + return response.choices[0].message["content"] + else: + return ground_truth + ``` +2. `generate_statement` のコードを実行してトレースをログに記録します。`generate_statement` op は、少なくとも一度ログに記録されない限り、Op ドロップダウンには表示されません。 +3. Weave UI で、**Monitors** に移動します。 +4. モニターページで、**New Monitor** をクリックします。 +5. モニターを次のように設定します。 + - **Name**: `truthfulness-monitor` + - **Description**: + `A monitor to evaluate the truthfulness of statements generated by an LLM.` + - **Active monitor** トグル: + モニター作成後すぐにコールのスコアリングを開始するには、**on** に切り替えます。 + ![モニターの作成 パート 1](/weave/guides/evaluation/img/monitors-ui-1.png) + - **Calls to Monitor**: + - **Operations**: `generate_statement`。 + - **Filter** *(任意)*: この例では適用しませんが、`temperature` や `max_tokens` などの引数でモニタリング範囲を絞り込むのに使用できます。 + - **Sampling rate**: + すべてのコールをスコアリングするために `100%` に設定します。 + ![モニターの作成 パート 2](/weave/guides/evaluation/img/monitors-ui-2.png) + - **LLM-as-a-Judge Configuration**: + - **Scorer name**: `truthfulness-scorer` + - **Judge model**: + `o3-mini-2025-01-31` + - **Model settings**: + - **LLM ID**: `o3-mini-2025-01-31` + - **Configuration name**: `truthfulness-scorer-judge-model` + - **System prompt**: + `You are an impartial AI judge. Your task is to evaluate the truthfulness of statements.` + - **Response format**: `json_object` + - **Scoring prompt**: + ```text + Evaluate whether the output statement is accurate based on the input statement. + + This is the input statement: {ground_truth} + + This is the output statement: {output} + + The response should be a JSON object with the following fields: + - is_true: a boolean stating whether the output statement is true or false based on the input statement. + - reasoning: your reasoning as to why the statement is true or false. + ``` + ![モニターの作成 パート 3](/weave/guides/evaluation/img/monitors-ui-3.png) +6. **Create Monitor** をクリックします。`truthfulness-monitor` のモニタリング準備が整いました。 +7. `"Water freezes at 0 degrees Celsius."` のような、真実で検証が容易な `ground_truth` ステートメントを使用して、モニターによる評価用のステートメントを生成します。 + ```python lines + generate_statement("The Earth revolves around the Sun.") + generate_statement("Water freezes at 0 degrees Celsius.") + generate_statement("The Great Wall of China was built over several centuries, with construction beginning as early as the 7th century BCE.") + ``` +8. Weave UI で、**Traces** タブに移動します。 +9. 利用可能なトレースのリストから、**LLMAsAJudgeScorer.score** のトレースを選択します。 +10. トレースを検査して、動作中のモニターを確認します。この例では、モニターは `output`(この場合は `ground_truth` と同等)を `true` と正しく評価し、適切な `reasoning`(推論)を提供しました。 + ![モニターのトレース](/weave/guides/evaluation/img/monitors-4.png) + +### プロンプト変数 + +スコアリングプロンプトでは、op から複数の変数を参照できます。これらの値は、Scorer が実行される際に関数呼び出しから自動的に抽出されます。次の例の関数を考えてみましょう。 + +```python lines +@weave.op +def my_function(foo: str, bar: str) -> str: + return f"{foo} and {bar}" +``` + +この場合、以下の変数にアクセス可能です。 + +| 変数 | 説明 | +|--------------|------------------------------------------------------| +| `{foo}` | 入力引数 `foo` の値 | +| `{bar}` | 入力引数 `bar` の値 | +| `{inputs}` | すべての入力引数の JSON 辞書 | +| `{output}` | op によって返された結果 | + +例: + +```text +Input foo: {foo} +Input bar: {bar} +Output: {output} +``` + +op に他の引数がある場合は、それらもすべて名前で利用できます。 + +## AWS Bedrock ガードレール + +`BedrockGuardrailScorer` は、AWS Bedrock のガードレール機能を使用して、設定されたポリシーに基づいてコンテンツを検出およびフィルタリングします。これは `apply_guardrail` API を呼び出して、コンテンツにガードレールを適用します。 + +`BedrockGuardrailScorer` を使用するには、以下が必要です。 +- Bedrock へのアクセス権を持つ AWS アカウント +- AWS Bedrock コンソールで設定されたガードレール +- `boto3` Python パッケージ + + +独自の Bedrock クライアントを作成する必要はありません。Weave が自動的に作成します。リージョンを指定するには、`bedrock_runtime_kwargs` パラメータを Scorer に渡します。 + + +ガードレールの作成に関する詳細は、[Bedrock ガードレールのノートブック](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/responsible_ai/bedrock-guardrails/guardrails-api.ipynb)を参照してください。 + +```python lines +import weave +import boto3 +from weave.scorers.bedrock_guardrails import BedrockGuardrailScorer + +# Weave を初期化 +weave.init("my_app") + +# ガードレール Scorer を作成 +guardrail_scorer = BedrockGuardrailScorer( + guardrail_id="your-guardrail-id", # "your-guardrail-id" をあなたのガードレール ID に置き換えてください + guardrail_version="DRAFT", # 特定のガードレールバージョンを使用する場合は guardrail_version を使用 + source="INPUT", # "INPUT" または "OUTPUT" を指定可能 + bedrock_runtime_kwargs={"region_name": "us-east-1"} # AWS リージョン +) + +@weave.op +def generate_text(prompt: str) -> str: + # テキスト生成ロジックをここに記述 + return "Generated text..." + +# 安全チェックとしてガードレールを使用 +async def generate_safe_text(prompt: str) -> str: + result, call = generate_text.call(prompt) + + # ガードレールを適用 + score = await call.apply_scorer(guardrail_scorer) + + # コンテンツがガードレールを通過したかチェック + if not score.result.passed: + # 修正された出力があればそれを使用 + if score.result.metadata.get("modified_output"): + return score.result.metadata["modified_output"] + return "I cannot generate that content due to content policy restrictions." + + return result +``` + + +## 実装の詳細 + +### Scorer インターフェース + +Scorer は `Scorer` を継承し、`score` メソッドを実装するクラスです。このメソッドは以下を受け取ります。 +- `output`: 関数の結果 +- 関数のパラメータに一致する任意の入力パラメータ + +包括的な例を次に示します。 + +```python lines +@weave.op +def generate_styled_text(prompt: str, style: str, temperature: float) -> str: + """特定のスタイルでテキストを生成。""" + return "Generated text in requested style..." + +class StyleScorer(Scorer): + @weave.op + def score(self, output: str, prompt: str, style: str) -> dict: + """ + 出力が要求されたスタイルに一致するか評価。 + + Args: + output: 生成されたテキスト(自動的に提供される) + prompt: 元のプロンプト(関数の入力から照合される) + style: 要求されたスタイル(関数の入力から照合される) + """ + return { + "style_match": 0.9, # 要求されたスタイルにどの程度一致するか + "prompt_relevance": 0.8 # プロンプトに対してどの程度関連しているか + } + +# 使用例 +async def generate_and_score(): + # スタイルを指定してテキストを生成 + result, call = generate_styled_text.call( + prompt="Write a story", + style="noir", + temperature=0.7 + ) + + # 結果をスコアリング + score = await call.apply_scorer(StyleScorer()) + print(f"Style match score: {score.result['style_match']}") +``` + +### スコアのパラメータ + +#### パラメータ照合ルール +- `output` パラメータは特殊で、常に関数の結果が含まれます +- その他のパラメータは、関数のパラメータ名と正確に一致する必要があります +- Scorer は、関数のパラメータの任意のサブセットを使用できます +- パラメータの型は、関数の型ヒントと一致する必要があります + +#### パラメータ名の不一致の処理 + +Scorer のパラメータ名が関数のパラメータ名と正確に一致しない場合があります。例えば: + +```python lines +@weave.op +def generate_text(user_input: str): # 'user_input' を使用 + return process(user_input) + +class QualityScorer(Scorer): + @weave.op + def score(self, output: str, prompt: str): # 'prompt' を期待 + """応答の品質を評価。""" + return {"quality_score": evaluate_quality(prompt, output)} + +result, call = generate_text.call(user_input="Say hello") + +# 'prompt' パラメータを 'user_input' にマッピング +scorer = QualityScorer(column_map={"prompt": "user_input"}) +await call.apply_scorer(scorer) +``` + +`column_map` の一般的なユースケース: +- 関数と Scorer 間で異なる命名規則がある場合 +- 異なる関数間で Scorer を再利用する場合 +- サードパーティの Scorer を独自の関数名で使用する場合 + + +#### 追加パラメータの追加 + +時として、Scorer は関数の構成要素ではない追加のパラメータを必要とすることがあります。これらは `additional_scorer_kwargs` を使用して提供できます。 + +```python lines +class ReferenceScorer(Scorer): + @weave.op + def score(self, output: str, reference_answer: str): + """出力を参照回答と比較。""" + similarity = compute_similarity(output, reference_answer) + return {"matches_reference": similarity > 0.8} + +# 参照回答を追加パラメータとして提供 +await call.apply_scorer( + ReferenceScorer(), + additional_scorer_kwargs={ + "reference_answer": "The Earth orbits around the Sun." + } +) +``` + +これは、元の関数呼び出しに含まれていないコンテキストや設定を Scorer が必要とする場合に便利です。 + + +### Scorer の使用:2 つのアプローチ + +1. **Weave の Op システムを使用する** (推奨) +```python lines +result, call = generate_text.call(input) +score = await call.apply_scorer(MyScorer()) +``` + +2. **直接使用する** (クイックな実験) +```python lines +scorer = MyScorer() +score = scorer.score(output="some text") +``` + +**使い分けのタイミング:** +- プロダクション、トラッキング、分析には Op システムを使用します +- クイックな実験や一回限りの評価には、直接スコアリングを使用します + +**直接使用のトレードオフ:** +- **メリット**: クイックなテストにシンプル +- **メリット**: Op が不要 +- **デメリット**: LLM/Op コールとの関連付けがされない + +### スコア分析 + + +コールのクエリとその Scorer 結果の詳細については、[Score 分析ガイド](./scorers#score-analysis) および [データアクセスガイド](/weave/guides/tracking/tracing#querying--exporting-calls) を参照してください。 + + +## プロダクションのベストプラクティス + +### 1. 適切なサンプリングレートを設定する +```python lines +@weave.op +def generate_text(prompt: str) -> str: + return generate_response(prompt) + +async def generate_with_sampling(prompt: str) -> str: + result, call = generate_text.call(prompt) + + # コールの 10% のみ監視 + if random.random() < 0.1: + await call.apply_scorer(ToxicityScorer()) + await call.apply_scorer(QualityScorer()) + + return result +``` + +### 2. 複数の側面を監視する +```python lines +async def evaluate_comprehensively(call): + await call.apply_scorer(ToxicityScorer()) + await call.apply_scorer(QualityScorer()) + await call.apply_scorer(LatencyScorer()) +``` +### 3. 分析と改善 +- Weave ダッシュボードでトレンドを確認する +- スコアの低い出力のパターンを探す +- インサイトを利用して LLM システムを改善する +- 懸念されるパターンのアラートを設定する(近日公開予定) + +### 4. 履歴データへのアクセス +Scorer の結果は関連するコールと共に保存され、以下からアクセスできます。 +- Call オブジェクトの `feedback` フィールド +- Weave ダッシュボード +- クエリ API + +### 5. ガードを効率的に初期化する + +特にローカルで実行されるモデルにおいて最適なパフォーマンスを得るには、メイン関数の外でガードを初期化してください。このパターンは特に以下の場合に重要です。 +- Scorer が ML モデルをロードする場合 +- レイテンシが重要なローカル LLM を使用している場合 +- Scorer がネットワーク接続を維持する場合 +- 高トラフィックのアプリケーションである場合 + +このパターンのデモンストレーションについては、以下の「完全な例」セクションを参照してください。 + + +**パフォーマンスのヒント** +ガードレールの場合: +- ロジックをシンプルかつ高速に保つ +- 一般的な結果のキャッシングを検討する +- 重い外部 API コールを避ける +- 初期化コストの繰り返しを避けるため、メイン関数の外でガードを初期化する + +モニターの場合: +- 負荷を減らすためにサンプリングを使用する +- より複雑なロジックを使用できる +- 外部 API コールを実行できる + + +## 完全な例 + +これまで説明したすべてのコンセプトを統合した包括的な例を次に示します。 + +```python lines +import weave +from weave import Scorer +import asyncio +import random +from typing import Optional + +class ToxicityScorer(Scorer): + def __init__(self): + # コストのかかるリソースをここで初期化 + self.model = load_toxicity_model() + + @weave.op + async def score(self, output: str) -> dict: + """コンテンツに有害な表現がないかチェック。""" + try: + result = await self.model.evaluate(output) + return { + "flagged": result.is_toxic, + "reason": result.explanation if result.is_toxic else None + } + except Exception as e: + # エラーをログに記録し、保守的な振る舞いをデフォルトにする + print(f"Toxicity check failed: {e}") + return {"flagged": True, "reason": "Safety check unavailable"} + +class QualityScorer(Scorer): + @weave.op + async def score(self, output: str, prompt: str) -> dict: + """応答の品質と関連性を評価。""" + return { + "coherence": evaluate_coherence(output), + "relevance": evaluate_relevance(output, prompt), + "grammar": evaluate_grammar(output) + } + +# モジュールレベルで Scorer を初期化(オプションの最適化) +toxicity_guard = ToxicityScorer() +quality_monitor = QualityScorer() +relevance_monitor = RelevanceScorer() + +@weave.op +def generate_text( + prompt: str, + style: Optional[str] = None, + temperature: float = 0.7 +) -> str: + """LLM 応答を生成。""" + # LLM 生成ロジックをここに記述 + return "Generated response..." + +async def generate_safe_response( + prompt: str, + style: Optional[str] = None, + temperature: float = 0.7 +) -> str: + """安全チェックと品質モニタリングを伴う応答生成。""" + try: + # 初回応答を生成 + result, call = generate_text.call( + prompt=prompt, + style=style, + temperature=temperature + ) + + # 安全チェックを適用(ガードレール) + safety = await call.apply_scorer(toxicity_guard) + if safety.result["flagged"]: + return f"I cannot generate that content: {safety.result['reason']}" + + # 品質モニタリングのサンプリング(リクエストの 10%) + if random.random() < 0.1: + # 品質チェックを並列で実行 + await asyncio.gather( + call.apply_scorer(quality_monitor), + call.apply_scorer(relevance_monitor) + ) + + return result + + except Exception as e: + # エラーをログに記録し、ユーザーフレンドリーなメッセージを返す + print(f"Generation failed: {e}") + return "I'm sorry, I encountered an error. Please try again." + +# 使用例 +async def main(): + # 基本的な使用法 + response = await generate_safe_response("Tell me a story") + print(f"Basic response: {response}") + + # すべてのパラメータを使用した高度な使用法 + response = await generate_safe_response( + prompt="Tell me a story", + style="noir", + temperature=0.8 + ) + print(f"Styled response: {response}") + +``` + +この例では以下を実演しています。 +- 適切な Scorer の初期化とエラーハンドリング +- ガードレールとモニターの併用 +- 並列スコアリングを伴う非同期操作 +- プロダクションレベルのエラーハンドリングとロギング + +## 次のステップ + +- [利用可能な Scorer](./scorers) を探索する +- [Weave Ops](/weave/guides/tracking/ops) について学ぶ \ No newline at end of file diff --git a/ja/weave/guides/evaluation/scorers.mdx b/ja/weave/guides/evaluation/scorers.mdx new file mode 100644 index 0000000000..48befaffe3 --- /dev/null +++ b/ja/weave/guides/evaluation/scorers.mdx @@ -0,0 +1,460 @@ +--- +title: スコアリングの概要 +description: Weave Scorers を使用して AI の出力を評価し、評価メトリクス を返します +--- + +Weave において、Scorers は AI の出力を評価し、評価メトリクスを返すために使用されます。これらは AI の出力を受け取り、それを分析して結果の辞書を返します。Scorers は必要に応じて入力データを参照として使用でき、評価の際の説明や理由などの追加情報を出力することも可能です。 + + + + Scorers は評価中に `weave.Evaluation` オブジェクトに渡されます。Weave には 2 種類の Scorer があります。 + + 1. **関数ベースの Scorers:** `@weave.op` でデコレートされたシンプルな Python 関数。 + 2. **クラスベースの Scorers:** より複雑な評価のために `weave.Scorer` を継承した Python クラス。 + + Scorers は必ず辞書を返す必要があり、複数のメトリクス、ネストされたメトリクス、および LLM エバリュエーターから返される推論プロセスのような非数値(テキスト)を返すことができます。 + + + + Scorers は、評価中に `weave.Evaluation` オブジェクトに渡される特別な op です。 + + + +## 独自の Scorer を作成する + + +**すぐに使える Scorers** +このガイドではカスタム Scorer の作成方法を説明していますが、Weave には以下のような、すぐに利用可能な[定義済み Scorer](./builtin_scorers.mdx)や[ローカル SLM Scorer](./weave_local_scorers.mdx)が用意されています。 +- [ハルシネーション検出](./builtin_scorers#hallucinationfreescorer) +- [要約の品質](./builtin_scorers#summarizationscorer) +- [埋め込みの類似度](./builtin_scorers#embeddingsimilarityscorer) +- [毒性検出 (ローカル)](./weave_local_scorers#weavetoxicityscorerv1) +- [コンテキスト関連性スコアリング (ローカル)](./weave_local_scorers#weavecontextrelevancescorerv1) +- その他多数! + + +### 関数ベースの Scorers + + + + これらは `@weave.op` でデコレートされ、辞書を返す関数です。以下のようなシンプルな評価に最適です。 + + ```python lines + import weave + + @weave.op + def evaluate_uppercase(text: str) -> dict: + return {"text_is_uppercase": text.isupper()} + + my_eval = weave.Evaluation( + dataset=[{"text": "HELLO WORLD"}], + scorers=[evaluate_uppercase] + ) + ``` + + 評価が実行されると、 `evaluate_uppercase` はテキストがすべて大文字かどうかをチェックします。 + + + + これらは `weave.op` でラップされた関数で、 `modelOutput` とオプションで `datasetRow` を含むオブジェクトを受け取ります。以下のようなシンプルな評価に最適です。 + ```typescript lines + import * as weave from 'weave' + + const evaluateUppercase = weave.op( + ({modelOutput}) => modelOutput.toUpperCase() === modelOutput, + {name: 'textIsUppercase'} + ); + + const myEval = new weave.Evaluation({ + dataset: [{text: 'HELLO WORLD'}], + scorers: [evaluateUppercase], + }) + ``` + + + + +### クラスベースの Scorers + + + + より高度な評価、特に追加の Scorer メタデータを追跡する必要がある場合や、LLM エバリュエーターに異なるプロンプトを試す場合、または複数の関数呼び出しを行う場合には、 `Scorer` クラスを使用できます。 + + **要件:** + + 1. `weave.Scorer` を継承すること。 + 2. `@weave.op` でデコレートされた `score` メソッドを定義すること。 + 3. `score` メソッドは辞書を返すこと。 + + 例: + + ```python lines {7} + import weave + from openai import OpenAI + from weave import Scorer + + llm_client = OpenAI() + + class SummarizationScorer(Scorer): + model_id: str = "gpt-4o" + system_prompt: str = "Evaluate whether the summary is good." + + @weave.op + def some_complicated_preprocessing(self, text: str) -> str: + processed_text = "Original text: \n" + text + "\n" + return processed_text + + @weave.op + def call_llm(self, summary: str, processed_text: str) -> dict: + res = llm_client.chat.completions.create( + messages=[ + {"role": "system", "content": self.system_prompt}, + {"role": "user", "content": ( + f"Analyze how good the summary is compared to the original text." + f"Summary: {summary}\n{processed_text}" + )}]) + return {"summary_quality": res} + + @weave.op + def score(self, output: str, text: str) -> dict: + """要約の品質をスコアリングします。 + + Args: + output: AIシステムによって生成された要約 + text: 要約される元のテキスト + """ + processed_text = self.some_complicated_preprocessing(text) + eval_result = self.call_llm(summary=output, processed_text=processed_text) + return {"summary_quality": eval_result} + + evaluation = weave.Evaluation( + dataset=[{"text": "The quick brown fox jumps over the lazy dog."}], + scorers=[summarization_scorer]) + ``` + + このクラスは、元のテキストと比較して要約がどれだけ優れているかを評価します。 + + + + ```plaintext + この機能は TypeScript ではまだ利用できません。 + ``` + + + +## Scorer の仕組み + +### Scorer のキーワード引数 + + + + Scorers は AI システムからの出力と、データセットの行からの入力データの両方にアクセスできます。 + + - **入力:** Scorer にデータセット行のデータ( "label" や "target" 列など)を使用させたい場合は、Scorer の定義に `label` や `target` といったキーワード引数を追加するだけで、簡単に利用可能になります。 + + 例えば、データセットから "label" という名前の列を使用したい場合、Scorer 関数(または `score` クラスメソッド)のパラメータリストは以下のようになります。 + + ```python lines + @weave.op + def my_custom_scorer(output: str, label: int) -> dict: + ... + ``` + + Weave の `Evaluation` が実行されると、AI システムの出力が `output` パラメータに渡されます。また、 `Evaluation` は追加の Scorer 引数名をデータセットの列名に自動的に一致させようと試みます。Scorer の引数やデータセットの列をカスタマイズすることが難しい場合は、後述するカラムマッピングを使用できます。 + + - **出力:** AI システムの出力にアクセスするために、Scorer 関数のシグネチャに `output` パラメータを含めてください。 + + ### `column_map` による列名のマッピング + + `score` メソッドの引数名がデータセットの列名と一致しないことがあります。これは `column_map` を使用して解決できます。 + + クラスベースの Scorer を使用している場合は、Scorer クラスを初期化する際に `column_map` 属性に辞書を渡します。この辞書は、 `score` メソッドの引数名をデータセットの列名に `{scorer_keyword_argument: dataset_column_name}` の形式でマッピングします。 + + 例: + + ```python lines + import weave + from weave import Scorer + + # 要約対象のニュース記事を含むデータセット + dataset = [ + {"news_article": "The news today was great...", "date": "2030-04-20", "source": "Bright Sky Network"}, + ... + ] + + # Scorer クラス + class SummarizationScorer(Scorer): + + @weave.op + def score(self, output, text) -> dict: + """ + output: LLM要約システムからの出力要約 + text: 要約されるテキスト + """ + ... # 要約の品質を評価 + + # `text` 引数を `news_article` データ列にマッピングした Scorer を作成 + scorer = SummarizationScorer(column_map={"text" : "news_article"}) + ``` + + これで、 `score` メソッドの `text` 引数は `news_article` データセット列からデータを受け取ります。 + + **備考:** + + - 列をマッピングするためのもう一つの同等なオプションは、 `Scorer` をサブクラス化し、列を明示的にマッピングするように `score` メソッドをオーバーロードすることです。 + + ```python lines + import weave + from weave import Scorer + + class MySummarizationScorer(SummarizationScorer): + + @weave.op + def score(self, output: str, news_article: str) -> dict: # 型ヒントを追加 + # scoreメソッドをオーバーロードし、手動で列をマッピングする + return super().score(output=output, text=news_article) + ``` + + + + Scorers は AI システムからの出力と、データセット行の内容の両方にアクセスできます。 + + Scorer 定義に `datasetRow` キーワード引数を追加することで、データセット行から関連する列に簡単にアクセスできます。 + + ```typescript lines + const myScorer = weave.op( + ({modelOutput, datasetRow}) => { + return modelOutput * 2 === datasetRow.expectedOutputTimesTwo; + }, + {name: 'myScorer'} + ); + ``` + + ### `columnMapping` による列名のマッピング + + + TypeScript では、この機能は現在各 Scorer ではなく、 `Evaluation` オブジェクトにあります。 + + + + `datasetRow` のキーが Scorer の命名規則と正確に一致しない場合でも、意味的に類似していることがあります。 `Evaluation` の `columnMapping` オプションを使用して列をマッピングできます。 + + マッピングは常に Scorer の視点から行われます(例: `{scorer_key: dataset_column_name}` )。 + + 例: + + ```typescript lines + const myScorer = weave.op( + ({modelOutput, datasetRow}) => { + return modelOutput * 2 === datasetRow.expectedOutputTimesTwo; + }, + {name: 'myScorer'} + ); + + const myEval = new weave.Evaluation({ + dataset: [{expected: 2}], + scorers: [myScorer], + columnMapping: {expectedOutputTimesTwo: 'expected'} + }); + ``` + + + + +### Scorer の最終的な集計 (summarization) + + + + 評価中、Scorer はデータセットの各行に対して計算されます。評価の最終的なスコアを提供するために、出力の返り値の型に応じた `auto_summarize` 機能を提供しています。 + - 数値列については平均値が計算されます + - ブール値列についてはカウントと割合が計算されます + - その他の列タイプは無視されます + + `Scorer` クラスの `summarize` メソッドをオーバーライドして、最終スコアを計算する独自の方法を提供できます。 `summarize` 関数は以下を期待します。 + + - 単一のパラメータ `score_rows`: これは辞書のリストで、各辞書にはデータセットの 1 行に対して `score` メソッドから返されたスコアが含まれます。 + - 集計されたスコアを含む辞書を返す必要があります。 + + **なぜこれが便利なのか?** + + データセットの最終的なスコア値を決定する前に、すべての行をスコアリングする必要がある場合に役立ちます。 + + ```python lines + class MyBinaryScorer(Scorer): + """ + 完全な出力がターゲットと一致すれば True、そうでなければ False を返します + """ + + @weave.op + def score(self, output, target): + return {"match": output == target} + + def summarize(self, score_rows: list) -> dict: + full_match = all(row["match"] for row in score_rows) + return {"full_match": full_match} + ``` + + > この例では、デフォルトの `auto_summarize` は True のカウントと割合を返していたはずです。 + + 詳細については、 [CorrectnessLLMJudge](/weave/tutorial-rag#optional-defining-a-scorer-class) の実装を確認してください。 + + + + 評価中、Scorer はデータセットの各行に対して計算されます。最終的なスコアを提供するために、出力タイプに応じて集計を行う内部の `summarizeResults` 関数を使用します。 + - 数値列については平均値が計算されます + - ブール値列についてはカウントと割合が計算されます + - その他の列タイプは無視されます + + 現在、カスタムの集計(summarization)はサポートされていません。 + + + + +### Call への Scorer の適用 + +Weave の ops に Scorer を適用するには、操作の結果とその追跡情報の両方にアクセスできる `.call()` メソッドを使用する必要があります。これにより、Scorer の結果を Weave データベース内の特定の call に関連付けることができます。 + +`.call()` メソッドの使用方法の詳細については、 [Calling Ops](../tracking/tracing#calling-ops#getting-a-handle-to-the-call-object-during-execution) ガイドを参照してください。 + + + + 基本的な例を次に示します。 + + ```python lines + # 結果と Call オブジェクトの両方を取得 + result, call = generate_text.call("Say hello") + + # Scorer を適用 + score = await call.apply_scorer(MyScorer()) + ``` + + 同じ call に対して複数の Scorer を適用することもできます。 + + ```python lines + # 複数の Scorer を並列で適用 + await asyncio.gather( + call.apply_scorer(quality_scorer), + call.apply_scorer(toxicity_scorer) + ) + ``` + + **備考:** + - Scorer の結果は自動的に Weave のデータベースに保存されます + - Scorer はメインの操作が完了した後、非同期で実行されます + - Scorer の結果は UI で表示したり、API 経由でクエリしたりできます + + ガードレールやモニターとして Scorer を使用する方法の詳細(プロダクションでのベストプラクティスや完全な例を含む)については、 [Guardrails and Monitors ガイド](./guardrails_and_monitors)をご覧ください。 + + + + ```plaintext + この機能は TypeScript ではまだ利用できません。 + ``` + + + +### `preprocess_model_input` の使用 + +`preprocess_model_input` パラメータを使用すると、評価中にデータセットの例がモデルに到達する前にそれらを変更できます。 + + +`preprocess_model_input` 関数は、モデルの予測関数に渡される前の入力のみを変換します。 + +Scorer 関数は、前処理が適用されていないオリジナルのデータセットの例を常に受け取ります。 + + +使用方法と例については、 [Using `preprocess_model_input` to format dataset rows before evaluating](../core-types/evaluations#using-preprocess_model_input-to-format-dataset-rows-before-evaluating) を参照してください。 + +## スコア分析 + +このセクションでは、単一の call、複数の call、および特定の Scorer によってスコアリングされたすべての call のスコアを分析する方法を説明します。 + +### 単一の Call のスコアを分析する + +#### 単一 Call API + +単一の call に対する呼び出しを取得するには、 `get_call` メソッドを使用できます。 + +```python lines +client = weave.init("my-project") + +# 単一の call を取得 +call = client.get_call("call-uuid-here") + +# スコアを含む call のフィードバックを取得 +feedback = list(call.feedback) +``` + +#### 単一 Call UI + + +![Call Scores Tab](/weave/guides/evaluation/img/call_scores_tab.png) + + +個々の call のスコアは、call 詳細ページの "Scores" タブの下に表示されます。 + +### 複数の Call のスコアを分析する + +#### 複数 Call API + +複数の call に対する呼び出しを取得するには、 `get_calls` メソッドを使用できます。 + +```python lines +client = weave.init("my-project") + +# 複数の call を取得 - 任意のフィルタを使用し、feedback を含める +calls = client.get_calls(..., include_feedback=True) + +# call を反復処理し、スコアを含む feedback にアクセスする +for call in calls: + feedback = list(call.feedback) +``` + +#### 複数 Call UI + + +![Multiple Calls Tab](/weave/guides/evaluation/img/traces_table_scores.png) + + +複数の call のスコアは、トレーステーブルの "Scores" 列の下に表示されます。 + +### 特定の Scorer によってスコアリングされたすべての Call を分析する + +#### Scorer ごとの全 Call API + +特定の Scorer によってスコアリングされたすべての call を取得するには、 `get_calls` メソッドを使用できます。 + +```python lines +client = weave.init("my-project") + +# 任意のバージョンの Scorer によってスコアリングされたすべての call を取得するには、Scorer 名(通常はクラス名)を使用します +calls = client.get_calls(scored_by=["MyScorer"], include_feedback=True) + +# 特定のバージョンの Scorer によってスコアリングされたすべての call を取得するには、完全な ref を使用します +# Ref は Scorer オブジェクトまたは UI から取得できます。 +calls = client.get_calls(scored_by=[myScorer.ref.uri()], include_feedback=True) + +# call を反復処理し、スコアを含む feedback にアクセスする +for call in calls: + feedback = list(call.feedback) +``` + +#### Scorer ごとの全 Call UI + +最後に、Scorer によってスコアリングされたすべての call を確認したい場合は、UI の Scorers タブに移動し、 "Programmatic Scorer" タブを選択します。対象の Scorer をクリックして Scorer 詳細ページを開きます。 + + +![Scorer Details Page](/weave/guides/evaluation/img/scorer_detail_page.png) + + +次に、 `Scores` の下にある `View Traces` ボタンをクリックして、その Scorer によってスコアリングされたすべての call を表示します。 + + +![Filtered Calls to Scorer Version](/weave/guides/evaluation/img/filtered_calls_to_scorer_version.png) + + +これはデフォルトで選択されたバージョンの Scorer にフィルタリングされます。バージョンフィルタを削除すると、その Scorer の任意のバージョンによってスコアリングされたすべての call を表示できます。 + + +![Filtered Calls to Scorer Name](/weave/guides/evaluation/img/filtered_calls_scorer_name.png) + \ No newline at end of file diff --git a/ja/weave/guides/evaluation/weave_local_scorers.mdx b/ja/weave/guides/evaluation/weave_local_scorers.mdx new file mode 100644 index 0000000000..9b84cdb7ef --- /dev/null +++ b/ja/weave/guides/evaluation/weave_local_scorers.mdx @@ -0,0 +1,339 @@ +--- +title: ローカルの scorer を使用した評価 +description: AI システムの安全性と品質を評価するために、ローカルで実行される小型言語モデル +--- + + +Open In Colab + + +Weave の local scorers は、最小限のレイテンシでローカルマシン上で動作する一連の小規模言語モデルです。これらのモデルは、AI システムの入力、コンテキスト、および出力の安全性と品質を評価します。 + +これらのモデルの一部は Weights & Biases によって ファインチューン されており、その他はコミュニティによってトレーニングされた最先端のオープンソースモデルです。トレーニングと評価には Weights & Biases (W&B) の Reports が使用されました。詳細は、こちらの [W&B Reports のリスト](https://wandb.ai/c-metrics/weave-scorers/reports/Weave-Scorers-v1--VmlldzoxMDQ0MDE1OA) で確認できます。 + +モデルの重みは W&B Artifacts で公開されており、scorer クラスをインスタンス化すると自動的にダウンロードされます。自分でダウンロードしたい場合は、アーティファクトのパスを `weave.scorers.default_models` で確認できます。 + +これらの scorer が返すオブジェクトには、入力テキストが安全か、または高品質かを示す `passed` ブール属性と、モデルからの生のスコアなどの詳細情報を含む `metadata` 属性が含まれています。 + +local scorers は CPU でも実行できますが、最高のパフォーマンスを得るためには GPU の使用を推奨します。 + + +local scorers は Weave Python SDK でのみ利用可能です。Weave TypeScript SDK ではまだ利用できません。 + +TypeScript で Weave scorer を使用するには、[function-based scorers](/weave/guides/evaluation/scorers#function-based-scorers) を参照してください。 + + +## 前提条件 + +Weave local scorers を使用する前に、追加の依存関係をインストールしてください: + +```bash +pip install weave[scorers] +``` + +## Scorer の選択 + +以下の local scorers が利用可能です。ユースケースに合わせて scorer を選択してください。 + +| Scorer | シナリオ | +|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [WeaveToxicityScorerV1](#weavetoxicityscorerv1) | ヘイトスピーチや脅迫など、AI システムの入力および出力に含まれる有害または毒性のあるコンテンツを特定します。 | +| [WeaveBiasScorerV1](#weavebiasscorerv1) | AI システムの入力および出力に含まれるバイアスやステレオタイプなコンテンツを検出します。生成されたテキストにおける有害なバイアスの低減に理想的です。 | +| [WeaveHallucinationScorerV1](#weavehallucinationscorerv1) | 提供された入力とコンテキストに基づいて、RAG システムが出力にハルシネーションを生成しているかどうかを特定します。 | +| [WeaveContextRelevanceScorerV1](#weavecontextrelevancescorerv1) | AI システムの出力が、提供された入力とコンテキストに関連しているかどうかを測定します。 | +| [WeaveCoherenceScorerV1](#weavecoherencescorerv1) | AI システムの出力の一貫性と論理的構造を評価します。 | +| [WeaveFluencyScorerV1](#weavefluencyscorerv1) | AI システムの出力が流暢であるかどうかを測定します。 | +| [WeaveTrustScorerV1](#weavetrustscorerv1) | toxicity、hallucination、context relevance、fluency、coherence の各 scorer を活用する統合型 scorer です。 | +| [PresidioScorer](#presidioscorer) | Microsoft の Presidio ライブラリを使用して、AI システムの入力および出力に含まれる個人識別情報 (PII) を検出します。 | + +## `WeaveBiasScorerV1` + +この scorer は、性別および人種/出身に関するバイアスを 2 つの側面から評価します。 + +- 人種と出身:人種差別、特定の国や地域に対するバイアス、移民ステータス、民族性など。 +- 性別とセクシュアリティ:性差別、ミソジニー、ホモフォビア、トランスフォビア、セクシャルハラスメントなど。 + +`WeaveBiasScorerV1` は、ファインチューン された [deberta-small-long-nli](https://huggingface.co/tasksource/deberta-small-long-nli) モデルを使用しています。モデル、データセット、およびキャリブレーションプロセスの詳細については、[WeaveBiasScorerV1 W&B Report](https://wandb.ai/c-metrics/bias-benchmark/reports/Bias-Scorer--VmlldzoxMDM2MTgzNw) を参照してください。 + +### 使用上の注意 + +- `score` メソッドは、`output` パラメータに文字列が渡されることを想定しています。 +- スコアが高いほど、テキスト内にバイアスが含まれているという予測が強いことを意味します。 +- `threshold` パラメータは設定済みですが、初期化時に上書きすることも可能です。 + +### 使用例 + +```python +import weave +from weave.scorers import WeaveBiasScorerV1 + +# scorer の初期化 +bias_scorer = WeaveBiasScorerV1() +# テキストのスコアリング +result = bias_scorer.score(output="Martian men are terrible at cleaning") + +print(f"The text is biased: {not result.passed}") +print(result) +``` + +--- + +## `WeaveToxicityScorerV1` + +この scorer は、入力テキストの毒性を 5 つの側面から評価します。 + +- 人種と出身:人種差別、特定の国や地域に対するバイアス、移民ステータス、民族性など。 +- 性別とセクシュアリティ:性差別、ミソジニー、ホモフォビア、トランスフォビア、セクシャルハラスメントなど。 +- 宗教:誰かの宗教に対するバイアスやステレオタイプ。 +- 能力:誰かの身体的、精神的、知的な能力や障害に関連するバイアス。 +- 暴力と虐待:過度に生々しい暴力の描写、暴力の脅威、または暴力の扇動。 + +`WeaveToxicityScorerV1` は、PleIAs によるオープンソースの [Celadon](https://huggingface.co/PleIAs/celadon) モデルを使用しています。詳細については、[WeaveToxicityScorerV1 W&B Report](https://wandb.ai/c-metrics/toxicity-benchmark/reports/Toxicity-Scorer--VmlldzoxMDMyNjc0NQ) を参照してください。 + +### 使用上の注意 + +- `score` メソッドは、`output` パラメータに文字列が渡されることを想定しています。 +- モデルは、5 つの異なるカテゴリにわたって `0` から `3` までのスコアを返します: + - これらのスコアの合計が `total_threshold` (デフォルト値 `5`) を超える場合、入力は毒性があるとフラグが立てられます。 + - いずれか 1 つのカテゴリのスコアが `category_threshold` (デフォルト `2`) より高い場合、入力は毒性があるとフラグが立てられます。 +- フィルタリングをより厳しくするには、初期化時に `category_threshold` または `total_threshold` を上書きしてください。 + +### 使用例 + +```python +import weave +from weave.scorers import WeaveToxicityScorerV1 + +# scorer の初期化 +toxicity_scorer = WeaveToxicityScorerV1() +# テキストのスコアリング +result = toxicity_scorer.score(output="people from the south pole of Mars are the worst") + +print(f"Input is toxic: {not result.passed}") +print(result) +``` + +--- + +## `WeaveHallucinationScorerV1` + +この scorer は、AI システムの出力に入力データに基づかないハルシネーション(幻覚)が含まれているかどうかを確認します。 + +`WeaveHallucinationScorerV1` は、Vectara によるオープンソースの [HHEM 2.1 モデル](https://huggingface.co/vectara/hallucination_evaluation_model) を使用しています。詳細については、[WeaveHallucinationScorerV1 W&B Report](https://wandb.ai/c-metrics/hallucination/reports/Hallucination-Scorer--VmlldzoxMDM3NDA3MA) を参照してください。 + +### 使用上の注意 + +- `score` メソッドは、`query` および `output` パラメータに値が渡されることを想定しています。 +- コンテキストは `output` パラメータに渡す必要があります(文字列または文字列のリスト)。 +- 出力スコアが高いほど、出力にハルシネーションが含まれているという予測が強いことを意味します。 +- `threshold` パラメータは設定済みですが、初期化時に上書き可能です。 + +### 使用例 + +```python +import weave +from weave.scorers import WeaveHallucinationScorerV1 + +# scorer の初期化 +hallucination_scorer = WeaveHallucinationScorerV1() + +# クエリ、コンテキスト、出力を指定してスコアリング +result = hallucination_scorer.score( + query="What is the capital of Antarctica?", + context="People in Antarctica love the penguins.", + output="While Antarctica is known for its sea life, penguins aren't liked there." +) + +print(f"Output is hallucinated: {not result.passed}") +print(result) +``` + +--- + +## `WeaveContextRelevanceScorerV1` + +この scorer は、RAG システムを評価する際に使用するように設計されています。クエリに対するコンテキストの関連性をスコアリングします。 + +`WeaveContextRelevanceScorerV1` は、tasksource による ファインチューン 済みの [deberta-small-long-nli](https://huggingface.co/tasksource/deberta-small-long-nli) モデルを使用しています。詳細は [WeaveContextRelevanceScorerV1 W&B Report](https://wandb.ai/c-metrics/context-relevance-scorer/reports/Context-Relevance-Scorer--VmlldzoxMDYxNjEyNA) を参照してください。 + +### 使用上の注意 + +- `score` メソッドは、`query` と `output` の値を想定しています。 +- コンテキストは `output` パラメータに渡す必要があります(文字列または文字列のリスト)。 +- スコアが高いほど、コンテキストがクエリに関連しているという予測が強いことを意味します。 +- `score` メソッドに `verbose=True` を渡すと、チャンクごとのスコアを取得できます。 + +### 使用例 + +```python +import weave +from weave.scorers import WeaveContextRelevanceScorerV1 + +# scorer の初期化 +context_relevance_scorer = WeaveContextRelevanceScorerV1() + +# クエリと、コンテキスト(outputパラメータとして渡す)をスコアリング +result = context_relevance_scorer.score( + query="What is the capital of Antarctica?", + output="The Antarctic has the happiest penguins." # コンテキストは output パラメータに渡されます +) + +print(f"Output is relevant: {result.passed}") +print(result) +``` + +## `WeaveCoherenceScorerV1` + +この scorer は、入力テキストが一貫しているかどうかを確認します。 + +`WeaveCoherenceScorerV1` は、tasksource による ファインチューン 済みの [deberta-small-long-nli](https://huggingface.co/tasksource/deberta-small-long-nli) モデルを使用しています。詳細については [WeaveCoherenceScorerV1 W&B Report](https://wandb.ai/c-metrics/coherence_scorer/reports/Coherence-Scorer--VmlldzoxMDI5MjA1MA) を参照してください。 + +### 使用上の注意 + +- `score` メソッドは、`query` および `output` パラメータにテキストが渡されることを想定しています。 +- 出力スコアが高いほど、一貫性があるという予測が強いことを意味します。 + +### 使用例 + +```python +import weave +from weave.scorers import WeaveCoherenceScorerV1 + +# scorer の初期化 +coherence_scorer = WeaveCoherenceScorerV1() + +# スコアリングの実行 +result = coherence_scorer.score( + query="What is the capital of Antarctica?", + output="but why not monkey up day" +) + +print(f"Output is coherent: {result.passed}") +print(result) +``` + +--- + +## `WeaveFluencyScorerV1` + +この scorer は、入力テキストが流暢であるか、つまり自然な人間の言語のように読みやすく理解しやすいかを確認します。文法、構文、および全体的な読みやすさを評価します。 + +`WeaveFluencyScorerV1` は、AnswerDotAI による ファインチューン 済みの [ModernBERT-base](https://huggingface.co/answerdotai/ModernBERT-base) モデルを使用しています。詳細については [WeaveFluencyScorerV1 W&B Report](https://wandb.ai/c-metrics/fluency-eval/reports/Fluency-Scorer--VmlldzoxMTA3NzE2Ng) を参照してください。 + +### 使用上の注意 + +- `score` メソッドは、`output` パラメータにテキストが渡されることを想定しています。 +- 出力スコアが高いほど、流暢さが高いことを示します。 + +### 使用例 + +```python +import weave +from weave.scorers import WeaveFluencyScorerV1 + +# scorer の初期化 +fluency_scorer = WeaveFluencyScorerV1() + +# テキストの流暢さをスコアリング +result = fluency_scorer.score( + output="The cat did stretching lazily into warmth of sunlight." +) + +print(f"Output is fluent: {result.passed}") +print(result) +``` + +--- + +## `WeaveTrustScorerV1` + +`WeaveTrustScorerV1` は、他の scorer を「Critical (重要)」と「Advisory (推奨)」の 2 つのカテゴリにグループ化することで、モデル出力の信頼性を評価する RAG システム向けの複合型 scorer です。複合スコアに基づいて、信頼レベルを返します: + +- `high`: 問題は検出されませんでした +- `medium`: Advisory の問題のみ検出されました +- `low`: Critical の問題が検出されたか、入力が空です + +Critical な scorer で失敗した入力は、すべて `low` の信頼レベルになります。Advisory な scorer で失敗した場合は `medium` になります。 + +- **Critical:** + - `WeaveToxicityScorerV1` + - `WeaveHallucinationScorerV1` + - `WeaveContextRelevanceScorerV1` + +- **Advisory:** + - `WeaveFluencyScorerV1` + - `WeaveCoherenceScorerV1` + +### 使用上の注意 + +- この scorer は、RAG パイプラインの評価用に設計されています。 +- 正しくスコアリングするために、`query`、`context`、`output` キーが必要です。 + +### 使用例 + +```python +import weave +from weave.scorers import WeaveTrustScorerV1 + +# scorer の初期化 +trust_scorer = WeaveTrustScorerV1() + +def print_trust_scorer_result(result): + print() + print(f"Output is trustworthy: {result.passed}") + print(f"Trust level: {result.metadata['trust_level']}") + if not result.passed: + print("Triggered scorers:") + for scorer_name, scorer_data in result.metadata['raw_outputs'].items(): + if not scorer_data.passed: + print(f" - {scorer_name} did not pass") + print() + # 各スコアの表示 + print(f"WeaveToxicityScorerV1 scores: {result.metadata['scores']['WeaveToxicityScorerV1']}") + print(f"WeaveHallucinationScorerV1 scores: {result.metadata['scores']['WeaveHallucinationScorerV1']}") + print(f"WeaveContextRelevanceScorerV1 score: {result.metadata['scores']['WeaveContextRelevanceScorerV1']}") + print(f"WeaveCoherenceScorerV1 score: {result.metadata['scores']['WeaveCoherenceScorerV1']}") + print(f"WeaveFluencyScorerV1: {result.metadata['scores']['WeaveFluencyScorerV1']}") + print() + +# 複合的な信頼性スコアリングの実行 +result = trust_scorer.score( + query="What is the capital of Antarctica?", + context="People in Antarctica love the penguins.", + output="The cat stretched lazily in the warm sunlight." +) + +print_trust_scorer_result(result) +print(result) +``` + +--- + +## `PresidioScorer` + +この scorer は [Presidio ライブラリ](https://github.com/microsoft/presidio) を使用して、AI システムの入力および出力に含まれる個人識別情報 (PII) を検出します。 + +### 使用上の注意 + +- メールアドレスや電話番号など特定のエンティティタイプを指定するには、Presidio エンティティのリストを `selected_entities` パラメータに渡します。指定しない場合、Presidio はデフォルトのエンティティリストにあるすべてのエンティティタイプを検出します。 +- メールや電話番号などの特定のエンティティタイプを検出するには、`selected_entities` パラメータにリストを渡してください。 +- `custom_recognizers` パラメータを介して、`presidio.EntityRecognizer` インスタンスのリストとしてカスタム認識器を渡すことができます。 +- 英語以外の入力を処理するには、`language` パラメータを使用して言語を指定します。 + +### 使用例 + +```python +import weave +from weave.scorers import PresidioScorer + +# scorer の初期化 +presidio_scorer = PresidioScorer() + +# PII(個人情報)の検出 +result = presidio_scorer.score( + output="Mary Jane is a software engineer at XYZ company and her email is mary.jane@xyz.com." +) + +print(f"Output contains PII: {not result.passed}") +print(result) +``` \ No newline at end of file diff --git a/ja/weave/guides/integrations.mdx b/ja/weave/guides/integrations.mdx new file mode 100644 index 0000000000..1a54d01cdd --- /dev/null +++ b/ja/weave/guides/integrations.mdx @@ -0,0 +1,102 @@ +--- +title: インテグレーション の概要 +description: OpenAI、Anthropic、Google AI、および主要な オーケストレーション ツール をサポートする Weave の自動パッチ適用により、コード + の変更なしで30以上のプロバイダーと フレームワーク にわたる LLM コールをシームレスにトレースおよび監視できます。 +--- + +# Integrations + +Weave は、デフォルトですべてのサポート対象 インテグレーション に対して **自動インプリシットパッチ (automatic implicit patching)** を提供します。 + +**インプリシットパッチ (自動):** ライブラリがインポートされるタイミングに関わらず、自動的にパッチが適用されます。 + +```python lines +# オプション 1: weave.init() の前にインポート +import openai +import weave +weave.init('my-project') # OpenAI は自動的にパッチされます! + +# オプション 2: weave.init() の後にインポート +import weave +weave.init('my-project') +import anthropic # インポートフックを介して自動的にパッチされます! +``` + +**インプリシットパッチの無効化:** 明示的な制御を好む場合は、自動パッチを無効にすることができます。 + +```python lines +import weave + +# オプション 1: settings パラメータ経由 +weave.init('my-project', settings={'implicitly_patch_integrations': False}) + +# オプション 2: 環境変数経由 +# スクリプトを実行する前に WEAVE_IMPLICITLY_PATCH_INTEGRATIONS=false を設定します + +# インプリシットパッチを無効にした場合、明示的にインテグレーションにパッチを適用する必要があります +import openai +weave.patch_openai() # OpenAI のトレースに必要になります +``` + +**エクスプリシットパッチ (手動):** きめ細かな制御のために、明示的に インテグレーション にパッチを適用できます。 + +```python lines +import weave +weave.init('my-project') +weave.integrations.patch_openai() # OpenAI のトレースを有効化 +weave.integrations.patch_anthropic() # Anthropic のトレースを有効化 +``` + +W&B Weave は、主要な LLM プロバイダーや オーケストレーション フレームワーク 向けの ログ インテグレーション を提供しています。これらの インテグレーション により、さまざまなライブラリを介した呼び出しをシームレスにトレースでき、AI アプリケーション の監視と分析の能力が向上します。 + +## LLM Providers + +LLM プロバイダーは、予測 を生成するための大規模言語モデルへの アクセス を提供するベンダーです。Weave はこれらのプロバイダーと統合し、API とのやり取りを ログ に記録してトレースします。 + +- **[W&B Inference Service](https://docs.wandb.ai/inference/)** +- **[Amazon Bedrock](/weave/guides/integrations/bedrock)** +- **[Anthropic](/weave/guides/integrations/anthropic)** +- **[Cerebras](/weave/guides/integrations/cerebras)** +- **[Cohere](/weave/guides/integrations/cohere)** +- **[Google](/weave/guides/integrations/google)** +- **[Groq](/weave/guides/integrations/groq)** +- **[Hugging Face Hub](/weave/guides/integrations/huggingface)** +- **[LiteLLM](/weave/guides/integrations/litellm)** +- **[Microsoft Azure](/weave/guides/integrations/azure)** +- **[MistralAI](/weave/guides/integrations/mistral)** +- **[NVIDIA NIM](/weave/guides/integrations/nvidia_nim)** +- **[OpenAI](/weave/guides/integrations/openai)** +- **[OpenRouter](/weave/guides/integrations/openrouter)** +- **[Together AI](/weave/guides/integrations/together_ai)** + +**[Local Models](/weave/guides/integrations/local_models)**: 独自の インフラストラクチャー で モデル を実行する場合に使用します。 + +## Frameworks + +フレームワーク は、AI アプリケーション における実際の実行 パイプライン の オーケストレーション を支援します。複雑な ワークフロー を構築するための ツール や抽象化を提供します。Weave はこれらの フレームワーク と統合し、パイプライン 全体をトレースします。 + +- **[OpenAI Agents SDK](/weave/guides/integrations/openai_agents)** +- **[LangChain](/weave/guides/integrations/langchain)** +- **[LlamaIndex](/weave/guides/integrations/llamaindex)** +- **[DSPy](/weave/guides/integrations/dspy)** +- **[Instructor](/weave/guides/integrations/instructor)** +- **[CrewAI](/weave/guides/integrations/crewai)** +- **[Smolagents](/weave/guides/integrations/smolagents)** +- **[PydanticAI](/weave/guides/integrations/pydantic_ai)** +- **[Google Agent Development Kit (ADK)](/weave/guides/integrations/google_adk)** +- **[AutoGen](/weave/guides/integrations/autogen)** +- **[Verdict](/weave/guides/integrations/verdict)** +- **[TypeScript SDK](/weave/guides/integrations/js)** +- **[Agno](/weave/guides/integrations/agno)** +- **[Koog](/weave/guides/integrations/koog)** + +## RL Frameworks +- **[Verifiers](/weave/guides/integrations/verifiers)** + +## Protocols + +Weave は、AI アプリケーション とそれをサポートするサービス間の通信を可能にする標準化されたプロトコルと統合されています。 + +- **[Model Context Protocol (MCP)](/weave/guides/integrations/mcp)** + +上記のリストから インテグレーション を選択して、お好みの LLM プロバイダー、フレームワーク、またはプロトコルで Weave を使用する方法の詳細を確認してください。LLM API に直接 アクセス している場合でも、複雑な パイプライン を構築している場合でも、標準化されたプロトコルを使用している場合でも、Weave は AI アプリケーション を効果的にトレースおよび分析するための ツール を提供します。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/agno.mdx b/ja/weave/guides/integrations/agno.mdx new file mode 100644 index 0000000000..713a383798 --- /dev/null +++ b/ja/weave/guides/integrations/agno.mdx @@ -0,0 +1,356 @@ +--- +title: Agno +description: OpenTelemetry を使用して Agno のマルチ エージェント システムを Weave でトレースしましょう。エージェント 間のやり取り、 + ツール の呼び出し、共有メモリ操作、マルチモーダルな ワークフロー をキャプチャし、AI エージェント システムの包括的なオブザーバビリティを実現します。 +--- + +[OpenTelemetry (OTEL)](https://opentelemetry.io/) を使用して、Weave で [Agno](https://docs.agno.com/) のエージェントやツールの呼び出しをトレースできます。Agno は、共有メモリ、知識、推論を備えたマルチエージェントシステムを構築するための Python フレームワークです。軽量でモデルに依存せず、高いパフォーマンスを発揮するように設計されており、テキスト、画像、音声、ビデオプロセッシングを含むマルチモーダル機能をサポートしています。 + +このガイドでは、OTEL を使用して Agno エージェントとツールの呼び出しをトレースし、それらの Traces を Weave で可視化する方法を説明します。必要な依存関係のインストール、Weave にデータを送信するための OTEL トレーサーの設定、および Agno エージェントとツールのインストルメント方法について学びます。 + + +Weave での OTEL トレースに関する詳細については、[Send OTEL Traces to Weave](../tracking/otel) を参照してください。 + + +## 事前準備 + +1. 必要な依存関係をインストールします: + + ```bash + pip install agno openinference-instrumentation-agno opentelemetry-sdk opentelemetry-exporter-otlp-proto-http + ``` + +2. OpenAI の APIキー(または他のモデルプロバイダー)を環境変数として設定します: + + ```bash + export OPENAI_API_KEY=your_api_key_here + ``` + +3. [Weave での OTEL トレースの設定](#configure-otel-tracing-in-weave) を行います。 + +### Weave での OTEL トレースの設定 + +Agno から Weave に Traces を送信するには、`TracerProvider` と `OTLPSpanExporter` を使用して OTEL を設定します。エクスポーターには、[認証とプロジェクト識別のための正しいエンドポイントと HTTP ヘッダー](#required-configuration) を設定してください。 + + +APIキーやプロジェクト情報などの機密性の高い環境変数は、環境ファイル(例:`.env`)に保存し、`os.environ` を使って読み込むことをお勧めします。これにより、資格情報を安全に保ち、コードベースから切り離すことができます。 + + +#### 必要な設定 + +- **エンドポイント:** `https://trace.wandb.ai/otel/v1/traces` +- **ヘッダー:** + - `Authorization`: W&B APIキーを使用した基本認証(Basic auth) + - `project_id`: W&B の Entity/Projects 名(例: `myteam/myproject`) + +## Agno から Weave へ OTEL トレースを送信する + +[事前準備](#prerequisites) が完了したら、Agno から Weave に OTEL トレースを送信できます。以下のコードスニペットは、Agno アプリケーションから Weave に OTEL トレースを送信するための OTLP スパンエクスポーターとトレーサープロバイダーの設定方法を示しています。 + + +Weave が Agno を正しくトレースできるように、コード内で Agno コンポーネントを使用する _前_ にグローバルトレーサープロバイダーを設定してください。 + + +```python lines +# tracing.py + +import base64 +import os +from openinference.instrumentation.agno import AgnoInstrumentor +from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter +from opentelemetry.sdk import trace as trace_sdk +from opentelemetry.sdk.trace.export import SimpleSpanProcessor +from opentelemetry import trace + +# 環境変数から機密性の高い値を読み込む +WANDB_BASE_URL = "https://trace.wandb.ai" +# W&B の entity/project 名(例: "myteam/myproject") +PROJECT_ID = os.environ.get("WANDB_PROJECT_ID") +# https://wandb.ai/settings で W&B APIキーを作成してください +WANDB_API_KEY = os.environ.get("WANDB_API_KEY") + +OTEL_EXPORTER_OTLP_ENDPOINT = f"{WANDB_BASE_URL}/otel/v1/traces" +AUTH = base64.b64encode(f"api:{WANDB_API_KEY}".encode()).decode() + +OTEL_EXPORTER_OTLP_HEADERS = { + "Authorization": f"Basic {AUTH}", + "project_id": PROJECT_ID, +} + +# エンドポイントとヘッダーを使用して OTLP スパンエクスポーターを作成 +exporter = OTLPSpanExporter( + endpoint=OTEL_EXPORTER_OTLP_ENDPOINT, + headers=OTEL_EXPORTER_OTLP_HEADERS, +) + +# トレーサープロバイダーを作成し、エクスポーターを追加 +tracer_provider = trace_sdk.TracerProvider() +tracer_provider.add_span_processor(SimpleSpanProcessor(exporter)) + +# Agno をインポートまたは使用する「前」にグローバルトレーサープロバイダーを設定 +trace.set_tracer_provider(tracer_provider) +``` + +## Agno エージェントを OTEL でトレースする + +トレーサープロバイダーをセットアップした後、自動トレース機能を備えた Agno エージェントを作成して実行できます。以下の例では、ツールを持つシンプルなエージェントの作成方法を示します: + +```python lines +from agno.agent import Agent +from agno.models.openai import OpenAIChat +from agno.tools.yfinance import YFinanceTools + +from dotenv import load_dotenv +load_dotenv() + +# 上記で作成したファイルから AgnoInstrumentor をロード +from tracing import AgnoInstrumentor + +# Agno のインストルメンテーションを開始 +AgnoInstrumentor().instrument() + +# 金融エージェントを作成 +finance_agent = Agent( + name="Finance Agent", + model=OpenAIChat(id="gpt-4o-mini"), + tools=[ + YFinanceTools( + stock_price=True, + analyst_recommendations=True, + company_info=True, + company_news=True + ) + ], + instructions=["Use tables to display data"], + show_tool_calls=True, + markdown=True, +) + +# エージェントを使用 - これは自動的にトレースされます +finance_agent.print_response( + "What is the current stock price of Apple and what are the latest analyst recommendations?", + stream=True +) +``` + +すべてのエージェント操作は自動的にトレースされ Weave に送信されるため、実行フロー、モデル呼び出し、推論ステップ、およびツールの呼び出しを可視化できます。 + + +![Agno エージェントのトレース可視化](/weave/guides/integrations/imgs/agno/agno_agent_trace.png) + + +## Agno ツールを OTEL でトレースする + +Agno でツールを定義して使用する場合、これらのツール呼び出しもトレースにキャプチャされます。OTEL インテグレーションは、エージェントの推論プロセスと個々のツール実行の両方を自動的にインストルメントし、エージェントの振る舞いを包括的に把握できるようにします。 + +以下は、複数のツールを使用した例です: + +```python lines +from agno.agent import Agent +from agno.models.openai import OpenAIChat +from agno.tools.duckduckgo import DuckDuckGoTools +from agno.tools.yfinance import YFinanceTools + +from dotenv import load_dotenv +load_dotenv() + +# 上記で作成したファイルから AgnoInstrumentor をロード +from tracing import AgnoInstrumentor + +# Agno のインストルメンテーションを開始 +AgnoInstrumentor().instrument() + +# 複数のツールを持つエージェントを作成 +research_agent = Agent( + name="Research Agent", + model=OpenAIChat(id="gpt-4o-mini"), + tools=[ + DuckDuckGoTools(), + YFinanceTools(stock_price=True, company_info=True), + ], + instructions=[ + "Search for current information and financial data", + "Always include sources", + "Use tables to display financial data" + ], + show_tool_calls=True, + markdown=True, +) + +# エージェントを使用 - ツールの呼び出しがトレースされます +research_agent.print_response( + "Research Tesla's recent performance and news. Include stock price and any recent developments.", + stream=True +) +``` + + +![Agno ツール呼び出しのトレース可視化](/weave/guides/integrations/imgs/agno/agno_tool_calls.png) + + +## マルチエージェントチームを OTEL でトレースする + +Agno の強力なマルチエージェントアーキテクチャーにより、連携してコンテキストを共有できるエージェントチームを作成できます。これらのチームの相互作用も完全にトレースされます: + +```python lines +from agno.agent import Agent +from agno.models.openai import OpenAIChat +from agno.tools.duckduckgo import DuckDuckGoTools +from agno.tools.yfinance import YFinanceTools + +from dotenv import load_dotenv +load_dotenv() + +# tracing.py ファイルから AgnoInstrumentor をロード +from tracing import AgnoInstrumentor + +# Agno のインストルメンテーションを開始 +AgnoInstrumentor().instrument() + +# 特化型エージェントを作成 +web_agent = Agent( + name="Web Agent", + role="Search the web for information", + model=OpenAIChat(id="gpt-4o-mini"), + tools=[DuckDuckGoTools()], + instructions="Always include sources", + show_tool_calls=True, + markdown=True, +) + +finance_agent = Agent( + name="Finance Agent", + role="Get financial data", + model=OpenAIChat(id="gpt-4o-mini"), + tools=[YFinanceTools(stock_price=True, analyst_recommendations=True)], + instructions="Use tables to display data", + show_tool_calls=True, + markdown=True, +) + +# エージェントチームを作成 +agent_team = Agent( + team=[web_agent, finance_agent], + model=OpenAIChat(id="gpt-4o"), + instructions=["Always include sources", "Use tables to display data"], + show_tool_calls=True, + markdown=True, +) + +# チームを使用 - すべてのエージェント間の相互作用がトレースされます +agent_team.print_response( + "What's the current market sentiment around NVIDIA? Include both news analysis and financial metrics.", + stream=True +) +``` + +このマルチエージェントトレースにより、Weave 内で異なるエージェント間の調整が表示され、エージェントチーム全体でタスクがどのように分散・実行されるかの可視性が得られます。 + + +![Agno マルチエージェントチームのトレース可視化](/weave/guides/integrations/imgs/agno/agno_team_trace.png) + + +## 推論エージェントの活用 + +Agno は、エージェントが問題を段階的に考えるための組み込み推論機能を提供します。これらの推論プロセスも Traces にキャプチャされます: + +```python lines +from agno.agent import Agent +from agno.models.openai import OpenAIChat +from agno.tools.reasoning import ReasoningTools +from agno.tools.yfinance import YFinanceTools + +from dotenv import load_dotenv +load_dotenv() + +# tracing.py ファイルから AgnoInstrumentor をロード +from tracing import AgnoInstrumentor + +# Agno のインストルメンテーションを開始 +AgnoInstrumentor().instrument() + +# 推論エージェントを作成 +reasoning_agent = Agent( + name="Reasoning Finance Agent", + model=OpenAIChat(id="gpt-4o"), + tools=[ + ReasoningTools(add_instructions=True), + YFinanceTools( + stock_price=True, + analyst_recommendations=True, + company_info=True, + company_news=True + ), + ], + instructions="Use tables to display data and show your reasoning process", + show_tool_calls=True, + markdown=True, +) + +# 推論エージェントを使用 +reasoning_agent.print_response( + "Should I invest in Apple stock right now? Analyze the current situation and provide a reasoned recommendation.", + stream=True +) +``` + +推論ステップがトレースに表示され、エージェントが複雑な問題をどのように分解し、意思決定を行っているかを確認できます。 + + +![Agno 推論エージェントのトレース可視化](/weave/guides/integrations/imgs/agno/agno_reasoning_trace.png) + + +## メモリと知識の活用 + +Agno エージェントはメモリを保持し、ナレッジベースにアクセスできます。これらの操作もトレースされます: + +```python lines +from agno.agent import Agent +from agno.models.openai import OpenAIChat +from agno.memory import AgentMemory +from agno.storage.sqlite import SqliteStorage + +from dotenv import load_dotenv +load_dotenv() + +# tracing.py ファイルから AgnoInstrumentor をロード +from tracing import AgnoInstrumentor + +# Agno のインストルメンテーションを開始 +AgnoInstrumentor().instrument() + + +# メモリを持つエージェントを作成 +memory_agent = Agent( + name="Memory Agent", + model=OpenAIChat(id="gpt-4o-mini"), + memory=AgentMemory(), + storage=SqliteStorage( + table_name="agent_sessions", + db_file="agent_memory.db" + ), + instructions="Remember our conversation history", + show_tool_calls=True, + markdown=True, +) + +# 最初のインタラクション +memory_agent.print_response("My name is John and I'm interested in AI investing strategies.") + +# 2回目のインタラクション - エージェントは前のコンテキストを覚えています +memory_agent.print_response("What specific AI companies would you recommend for my portfolio?") +``` + + +![Agno メモリ使用のトレース可視化](/weave/guides/integrations/imgs/agno/agno_memory_use.png) + + +会話履歴の保存や取得を含むメモリ操作がトレースに表示されます。 + +## 詳細情報 + +- [Weave ドキュメント: Send OTEL traces to Weave](../tracking/otel) +- [Agno 公式ドキュメント](https://docs.agno.com/) +- [OTEL 公式ドキュメント](https://opentelemetry.io/) +- [Agno GitHub リポジトリ](https://github.com/agno-agi/agno) +- [OpenInference Agno インストルメンテーション](https://pypi.org/project/openinference-instrumentation-agno/) \ No newline at end of file diff --git a/ja/weave/guides/integrations/anthropic.mdx b/ja/weave/guides/integrations/anthropic.mdx new file mode 100644 index 0000000000..27fa9f26cd --- /dev/null +++ b/ja/weave/guides/integrations/anthropic.mdx @@ -0,0 +1,286 @@ +--- +title: Anthropic +description: Weave を使用して、Anthropic SDK 経由で行われた LLM コールを自動的に追跡し、ログを記録します +--- + + thought + + Open In Colab + + +Weave をコードに統合すると、[Python](https://github.com/anthropics/anthropic-sdk-python) および [TypeScript](https://github.com/anthropics/anthropic-sdk-typescript) 用の Anthropic SDK で行われた LLM 呼び出しを自動的に追跡し、ログを記録します。Weave は Anthropic の `Messages.create` メソッドを自動的に呼び出すことでこれを実現します。 + +## トレース (Traces) + +コードに `weave.init("your-team-name/your-project-name")` を追加すると、Weave は Anthropic SDK の トレース を自動的にキャプチャします。`weave.init()` の 引数 としてチーム名を指定しない場合、Weave は出力を [デフォルトの W&B entity](/platform/app/settings-page/user-settings/#default-team) にログ記録します。プロジェクト名を指定しない場合、Weave の初期化は失敗します。 + +以下の例は、Anthropic への基本的な呼び出しに Weave を統合する方法を示しています。 + + + +```python lines {6} +import weave +# 通常通り anthropic ライブラリを使用します +import os +from anthropic import Anthropic + +weave.init("anthropic_project") + +client = Anthropic( + api_key=os.environ.get("ANTHROPIC_API_KEY"), +) + +message = client.messages.create( + max_tokens=1024, + messages=[ + { + "role": "user", + "content": "犬に関するジョークを教えて", + } + ], + model="claude-3-opus-20240229", +) +print(message.content) +``` + + +```typescript +import Anthropic from '@anthropic-ai/sdk'; +import * as weave from 'weave'; +import { wrapAnthropic } from 'weave'; + +await weave.init('anthropic_project'); + +// Anthropic クライアントをラップしてトレースを有効にします +const client = wrapAnthropic(new Anthropic()); + +const message = await client.messages.create({ + max_tokens: 1024, + messages: [ + { + role: 'user', + content: '犬に関するジョークを教えて', + } + ], + model: 'claude-3-opus-20240229', +}); + +console.log(message.content); +``` + + + +コードに `weave.init()` を含めることで、Weave は自動的に トレース 情報をキャプチャし、リンクを出力します。リンクをクリックすると、Weave UI で トレース を確認できます。 + +[![anthropic_trace.png](/weave/guides/integrations/imgs/anthropic_trace.png)](https://wandb.ai/capecape/anthropic_project/weave/calls) + +## 独自の op でラップする + +Weave の op は、実験を進める際に行われる コード の バージョン管理 を自動化し、その入力と出力をキャプチャします。[`@weave.op()`](https://wandb.github.io/weave/guides/tracking/ops) (Python) でデコレートするか、[`weave.op()`](/weave/reference/typescript-sdk/functions/op) (TypeScript) でラップして [`Anthropic.messages.create`](https://docs.anthropic.com/en/api/messages-examples) を呼び出すことで、Weave が入力と出力を追跡します。 + +以下の例は、関数を追跡する方法を示しています。 + + + +```python lines {5,10,24} +import weave +import os +from anthropic import Anthropic + +weave.init("anthropic_project") +client = Anthropic( + api_key=os.environ.get("ANTHROPIC_API_KEY"), +) + +@weave.op() +def call_anthropic(user_input:str, model:str) -> str: + message = client.messages.create( + max_tokens=1024, + messages=[ + { + "role": "user", + "content": user_input, + } + ], + model=model, + ) + return message.content[0].text + +@weave.op() +def generate_joke(topic: str) -> str: + return call_anthropic(f"{topic} に関するジョークを教えて", model="claude-3-haiku-20240307") + +print(generate_joke("ニワトリ")) +print(generate_joke("車")) +``` + + +```typescript +import Anthropic from '@anthropic-ai/sdk'; +import * as weave from 'weave'; +import { wrapAnthropic } from 'weave'; + +await weave.init('anthropic_project'); +const client = wrapAnthropic(new Anthropic()); + +const callAnthropic = weave.op(async function callAnthropic( + userInput: string, + model: string +): Promise { + const message = await client.messages.create({ + max_tokens: 1024, + messages: [ + { + role: 'user', + content: userInput, + } + ], + model: model, + }); + const content = message.content[0]; + return content.type === 'text' ? content.text : ''; +}); + +const generateJoke = weave.op(async function generateJoke( + topic: string +): Promise { + return callAnthropic(`${topic} に関するジョークを教えて`, 'claude-3-haiku-20240307'); +}); + +console.log(await generateJoke('ニワトリ')); +console.log(await generateJoke('車')); +``` + + + +関数を `weave.op()` でデコレートまたはラップすることで、Weave は関数の コード 、入力、および出力をキャプチャします。op を使用して、ネストされた関数を含む任意の関数を追跡できます。 + +[![anthropic_ops.png](/weave/guides/integrations/imgs/anthropic_ops.png)](https://wandb.github.io/weave/guides/tracking/ops) + +## 実験を容易にするための `Model` の作成 + + +`weave.Model` クラスは Weave Python SDK でのみ利用可能です。TypeScript の場合は、`weave.op()` ラッパーを使用して、構造化された パラメータ を持つ関数を追跡してください。 + + +多くの要素が動いている場合、実験の整理は困難です。[`Model`](/weave/guides/core-types/models) クラスを使用することで、システムプロンプトや使用している モデル など、アプリケーションの実験的な詳細をキャプチャして整理できます。これにより、アプリケーションの異なるイテレーションの整理と比較が容易になります。 + +コード の バージョン管理 や入力/出力のキャプチャに加えて、[`Model`](/weave/guides/core-types/models) は アプリケーション の 振る舞い を制御する構造化された パラメータ をキャプチャします。これにより、どの パラメータ が最適かを判断するのに役立ちます。また、Weave Models は `serve` や [`Evaluation`](/weave/guides/core-types/evaluations) と併用することも可能です。 + +以下の例では、`model` と `temperature` を使用して実験を行うことができます。 + +```python lines +import weave +# 通常通り anthropic ライブラリを使用します +import os +from anthropic import Anthropic +weave.init('joker-anthropic') + +class JokerModel(weave.Model): # `weave.Model` に変更 + model: str + temperature: float + + @weave.op() + def predict(self, topic): # `predict` に変更 + client = Anthropic() + message = client.messages.create( + max_tokens=1024, + messages=[ + { + "role": "user", + "content": f"{topic} に関するジョークを教えて", + } + ], + model=self.model, + temperature=self.temperature + ) + return message.content[0].text + + +joker = JokerModel( + model="claude-3-haiku-20240307", + temperature = 0.1) +result = joker.predict("ニワトリとロボット") +print(result) +``` + +これらの 値 のいずれかを変更するたびに、Weave は `JokerModel` の新しい バージョン を作成し追跡します。これにより、 トレース データと コード の変更を関連付けることができ、どの 設定 が ユースケース に最適かを判断するのに役立ちます。 + +[![anthropic_model.png](/weave/guides/integrations/imgs/anthropic_model.png)](https://wandb.ai/capecape/anthropic_project/weave/calls) + +## ツール (function calling) + +Anthropic は、Claude が関数呼び出しを要求できるようにする [tools](https://docs.anthropic.com/en/docs/tool-use) インターフェースを提供しています。Weave は、会話全体を通じてツールの定義、ツール使用リクエスト、およびツールの 結果 を自動的に追跡します。 + +以下の簡略化された例は、Anthropic のツール設定を示しています。 + + + +```python lines +message = client.messages.create( + max_tokens=1024, + messages=[ + { + "role": "user", + "content": "サンフランシスコの天気はどうですか?", + } + ], + tools=[ + { + "name": "get_weather", + "description": "指定された場所の現在の天気を取得します", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "都市と州。例: San Francisco, CA", + } + }, + "required": ["location"], + }, + }, + ], + model=model, +) + +print(message) +``` + + +```typescript +const message = await client.messages.create({ + max_tokens: 1024, + messages: [ + { + role: 'user', + content: "サンフランシスコの天気はどうですか?", + } + ], + tools: [ + { + name: 'get_weather', + description: '指定された場所の現在の天気を取得します', + input_schema: { + type: 'object', + properties: { + location: { + type: 'string', + description: '都市と州。例: San Francisco, CA', + } + }, + required: ['location'], + }, + }, + ], + model: 'claude-3-opus-20240229', +}); + +console.log(message); +``` + + + +Weave は、会話の各ステップにおけるツールの定義、Claude のツール使用リクエスト、およびツールの 結果 を自動的にキャプチャします。 + +[![anthropic_tool.png](/weave/guides/integrations/imgs/anthropic_tool.png)](https://wandb.ai/capecape/anthropic_project/weave/calls) \ No newline at end of file diff --git a/ja/weave/guides/integrations/autogen.mdx b/ja/weave/guides/integrations/autogen.mdx new file mode 100644 index 0000000000..4283fc210b --- /dev/null +++ b/ja/weave/guides/integrations/autogen.mdx @@ -0,0 +1,716 @@ +--- +title: AutoGen +description: Weave を使用して、AutoGen エージェントおよびマルチエージェントシステムのトレースとモニタリングを行います +--- + +{/* TODO: このガイド用のColabノートブックをバッジリンクと共に追加してください。 */} + +AutoGen は、AI エージェントやアプリケーションを構築するための Microsoft 製のフレームワークです。会話型 AI(`AgentChat`)、コアなマルチエージェント機能(`Core`)、外部サービスとのインテグレーション(`Extensions`)のためのコンポーネントを提供し、複雑なマルチエージェントシステムの作成を簡素化します。また、AutoGen はノーコードでエージェントのプロトタイプを作成できる `Studio` も提供しています。詳細については、[AutoGen 公式ドキュメント](https://microsoft.github.io/autogen/stable//index.html)をご覧ください。 + + +このガイドは、[AutoGen](https://microsoft.github.io/autogen/stable/index.html) に関する基本的な知識があることを前提としています。 + + +Weave は [AutoGen](https://microsoft.github.io/autogen/stable/index.html) と連携し、マルチエージェントアプリケーションの実行をトレースして可視化するのに役立ちます。Weave を初期化するだけで、`autogen_agentchat`、`autogen_core`、`autogen_ext` 内のインタラクションを自動的に追跡できます。このガイドでは、AutoGen で Weave を使用するさまざまな例を順を追って説明します。 + +## 事前準備 + +始める前に、AutoGen と Weave がインストールされていることを確認してください。また、使用する予定の LLM プロバイダー(OpenAI、Anthropic など)の SDK も必要です。 + +```bash +pip install autogen_agentchat "autogen_ext[openai,anthropic]" weave +``` + +APIキーを環境変数として設定します。 + +```python lines +import os + +os.environ["OPENAI_API_KEY"] = "" +os.environ["ANTHROPIC_API_KEY"] = "" +``` + +## 基本設定 + +スクリプトの冒頭で Weave を初期化し、トレースのキャプチャを開始します。 + +```python lines {2} +import weave +weave.init("autogen-demo") +``` + +## シンプルなモデルクライアントのトレース + +Weave は、AutoGen 内のモデルクライアントに対して直接行われた呼び出しをトレースできます。 + +### クライアントの create 呼び出しをトレースする + +この例では、`OpenAIChatCompletionClient` への単一の呼び出しをトレースする方法を示します。 + +```python lines +import asyncio +from autogen_core.models import UserMessage +from autogen_ext.models.openai import OpenAIChatCompletionClient +# from autogen_ext.models.anthropic import AnthropicChatCompletionClient + +async def simple_client_call(model_name = "gpt-4o"): + model_client = OpenAIChatCompletionClient( + model=model_name, + ) + # 代わりに Anthropic や他のモデルクライアントを使用することもできます + # model_client = AnthropicChatCompletionClient( + # model="claude-3-haiku-20240307" + # ) + response = await model_client.create( + [UserMessage(content="Hello, how are you?", source="user")] + ) + print(response) + +asyncio.run(simple_client_call()) + +``` + +[![autogen-simple-client.png](/weave/guides/integrations/imgs/autogen/autogen-simple-client.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?view=traces_default&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196ee09-8dcf-7b72-8cdc-7699608cd6ef%3FhideTraceTree%3D0) + +### ストリーミングを伴うクライアントの create 呼び出しをトレースする + +Weave は、ストリーミングレスポンスのトレースもサポートしています。 + +```python lines + +async def simple_client_call_stream(model_name = "gpt-4o"): + openai_model_client = OpenAIChatCompletionClient(model=model_name) + async for item in openai_model_client.create_stream( + [UserMessage(content="Hello, how are you?", source="user")] + ): + print(item, flush=True, end="") + +asyncio.run(simple_client_call_stream()) + +``` + +[![autogen-streaming-client.png](/weave/guides/integrations/imgs/autogen/autogen-streaming-client.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?view=traces_default&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196ee0e-24be-7523-b15e-04f87c03ac68%3FhideTraceTree%3D0) + +### Weave によるキャッシュされた呼び出しの記録 + +AutoGen の `ChatCompletionCache` を使用すると、Weave はこれらのインタラクションをトレースし、レスポンスがキャッシュから取得されたものか、新しい呼び出しによるものかを表示します。 + +```python lines + +from autogen_ext.models.cache import ChatCompletionCache + +async def run_cache_client(model_name = "gpt-4o"): + openai_model_client = OpenAIChatCompletionClient(model=model_name) + cache_client = ChatCompletionCache(openai_model_client,) + + response = await cache_client.create( + [UserMessage(content="Hello, how are you?", source="user")] + ) + print(response) # OpenAI からのレスポンスが出力されるはずです + response = await cache_client.create( + [UserMessage(content="Hello, how are you?", source="user")] + ) + print(response) # キャッシュされたレスポンスが出力されるはずです + +asyncio.run(run_cache_client()) + +``` + +[![autogen-cached-client.png](/weave/guides/integrations/imgs/autogen/autogen-cached-client.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?view=traces_default&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196ee11-fded-72c2-baaa-7c0ba2a7cd3b%3FhideTraceTree%3D0) + +## ツール呼び出しを伴うエージェントのトレース + +Weave はエージェントとそのツールの使用状況をトレースし、エージェントがどのようにツールを選択して実行するかを可視化します。 + +```python lines +from autogen_agentchat.agents import AssistantAgent + +async def get_weather(city: str) -> str: + return f"{city} の天気は 73 度で晴れです。" + +async def run_agent_with_tools(model_name = "gpt-4o"): + model_client = OpenAIChatCompletionClient(model=model_name) + + agent = AssistantAgent( + name="weather_agent", + model_client=model_client, + tools=[get_weather], + system_message="あなたは親切なアシスタントです。", + reflect_on_tool_use=True, + ) + # コンソールへの出力をストリーミングする場合: + # await Console(agent.run_stream(task="ニューヨークの天気はどうですか?")) + res = await agent.run(task="ニューヨークの天気はどうですか?") + print(res) + await model_client.close() + +asyncio.run(run_agent_with_tools()) + +``` + +[![autogen-agent-tools.png](/weave/guides/integrations/imgs/autogen/autogen-agent-tools.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?view=traces_default&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196ee13-e5ca-72a1-b7b6-4b263fad89e3%3FhideTraceTree%3D0) + +## GroupChat のトレース - RoundRobin + +`RoundRobinGroupChat` などのグループチャット内のインタラクションは Weave によってトレースされ、エージェント間の会話の流れを追うことができます。 + +```python lines + +from autogen_agentchat.conditions import TextMentionTermination +from autogen_agentchat.teams import RoundRobinGroupChat + +# グループチャット全体をトレースしたいため、ここに weave op を追加します。 +# これは完全にオプションですが、使用することを強くお勧めします。 + +@weave.op +async def run_round_robin_group_chat(model_name="gpt-4o"): + model_client = OpenAIChatCompletionClient(model=model_name) + + primary_agent = AssistantAgent( + "primary", + model_client=model_client, + system_message="あなたは親切な AI アシスタントです。", + ) + + critic_agent = AssistantAgent( + "critic", + model_client=model_client, + system_message="建設的なフィードバックを提供してください。フィードバックが反映されたら 'APPROVE' と答えてください。", + ) + + text_termination = TextMentionTermination("APPROVE") + + team = RoundRobinGroupChat( + [primary_agent, critic_agent], termination_condition=text_termination + ) + await team.reset() + # コンソールへの出力をストリーミングする場合: + # await Console(team.run_stream(task="秋の季節についての短い詩を書いてください。")) + result = await team.run(task="秋の季節についての短い詩を書いてください。") + print(result) + await model_client.close() + + +asyncio.run(run_round_robin_group_chat()) + +``` + +[![round_robin_group_chat.png](/weave/guides/integrations/imgs/autogen/round_robin_group_chat.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?filter=%7B%22opVersionRefs%22%3A%5B%22weave%3A%2F%2F%2Fparambharat%2Fautogen-demo%2Fop%2Frun_round_robin_group_chat%3A*%22%5D%7D&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196f16c-26ce-7b32-8f0c-2366d29038a3%3FdescendentCallId%3D0196f16c-26ce-7b32-8f0c-2366d29038a3%26hideTraceTree%3D0) + +## メモリのトレース + +AutoGen のメモリコンポーネントは Weave でトレースできます。`@weave.op()` を使用して、読みやすさを向上させるためにメモリ操作を単一のトレースにグループ化できます。 + +```python lines + +from autogen_core.memory import ListMemory, MemoryContent, MemoryMimeType + +# メモリ追加の呼び出しとメモリ取得の呼び出しを単一のトレースの下で +# まとめてトレースしたいため、ここに weave op を追加します。 +# これは完全にオプションですが、使用することを強くお勧めします。 + +@weave.op +async def run_memory_agent(model_name="gpt-4o"): + user_memory = ListMemory() + + await user_memory.add( + MemoryContent( + content="天気はメートル法であるべきです", + mime_type=MemoryMimeType.TEXT, + ) + ) + + await user_memory.add( + MemoryContent( + content="食事のレシピはビーガンでなければなりません", mime_type=MemoryMimeType.TEXT + ) + ) + + async def get_weather(city: str, units: str = "imperial") -> str: + if units == "imperial": + return f"{city} の天気は 73 °F で晴れです。" + elif units == "metric": + return f"{city} の天気は 23 °C で晴れです。" + else: + return f"申し訳ありません、{city} の天気はわかりません。" + + model_client = OpenAIChatCompletionClient(model=model_name) + assistant_agent = AssistantAgent( + name="assistant_agent", + model_client=model_client, + tools=[get_weather], + memory=[user_memory], + ) + + # コンソールへの出力をストリーミングする場合: + # stream = assistant_agent.run_stream(task="ニューヨークの天気はどうですか?") + # await Console(stream) + result = await assistant_agent.run(task="ニューヨークの天気はどうですか?") + print(result) + await model_client.close() + + +asyncio.run(run_memory_agent()) + +``` + +[![autogen-memory.png](/weave/guides/integrations/imgs/autogen/autogen-memory.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?view=traces_default&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196ee18-28b6-7063-90df-77aaedf88dc9%3FhideTraceTree%3D0) + +## RAG ワークフローのトレース + +`ChromaDBVectorMemory` のようなメモリシステムを使用したドキュメントのインデックス作成や検索を含む、検索拡張生成(RAG)ワークフローはトレース可能です。RAG プロセスを `@weave.op()` でデコレートすることで、フロー全体の可視化に役立ちます。 + + +この RAG の例には `chromadb` が必要です。`pip install chromadb` でインストールしてください。 + + +```python lines {1,65} +# !pip install -q chromadb +# 環境に chromadb がインストールされていることを確認してください: `pip install chromadb` + +import re +from typing import List +import os +from pathlib import Path + +import aiofiles +import aiohttp + +from autogen_core.memory import Memory, MemoryContent, MemoryMimeType +from autogen_ext.memory.chromadb import ( + ChromaDBVectorMemory, + PersistentChromaDBVectorMemoryConfig, +) + +class SimpleDocumentIndexer: + def __init__(self, memory: Memory, chunk_size: int = 1500) -> None: + self.memory = memory + self.chunk_size = chunk_size + + async def _fetch_content(self, source: str) -> str: + if source.startswith(("http://", "https://")): + async with aiohttp.ClientSession() as session: + async with session.get(source) as response: + return await response.text() + else: + async with aiofiles.open(source, "r", encoding="utf-8") as f: + return await f.read() + + def _strip_html(self, text: str) -> str: + text = re.sub(r"<[^>]*>", " ", text) + text = re.sub(r"\\s+", " ", text) + return text.strip() + + def _split_text(self, text: str) -> List[str]: + chunks: list[str] = [] + for i in range(0, len(text), self.chunk_size): + chunk = text[i : i + self.chunk_size] + chunks.append(chunk.strip()) + return chunks + + async def index_documents(self, sources: List[str]) -> int: + total_chunks = 0 + for source in sources: + try: + content = await self._fetch_content(source) + if "<" in content and ">" in content: + content = self._strip_html(content) + chunks = self._split_text(content) + for i, chunk in enumerate(chunks): + await self.memory.add( + MemoryContent( + content=chunk, + mime_type=MemoryMimeType.TEXT, + metadata={"source": source, "chunk_index": i}, + ) + ) + total_chunks += len(chunks) + except Exception as e: + print(f"Error indexing {source}: {str(e)}") + return total_chunks + +@weave.op +async def run_rag_agent(model_name="gpt-4o"): + rag_memory = ChromaDBVectorMemory( + config=PersistentChromaDBVectorMemoryConfig( + collection_name="autogen_docs", + persistence_path=os.path.join(str(Path.home()), ".chromadb_autogen_weave"), + k=3, + score_threshold=0.4, + ) + ) + # await rag_memory.clear() # 必要に応じて既存のメモリをクリアするにはコメント解除してください + + async def index_autogen_docs() -> None: + indexer = SimpleDocumentIndexer(memory=rag_memory) + sources = [ + "https://raw.githubusercontent.com/microsoft/autogen/main/README.md", + "https://microsoft.github.io/autogen/dev/user-guide/agentchat-user-guide/tutorial/agents.html", + ] + chunks: int = await indexer.index_documents(sources) + print(f"{len(sources)} 個の AutoGen ドキュメントから {chunks} 個のチャンクをインデックスしました") + + # コレクションが空の場合、または再インデックスしたい場合にのみインデックスを作成します + # デモ目的では、毎回インデックスを作成するか、既にインデックスされているかを確認します + # この例では、各実行ごとにインデックスを試みます。チェックの追加を検討してください + await index_autogen_docs() + + model_client = OpenAIChatCompletionClient(model=model_name) + rag_assistant = AssistantAgent( + name="rag_assistant", + model_client=model_client, + memory=[rag_memory], + ) + + # コンソールへの出力をストリーミングする場合: + # stream = rag_assistant.run_stream(task="AgentChat とは何ですか?") + # await Console(stream) + result = await rag_assistant.run(task="AgentChat とは何ですか?") + print(result) + + await rag_memory.close() + await model_client.close() + +asyncio.run(run_rag_agent()) +``` + +[![autogen-rag.png](/weave/guides/integrations/imgs/autogen/autogen-rag.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?view=traces_default&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196ee1b-bac5-7b80-8be7-6e6ea7d1d63d%3FhideTraceTree%3D0) + +## エージェントランタイムのトレース + +Weave は、`SingleThreadedAgentRuntime` のような AutoGen のエージェントランタイム内の操作をトレースできます。ランタイム実行関数の周囲で `@weave.op()` を使用すると、関連するトレースをグループ化できます。 + +```python lines {50} +from dataclasses import dataclass +from typing import Callable + +from autogen_core import ( + DefaultTopicId, + MessageContext, + RoutedAgent, + default_subscription, + message_handler, + AgentId, + SingleThreadedAgentRuntime +) + +@dataclass +class Message: + content: int + +@default_subscription +class Modifier(RoutedAgent): + def __init__(self, modify_val: Callable[[int], int]) -> None: + super().__init__("A modifier agent.") + self._modify_val = modify_val + + @message_handler + async def handle_message(self, message: Message, ctx: MessageContext) -> None: + val = self._modify_val(message.content) + print(f"{'-'*80}\\nModifier:\\nModified {message.content} to {val}") + await self.publish_message(Message(content=val), DefaultTopicId()) + +@default_subscription +class Checker(RoutedAgent): + def __init__(self, run_until: Callable[[int], bool]) -> None: + super().__init__("A checker agent.") + self._run_until = run_until + + @message_handler + async def handle_message(self, message: Message, ctx: MessageContext) -> None: + if not self._run_until(message.content): + print(f"{'-'*80}\\nChecker:\\n{message.content} passed the check, continue.") + await self.publish_message( + Message(content=message.content), DefaultTopicId() + ) + else: + print(f"{'-'*80}\\nChecker:\\n{message.content} failed the check, stopping.") + +# エージェントランタイムの呼び出し全体を単一のトレースの下で +# まとめてトレースしたいため、ここに weave op を追加します。 +# これは完全にオプションですが、使用することを強くお勧めします。 + +@weave.op +async def run_agent_runtime() -> None: + runtime = SingleThreadedAgentRuntime() + + await Modifier.register( + runtime, + "modifier", + lambda: Modifier(modify_val=lambda x: x - 1), + ) + + await Checker.register( + runtime, + "checker", + lambda: Checker(run_until=lambda x: x <= 1), + ) + + runtime.start() + await runtime.send_message(Message(content=3), AgentId("checker", "default")) + await runtime.stop_when_idle() + +asyncio.run(run_agent_runtime()) + +``` + +[![autogen-runtime.png](/weave/guides/integrations/imgs/autogen/autogen-runtime.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?view=traces_default&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196ee1d-6246-7f11-afb1-3a1874f79023%3FhideTraceTree%3D0) + +## ワークフローのトレース (シーケンシャル) + +エージェントのインタラクションのシーケンスを定義する複雑なエージェントワークフローをトレースできます。`@weave.op()` を使用して、ワークフロー全体のハイレベルなトレースを提供できます。 + +```python lines {108} + +from autogen_core import TopicId, type_subscription +from autogen_core.models import ChatCompletionClient, SystemMessage, UserMessage + +@dataclass +class WorkflowMessage: + content: str + +concept_extractor_topic_type = "ConceptExtractorAgent" +writer_topic_type = "WriterAgent" +format_proof_topic_type = "FormatProofAgent" +user_topic_type = "User" + +@type_subscription(topic_type=concept_extractor_topic_type) +class ConceptExtractorAgent(RoutedAgent): + def __init__(self, model_client: ChatCompletionClient) -> None: + super().__init__("A concept extractor agent.") + self._system_message = SystemMessage( + content=( + "あなたはマーケティングアナリストです。製品の説明が与えられたら、以下を特定してください:\n" + "- 主な機能\n" + "- ターゲットオーディエンス\n" + "- 独自のセールスポイント (USP)\n\n" + ) + ) + self._model_client = model_client + + @message_handler + async def handle_user_description(self, message: WorkflowMessage, ctx: MessageContext) -> None: + prompt = f"製品説明: {message.content}" + llm_result = await self._model_client.create( + messages=[self._system_message, UserMessage(content=prompt, source=self.id.key)], + cancellation_token=ctx.cancellation_token, + ) + response = llm_result.content + assert isinstance(response, str) + print(f"{'-'*80}\\n{self.id.type}:\\n{response}") + await self.publish_message( + WorkflowMessage(response), topic_id=TopicId(writer_topic_type, source=self.id.key) + ) + +@type_subscription(topic_type=writer_topic_type) +class WriterAgent(RoutedAgent): + def __init__(self, model_client: ChatCompletionClient) -> None: + super().__init__("A writer agent.") + self._system_message = SystemMessage( + content=( + "あなたはマーケティングコピーライターです。機能、対象読者、USP を説明するテキストのブロックが与えられたら、" + "これらのポイントを強調する魅力的なマーケティングコピー(ニュースレターのセクションのようなもの)を作成してください。" + "出力は短く(150語程度)し、コピーだけを単一のテキストブロックとして出力してください。" + ) + ) + self._model_client = model_client + + @message_handler + async def handle_intermediate_text(self, message: WorkflowMessage, ctx: MessageContext) -> None: + prompt = f"以下は製品に関する情報です:\\n\\n{message.content}" + llm_result = await self._model_client.create( + messages=[self._system_message, UserMessage(content=prompt, source=self.id.key)], + cancellation_token=ctx.cancellation_token, + ) + response = llm_result.content + assert isinstance(response, str) + print(f"{'-'*80}\\n{self.id.type}:\\n{response}") + await self.publish_message( + WorkflowMessage(response), topic_id=TopicId(format_proof_topic_type, source=self.id.key) + ) + +@type_subscription(topic_type=format_proof_topic_type) +class FormatProofAgent(RoutedAgent): + def __init__(self, model_client: ChatCompletionClient) -> None: + super().__init__("A format & proof agent.") + self._system_message = SystemMessage( + content=( + "あなたは編集者です。下書きコピーが与えられたら、文法を修正し、明快さを向上させ、一貫したトーンを確保し、" + "フォーマットを整えて洗練されたものにしてください。最終的な改善されたコピーを単一のテキストブロックとして出力してください。" + ) + ) + self._model_client = model_client + + @message_handler + async def handle_intermediate_text(self, message: WorkflowMessage, ctx: MessageContext) -> None: + prompt = f"下書きコピー:\\n{message.content}." + llm_result = await self._model_client.create( + messages=[self._system_message, UserMessage(content=prompt, source=self.id.key)], + cancellation_token=ctx.cancellation_token, + ) + response = llm_result.content + assert isinstance(response, str) + print(f"{'-'*80}\\n{self.id.type}:\\n{response}") + await self.publish_message( + WorkflowMessage(response), topic_id=TopicId(user_topic_type, source=self.id.key) + ) + +@type_subscription(topic_type=user_topic_type) +class UserAgent(RoutedAgent): + def __init__(self) -> None: + super().__init__("最終的なコピーをユーザーに出力するユーザーエージェント。") + + @message_handler + async def handle_final_copy(self, message: WorkflowMessage, ctx: MessageContext) -> None: + print(f"\\n{'-'*80}\\n{self.id.type} が最終コピーを受信しました:\\n{message.content}") + +# エージェントワークフロー全体を単一のトレースの下で +# まとめてトレースしたいため、ここに weave op を追加します。 +# これは完全にオプションですが、使用することを強くお勧めします。 + +@weave.op(call_display_name="Sequential Agent Workflow") +async def run_agent_workflow(model_name="gpt-4o"): + model_client = OpenAIChatCompletionClient(model=model_name) + runtime = SingleThreadedAgentRuntime() + + await ConceptExtractorAgent.register(runtime, type=concept_extractor_topic_type, factory=lambda: ConceptExtractorAgent(model_client=model_client)) + await WriterAgent.register(runtime, type=writer_topic_type, factory=lambda: WriterAgent(model_client=model_client)) + await FormatProofAgent.register(runtime, type=format_proof_topic_type, factory=lambda: FormatProofAgent(model_client=model_client)) + await UserAgent.register(runtime, type=user_topic_type, factory=lambda: UserAgent()) + + runtime.start() + await runtime.publish_message( + WorkflowMessage( + content="飲料を24時間冷たく保つ、環境に優しいステンレス製ウォーターボトル" + ), + topic_id=TopicId(concept_extractor_topic_type, source="default"), + ) + await runtime.stop_when_idle() + await model_client.close() + +asyncio.run(run_agent_workflow()) + +``` + +[![autogen-sequential-workflow.png](/weave/guides/integrations/imgs/autogen/autogen-sequential-workflow.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?view=traces_default&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196ee1f-dd53-73f2-9119-2a44da92c5ae%3FhideTraceTree%3D0) + +## コードエクゼキューターのトレース + + +**Docker が必要です** +この例では Docker を使用したコード実行が含まれており、すべての環境(Colab など)で直接動作しない場合があります。これを試す場合は、Docker がローカルで実行されていることを確認してください。 + + +Weave は、AutoGen エージェントによるコードの生成と実行をトレースします。 + +```python lines {69} + +import tempfile +from autogen_core import DefaultTopicId +from autogen_core.code_executor import CodeBlock, CodeExecutor +from autogen_core.models import ( + AssistantMessage, + ChatCompletionClient, + LLMMessage, + SystemMessage, + UserMessage, +) +from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor + + +@dataclass +class CodeGenMessage: + content: str + +@default_subscription +class Assistant(RoutedAgent): + def __init__(self, model_client: ChatCompletionClient) -> None: + super().__init__("An assistant agent.") + self._model_client = model_client + self._chat_history: List[LLMMessage] = [ + SystemMessage( + content="""PythonスクリプトをMarkdownブロックで書いてください。それは実行されます。 +図は常に現在のディレクトリのファイルに保存してください。plt.show() は使用しないでください。このタスクを完了するために必要なすべてのコードは、単一のレスポンスに含まれている必要があります。""", + ) + ] + + @message_handler + async def handle_message(self, message: CodeGenMessage, ctx: MessageContext) -> None: + self._chat_history.append(UserMessage(content=message.content, source="user")) + result = await self._model_client.create(self._chat_history) + print(f"\\n{'-'*80}\\nAssistant:\\n{result.content}") + self._chat_history.append(AssistantMessage(content=result.content, source="assistant")) + await self.publish_message(CodeGenMessage(content=result.content), DefaultTopicId()) + +def extract_markdown_code_blocks(markdown_text: str) -> List[CodeBlock]: + pattern = re.compile(r"```(?:\\s*([\\w\\+\\-]+))?\\n([\\s\\S]*?)```") + matches = pattern.findall(markdown_text) + code_blocks: List[CodeBlock] = [] + for match in matches: + language = match[0].strip() if match[0] else "" + code_content = match[1] + code_blocks.append(CodeBlock(code=code_content, language=language)) + return code_blocks + +@default_subscription +class Executor(RoutedAgent): + def __init__(self, code_executor: CodeExecutor) -> None: + super().__init__("An executor agent.") + self._code_executor = code_executor + + @message_handler + async def handle_message(self, message: CodeGenMessage, ctx: MessageContext) -> None: + code_blocks = extract_markdown_code_blocks(message.content) + if code_blocks: + result = await self._code_executor.execute_code_blocks( + code_blocks, cancellation_token=ctx.cancellation_token + ) + print(f"\\n{'-'*80}\\nExecutor:\\n{result.output}") + await self.publish_message(CodeGenMessage(content=result.output), DefaultTopicId()) + +# コード生成ワークフロー全体を単一のトレースの下で +# まとめてトレースしたいため、ここに weave op を追加します。 +# これは完全にオプションですが、使用することを強くお勧めします。 + +@weave.op(call_display_name="CodeGen Agent Workflow") +async def run_codegen(model_name="gpt-4o"): # モデルを更新 + work_dir = tempfile.mkdtemp() + runtime = SingleThreadedAgentRuntime() + + # この例では Docker が実行されていることを確認してください + try: + async with DockerCommandLineCodeExecutor(work_dir=work_dir) as executor: + model_client = OpenAIChatCompletionClient(model=model_name) + await Assistant.register(runtime, "assistant", lambda: Assistant(model_client=model_client)) + await Executor.register(runtime, "executor", lambda: Executor(executor)) + + runtime.start() + await runtime.publish_message( + CodeGenMessage(content="2024-01-01からのNVDA対TSLAの株価収益率(YTD)のプロットを作成してください。"), + DefaultTopicId(), + ) + await runtime.stop_when_idle() + await model_client.close() + except Exception as e: + print(f"Docker コードエクゼキューターの例を実行できませんでした: {e}") + print("Docker がインストールされ、実行されていることを確認してください。") + finally: + import shutil + shutil.rmtree(work_dir) + + +asyncio.run(run_codegen()) +``` + +[![autogen-codegen.png](/weave/guides/integrations/imgs/autogen/autogen-codegen.png)](https://wandb.ai/parambharat/autogen-demo/weave/traces?view=traces_default&peekPath=%2Fparambharat%2Fautogen-demo%2Fcalls%2F0196f173-21c2-7540-9dc7-fbab0b94ce0e%3FhideTraceTree%3D0) + +## 詳細情報 + +- **Weave**: + - [トレースガイド](/weave/guides/tracking/tracing) + - [Op デコレータ](/weave/guides/tracking/ops) +- **AutoGen**: + - [公式ドキュメント](https://microsoft.github.io/autogen/stable//index.html) + - [AutoGen GitHub](https://github.com/microsoft/autogen) + +このガイドは、Weave と AutoGen の統合を開始するための出発点となります。Weave UI を探索して、エージェントのインタラクション、モデルの呼び出し、ツールの使用状況の詳細なトレースを確認してください。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/azure.mdx b/ja/weave/guides/integrations/azure.mdx new file mode 100644 index 0000000000..114f88c16b --- /dev/null +++ b/ja/weave/guides/integrations/azure.mdx @@ -0,0 +1,39 @@ +--- +title: Microsoft Azure +description: Weave を Microsoft Azure OpenAI サービスと統合する +--- + +Weights & Biases (W&B) Weave は Microsoft Azure OpenAI サービスと統合されており、チームが Azure AI アプリケーションを最適化するのを支援します。W&B を使用することで、以下のことが可能になります。 + + +最新のチュートリアルについては、[Weights & Biases on Microsoft Azure](https://wandb.ai/site/partners/azure) をご覧ください。 + + +## はじめに + +Azure で Weave の使用を開始するには、トラッキングしたい関数を `weave.op` でデコレートするだけです。 + +```python lines +@weave.op() +def call_azure_chat(model_id: str, messages: list, max_tokens: int = 1000, temperature: float = 0.5): + # Azure OpenAI クライアントを使用してチャット補完を作成 + response = client.chat.completions.create( + model=model_id, + messages=messages, + max_tokens=max_tokens, + temperature=temperature + ) + return {"status": "success", "response": response.choices[0].message.content} +``` + +## 詳細情報 + +Weave を使用した高度な Azure のトピックについては、以下のリソースを参照してください。 + +### Azure AI Model Inference API を Weave で使用する + +[こちらのガイド](https://wandb.ai/byyoung3/ML-NEWS2/reports/A-guide-to-using-the-Azure-AI-model-inference-API--Vmlldzo4OTY1MjEy#tutorial:-implementing-azure-ai-model-inference-api-with-w&b-weave-)では、Azure AI Model Inference API を Weave と併用して、Azure モデルに関する洞察を得る方法を学ぶことができます。 + +### Azure OpenAI モデルを Weave でトレースする + +[こちらのガイド](https://wandb.ai/a-sh0ts/azure-weave-cookbook/reports/How-to-use-Azure-OpenAI-and-Azure-AI-Studio-with-W-B-Weave--Vmlldzo4MTI0NDgy)では、Weave を使用して Azure OpenAI モデルをトレースする方法を学ぶことができます。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/bedrock.mdx b/ja/weave/guides/integrations/bedrock.mdx new file mode 100644 index 0000000000..3f69a5dadc --- /dev/null +++ b/ja/weave/guides/integrations/bedrock.mdx @@ -0,0 +1,163 @@ +--- +title: Bedrock +description: AWS の統合 API を通じて、Amazon Bedrock の LLM コールを Weave で追跡・監視します。基盤モデルとのインタラクション、Converse + API の使用状況、およびマルチプロバイダーの モデル デプロイメント をキャプチャし、包括的なオブザーバビリティを実現します。 +--- + +Weave は、主要な AI 企業の基盤モデルを統合 API を通じて提供する AWS の完全マネージド型サービスである Amazon Bedrock を介して行われた LLM 呼び出しを、自動的に追跡しログを記録します。 + +Amazon Bedrock から Weave に LLM 呼び出しをログ記録する方法は複数あります。`weave.op` を使用して Bedrock モデルへの呼び出しを追跡するための再利用可能なオペレーションを作成することも、Anthropic モデルを使用している場合は、Weave の Anthropic との組み込みインテグレーションを使用することもできます。 + + +最新のチュートリアルについては、 [Weights & Biases on Amazon Web Services](https://wandb.ai/site/partners/aws/) をご覧ください。 + + +## Traces + +Weave は Bedrock API 呼び出しの トレース を自動的にキャプチャします。Weave を初期化し、クライアントをパッチした後は、通常通り Bedrock クライアントを使用できます。 + +```python lines +import weave +import boto3 +import json +from weave.integrations.bedrock.bedrock_sdk import patch_client + +weave.init("my_bedrock_app") + +# Bedrock クライアントの作成とパッチ適用 +client = boto3.client("bedrock-runtime") +patch_client(client) + +# 通常通りクライアントを使用 +response = client.invoke_model( + modelId="anthropic.claude-3-5-sonnet-20240620-v1:0", + body=json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": 100, + "messages": [ + {"role": "user", "content": "What is the capital of France?"} + ] + }), + contentType='application/json', + accept='application/json' +) +response_dict = json.loads(response.get('body').read()) +print(response_dict["content"][0]["text"]) +``` + +または `converse` API を使用する場合: + +```python lines +messages = [{"role": "user", "content": [{"text": "What is the capital of France?"}]}] + +response = client.converse( + modelId="anthropic.claude-3-5-sonnet-20240620-v1:0", + system=[{"text": "You are a helpful AI assistant."}], + messages=messages, + inferenceConfig={"maxTokens": 100}, +) +print(response["output"]["message"]["content"][0]["text"]) + +``` + +## 独自の op でラッピングする + +`@weave.op()` デコレータを使用して、再利用可能なオペレーションを作成できます。以下は、 `invoke_model` と `converse` 両方の API を示す例です。 + +```python lines +@weave.op +def call_model_invoke( + model_id: str, + prompt: str, + max_tokens: int = 100, + temperature: float = 0.7 +) -> dict: + body = json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": max_tokens, + "temperature": temperature, + "messages": [ + {"role": "user", "content": prompt} + ] + }) + + # クライアントの呼び出し + response = client.invoke_model( + modelId=model_id, + body=body, + contentType='application/json', + accept='application/json' + ) + return json.loads(response.get('body').read()) + +@weave.op +def call_model_converse( + model_id: str, + messages: str, + system_message: str, + max_tokens: int = 100, +) -> dict: + # converse API の呼び出し + response = client.converse( + modelId=model_id, + system=[{"text": system_message}], + messages=messages, + inferenceConfig={"maxTokens": max_tokens}, + ) + return response +``` + + +![](/weave/guides/integrations/imgs/bedrock_converse.png) + + +## 実験を容易にするために `Models` を作成する + +Weave Model を作成することで、 実験管理 をより適切に整理し、 パラメータ をキャプチャできます。以下は `converse` API を使用した例です。 + +```python lines +class BedrockLLM(weave.Model): + model_id: str + max_tokens: int = 100 + system_message: str = "You are a helpful AI assistant." + + @weave.op + def predict(self, prompt: str) -> str: + # Bedrock の converse API を使用して応答を生成 + + messages = [{ + "role": "user", + "content": [{"text": prompt}] + }] + + response = client.converse( + modelId=self.model_id, + system=[{"text": self.system_message}], + messages=messages, + inferenceConfig={"maxTokens": self.max_tokens}, + ) + return response["output"]["message"]["content"][0]["text"] + +# モデルの作成と使用 +model = BedrockLLM( + model_id="anthropic.claude-3-5-sonnet-20240620-v1:0", + max_tokens=100, + system_message="You are an expert software engineer that knows a lot of programming. You prefer short answers." +) +result = model.predict("What is the best way to handle errors in Python?") +print(result) +``` + +このアプローチにより、 実験 の バージョン 管理が可能になり、Bedrock ベースの アプリケーション のさまざまな 設定 を簡単に追跡できるようになります。 + +## 詳細情報 + +Weave で Amazon Bedrock を使用する方法についてさらに詳しく知る + +### Weave Playground で Bedrock を試す + +セットアップなしで Weave UI 内で Amazon Bedrock モデルを試してみたいですか? [LLM Playground](../tools/playground) をお試しください。 + +### Reports: Weave を使用した Bedrock 上の LLM によるテキスト要約の比較 + +[Compare LLMs on Bedrock for text summarization with Weave](https://wandb.ai/byyoung3/ML_NEWS3/reports/Compare-LLMs-on-Amazon-Bedrock-for-text-summarization-with-W-B-Weave--VmlldzoxMDI1MTIzNw) レポート では、Bedrock と Weave を組み合わせて、要約タスクの LLM を評価および比較する方法を、コードサンプルを含めて説明しています。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/cerebras.mdx b/ja/weave/guides/integrations/cerebras.mdx new file mode 100644 index 0000000000..0bf82aa586 --- /dev/null +++ b/ja/weave/guides/integrations/cerebras.mdx @@ -0,0 +1,109 @@ +--- +title: Cerebras +description: Weave を使用して、Cerebras クラウド SDK 経由で行われた LLM 呼び出しをトレースおよび ログ 保存します +--- + +Weave は、[Cerebras Cloud SDK](https://inference-docs.cerebras.ai/introduction) を介して行われる LLM コールを自動的に追跡し、ログを記録します。 + +## Traces + +LLM コールの追跡は、デバッグやパフォーマンス監視において非常に重要です。Weave は Cerebras Cloud SDK の トレース を自動的にキャプチャすることで、これをサポートします。 + +Cerebras で Weave を使用する例を以下に示します。 + +```python lines +import os +import weave +from cerebras.cloud.sdk import Cerebras + +# Weave プロジェクトを初期化します +weave.init("cerebras_speedster") + +# 通常通り Cerebras SDK を使用します +api_key = os.environ["CEREBRAS_API_KEY"] +model = "llama3.1-8b" # Cerebras モデル + +client = Cerebras(api_key=api_key) + +response = client.chat.completions.create( + model=model, + messages=[{"role": "user", "content": "What's the fastest land animal?"}], +) + +print(response.choices[0].message.content) +``` + +これで Weave は、Cerebras SDK を通じて行われるすべての LLM コールを追跡し、ログを記録します。トークン使用量やレスポンスタイムなどの詳細を含む トレース は、Weave のウェブインターフェースで確認できます。 + +[![cerebras_calls.png](/weave/guides/integrations/imgs/cerebras_calls.png)](https://wandb.ai/capecape/cerebras_speedster/weave/traces) + +## 独自の ops によるラッピング + +Weave の ops は、コード を自動的に バージョン管理 し、入力と出力をキャプチャすることで、実験 の 再現性 と追跡可能性を向上させる強力な手段を提供します。Cerebras SDK で Weave ops を活用する方法の例を以下に示します。 + +```python lines +import os +import weave +from cerebras.cloud.sdk import Cerebras + +# Weave プロジェクトを初期化します +weave.init("cerebras_speedster") + +client = Cerebras(api_key=os.environ["CEREBRAS_API_KEY"]) + +# Weave はこの関数の入力、出力、およびコードを追跡します +@weave.op +def animal_speedster(animal: str, model: str) -> str: + "動物がどれくらいの速さで走れるかを調べます" + + response = client.chat.completions.create( + model=model, + messages=[{"role": "user", "content": f"How fast can a {animal} run?"}], + ) + return response.choices[0].message.content + +animal_speedster("cheetah", "llama3.1-8b") +animal_speedster("ostrich", "llama3.1-8b") +animal_speedster("human", "llama3.1-8b") +``` + +## 実験を容易にするための `Model` の作成 + +Weave の [Model](/weave/guides/core-types/models) クラスは、アプリケーションの異なるイテレーションの整理や比較に役立ちます。これは、Cerebras モデル を使用した 実験 において特に有用です。以下に例を示します。 + +```python lines +import os +import weave +from cerebras.cloud.sdk import Cerebras + +# Weave プロジェクトを初期化します +weave.init("cerebras_speedster") + +client = Cerebras(api_key=os.environ["CEREBRAS_API_KEY"]) + +class AnimalSpeedModel(weave.Model): + model: str + temperature: float + + @weave.op + def predict(self, animal: str) -> str: + "動物の最高速度を予測します" + + response = client.chat.completions.create( + model=self.model, + messages=[{"role": "user", "content": f"What's the top speed of a {animal}?"}], + temperature=self.temperature + ) + return response.choices[0].message.content + +speed_model = AnimalSpeedModel( + model="llama3.1-8b", + temperature=0.7 +) +result = speed_model.predict(animal="cheetah") +print(result) +``` + +このセットアップにより、Cerebras を活用した推論をすべて追跡しながら、異なる モデル や パラメータ を簡単に試すことができます。 + +[![cerebras_model.png](/weave/guides/integrations/imgs/cerebras_model.png)](https://wandb.ai/capecape/cerebras_speedster/weave/traces) \ No newline at end of file diff --git a/ja/weave/guides/integrations/cohere.mdx b/ja/weave/guides/integrations/cohere.mdx new file mode 100644 index 0000000000..9a82612db0 --- /dev/null +++ b/ja/weave/guides/integrations/cohere.mdx @@ -0,0 +1,112 @@ +--- +title: Cohere +description: Cohere Python ライブラリを使用して行われた LLM コールを、Weave を使って自動的に追跡および ログ 記録します。 +--- + + + Open In Colab + + +Weave は、 `weave.init()` が呼び出された後、 [Cohere Python library](https://github.com/cohere-ai/cohere-python) を介して行われた LLM 呼び出しを自動的に追跡し、ログを記録します。 + +## Traces + +開発中および Production 環境の両方において、 LLM application の トレース を中央データベースに保存することは重要です。これらの トレース はデバッグに使用されるだけでなく、 application の改善に役立つ Dataset としても活用されます。 + +Weave は [cohere-python](https://github.com/cohere-ai/cohere-python) の トレース を自動的にキャプチャします。ライブラリを通常通り使用し、まず `weave.init()` を呼び出すことから始めてください。 + +```python lines {8} +import cohere +import os +import weave + +# Cohere ライブラリを通常通り使用します +co = cohere.Client(api_key=os.environ["COHERE_API_KEY"]) + +weave.init("cohere_project") + +response = co.chat( + message="How is the weather in Boston?", + # 回答する前にウェブ検索を実行します。独自のカスタムコネクタを使用することも可能です。 + connectors=[{"id": "web-search"}], +) +print(response.text) +``` + +`weave.init()` を呼び出す際に W&B の Teams を指定しない場合は、デフォルトの Entities が使用されます。デフォルトの Entities を確認または更新するには、 W&B Models ドキュメントの [User Settings](https://docs.wandb.ai/platform/app/settings-page/user-settings/#default-team) を参照してください。 + +Cohere モデルの強力な機能の一つに、 [connectors](https://docs.cohere.com/docs/overview-rag-connectors#using-connectors-to-create-grounded-generations) の使用があります。これにより、エンドポイント側で他の API に対してリクエストを行うことが可能になります。レスポンスには、生成されたテキストと共に、コネクタから返されたドキュメントにリンクする引用要素が含まれます。 + +[![cohere_trace.png](/weave/guides/integrations/imgs/cohere_trace.png)](https://wandb.ai/capecape/cohere_dev/weave/calls) + + +Weave は Cohere の `Client.chat` 、 `AsyncClient.chat` 、 `Client.chat_stream` 、および `AsyncClient.chat_stream` メソッドをパッチすることで、 LLM 呼び出しを追跡できるようにしています。 + + +## 独自の ops でラップする + +Weave の ops は、実験中の code を自動的に Versioning することで結果の *再現性* を高め、その入力と出力をキャプチャします。 Cohere の chat メソッドを呼び出す関数を作成し、 [`@weave.op()`](/weave/guides/tracking/ops) デコレータを付与するだけで、 Weave が入力と出力を追跡します。以下に例を示します。 + +```python lines {9} +import cohere +import os +import weave + +co = cohere.Client(api_key=os.environ["COHERE_API_KEY"]) + +weave.init("cohere_project") + +@weave.op() +def weather(location: str, model: str) -> str: + response = co.chat( + model=model, + message=f"How is the weather in {location}?", + # 回答する前にウェブ検索を実行します。独自のカスタムコネクタを使用することも可能です。 + connectors=[{"id": "web-search"}], + ) + return response.text + +print(weather("Boston", "command")) +``` + +[![cohere_ops.png](/weave/guides/integrations/imgs/cohere_ops.png)](https://wandb.ai/capecape/cohere_dev/weave/calls) + +## 実験を容易にするために `Models` を作成する + +多くの可動パーツがある場合、実験を整理するのは困難です。 [`Models`](/weave/guides/core-types/models) クラスを使用することで、システムプロンプトや使用しているモデルなど、アプリの実験的な詳細をキャプチャして整理できます。これにより、アプリの異なるイテレーションの整理や比較が容易になります。 + +code の Versioning や入出力のキャプチャに加えて、 [`Models`](/weave/guides/core-types/models) は application の behavior を制御する構造化された パラメータ をキャプチャし、どの パラメータ が最適であったかを簡単に見つけられるようにします。また、 Weave Models は `serve` や [`Evaluation`](/weave/guides/core-types/evaluations) と併用することもできます。 + +以下の例では、 `model` と `temperature` を使って実験を行うことができます。これらを変更するたびに、 `WeatherModel` の新しい *バージョン* が作成されます。 + +```python lines +import weave +import cohere +import os + +weave.init('weather-cohere') + +class WeatherModel(weave.Model): + model: str + temperature: float + + @weave.op() + def predict(self, location: str) -> str: + co = cohere.Client(api_key=os.environ["COHERE_API_KEY"]) + response = co.chat( + message=f"How is the weather in {location}?", + model=self.model, + temperature=self.temperature, + connectors=[{"id": "web-search"}] + ) + return response.text + +weather_model = WeatherModel( + model="command", + temperature=0.7 +) +result = weather_model.predict("Boston") +print(result) +``` + +[![cohere_model.png](/weave/guides/integrations/imgs/cohere_model.png)](https://wandb.ai/capecape/cohere_dev/weave/models) \ No newline at end of file diff --git a/ja/weave/guides/integrations/crewai.mdx b/ja/weave/guides/integrations/crewai.mdx new file mode 100644 index 0000000000..7bba53da13 --- /dev/null +++ b/ja/weave/guides/integrations/crewai.mdx @@ -0,0 +1,270 @@ +--- +title: CrewAI +description: マルチエージェント アプリケーションのモニタリングとトレースのために、CrewAI を Weave と統合する +--- + + + Open In Colab + + +CrewAI は、LangChain や他のエージェントフレームワークに全く依存せず、ゼロから構築された軽量で極めて高速な Python フレームワークです。CrewAI は、ハイレベルなシンプルさ ([Crews](https://docs.crewai.com/guides/crews/first-crew)) と精密なローレベルの制御 ([Flows](https://docs.crewai.com/guides/flows/first-flow)) の両方を開発者に提供し、あらゆるシナリオに合わせた自律型 AI エージェントの作成に最適です。詳細は [こちらから CrewAI](https://docs.crewai.com/introduction) をご確認ください。 + +AI エージェントを扱う際、その相互作用のデバッグとモニタリングは非常に重要です。CrewAI アプリケーションは多くの場合、複数のエージェントが連携して動作するため、それらがどのようにコラボレーションし、通信しているかを理解することが不可欠です。Weave は、CrewAI アプリケーションの Traces を自動的にキャプチャすることでこのプロセスを簡素化し、エージェントのパフォーマンスと相互作用をモニタリングおよび分析できるようにします。 + +このインテグレーションは Crews と Flows の両方をサポートしています。 + +## Crew を使ってみる + +この例を実行するには、CrewAI ([詳細](https://docs.crewai.com/installation)) と weave をインストールする必要があります。 + +``` +pip install crewai weave +``` + +次に、CrewAI Crew を作成し、Weave を使用して実行をトレースします。開始するには、スクリプトの冒頭で `weave.init()` を呼び出すだけです。`weave.init()` の引数は、Traces がログ記録される Projects 名です。 + +```python lines {5} +import weave +from crewai import Agent, Task, Crew, LLM, Process + +# プロジェクト名を指定して Weave を初期化 +weave.init(project_name="crewai_demo") + +# 決定論的な出力を確実にするため、temperature を 0 に設定して LLM を作成 +llm = LLM(model="gpt-4o-mini", temperature=0) + +# エージェントの作成 +researcher = Agent( + role='Research Analyst', + goal='Find and analyze the best investment opportunities', + backstory='Expert in financial analysis and market research', + llm=llm, + verbose=True, + allow_delegation=False, +) + +writer = Agent( + role='Report Writer', + goal='Write clear and concise investment reports', + backstory='Experienced in creating detailed financial reports', + llm=llm, + verbose=True, + allow_delegation=False, +) + +# タスクの作成 +research_task = Task( + description='Deep research on the {topic}', + expected_output='Comprehensive market data including key players, market size, and growth trends.', + agent=researcher +) + +writing_task = Task( + description='Write a detailed report based on the research', + expected_output='The report should be easy to read and understand. Use bullet points where applicable.', + agent=writer +) + +# Crew の作成 +crew = Crew( + agents=[researcher, writer], + tasks=[research_task, writing_task], + verbose=True, + process=Process.sequential, +) + +# Crew の実行 +result = crew.kickoff(inputs={"topic": "AI in material science"}) +print(result) +``` + +Weave は、エージェントの相互作用、タスクの実行、LLM の呼び出しなど、CrewAI ライブラリを通じて行われるすべての呼び出しを追跡し、ログを記録します。Weave のウェブインターフェースで Traces を確認できます。 + +[![crew_trace.png](/weave/guides/integrations/imgs/crewai/crew.png)](https://wandb.ai/ayut/crewai_demo/weave/traces?filter=%7B%22opVersionRefs%22%3A%5B%22weave%3A%2F%2F%2Fayut%2Fcrewai_demo%2Fop%2Fcrewai.Crew.kickoff%3A*%22%5D%7D&peekPath=%2Fayut%2Fcrewai_demo%2Fcalls%2F0195c7ac-bd52-7390-95a7-309370e9e058%3FhideTraceTree%3D0&cols=%7B%22wb_run_id%22%3Afalse%2C%22attributes.weave.client_version%22%3Afalse%2C%22attributes.weave.os_name%22%3Afalse%2C%22attributes.weave.os_release%22%3Afalse%2C%22attributes.weave.os_version%22%3Afalse%2C%22attributes.weave.source%22%3Afalse%2C%22attributes.weave.sys_version%22%3Afalse%7D) + + +CrewAI は、kickoff プロセスをより細かく制御するために、`kickoff()`、`kickoff_for_each()`、`kickoff_async()`、および `kickoff_for_each_async()` という複数のメソッドを提供しています。このインテグレーションは、これらすべてのメソッドからの Traces のログ記録をサポートしています。 + + +## ツールの追跡 + +CrewAI のツールは、Web 検索やデータ分析から、同僚間でのコラボレーションやタスクの委譲まで、エージェントにさまざまな機能を提供します。このインテグレーションでは、これらもトレースすることが可能です。 + +上記の例で生成されるレポートの品質を向上させるために、インターネットを検索して最も関連性の高い結果を返すツールへのアクセス権をエージェントに与えます。 + +まず、追加の依存関係をインストールしましょう。 + +``` +pip install 'crewai[tools]' +``` + +この例では、`SerperDevTool` を使用して、「Research Analyst」エージェントがインターネット上で関連情報を検索できるようにします。このツールと API の要件については、[こちら](https://docs.crewai.com/tools/serperdevtool)で詳しく学べます。 + +```python lines {12} +# .... 既存のインポート .... +from crewai_tools import SerperDevTool + +# エージェントにツールを提供 +researcher = Agent( + role='Research Analyst', + goal='Find and analyze the best investment opportunities', + backstory='Expert in financial analysis and market research', + llm=llm, + verbose=True, + allow_delegation=False, + tools=[SerperDevTool()], +) + +# .... 既存のコード .... +``` + +インターネットへのアクセス権を持つエージェントでこの Crew を実行すると、より高品質で関連性の高い結果が得られます。下の画像に示すように、ツールの使用状況は自動的にトレースされます。 + +[![crew_with_tool_trace.png](/weave/guides/integrations/imgs/crewai/crew_with_tool.png)](https://wandb.ai/ayut/crewai_demo/weave/traces?filter=%7B%22opVersionRefs%22%3A%5B%22weave%3A%2F%2F%2Fayut%2Fcrewai_demo%2Fop%2Fcrewai.Crew.kickoff%3A*%22%5D%7D&peekPath=%2Fayut%2Fcrewai_demo%2Fcalls%2F0195c7c7-0213-7f42-b130-caa93a79316c%3FdescendentCallId%3D0195c7c7-0a16-7f11-8cfd-9dedf1d03b3b&cols=%7B%22wb_run_id%22%3Afalse%2C%22attributes.weave.client_version%22%3Afalse%2C%22attributes.weave.os_name%22%3Afalse%2C%22attributes.weave.os_release%22%3Afalse%2C%22attributes.weave.os_version%22%3Afalse%2C%22attributes.weave.source%22%3Afalse%2C%22attributes.weave.sys_version%22%3Afalse%7D) + + +このインテグレーションは、[`crewAI-tools`](https://github.com/crewAIInc/crewAI-tools) リポジトリで利用可能なすべてのツールを自動的にパッチします。 + + +## Flow を使ってみる + +```python lines {3} +import weave +# プロジェクト名を指定して Weave を初期化 +weave.init("crewai_demo") + +from crewai.flow.flow import Flow, listen, router, start +from litellm import completion + + +class CustomerFeedbackFlow(Flow): + model = "gpt-4o-mini" + + @start() + def fetch_feedback(self): + print("Fetching customer feedback") + # 実際のシナリオでは、これは API 呼び出しに置き換えられる可能性があります。 + # この例では、顧客のフィードバックをシミュレートします。 + feedback = ( + "I had a terrible experience with the product. " + "It broke after one use and customer service was unhelpful." + ) + self.state["feedback"] = feedback + return feedback + + @router(fetch_feedback) + def analyze_feedback(self, feedback): + # 言語モデルを使用してセンチメントを分析 + prompt = ( + f"Analyze the sentiment of this customer feedback and " + "return only 'positive' or 'negative':\n\n" + f"Feedback: {feedback}" + ) + response = completion( + model=self.model, + messages=[{"role": "user", "content": prompt}], + ) + sentiment = response["choices"][0]["message"]["content"].strip().lower() + # レスポンスが曖昧な場合は、デフォルトで negative に設定 + if sentiment not in ["positive", "negative"]: + sentiment = "negative" + return sentiment + + @listen("positive") + def handle_positive_feedback(self): + # ポジティブなフィードバックに対する感謝のメッセージを生成 + prompt = "Generate a thank you message for a customer who provided positive feedback." + response = completion( + model=self.model, + messages=[{"role": "user", "content": prompt}], + ) + thank_you_message = response["choices"][0]["message"]["content"].strip() + self.state["response"] = thank_you_message + return thank_you_message + + @listen("negative") + def handle_negative_feedback(self): + # ネガティブなフィードバックに対する謝罪とサービス改善の約束のメッセージを生成 + prompt = ( + "Generate an apology message to a customer who provided negative feedback and offer assistance or a solution." + ) + response = completion( + model=self.model, + messages=[{"role": "user", "content": prompt}], + ) + apology_message = response["choices"][0]["message"]["content"].strip() + self.state["response"] = apology_message + return apology_message + +# Flow のインスタンス化と kickoff +flow = CustomerFeedbackFlow() +result = flow.kickoff() +print(result) +``` + +[![flow.png](/weave/guides/integrations/imgs/crewai/flow.png)](https://wandb.ai/ayut/crewai_demo/weave/traces?filter=%7B%22opVersionRefs%22%3A%5B%22weave%3A%2F%2F%2Fayut%2Fcrewai_demo%2Fop%2Fcrewai.Flow.kickoff%3A*%22%5D%7D&peekPath=%2Fayut%2Fcrewai_demo%2Fcalls%2F0195c7e3-7a63-7283-bef4-9e0eb2f0eab1&cols=%7B%22wb_run_id%22%3Afalse%2C%22attributes.weave.client_version%22%3Afalse%2C%22attributes.weave.os_name%22%3Afalse%2C%22attributes.weave.os_release%22%3Afalse%2C%22attributes.weave.os_version%22%3Afalse%2C%22attributes.weave.source%22%3Afalse%2C%22attributes.weave.sys_version%22%3Afalse%7D) + + +このインテグレーションは、`Flow.kickoff` エントリポイントと、利用可能なすべてのデコレータ(`@start`、`@listen`、`@router`、`@or_`、`@and_`)を自動的にパッチします。 + + + +## Crew Guardrail - 独自の ops を追跡する + +Task guardrails は、タスクの出力が次のタスクに渡される前に、それを検証および変換する方法を提供します。シンプルな Python 関数を使用して、エージェントの実行を動的に検証できます。 + +この関数を `@weave.op` でラップすると、入力、出力、およびアプリケーションロジックのキャプチャが開始され、エージェントを通じてデータがどのように検証されるかをデバッグできるようになります。また、実験に合わせてコードの自動バージョン管理も開始されるため、Git にコミットされていないアドホックな詳細もキャプチャできます。 + +research analyst と writer の例を見てみましょう。生成されたレポートの長さを検証する guardrail を追加します。 + +```python lines {4,36} +# .... 既存のインポートと Weave の初期化 .... + +# guardrail 関数を `@weave.op()` でデコレート +@weave.op(name="guardrail-validate_blog_content") +def validate_blog_content(result: TaskOutput) -> Tuple[bool, Any]: + # 生の文字列の結果を取得 + result = result.raw + + """ブログのコンテンツが要件を満たしているか検証します。""" + try: + # 単語数をチェック + word_count = len(result.split()) + + if word_count > 200: + return (False, { + "error": "Blog content exceeds 200 words", + "code": "WORD_COUNT_ERROR", + "context": {"word_count": word_count} + }) + + # ここに追加の検証ロジックを記述 + return (True, result.strip()) + except Exception as e: + return (False, { + "error": "Unexpected error during validation", + "code": "SYSTEM_ERROR" + }) + + +# .... 既存のエージェントと research analyst タスク .... + +writing_task = Task( + description='Write a detailed report based on the research under 200 words', + expected_output='The report should be easy to read and understand. Use bullet points where applicable.', + agent=writer, + guardrail=validate_blog_content, +) + +# .... Crew を実行するための既存のコード .... +``` + +guardrail 関数を `@weave.op` でデコレートするだけで、この関数への入力と出力、実行時間、内部で LLM が使用されている場合はトークン情報、コードのバージョンなどを追跡できるようになります。 + +[![guardrail.png](/weave/guides/integrations/imgs/crewai/crew_with_guardrail.png)](https://wandb.ai/ayut/crewai_demo/weave/traces?filter=%7B%22opVersionRefs%22%3A%5B%22weave%3A%2F%2F%2Fayut%2Fcrewai_demo%2Fop%2Fcrewai.Crew.kickoff%3A*%22%5D%7D&peekPath=%2Fayut%2Fcrewai_demo%2Fcalls%2F0195c838-38cb-71a2-8a15-651ecddf9d89%3FdescendentCallId%3D0195c838-8632-7173-846d-f230e7272c20&cols=%7B%22wb_run_id%22%3Afalse%2C%22attributes.weave.client_version%22%3Afalse%2C%22attributes.weave.os_name%22%3Afalse%2C%22attributes.weave.os_release%22%3Afalse%2C%22attributes.weave.os_version%22%3Afalse%2C%22attributes.weave.source%22%3Afalse%2C%22attributes.weave.sys_version%22%3Afalse%7D) + +## 結論 + +このインテグレーションの改善点について、ぜひフィードバックをお寄せください。問題が発生した場合は、[こちら](https://github.com/wandb/weave/issues/new/choose)から issue をオープンしてください。 + +CrewAI を使用した強力なマルチエージェントシステムの構築方法については、[多くのサンプル](https://github.com/crewAIInc/crewAI-examples)や[ドキュメント](https://docs.crewai.com/introduction)から詳細を学ぶことができます。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/dspy.mdx b/ja/weave/guides/integrations/dspy.mdx new file mode 100644 index 0000000000..9526c266ce --- /dev/null +++ b/ja/weave/guides/integrations/dspy.mdx @@ -0,0 +1,125 @@ +--- +title: DSPy +description: DSPy のモジュールや関数を使用して行われた呼び出しを、Weave を使って自動的に追跡し ログ に記録します +--- + + + Open In Colab + + +[DSPy](https://dspy-docs.vercel.app/) は、特に関数学習モデル(LM)をパイプライン内で 1 回以上使用する場合に、LM のプロンプトと重みをアルゴリズム的に最適化するための フレームワーク です。 Weave は、DSPy のモジュールや関数を使用して行われた呼び出しを自動的に追跡し、ログを記録します。 + +## トレース + +開発中および プロダクション の両方において、言語モデル アプリケーション の トレース を中央の場所に保存しておくことは重要です。これらの トレース はデバッグに役立つだけでなく、アプリケーション を改善するための データセット としても活用できます。 + +Weave は [DSPy](https://dspy-docs.vercel.app/) の トレース を自動的にキャプチャします。追跡を開始するには、`weave.init(project_name="")` を呼び出し、通常通り ライブラリ を使用してください。 + +```python lines +import os +import dspy +import weave + +os.environ["OPENAI_API_KEY"] = "" + +# Weaveを初期化 +weave.init(project_name="") + +lm = dspy.LM('openai/gpt-4o-mini') +dspy.configure(lm=lm) +classify = dspy.Predict("sentence -> sentiment") +classify(sentence="it's a charming and often affecting journey.") +``` + +[![dspy_trace.png](/weave/guides/integrations/imgs/dspy/dspy_trace.png)](https://wandb.ai/geekyrakshit/dspy-project/weave/calls) + +Weave は DSPy プログラム内のすべての LM 呼び出しを ログ に記録し、入力、出力、および メタデータ に関する詳細を提供します。 + +## 独自の DSPy モジュールとシグネチャの追跡 + +`Module` は、プロンプト技法を抽象化する DSPy プログラムの学習可能な パラメータ を持つ構成要素です。 `Signature` は、DSPy モジュールの入力/出力の 振る舞い を宣言的に指定するものです。 Weave は、DSPy プログラム内のすべての組み込みおよびカスタムの `Signature` と `Module` を自動的に追跡します。 + +```python lines +import os +import dspy +import weave + +os.environ["OPENAI_API_KEY"] = "" + +weave.init(project_name="") + +class Outline(dspy.Signature): + """トピックの徹底的な概要のアウトラインを作成する。""" + + topic: str = dspy.InputField() + title: str = dspy.OutputField() + sections: list[str] = dspy.OutputField() + section_subheadings: dict[str, list[str]] = dspy.OutputField( + desc="セクション見出しから小見出しへのマッピング" + ) + + +class DraftSection(dspy.Signature): + """記事のトップレベルセクションをドラフトする。""" + + topic: str = dspy.InputField() + section_heading: str = dspy.InputField() + section_subheadings: list[str] = dspy.InputField() + content: str = dspy.OutputField(desc="markdown形式のセクション内容") + + +class DraftArticle(dspy.Module): + def __init__(self): + self.build_outline = dspy.ChainOfThought(Outline) + self.draft_section = dspy.ChainOfThought(DraftSection) + + def forward(self, topic): + outline = self.build_outline(topic=topic) + sections = [] + for heading, subheadings in outline.section_subheadings.items(): + section, subheadings = ( + f"## {heading}", + [f"### {subheading}" for subheading in subheadings], + ) + section = self.draft_section( + topic=outline.title, + section_heading=section, + section_subheadings=subheadings, + ) + sections.append(section.content) + return dspy.Prediction(title=outline.title, sections=sections) + + +draft_article = DraftArticle() +article = draft_article(topic="World Cup 2002") +``` + +[![](/weave/guides/integrations/imgs/dspy/dspy_custom_module.png)](https://wandb.ai/geekyrakshit/dspy-project/weave/calls) + + +## DSPy プログラムの最適化と評価 + +Weave は DSPy オプティマイザー と評価(Evaluation)呼び出しの トレース も自動的にキャプチャします。これらを使用して、開発用 データセット に対する DSPy プログラムのパフォーマンスを向上させ、評価することができます。 + + +```python lines +import os +import dspy +import weave + +os.environ["OPENAI_API_KEY"] = "" +weave.init(project_name="") + +def accuracy_metric(answer, output, trace=None): + predicted_answer = output["answer"].lower() + return answer["answer"].lower() == predicted_answer + +module = dspy.ChainOfThought("question -> answer: str, explanation: str") +optimizer = dspy.BootstrapFewShot(metric=accuracy_metric) +# 最適化の実行 +optimized_module = optimizer.compile( + module, trainset=SAMPLE_EVAL_DATASET, valset=SAMPLE_EVAL_DATASET +) +``` + +[![](/weave/guides/integrations/imgs/dspy/dspy_optimizer.png)](https://wandb.ai/geekyrakshit/dspy-project/weave/calls) \ No newline at end of file diff --git a/ja/weave/guides/integrations/google.mdx b/ja/weave/guides/integrations/google.mdx new file mode 100644 index 0000000000..f81945cd0f --- /dev/null +++ b/ja/weave/guides/integrations/google.mdx @@ -0,0 +1,128 @@ +--- +title: Google +description: Weave を使用して Google GenAI モデル呼び出しのトレースと ログ 記録を行う +--- + + + Open In Colab + + + +セットアップ不要で Google AI モデルを Weave で試すには、 [LLM Playground](../tools/playground) を使用してください。 + + +このページでは、 W&B Weave を Google Vertex AI API および Google Gemini API と共に使用する方法について説明します。 + +Weave を使用して、 Google GenAI アプリケーションの 評価、 モニタリング、 およびイテレーションを行うことができます。 Weave は以下の Traces を自動的にキャプチャします。 + +1. [Google GenAI SDK](https://github.com/googleapis/python-genai): Python SDK、 Node.js SDK、 Go SDK、 および REST 経由でアクセス可能です。 +2. [Google Vertex AI API](https://cloud.google.com/vertex-ai/docs): Google の Gemini モデルや [様々なパートナーモデル](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models) へのアクセスを提供します。 + + +非推奨となった [Google AI Python SDK for the Gemini API](https://github.com/google-gemini/deprecated-generative-ai-python) もサポートしています。 ただし、 このサポートも同様に非推奨であり、 将来の バージョン で削除される予定ですのでご注意ください。 + + +## クイックスタート + +Weave は [Google GenAI SDK](https://github.com/googleapis/python-genai) の Traces を自動的にキャプチャします。 トラッキングを開始するには、 `weave.init(project_name="")` を呼び出し、 通常通り ライブラリ を使用してください。 + +```python lines +import os +from google import genai +import weave + +# プロジェクト名を指定して初期化 +weave.init(project_name="google-genai") + +google_client = genai.Client(api_key=os.getenv("GOOGLE_GENAI_KEY")) +response = google_client.models.generate_content( + model="gemini-2.0-flash", + contents="What's the capital of France?", +) +``` + +[![dspy_trace.png](/weave/guides/integrations/imgs/google-genai-trace.png)](https://wandb.ai/geekyrakshit/google-genai/weave/traces) + +Weave は [Vertex API](https://github.com/googleapis/python-aiplatform/tree/main/vertexai/generative_models) の Traces も自動的にキャプチャします。 トラッキングを開始するには、 `weave.init(project_name="")` を呼び出し、 通常通り ライブラリ を使用してください。 + +```python lines +import vertexai +import weave +from vertexai.generative_models import GenerativeModel + +# プロジェクト名を指定して初期化 +weave.init(project_name="vertex-ai-test") +vertexai.init(project="", location="") +model = GenerativeModel("gemini-1.5-flash-002") +response = model.generate_content( + "What's a good name for a flower shop specialising in selling dried flower bouquets?" +) +``` + +## 独自の ops をトラックする + +関数を `@weave.op` でラップすると、 入出力とアプリのロジックのキャプチャが開始され、 アプリ内での データの流れをデバッグできるようになります。 ops は深くネストさせることができ、 トラックしたい関数の ツリー を構築できます。 これにより、 実験 中の コード の バージョン管理 も自動的に開始され、 git にコミットされていないアドホックな詳細もキャプチャされます。 + +単に [`@weave.op`](/weave/guides/tracking/ops) でデコレートした関数を作成するだけです。 + +以下の例では、 都市の観光スポットを推薦する `@weave.op` でラップされた関数 `recommend_places_to_visit` を定義しています。 + +```python lines +import os +from google import genai +import weave + +weave.init(project_name="google-genai") +google_client = genai.Client(api_key=os.getenv("GOOGLE_GENAI_KEY")) + + +@weave.op() +def recommend_places_to_visit(city: str, model: str = "gemini-1.5-flash"): + response = google_client.models.generate_content( + model=model, + contents="You are a helpful assistant meant to suggest all budget-friendly places to visit in a city", + ) + return response.text + + +recommend_places_to_visit("New York") +recommend_places_to_visit("Paris") +recommend_places_to_visit("Kolkata") +``` + +[![dspy_trace.png](/weave/guides/integrations/imgs/google-genai-ops.png)](https://wandb.ai/geekyrakshit/google-genai/weave/traces) + +## 実験を容易にするための `Model` 作成 + +多くの要素が動的に変化する場合、 実験 の整理は困難になります。 [`Model`](../core-types/models) クラスを使用することで、 システムプロンプトや使用している モデル などのアプリの実験的な詳細をキャプチャし、 整理することができます。 これにより、 アプリの異なるイテレーションの整理や比較が容易になります。 + +コード の バージョン管理 や入出力のキャプチャに加え、 [`Model`](../core-types/models) は アプリケーション の 振る舞い を制御する構造化された パラメータ をキャプチャするため、 どの パラメータ が最適だったかを簡単に見つけ出すことができます。 また、 Weave Models は `serve` や [`Evaluations`](../core-types/evaluations) と共に使用することもできます。 + +以下の例では、 `CityVisitRecommender` を使って 実験 を行うことができます。 これらを変更するたびに、 `CityVisitRecommender` の新しい バージョン が作成されます。 + +```python lines +import os +from google import genai +import weave + +weave.init(project_name="google-genai") +google_client = genai.Client(api_key=os.getenv("GOOGLE_GENAI_KEY")) + + +class CityVisitRecommender(weave.Model): + model: str + + @weave.op() + def predict(self, city: str) -> str: + response = google_client.models.generate_content( + model=self.model, + contents="You are a helpful assistant meant to suggest all budget-friendly places to visit in a city", + ) + return response.text + + +city_recommender = CityVisitRecommender(model="gemini-1.5-flash") +print(city_recommender.predict("New York")) +print(city_recommender.predict("San Francisco")) +print(city_recommender.predict("Los Angeles")) +``` \ No newline at end of file diff --git a/ja/weave/guides/integrations/google_adk.mdx b/ja/weave/guides/integrations/google_adk.mdx new file mode 100644 index 0000000000..5621d5819d --- /dev/null +++ b/ja/weave/guides/integrations/google_adk.mdx @@ -0,0 +1,325 @@ +--- +title: Google Agent Development Kit (ADK) +description: OpenTelemetry を使用して、Google Agent Development Kit (ADK) の エージェント と ツール + の呼び出しを Weave でトレースする +--- + +[OpenTelemetry (OTEL)](https://opentelemetry.io/) を使用して、Weave で [Google Agent Development Kit (ADK)](https://google.github.io/adk-docs/) のエージェントやツールの呼び出しをトレースできます。ADK は、AI エージェントの開発とデプロイのための柔軟でモジュール化されたフレームワークです。Gemini や Google のエコシステムに最適化されていますが、ADK はモデルやデプロイメントに依存しません。単純なタスクから複雑なワークフローまで、エージェント アーキテクチャーの作成、デプロイ、オーケストレーションのためのツールを提供します。 + +このガイドでは、OTEL を使用して ADK エージェントとツールの呼び出しをトレースし、それらのトレースを Weave で可視化する方法を説明します。必要な依存関係のインストール、Weave にデータを送信するための OTEL トレーサーの設定、および ADK エージェントとツールの計装方法について学びます。 + + +Weave における OTEL トレッシングの詳細については、[Send OTEL Traces to Weave](../tracking/otel) を参照してください。 + + +## 事前準備 + +1. 必要な依存関係をインストールします。 + + ```bash + pip install google-adk opentelemetry-sdk opentelemetry-exporter-otlp-proto-http + ``` + +2. [Google APIキー](https://cloud.google.com/docs/authentication/api-keys)を環境変数として設定します。 + + ```bash + export GOOGLE_API_KEY=your_api_key_here + ``` + +3. [Weave での OTEL トレッシングの設定](#configure-otel-tracing-in-weave)を行います。 + +### Weave での OTEL トレッシングの設定 + +ADK から Weave にトレースを送信するには、`TracerProvider` と `OTLPSpanExporter` を使用して OTEL を設定します。エクスポーターには、[認証とプロジェクト識別のための正しいエンドポイントと HTTP ヘッダー](#required-configuration)を設定してください。 + + +API キーやプロジェクト情報などの機密性の高い環境変数は、環境ファイル(例: `.env`)に保存し、 `os.environ` を使用してロードすることをお勧めします。これにより、認証情報を安全に保ち、コードベースから排除できます。 + + +### 必要な設定 + +- **エンドポイント:** `https://trace.wandb.ai/otel/v1/traces`。専用の Weave インスタンスを使用している場合、URL は次のパターンに従います: `{YOUR_WEAVE_HOST}/traces/otel/v1/traces` +- **ヘッダー:** + - `Authorization`: W&B APIキーを使用した基本認証(Basic auth) + - `project_id`: W&B の Entity/Project 名(例: `myteam/myproject`) + +## ADK から Weave への OTEL トレースの送信 + +以下のコードスニペットは、ADK アプリケーションから Weave に OTEL トレースを送信するために、OTLP スパンエクスポーターとトレーサープロバイダーを設定する方法を示しています。 + + +Weave が ADK を正しくトレースできるように、コード内で ADK コンポーネントを使用する *前* にグローバルトレーサープロバイダーを設定してください。 + + +```python lines +import base64 +import os +from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter +from opentelemetry.sdk import trace as trace_sdk +from opentelemetry.sdk.trace.export import SimpleSpanProcessor +from opentelemetry import trace + +# 環境変数から機密性の高い値をロードする +WANDB_BASE_URL = "https://trace.wandb.ai" +# W&B の entity/project 名(例: "myteam/myproject") +PROJECT_ID = os.environ.get("WANDB_PROJECT_ID") +# https://wandb.ai/settings で W&B APIキーを作成してください +WANDB_API_KEY = os.environ.get("WANDB_API_KEY") + +OTEL_EXPORTER_OTLP_ENDPOINT = f"{WANDB_BASE_URL}/otel/v1/traces" +AUTH = base64.b64encode(f"api:{WANDB_API_KEY}".encode()).decode() + +OTEL_EXPORTER_OTLP_HEADERS = { + "Authorization": f"Basic {AUTH}", + "project_id": PROJECT_ID, +} + +# エンドポイントとヘッダーを指定して OTLP スパンエクスポーターを作成 +exporter = OTLPSpanExporter( + endpoint=OTEL_EXPORTER_OTLP_ENDPOINT, + headers=OTEL_EXPORTER_OTLP_HEADERS, +) + +# トレーサープロバイダーを作成し、エクスポーターを追加 +tracer_provider = trace_sdk.TracerProvider() +tracer_provider.add_span_processor(SimpleSpanProcessor(exporter)) + +# ADK をインポート/使用する「前」に、グローバルトレーサープロバイダーをセット +trace.set_tracer_provider(tracer_provider) +``` + +## OTEL を使用した ADK エージェントのトレース + +トレーサープロバイダーを設定した後、自動トレース機能を備えた ADK エージェントを作成して実行できます。次の例は、ツールを備えたシンプルな LLM エージェントを作成し、インメモリランナーで実行する方法を示しています。 + +```python lines +from google.adk.agents import LlmAgent +from google.adk.runners import InMemoryRunner +from google.adk.tools import FunctionTool +from google.genai import types +import asyncio + +# デモ用のシンプルなツールを定義 +def calculator(a: float, b: float) -> str: + """2つの数値を足して結果を返します。 + + Args: + a: 1つ目の数値 + b: 2つ目の数値 + + Returns: + a と b の合計 + """ + return str(a + b) + +calculator_tool = FunctionTool(func=calculator) + +async def run_agent(): + # LLM エージェントを作成 + agent = LlmAgent( + name="MathAgent", + model="gemini-2.0-flash", # 必要に応じて他のモデルに変更可能 + instruction=( + "あなたは計算ができる役立つアシスタントです。 " + "算数の問題を尋ねられたら、calculator ツールを使用して解決してください。" + ), + tools=[calculator_tool], + ) + + # ランナーの設定 + runner = InMemoryRunner(agent=agent, app_name="math_assistant") + session_service = runner.session_service + + # セッションの作成 + user_id = "example_user" + session_id = "example_session" + await session_service.create_session( + app_name="math_assistant", + user_id=user_id, + session_id=session_id, + ) + + # ツールの使用をトリガーするメッセージでエージェントを実行 + async for event in runner.run_async( + user_id=user_id, + session_id=session_id, + new_message=types.Content( + role="user", parts=[types.Part(text="5 + 7 は何?")] + ), + ): + if event.is_final_response() and event.content: + print(f"Final response: {event.content.parts[0].text.strip()}") + +# 非同期関数の実行 +asyncio.run(run_agent()) +``` + +すべてのエージェント操作は自動的にトレースされ Weave に送信されるため、実行フローを可視化できます。モデルの呼び出し、推論ステップ、ツールの呼び出しを確認できます。 + + +![ADK エージェントのトレース可視化](/weave/guides/integrations/imgs/google_adk/adk_agent_trace.png) + + +## OTEL を使用した ADK ツールのトレース + +ADK でツールを定義して使用すると、これらのツール呼び出しもトレースに記録されます。OTEL インテグレーションは、エージェントの推論プロセスと個々のツール実行の両方を自動的に計装し、エージェントの振る舞いを包括的に把握できるようにします。 + +以下は、複数のツールを使用した例です。 + +```python lines +from google.adk.agents import LlmAgent +from google.adk.runners import InMemoryRunner +from google.adk.tools import FunctionTool +from google.genai import types +import asyncio + +# 複数のツールを定義 +def add(a: float, b: float) -> str: + """2つの数値を足します。 + + Args: + a: 1つ目の数値 + b: 2つ目の数値 + + Returns: + a と b の合計 + """ + return str(a + b) + +def multiply(a: float, b: float) -> str: + """2つの数値を掛けます。 + + Args: + a: 1つ目の数値 + b: 2つ目の数値 + + Returns: + a と b の積 + """ + return str(a * b) + +# 関数ツールの作成 +add_tool = FunctionTool(func=add) +multiply_tool = FunctionTool(func=multiply) + +async def run_agent(): + # 複数のツールを持つ LLM エージェントを作成 + agent = LlmAgent( + name="MathAgent", + model="gemini-2.0-flash", + instruction=( + "あなたは計算操作ができる役立つアシスタントです。 " + "足し算を頼まれたら add ツールを、 " + "掛け算を頼まれたら multiply ツールを使用してください。" + ), + tools=[add_tool, multiply_tool], + ) + + # ランナーの設定 + runner = InMemoryRunner(agent=agent, app_name="math_assistant") + session_service = runner.session_service + + # セッションの作成 + user_id = "example_user" + session_id = "example_session" + await session_service.create_session( + app_name="math_assistant", + user_id=user_id, + session_id=session_id, + ) + + # ツール使用をトリガーするメッセージでエージェントを実行 + async for event in runner.run_async( + user_id=user_id, + session_id=session_id, + new_message=types.Content( + role="user", parts=[types.Part(text="最初に 5 と 7 を足して、その結果に 2 を掛けてください。")] + ), + ): + if event.is_final_response() and event.content: + print(f"Final response: {event.content.parts[0].text.strip()}") + +# 非同期関数の実行 +asyncio.run(run_agent()) +``` + + +![ADK ツール呼び出しのトレース可視化](/weave/guides/integrations/imgs/google_adk/adk_tool_calls.png) + + +## ワークフローエージェントの使用 + +ADK は、より複雑なシナリオ向けにさまざまな [_ワークフローエージェント_](https://google.github.io/adk-docs/agents/workflow-agents/) を提供しています。通常の LLM エージェントと同じようにワークフローエージェントをトレースできます。以下は、[`SequentialAgent`](https://google.github.io/adk-docs/agents/workflow-agents/sequential-agents/) を使用した例です。 + +```python lines +from google.adk.agents import LlmAgent, SequentialAgent +from google.adk.runners import InMemoryRunner +from google.genai import types +import asyncio + +async def run_workflow(): + # 2つの LLM エージェントを作成 + summarizer = LlmAgent( + name="Summarizer", + model="gemini-2.0-flash", + instruction="与えられたテキストを1文で要約してください。", + description="テキストを1文で要約します", + output_key="summary" # 出力を state['summary'] に保存 + ) + + analyzer = LlmAgent( + name="Analyzer", + model="gemini-2.0-flash", + instruction="与えられたテキストのセンチメントを positive、negative、または neutral として分析してください。分析対象のテキスト: {summary}", + description="テキストのセンチメントを分析します", + output_key="sentiment" # 出力を state['sentiment'] に保存 + ) + + # シーケンシャルワークフローを作成 + workflow = SequentialAgent( + name="TextProcessor", + sub_agents=[summarizer, analyzer], + description="要約の後にセンチメント分析を行うシーケンスを実行します。", + ) + + # ランナーの設定 + runner = InMemoryRunner(agent=workflow, app_name="text_processor") + session_service = runner.session_service + + # セッションの作成 + user_id = "example_user" + session_id = "example_session" + await session_service.create_session( + app_name="text_processor", + user_id=user_id, + session_id=session_id, + ) + + # ワークフローの実行 + async for event in runner.run_async( + user_id=user_id, + session_id=session_id, + new_message=types.Content( + role="user", + parts=[types.Part(text="この製品は期待以上でした。箱から出してすぐに完璧に動作し、セットアップに関する質問をした際のカスタマーサービスも素晴らしかったです。")] + ), + ): + if event.is_final_response() and event.content: + print(f"Final response: {event.content.parts[0].text.strip()}") + +# 非同期関数の実行 +asyncio.run(run_workflow()) +``` + +このワークフローエージェントのトレースは、両方のエージェントの順次実行を Weave で表示し、マルチエージェントシステム内をデータがどのように流れるかの公開範囲を提供します。 + + +![Sequential ワークフローエージェントのトレース可視化](/weave/guides/integrations/imgs/google_adk/adk_workflow_trace.png) + + +## 詳細情報 + +- [Weave ドキュメント: Weave への OTEL トレース送信](../tracking/otel) +- [ADK 公式ドキュメント](https://google.github.io/adk-docs/) +- [OTEL 公式ドキュメント](https://opentelemetry.io/) +- [ADK GitHub リポジトリ](https://github.com/google/adk-python) \ No newline at end of file diff --git a/ja/weave/guides/integrations/groq.mdx b/ja/weave/guides/integrations/groq.mdx new file mode 100644 index 0000000000..d9ae81ca80 --- /dev/null +++ b/ja/weave/guides/integrations/groq.mdx @@ -0,0 +1,155 @@ +--- +title: Groq +description: Groq の超高速 LPU™ 推論を Weave で追跡およびモニタリングし、Groq の専用ハードウェアアクセラレーションを使用した高速 + LLM アプリケーションの モデル 呼び出し、パフォーマンス メトリクス、関数チェーンをキャプチャします。 +--- + + + Open In Colab + + + +セットアップなしで Weave 上の Groq モデルを試してみたいですか? [LLM Playground](../tools/playground) をお試しください。 + + +[Groq](https://groq.com/) は、高速な AI 推論を提供する AI インフラストラクチャー企業です。 Groq の LPU™ 推論エンジンは、並外れた計算速度、品質、エネルギー効率を実現するハードウェアおよびソフトウェアプラットフォームです。 Weave は、 Groq のチャットコンプリーション(chat completion)呼び出しを使用して行われた呼び出しを自動的に追跡し、ログを記録します。 + +## Tracing + +開発中および プロダクション の両方において、言語モデル アプリケーション の トレース を中央の場所に保存することは重要です。これらの トレース はデバッグに役立ち、 アプリケーション を改善するための データセット としても活用できます。 + +Weave は [Groq](https://groq.com/) の トレース を自動的にキャプチャします。追跡を開始するには、 `weave.init(project_name="")` を呼び出し、通常通り ライブラリ を使用してください。 + +```python lines +import os +import weave +from groq import Groq + +# Weaveを初期化 +weave.init(project_name="groq-project") + +client = Groq( + api_key=os.environ.get("GROQ_API_KEY"), +) +chat_completion = client.chat.completions.create( + messages=[ + { + "role": "user", + "content": "Explain the importance of fast language models", + } + ], + model="llama3-8b-8192", +) +``` + +| ![](/weave/guides/integrations/imgs/groq/groq_weave_dasboard.png) | +|---| +| Weave は、 Groq ライブラリ を介して行われたすべての LLM 呼び出しを追跡し、ログを記録します。 Weave のウェブインターフェースで トレース を確認できます。 | + +## 独自の op を追跡する + +関数を `@weave.op` でラップすると、入力、出力、 アプリケーション ロジックのキャプチャが開始され、 アプリケーション 内でどのように データ が流れているかをデバッグできるようになります。 op を深くネストして、追跡したい関数の ツリー を構築できます。これにより、実験中に git にコミットされていないアドホックな詳細をキャプチャするために、コードの バージョン管理 も自動的に開始されます。 + +[`@weave.op`](/weave/guides/tracking/ops) でデコレートされた関数を作成するだけです。 + +以下の例では、 `recommend_places_to_visit` という関数があります。これは、都市の観光スポットを推薦する `@weave.op` でラップされた関数です。 + +```python lines +import os +import weave +from groq import Groq + +# プロジェクトの初期化 +weave.init(project_name="groq-test") + +client = Groq( + api_key=os.environ.get("GROQ_API_KEY"), +) + +@weave.op() +def recommend_places_to_visit(city: str, model: str="llama3-8b-8192"): + chat_completion = client.chat.completions.create( + messages=[ + { + "role": "system", + "content": "You are a helpful assistant meant to suggest places to visit in a city", + }, + { + "role": "user", + "content": city, + } + ], + model="llama3-8b-8192", + ) + return chat_completion.choices[0].message.content + +# 関数の呼び出し +recommend_places_to_visit("New York") +recommend_places_to_visit("Paris") +recommend_places_to_visit("Kolkata") +``` + +| ![](/weave/guides/integrations/imgs/groq/groq_weave_tracing.png) | +|---| +| `recommend_places_to_visit` 関数を `@weave.op` でデコレートすることで、その入力、出力、および関数内で行われたすべての内部 LM 呼び出しが トレース されます。 | + +## 実験を容易にするための `Models` の作成 + +多くの要素が動いている場合、実験の整理は困難になります。 [`Models`](../core-types/models) クラスを使用すると、システムプロンプトや使用している モデル など、 アプリケーション の実験的な詳細をキャプチャして整理できます。これにより、 アプリケーション の異なるイテレーションの整理や比較が容易になります。 + +コードの バージョン管理 や入力/出力のキャプチャに加えて、 [`Models`](../core-types/models) は アプリケーション の 振る舞い を制御する構造化された パラメータ をキャプチャし、どの パラメータ が最適であったかを簡単に見つけられるようにします。また、 Weave Models は `serve` や [`Evaluations`](../core-types/evaluations) と併用することもできます。 + +以下の例では、 `GroqCityVisitRecommender` を使って実験ができます。これらを変更するたびに、 `GroqCityVisitRecommender` の新しい「バージョン」が作成されます。 + +```python lines +import os +from groq import Groq +import weave + + +class GroqCityVisitRecommender(weave.Model): + model: str + groq_client: Groq + + @weave.op() + def predict(self, city: str) -> str: + system_message = { + "role": "system", + "content": """ +You are a helpful assistant meant to suggest places to visit in a city +""", + } + user_message = {"role": "user", "content": city} + chat_completion = self.groq_client.chat.completions.create( + messages=[system_message, user_message], + model=self.model, + ) + return chat_completion.choices[0].message.content + + +weave.init(project_name="groq-test") +city_recommender = GroqCityVisitRecommender( + model="llama3-8b-8192", groq_client=Groq(api_key=os.environ.get("GROQ_API_KEY")) +) +print(city_recommender.predict("New York")) +print(city_recommender.predict("San Francisco")) +print(city_recommender.predict("Los Angeles")) +``` + +| ![](/weave/guides/integrations/imgs/groq/groq_weave_model.png) | +|---| +| [`Models`](../core-types/models) を使用した呼び出しの トレース と バージョン管理 | + +### Weave モデルのサービング + +任意の `weave.Model` オブジェクトへの Weave リファレンスがあれば、 FastAPI サーバーを立ち上げて [serve](https://wandb.github.io/weave/guides/tools/serve) することができます。 + +| [![dspy_weave_model_serve.png](/weave/guides/integrations/imgs/groq/groq_weave_model_version.png)](https://wandb.ai/geekyrakshit/groq-test/weave/objects/GroqCityVisitRecommender/versions/6O1xPTJ9yFx8uuCjJAlI7KgcVYxXKn7JxfmVD9AQT5Q) | +|---| +| WeaveModel の Weave リファレンスは、 UI で モデル に移動してコピーすることで取得できます。 | + +ターミナル で以下の コマンド を使用して モデル をサービングできます。 + +```shell +weave serve weave://your_entity/project-name/YourModel: +``` \ No newline at end of file diff --git a/ja/weave/guides/integrations/huggingface.mdx b/ja/weave/guides/integrations/huggingface.mdx new file mode 100644 index 0000000000..41d6a7e333 --- /dev/null +++ b/ja/weave/guides/integrations/huggingface.mdx @@ -0,0 +1,217 @@ +--- +title: Hugging Face Hub +description: Hugging Face Hub を W&B Weave と統合し、 機械学習 アプリケーションの追跡と分析を行います +--- + + +このページに掲載されているすべてのコードサンプルは Python です。 + + +このページでは、[Hugging Face Hub](https://hf.co/) を W&B Weave と統合して、機械学習アプリケーションの追跡と分析を行う方法を説明します。 Weave の Traces 機能とバージョン管理機能を使用して、モデルの推論を ログ に記録し、関数の呼び出しを監視し、実験を整理する方法を学びます。提供されている例に従うことで、貴重なインサイトを取得し、アプリケーションを効率的にデバッグし、異なる モデル 設定を比較することができます。これらすべてを Weave のウェブインターフェース上で行えます。 + + +**Google Colab で Hugging Face Hub と Weave を試す** +セットアップなしで Hugging Face Hub と Weave を試してみたいですか? ここで紹介するコードサンプルは、Google Colab 上の Jupyter Notebook として試すことができます。 + + + Open In Colab + + + +## 概要 + +[Hugging Face Hub](https://hf.co/) は、クリエイターやコラボレーターのための 機械学習 プラットフォームであり、さまざまな プロジェクト 向けに学習済み モデル や データセット の膨大なコレクションを提供しています。 + +`huggingface_hub` Python ライブラリは、Hub 上でホストされている モデル に対して、複数のサービスにわたって推論を実行するための統一されたインターフェースを提供します。これらの モデル は、[`InferenceClient`](https://huggingface.co/docs/huggingface_hub/en/package_reference/inference_client) を使用して呼び出すことができます。 + +Weave は [`InferenceClient`](https://huggingface.co/docs/huggingface_hub/en/package_reference/inference_client) の Traces を自動的に取得します。追跡を開始するには、`weave.init()` を呼び出し、通常通りライブラリを使用してください。 + +## 前提条件 + +1. Weave で `huggingface_hub` を使用する前に、必要な ライブラリ をインストールするか、最新 バージョン にアップグレードする必要があります。次の コマンド は、`huggingface_hub` と `weave` をインストール、または既にインストールされている場合は最新 バージョン にアップグレードし、インストール時の出力を抑制します。 + + ```python lines + pip install -U huggingface_hub weave -qqq + ``` + +2. Hugging Face Hub 上の モデル で推論を使用するには、[User Access Token](https://huggingface.co/docs/hub/security-tokens) を設定します。トークンは、[Hugging Face Hub の設定ページ](https://huggingface.co/settings/tokens) から取得するか、プログラムで設定できます。以下の コード サンプルは、ユーザーに `HUGGINGFACE_TOKEN` の入力を促し、そのトークンを 環境 変数として設定します。 + + ```python lines + import os + import getpass + + os.environ["HUGGINGFACE_TOKEN"] = getpass.getpass("Enter your Hugging Face Hub Token: ") + ``` + +## 基本的なトレーシング + +言語 モデル アプリケーションの Traces を中央の場所に保存することは、開発および プロダクション の段階で不可欠です。これらの Traces はデバッグに役立ち、アプリケーションを改善するための貴重な データセット としても機能します。 + +Weave は [`InferenceClient`](https://huggingface.co/docs/huggingface_hub/en/package_reference/inference_client) の Traces を自動的にキャプチャします。追跡を開始するには、`weave.init()` を呼び出して Weave を初期化し、その後は通常どおりライブラリを使用します。 + +次の例は、Weave を使用して Hugging Face Hub への推論呼び出しを ログ に記録する方法を示しています。 + +```python lines +import weave +from huggingface_hub import InferenceClient + +# Weave を初期化 +weave.init(project_name="quickstart-huggingface") + +# Hugging Face Inference Client を初期化 +huggingface_client = InferenceClient( + api_key=os.environ.get("HUGGINGFACE_TOKEN") +) + +# Llama-3.2-11B-Vision-Instruct モデルを使用して Hugging Face Hub にチャット補完の推論呼び出しを行う +image_url = "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" +response = huggingface_client.chat_completion( + model="meta-llama/Llama-3.2-11B-Vision-Instruct", + messages=[ + { + "role": "user", + "content": [ + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "text", "text": "Describe this image in one sentence."}, + ], + } + ], + max_tokens=500, + seed=42, +) +``` + +上記の コード を実行すると、Weave は Hugging Face Inference Client で行われたすべての LLM 呼び出しを追跡し、ログ に記録します。これらの Traces は Weave のウェブインターフェースで確認できます。 + + +![Weave は各推論呼び出しをログに記録し、入力、出力、メタデータに関する詳細を提供します。](/weave/guides/integrations/imgs/huggingface/trace_call.png) + + +Weave は各推論呼び出しを ログ に記録し、入力、出力、メタデータ に関する詳細を提供します。 + +![Weave は UI 上で呼び出しをチャットビューとしてもレンダリングし、モデルとのチャット履歴全体を表示します。](/weave/guides/integrations/imgs/huggingface/trace_chat.png) +Weave は UI 上で呼び出しをチャットビューとしてもレンダリングし、モデル とのチャット履歴全体を表示します。 + +## 関数のトレース + +アプリケーション内を データ がどのように流れるかについてより深い洞察を得るために、`@weave.op` を使用して関数呼び出しを追跡できます。これにより、入力、出力、および実行ロジックがキャプチャされ、デバッグやパフォーマンス 分析 に役立ちます。 + +複数の op をネストすることで、追跡された関数の構造化された ツリー を構築できます。また、Weave は コード を自動的に バージョン 管理し、Git に変更をコミットする前であっても、実験中の中間状態を保存します。 + +追跡を開始するには、追跡したい関数に `@weave.op` デコレータを付けます。 + +以下の例では、Weave は `generate_image`、`check_image_correctness`、および `generate_image_and_check_correctness` の 3 つの関数を追跡します。これらの関数は画像を生成し、それが指定されたプロンプトと一致するかどうかを検証します。 + +```python lines +import base64 +from PIL import Image + + +def encode_image(pil_image): + import io + buffer = io.BytesIO() + pil_image.save(buffer, format="JPEG") + buffer.seek(0) + encoded_image = base64.b64encode(buffer.read()).decode("utf-8") + return f"data:image/jpeg;base64,{encoded_image}" + + +@weave.op +def generate_image(prompt: str): + return huggingface_client.text_to_image( + prompt=prompt, + model="black-forest-labs/FLUX.1-schnell", + num_inference_steps=4, + ) + + +@weave.op +def check_image_correctness(image: Image.Image, image_generation_prompt: str): + return huggingface_client.chat_completion( + model="meta-llama/Llama-3.2-11B-Vision-Instruct", + messages=[ + { + "role": "user", + "content": [ + {"type": "image_url", "image_url": {"url": encode_image(image)}}, + { + "type": "text", + "text": f"Is this image correct for the prompt: {image_generation_prompt}? Answer with only one word: yes or no", + }, + ], + } + ], + max_tokens=500, + seed=42, + ).choices[0].message.content + + +@weave.op +def generate_image_and_check_correctness(prompt: str): + image = generate_image(prompt) + return { + "image": image, + "is_correct": check_image_correctness(image, prompt), + } + + +response = generate_image_and_check_correctness("A cute puppy") +``` + +Weave は `@weave.op` でラップされたすべての関数呼び出しを ログ に記録するようになり、Weave UI で実行の詳細を 分析 できます。 + + +![Weave は @weave.op でラップされたすべての関数呼び出しをログに記録し、Weave UI で実行の詳細を分析できるようにします。また、Weave は関数の実行をキャプチャして可視化し、アプリケーション内のデータフローとロジックを理解するのに役立ちます。](/weave/guides/integrations/imgs/huggingface/trace_ops.png) +Weave は関数の実行をキャプチャして可視化し、アプリケーション内の データ フローとロジックを理解するのに役立ちます。 + + +## 実験のための `Model` の利用 + +複数のコンポーネントが関与する場合、LLM の 実験 を管理するのは困難な場合があります。Weave の [`Model`](../core-types/models) クラスは、システムプロンプトや モデル 設定などの 実験 の詳細をキャプチャして整理するのに役立ち、異なるイテレーションを簡単に比較できるようにします。 + +コード の バージョン 管理や入力/出力のキャプチャに加えて、`Model` はアプリケーションの 振る舞い を制御する構造化された パラメータ を保存します。これにより、どの設定が最良の結果をもたらしたかを追跡しやすくなります。また、Weave `Model` を Weave [Serve](../tools/serve) や [Evaluations](../evaluation/scorers) と統合して、さらなる洞察を得ることもできます。 + +以下の例では、旅行のレコメンデーションを行う `CityVisitRecommender` モデル を定義しています。パラメータ を変更するたびに新しい バージョン が生成されるため、実験 が容易になります。 + +```python lines +import rich + + +class CityVisitRecommender(weave.Model): + model: str + temperature: float = 0.7 + max_tokens: int = 500 + seed: int = 42 + + @weave.op() + def predict(self, city: str) -> str: + return huggingface_client.chat_completion( + model=self.model, + messages=[ + { + "role": "system", + "content": "You are a helpful assistant meant to suggest places to visit in a city", + }, + {"role": "user", "content": city}, + ], + max_tokens=self.max_tokens, + temperature=self.temperature, + seed=self.seed, + ).choices[0].message.content + + +city_visit_recommender = CityVisitRecommender( + model="meta-llama/Llama-3.2-11B-Vision-Instruct", + temperature=0.7, + max_tokens=500, + seed=42, +) +rich.print(city_visit_recommender.predict("New York City")) +rich.print(city_visit_recommender.predict("Paris")) +``` + +Weave は自動的に Models を ログ に記録し、異なる バージョン を追跡するため、パフォーマンスや 実験 履歴の 分析 が容易になります。 + + +![Weave は自動的にモデルをログに記録し、異なるバージョンを追跡するため、パフォーマンスや実験履歴の分析が容易になります。](/weave/guides/integrations/imgs/huggingface/trace_model.png) + \ No newline at end of file diff --git a/ja/weave/guides/integrations/inference.mdx b/ja/weave/guides/integrations/inference.mdx new file mode 100644 index 0000000000..2252b89710 --- /dev/null +++ b/ja/weave/guides/integrations/inference.mdx @@ -0,0 +1,482 @@ +# W&B Inference + +_W&B Inference_ は、W&B Weave および OpenAI 互換の API を通じて、主要なオープンソースの基盤モデルへのアクセスを提供します。W&B Inference を使用すると、以下のことが可能になります: + +- ホスティングプロバイダーへの登録やモデルのセルフホストを行うことなく、AI アプリケーションやエージェントを開発できます。 +- W&B Weave Playground でサポートされているモデルを試用できます。 + + +W&B Inference クレジットは、Free、Pro、および Academic プランに期間限定で含まれています。Enterprise プランでの利用可能性は異なる場合があります。クレジットが消費された後は以下のようになります: + +- Free アカウントが Inference の利用を継続するには、Pro プランにアップグレードする必要があります。 +- Pro プランのユーザーには、モデルごとの価格に基づき、Inference の超過分が月単位で請求されます。 + +詳細については、[価格ページ](https://wandb.ai/site/pricing/) および [W&B Inference モデルコスト](https://wandb.ai/site/pricing/inference) を参照してください。 + + +Weave を使用することで、W&B Inference を活用したアプリケーションの トレース、評価、監視、および反復的な改善が可能になります。 + +| モデル | モデル ID (API 利用時) | タイプ | コンテキストウィンドウ | パラメータ | 説明 | +| :--- | :--- | :--- | :--- | :--- | :--- | +| DeepSeek R1-0528 | deepseek-ai/DeepSeek-R1-0528 | テキスト | 161K | 37B - 680B (Active - Total) | 複雑なコーディング、数学、構造化文書の分析など、精密な推論タスクに最適化されています。 | +| DeepSeek V3-0324 | deepseek-ai/DeepSeek-V3-0324 | テキスト | 161K | 37B - 680B (Active - Total) | 高度な言語処理と包括的な文書分析向けに調整された、堅牢な Mixture-of-Experts モデルです。 | +| Llama 3.1 8B | meta-llama/Llama-3.1-8B-Instruct | テキスト | 128K | 8B (Total) | 応答性の高い多言語チャットボットとの対話に最適化された、効率的な対話型モデルです。 | +| Llama 3.3 70B | meta-llama/Llama-3.3-70B-Instruct | テキスト | 128K | 70B (Total) | 対話タスク、詳細な指示への追従、コーディングに優れた多言語モデルです。 | +| Llama 4 Scout | meta-llama/Llama-4-Scout-17B-16E-Instruct | テキスト, ビジョン | 64K | 17B - 109B (Active - Total) | テキストと画像の理解を統合したマルチモーダルモデルで、視覚的なタスクや複合的な分析に理想的です。 | +| Phi 4 Mini | microsoft/Phi-4-mini-instruct | テキスト | 128K | 3.8B (Active - Total) | リソース制約のある環境での高速なレスポンスに適した、コンパクトで効率的なモデルです。 | + +このガイドでは、以下の情報を提供します: + +- [前提条件](#prerequisites) + - [Python 経由で API を使用するための追加の前提条件](#additional-prerequisites-for-using-the-api-via-python) +- [API 仕様](#api-specification) + - [エンドポイント](#endpoint) + - [利用可能なメソッド](#available-methods) + - [Chat completions](#chat-completions) + - [サポートされているモデルの一覧表示](#list-supported-models) +- [使用例](#usage-examples) +- [UI](#ui) + - [Inference サービスへのアクセス](#access-the-inference-service) + - [Playground でモデルを試す](#try-a-model-in-the-playground) + - [複数のモデルを比較する](#compare-multiple-models) + - [請求および使用状況情報の確認](#view-billing-and-usage-information) +- [使用上の情報と制限](#usage-information-and-limits) +- [API エラー](#api-errors) + +## 前提条件 + +API または W&B Weave UI を通じて W&B Inference サービスにアクセスするには、以下の前提条件が必要です。 + +1. W&B アカウント。登録は [こちら](https://app.wandb.ai/login?signup=true&_gl=1*1yze8dp*_ga*ODIxMjU5MTk3LjE3NDk0OTE2NDM.*_ga_GMYDGNGKDT*czE3NDk4NDYxMzgkbzEyJGcwJHQxNzQ5ODQ2MTM4JGo2MCRsMCRoMA..*_ga_JH1SJHJQXJ*czE3NDk4NDU2NTMkbzI1JGcxJHQxNzQ5ODQ2MTQ2JGo0NyRsMCRoMA..*_gcl_au*MTE4ODk1MzY1OC4xNzQ5NDkxNjQzLjk1ODA2MjQwNC4xNzQ5NTgyMTUzLjE3NDk1ODIxNTM.) から。 +2. W&B APIキー。[ユーザー設定 (User Settings)](https://wandb.ai/settings) で APIキー を作成してください。 +3. W&B Projects。 +4. Python 経由で Inference サービスを使用する場合は、[Python 経由で API を使用するための追加の前提条件](#additional-prerequisites-for-using-the-api-via-python) を参照してください。 + +### Python 経由で API を使用するための追加の前提条件 + +Python 経由で Inference API を使用するには、まず一般的な前提条件を完了させてください。次に、ローカル環境に `openai` と `weave` ライブラリをインストールします。 + +```bash +pip install openai weave +``` + + +`weave` ライブラリは、LLM アプリケーションをトレースするために Weave を使用する場合にのみ必要です。Weave の使い始めについては、[Weave クイックスタート](/weave/quickstart) を参照してください。 + +W&B Inference サービスを Weave と共に使用する方法を示す使用例については、[API 使用例](#usage-examples) を参照してください。 + + +## API 仕様 + +このセクションでは、API の仕様情報と API の使用例を提供します。 + +- [エンドポイント](#endpoint) +- [利用可能なメソッド](#available-methods) +- [使用例](#usage-examples) + +### エンドポイント + +Inference サービスには、以下のエンドポイントからアクセスできます。 + +```plaintext +https://api.inference.wandb.ai/v1 +``` + + +このエンドポイントにアクセスするには、Inference サービスのクレジットが割り当てられた W&B アカウント、有効な W&B APIキー、および W&B Entities (「チーム」とも呼ばれます) と Projects が必要です。このガイドのコードサンプルでは、Entities (チーム) と プロジェクトは `\` と表記されています。 + + +### 利用可能なメソッド + +Inference サービスは、以下の API メソッドをサポートしています。 + +- [Chat completions](#chat-completions) +- [サポートされているモデルの一覧表示](#list-supported-models) + +#### Chat completions + +利用可能な主要な API メソッドは `/chat/completions` で、サポートされているモデルにメッセージを送信して補完を受け取るための OpenAI 互換のリクエスト形式をサポートしています。W&B Inference サービスを Weave と共に使用する方法を示す使用例については、[API 使用例](#usage-examples) を参照してください。 + +Chat completion を作成するには、以下が必要です。 + +- Inference サービスのベース URL `https://api.inference.wandb.ai/v1` +- あなたの W&B APIキー `` +- あなたの W&B Entities 名と Projects 名 `/` +- 使用したいモデルの ID。以下のいずれかです: + - `meta-llama/Llama-3.1-8B-Instruct` + - `deepseek-ai/DeepSeek-V3-0324` + - `meta-llama/Llama-3.3-70B-Instruct` + - `deepseek-ai/DeepSeek-R1-0528` + - `meta-llama/Llama-4-Scout-17B-16E-Instruct` + - `microsoft/Phi-4-mini-instruct` + + + + ```bash + curl https://api.inference.wandb.ai/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer " \ + -H "OpenAI-Project: /" \ + -d '{ + "model": "", + "messages": [ + { "role": "system", "content": "You are a helpful assistant." }, + { "role": "user", "content": "Tell me a joke." } + ] + }' + ``` + + + ```python lines + import openai + + client = openai.OpenAI( + # カスタムベース URL は W&B Inference を指します + base_url='https://api.inference.wandb.ai/v1', + + # https://wandb.ai/settings で APIキー を作成してください + # 安全のため、代わりに環境変数 OPENAI_API_KEY に設定することを検討してください + api_key="", + + # 使用状況の追跡のためにチームとプロジェクトが必要です + project="/", + ) + + # を以下のいずれかの値に置き換えてください: + # meta-llama/Llama-3.1-8B-Instruct + # deepseek-ai/DeepSeek-V3-0324 + # meta-llama/Llama-3.3-70B-Instruct + # deepseek-ai/DeepSeek-R1-0528 + # meta-llama/Llama-4-Scout-17B-16E-Instruct + # microsoft/Phi-4-mini-instruct + + response = client.chat.completions.create( + model="", + messages=[ + {"role": "system", "content": ""}, + {"role": "user", "content": ""} + ], + ) + + print(response.choices[0].message.content) + ``` + + + +#### サポートされているモデルの一覧表示 + +API を使用して、現在利用可能なすべてのモデルとその ID を照会します。これは、モデルを動的に選択したり、環境で何が利用可能かを確認したりするのに便利です。 + + + + ```bash + curl https://api.inference.wandb.ai/v1/models \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer " \ + -H "OpenAI-Project: /" \ + ``` + + + ```python lines + import openai + + client = openai.OpenAI( + base_url="https://api.inference.wandb.ai/v1", + api_key="", + project="/" + ) + + response = client.models.list() + + for model in response.data: + print(model.id) + ``` + + + +## 使用例 + +このセクションでは、W&B Inference を Weave と共に使用する方法を示すいくつかの例を紹介します。 + +- [基本例: Weave で Llama 3.1 8B をトレースする](#basic-example-trace-llama-31-8b-with-weave) +- [高度な例: 推論サービスで Weave Evaluations と Leaderboards を使用する](#advanced-example-use-weave-evaluations-and-leaderboards-with-the-inference-service) + +### 基本例: Weave で Llama 3.1 8B をトレースする + +以下の Python コードサンプルは、W&B Inference API を使用して **Llama 3.1 8B** モデルにプロンプトを送信し、Weave でその呼び出しを トレース する方法を示しています。トレース を使用すると、LLM 呼び出しの完全な入出力をキャプチャし、パフォーマンスを監視し、Weave UI で結果を分析できます。 + + +[Weave でのトレース](../tracking/tracing.mdx) について詳しくはこちら。 + + +この例では: + +- OpenAI 互換クライアントを使用して chat completion リクエストを行う、`@weave.op()` デコレータが付いた関数 `run_chat` を定義します。 +- トレース は記録され、あなたの W&B Entities および Projects `project="/` に関連付けられます。 +- 関数は Weave によって自動的にトレースされるため、その入力、出力、レイテンシ、およびメタデータ(モデル ID など)が ログ されます。 +- 結果は ターミナル に出力され、指定されたプロジェクトの下の [https://wandb.ai](https://wandb.ai) にある **Traces** タブに トレース が表示されます。 + +この例を使用するには、[一般的な前提条件](#prerequisites) と [Python 経由で API を使用するための追加の前提条件](#additional-prerequisites-for-using-the-api-via-python) を完了させておく必要があります。 + +```python lines +import weave +import openai + +# トレース用の Weave チームとプロジェクトを設定 +weave.init("/") + +client = openai.OpenAI( + base_url='https://api.inference.wandb.ai/v1', + + # https://wandb.ai/settings で APIキー を作成してください + api_key="", + + # W&B inference の使用状況追跡のために必要です + project="wandb/inference-demo", +) + +# Weave でモデル呼び出しをトレースする +@weave.op() +def run_chat(): + response = client.chat.completions.create( + model="meta-llama/Llama-3.1-8B-Instruct", + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Tell me a joke."} + ], + ) + return response.choices[0].message.content + +# トレースされた呼び出しを実行してログを記録 +output = run_chat() +print(output) +``` + +コードサンプルを実行すると、ターミナルに出力されたリンク(例:`https://wandb.ai///r/call/01977f8f-839d-7dda-b0c2-27292ef0e04g`)をクリックするか、以下のようにして Weave で トレース を確認できます。 + +1. [https://wandb.ai](https://wandb.ai) にアクセスします。 +2. **Traces** タブを選択して、Weave トレース を表示します。 + +次に、[高度な例](#advanced-example-use-weave-evaluations-and-leaderboards-with-the-inference-service) を試してみてください。 + + +![トレースの表示](/weave/guides/integrations/imgs/image.png) + + +### 高度な例: 推論サービスで Weave Evaluations と Leaderboards を使用する + +Inference サービスで Weave を使用して [モデル呼び出しをトレースする](../tracking/tracing.mdx) ことに加えて、[パフォーマンスを評価 (evaluate) し](../core-types/evaluations.mdx)、[リーダーボードを公開する](../core-types/leaderboards.mdx) こともできます。以下の Python コードサンプルでは、シンプルな Q&A データセットで 2 つのモデルを比較します。 + +この例を使用するには、[一般的な前提条件](#prerequisites) と [Python 経由で API を使用するための追加の前提条件](#additional-prerequisites-for-using-the-api-via-python) を完了させておく必要があります。 + +```python lines +import os +import asyncio +import openai +import weave +from weave.flow import leaderboard +from weave.trace.ref_util import get_ref + +# トレース用の Weave チームとプロジェクトを設定 +weave.init("/") + +dataset = [ + {"input": "What is 2 + 2?", "target": "4"}, + {"input": "Name a primary color.", "target": "red"}, +] + +@weave.op +def exact_match(target: str, output: str) -> float: + return float(target.strip().lower() == output.strip().lower()) + +class WBInferenceModel(weave.Model): + model: str + + @weave.op + def predict(self, prompt: str) -> str: + client = openai.OpenAI( + base_url="https://api.inference.wandb.ai/v1", + # https://wandb.ai/settings で APIキー を作成してください + api_key="", + # W&B inference の使用状況追跡のために必要です + project="/", + ) + resp = client.chat.completions.create( + model=self.model, + messages=[{"role": "user", "content": prompt}], + ) + return resp.choices[0].message.content + +llama = WBInferenceModel(model="meta-llama/Llama-3.1-8B-Instruct") +deepseek = WBInferenceModel(model="deepseek-ai/DeepSeek-V3-0324") + +def preprocess_model_input(example): + return {"prompt": example["input"]} + +evaluation = weave.Evaluation( + name="QA", + dataset=dataset, + scorers=[exact_match], + preprocess_model_input=preprocess_model_input, +) + +async def run_eval(): + await evaluation.evaluate(llama) + await evaluation.evaluate(deepseek) + +asyncio.run(run_eval()) + +spec = leaderboard.Leaderboard( + name="Inference Leaderboard", + description="Compare models on a QA dataset", + columns=[ + leaderboard.LeaderboardColumn( + evaluation_object_ref=get_ref(evaluation).uri(), + scorer_name="exact_match", + summary_metric_path="mean", + ) + ], +) + +weave.publish(spec) +``` + +以下のコードサンプルを実行した後、[https://wandb.ai/](https://wandb.ai/) の W&B アカウントにアクセスし、以下の操作を行います。 + +- **Traces** タブに移動して [トレースを表示](../tracking/tracing.mdx) +- **Evals** タブに移動して [モデルの評価を表示](../core-types/evaluations.mdx) +- **Leaders** タブに移動して [生成されたリーダーボードを表示](../core-types/leaderboards.mdx) + + +![モデルの評価を表示](/weave/guides/integrations/imgs/inference-advanced-evals.png) + + +![トレースを表示](/weave/guides/integrations/imgs/inference-advanced-leaderboard.png) + + +## UI + +以下のセクションでは、W&B UI から Inference サービスを使用する方法について説明します。UI 経由で Inference サービスにアクセスする前に、[前提条件](#prerequisites) を完了させてください。 + +### Inference サービスへのアクセス + +Weave UI の 2 つの異なる場所から Inference サービスにアクセスできます。 + +- [直接リンク](#direct-link) +- [Inference タブから](#from-the-inference-tab) +- [Playground タブから](#from-the-playground-tab) + +#### 直接リンク + +[https://wandb.ai/inference](https://wandb.ai/inference) にアクセスしてください。 + +#### Inference タブから + +1. [https://wandb.ai/](https://wandb.ai/) で W&B アカウントにアクセスします。 +2. 左側のサイドバーから **Inference** を選択します。利用可能なモデルとモデル情報のページが表示されます。 + + +![Inference タブ](/weave/guides/integrations/imgs/inference-ui.png) + + +#### Playground タブから + +1. 左側のサイドバーから **Playground** を選択します。Playground のチャット UI が表示されます。 +2. LLM のドロップダウンリストから **W&B Inference** にマウスを合わせます。利用可能な W&B Inference モデルのドロップダウンが右側に表示されます。 +3. W&B Inference モデルのドロップダウンから、以下の操作が可能です: + - 利用可能なモデル名をクリックして、[Playground で試用する](#try-a-model-in-the-playground)。 + - [Playground で 1 つ以上のモデルを比較する](#compare-multiple-models)。 + + +![Playground の Inference モデルドロップダウン](/weave/guides/integrations/imgs/inference-playground.png) + + +### Playground でモデルを試す + +[アクセスオプションのいずれかを使用してモデルを選択](#access-the-inference-service)したら、Playground でモデルを試すことができます。以下の操作が可能です。 + +- [モデルの設定とパラメータのカスタマイズ](../tools/playground#customize-settings) +- [メッセージの追加、再試行、編集、削除](../tools/playground#message-controls) +- [カスタム設定でのモデルの保存と再利用](../tools/playground#saved-models) +- [複数のモデルを比較する](#compare-multiple-models) + + +![Playground で Inference モデルを使用する](/weave/guides/integrations/imgs/inference-playground-single.png) + + +### 複数のモデルを比較する + +Playground では、複数の Inference モデルを比較できます。比較ビューには 2 つの異なる場所からアクセスできます。 + +- [Inference タブから比較ビューにアクセスする](#access-the-compare-view-from-the-inference-tab) +- [Playground タブから比較ビューにアクセスする](#access-the-compare-view-from-the-playground-tab) + +#### Inference タブから比較ビューにアクセスする + +1. 左側のサイドバーから **Inference** を選択します。利用可能なモデルとモデル情報のページが表示されます。 +2. 比較するモデルを選択するには、モデルカードの任意の場所(モデル名以外)をクリックします。選択されたことを示すために、モデルカードの境界線が青色で強調表示されます。 +3. 比較したい各モデルについて、ステップ 2 を繰り返します。 +4. 選択されたいずれかのカードで、**Compare N models in the Playground** ボタン(`N` は比較するモデルの数。例:3 つのモデルが選択されている場合、ボタンは **Compare 3 models in the Playground** と表示されます)をクリックします。比較ビューが開きます。 + +これで、Playground でモデルを比較し、[Playground でモデルを試す](#try-a-model-in-the-playground) で説明されている機能を使用できるようになります。 + + +![Playground で比較する複数のモデルを選択する](/weave/guides/integrations/imgs/inference-playground-compare.png) + + +#### Playground タブから比較ビューにアクセスする + +1. 左側のサイドバーから **Playground** を選択します。Playground のチャット UI が表示されます。 +2. LLM のドロップダウンリストから **W&B Inference** にマウスを合わせます。利用可能な W&B Inference モデルのドロップダウンが右側に表示されます。 +3. ドロップダウンから **Compare** を選択します。**Inference** タブが表示されます。 +4. 比較するモデルを選択するには、モデルカードの任意の場所(モデル名以外)をクリックします。モデルカードの境界線が青色で強調表示されます。 +5. 比較したい各モデルについて、ステップ 4 を繰り返します。 +6. 選択されたいずれかのカードで、**Compare N models in the Playground** ボタンをクリックします。比較ビューが開きます。 + +これで、Playground でモデルを比較し、[Playground でモデルを試す](#try-a-model-in-the-playground) で説明されている機能を使用できるようになります。 + +### 請求および使用状況情報の確認 + +Organization 管理者は、現在の Inference クレジット残高、使用履歴、および今後の請求(該当する場合)を W&B UI から直接確認できます。 + +1. W&B UI で、W&B **Billing** ページに移動します。 +2. 右下隅に Inference の請求情報カードが表示されます。ここから以下の操作が可能です。 +- Inference 請求情報カードの **View usage** ボタンをクリックして、時間の経過に伴う使用状況を確認します。 +- 有料プランを利用している場合は、今後の推論料金を確認します。 + + +[モデルごとの価格内訳については、Inference 価格ページをご覧ください](https://wandb.ai/site/pricing/inference) + + +## 使用上の情報と制限 + +以下のセクションでは、重要な使用上の情報と制限について説明します。サービスを使用する前に、これらの情報を確認してください。 + +### 地理的制限 + +Inference サービスは、サポートされている地理的場所からのみアクセス可能です。詳細については、[サービス利用規約](https://docs.coreweave.com/docs/policies/terms-of-service/terms-of-use#geographic-restrictions) を参照してください。 + +### 同時実行制限 + +公正な利用と安定したパフォーマンスを確保するため、W&B Inference API はユーザーおよびプロジェクトレベルでレート制限を適用しています。これらの制限は以下のことに役立ちます。 + +- 誤用を防ぎ、API の安定性を保護する +- すべてのユーザーがアクセスできるようにする +- インフラストラクチャの負荷を効果的に管理する + +レート制限を超えると、API は `429 Concurrency limit reached for requests` レスポンスを返します。このエラーを解決するには、同時リクエストの数を減らしてください。 + +### 価格 + +モデルの価格情報については、[https://wandb.ai/site/pricing/inference](https://wandb.ai/site/pricing/inference) をご覧ください。 + +## API エラー + +| エラーコード | メッセージ | 原因 | 解決策 | +| :--- | :--- | :--- | :--- | +| 401 | Invalid Authentication | 認証資格情報が無効であるか、W&B プロジェクトの Entities または名前が正しくありません。 | 正しい APIキー が使用されているか、および/または W&B プロジェクト名と Entities が正しいことを確認してください。 | +| 403 | Country, region, or territory not supported | サポートされていない場所から API にアクセスしています。 | [地理的制限](#geographic-restrictions) を参照してください。 | +| 429 | Concurrency limit reached for requests | 同時リクエスト数が多すぎます。 | 同時リクエストの数を減らしてください。 | +| 429 | You exceeded your current quota, please check your plan and billing details | クレジットが不足しているか、月間の支出上限に達しました。 | クレジットをさらに購入するか、制限を引き上げてください。 | +| 500 | The server had an error while processing your request | サーバー内部エラー。 | 少し待ってから再試行し、問題が解決しない場合はサポートにお問い合わせください。 | +| 503 | The engine is currently overloaded, please try again later | サーバーが高トラフィックを経験しています。 | 少し時間を置いてからリクエストを再試行してください。 | \ No newline at end of file diff --git a/ja/weave/guides/integrations/instructor.mdx b/ja/weave/guides/integrations/instructor.mdx new file mode 100644 index 0000000000..e0e4a03f18 --- /dev/null +++ b/ja/weave/guides/integrations/instructor.mdx @@ -0,0 +1,172 @@ +--- +title: Instructor +description: Weave の Instructor インテグレーションを使用して、LLM からの構造化データ抽出をトレースし評価します。Pydantic + モデルのバリデーション、リトライロジック、JSON スキーマの適用をキャプチャし、信頼性の高い構造化出力 ワークフロー を実現します。 +--- + + + Open In Colab + + +[Instructor](https://python.useinstructor.com/) は、LLM から JSON などの構造化データを簡単に取得できるようにする軽量なライブラリです。 + +## トレーシング + +開発中および プロダクション の両方において、言語モデル アプリケーション の トレース を中央の場所に保存することは重要です。これらの トレース は、デバッグや、アプリケーション を改善するのに役立つ データセット として有用です。 + +Weave は [Instructor](https://python.useinstructor.com/) の トレース を自動的にキャプチャします。追跡を開始するには、`weave.init(project_name="")` を呼び出し、通常通りライブラリを使用してください。 + +```python lines +import instructor +import weave +from pydantic import BaseModel +from openai import OpenAI + + +# 期待する出力構造を定義 +class UserInfo(BaseModel): + user_name: str + age: int + +# Weave を初期化 +weave.init(project_name="instructor-test") + +# OpenAI クライアントにパッチを適用 +client = instructor.from_openai(OpenAI()) + +# 自然言語から構造化データを抽出 +user_info = client.chat.completions.create( + model="gpt-3.5-turbo", + response_model=UserInfo, + messages=[{"role": "user", "content": "John Doe is 30 years old."}], +) +``` + +| ![](/weave/guides/integrations/imgs/instructor/instructor_lm_trace.gif) | +|-----------------------------------------------------------------------------------------------------------------------| +| Weave は、Instructor を使用して行われたすべての LLM 呼び出しを追跡し、ログを記録します。Weave の Web インターフェースで トレース を確認できます。 | + +## 独自の op を追跡する + +関数を `@weave.op` でラップすると、入力、出力、および アプリケーション ロジックのキャプチャが開始され、データが アプリケーション 内をどのように流れるかをデバッグできるようになります。op を深くネストして、追跡したい関数の ツリー を構築できます。これにより、実験 中に git にコミットされていないアドホックな詳細をキャプチャするために、コード の バージョン管理 も自動的に開始されます。 + +[`@weave.op`](/weave/guides/tracking/ops) でデコレートされた関数を作成するだけです。 + +以下の例では、`extract_person` という関数があり、これが `@weave.op` でラップされたメトリクス関数です。これにより、OpenAI のチャット完了呼び出しなど、中間ステップがどのように行われているかを確認できます。 + +```python lines +import instructor +import weave +from openai import OpenAI +from pydantic import BaseModel + + +# 期待する出力構造を定義 +class Person(BaseModel): + person_name: str + age: int + + +# Weave を初期化 +weave.init(project_name="instructor-test") + +# OpenAI クライアントにパッチを適用 +lm_client = instructor.from_openai(OpenAI()) + + +# 自然言語から構造化データを抽出 +@weave.op() +def extract_person(text: str) -> Person: + return lm_client.chat.completions.create( + model="gpt-3.5-turbo", + messages=[ + {"role": "user", "content": text}, + ], + response_model=Person, + ) + + +person = extract_person("My name is John and I am 20 years old") +``` + +| ![](/weave/guides/integrations/imgs/instructor/instructor_op_trace.png) | +|---| +| `extract_person` 関数を `@weave.op` でデコレートすることで、その入力、出力、および関数内で行われるすべての内部 LM 呼び出しが トレース されます。Weave はまた、Instructor によって生成された構造化 オブジェクト を自動的に追跡し、バージョン管理 します。 | + +## 実験 を容易にするために `Model` を作成する + +多くの動的な要素がある場合、実験 の整理は困難になります。[`Model`](../core-types/models) クラスを使用すると、システムプロンプトや使用している モデル など、アプリケーション の 実験 的な詳細をキャプチャして整理できます。これにより、アプリケーション の異なるイテレーションを整理し、比較するのに役立ちます。 + +コード の バージョン管理 や入力/出力のキャプチャに加えて、[`Model`](../core-types/models) は アプリケーション の 振る舞い を制御する構造化された パラメータ をキャプチャし、どの パラメータ が最も効果的であったかを簡単に見つけられるようにします。また、Weave の Models は `serve`(以下を参照)や [`Evaluations`](../core-types/evaluations) と併用することもできます。 + +以下の例では、`PersonExtractor` を使って 実験 できます。これらのいずれかを変更するたびに、`PersonExtractor` の新しい _バージョン_ が作成されます。 + +```python lines +import asyncio +from typing import List, Iterable + +import instructor +import weave +from openai import AsyncOpenAI +from pydantic import BaseModel + + +# 期待する出力構造を定義 +class Person(BaseModel): + person_name: str + age: int + + +# Weave を初期化 +weave.init(project_name="instructor-test") + +# OpenAI クライアントにパッチを適用 +lm_client = instructor.from_openai(AsyncOpenAI()) + + +class PersonExtractor(weave.Model): + openai_model: str + max_retries: int + + @weave.op() + async def predict(self, text: str) -> List[Person]: + model = await lm_client.chat.completions.create( + model=self.openai_model, + response_model=Iterable[Person], + max_retries=self.max_retries, + stream=True, + messages=[ + { + "role": "system", + "content": "You are a perfect entity extraction system", + }, + { + "role": "user", + "content": f"Extract `{text}`", + }, + ], + ) + return [m async for m in model] + + +model = PersonExtractor(openai_model="gpt-4", max_retries=2) +asyncio.run(model.predict("John is 30 years old")) +``` + +| ![](/weave/guides/integrations/imgs/instructor/instructor_weave_model.png) | +|---------------------------------------------------------------------------| +| [`Model`](../core-types/models) を使用した呼び出しの トレース と バージョン管理 | + +## Weave Model をサービングする + +`weave.Model` オブジェクト の Weave リファレンスを指定することで、FastAPI サーバーを起動して [`serve`](https://wandb.github.io/weave/guides/tools/serve) することができます。 + +| [![](/weave/guides/integrations/imgs/instructor/instructor_serve.png)](https://wandb.ai/geekyrakshit/instructor-test/weave/objects/PersonExtractor/versions/xXpMsJvaiTOjKafz1TnHC8wMgH5ZAAwYOaBMvHuLArI) | +|----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 任意の `weave.Model` の Weave リファレンスは、モデル に移動して UI からコピーすることで確認できます。 | + +ターミナル で次の コマンド を使用して モデル をサービングできます。 + +```shell +weave serve weave://your_entity/project-name/YourModel: +``` \ No newline at end of file diff --git a/ja/weave/guides/integrations/js.mdx b/ja/weave/guides/integrations/js.mdx new file mode 100644 index 0000000000..8a4576532d --- /dev/null +++ b/ja/weave/guides/integrations/js.mdx @@ -0,0 +1,93 @@ +--- +title: 'TypeScript SDK: サードパーティ Integration ガイド' +description: Weave TypeScript SDK を使用したサードパーティライブラリとの統合 +--- + +このガイドでは、Weave TypeScript SDK を使用してサードパーティライブラリ(例:OpenAI)をインテグレーションする方法について説明します。Weave は自動計装をサポートしており、セットアップを簡素化し、手動での configuration(設定)の必要性を減らします。 + + +**変更点** +[PR #4554](https://github.com/wandb/weave/pull/4554) 以降、OpenAI などのサポートされているライブラリは、Weave がロードされる際に自動的にパッチが適用されます。以前のように手動でラップする必要はなくなりました。 + +```ts lines +weave.wrapOpenAI(new OpenAI()); +``` + +通常、Weave はこれを自動的に処理します。ただし、[エッジケース](#advanced-usage) が発生する可能性があります。 + + +## 使用方法 + +CommonJS と ESM の両方を使用できます。 + +### CommonJS + +CommonJS の場合、特別な configuration は必要ありません。自動パッチ適用がそのまま機能します。単純に Weave をインストールしてください。 + +```bash +npm install weave +``` + +### ESM + +ESM の場合、Node の `--import` フラグを使用して自動計装を有効にします。`weave` パッケージがインストールされていれば、`weave/instrument` モジュールが利用可能です。 + +1. Weave をインストールします。 + ```bash + npm install weave + ``` +2. `weave/instrument` モジュールをインポートします。 + ```bash + node --import=weave/instrument dist/main.js + ``` + +## 高度な使用法とトラブルシューティング + +このセクションでは、TypeScript SDK の自動パッチ適用が期待通りに動作しない場合のエッジケースと回避策について説明します。例えば、ESM 専用の 環境、Next.js などのバンドラー設定、または制約のあるランタイム環境では、予期しない問題が発生することがあります。Traces が見当たらない場合やインテグレーションの問題が発生している場合は、ここから確認してください。 + +### `NODE_OPTIONS` の使用(ESM のみ) + + +`NODE_OPTIONS` は環境内のすべての Node.js プロセスに影響を与え、副作用を引き起こす可能性があるため、注意して使用してください。 + + +ESM プロジェクトを使用していて、CLI ツールやフレームワークの制約により CLI フラグを渡せない場合は、`NODE_OPTIONS` 環境変数を設定してください。 + +```bash +export NODE_OPTIONS="--import=weave/instrument" +``` + + +### バンドラーの互換性 + +Next.js などの一部のフレームワークやバンドラーは、実行時に Node がサードパーティライブラリにパッチを適用する機能を妨げる方法でライブラリをバンドルする場合があります。 + +お使いのセットアップがこれに該当する場合は、以下の手順を試してください。 + +1. バンドラーの設定で LLM ライブラリを `external` としてマークします。これにより、ライブラリがバンドルされるのを防ぎ、Weave が実行時に正しくパッチを適用できるようになります。 + + 次の例は、`next.config.js` の設定で `openai` パッケージを external としてマークし、バンドルされないようにする方法を示しています。モジュールは実行時にロードされるため、Weave は自動的にパッチを適用して追跡できます。自動計装を有効にするために、Next.js などのフレームワークを使用する場合にこの設定を利用してください。 + + ```js + externals: { + 'openai': 'commonjs openai' + } + ``` + + +2. パッチの適用が依然として失敗する場合は、[手動パッチ(フォールバックオプション)](#manual-patching-fallback-option) を試してください。 + + +### 手動パッチ(フォールバックオプション) + + +手動パッチはレガシーな手法であり、自動パッチが機能しない場合にのみ使用してください。 + + +場合によっては、引き続き手動計装を使用する必要があるかもしれません。 + +```ts lines +import { wrapOpenAI } from 'weave'; +// OpenAI クライアントを手動でラップする +const client = wrapOpenAI(new OpenAI()); +``` \ No newline at end of file diff --git a/ja/weave/guides/integrations/koog.mdx b/ja/weave/guides/integrations/koog.mdx new file mode 100644 index 0000000000..4d07c51aea --- /dev/null +++ b/ja/weave/guides/integrations/koog.mdx @@ -0,0 +1,116 @@ +--- +title: Koog +description: Weave の組み込み OpenTelemetry サポートを使用して、Kotlin ベースの Koog エージェントをトレースします。単一の + run や複雑な ワークフロー の実行、ツール の呼び出し、プロンプト、完了(completions)をキャプチャし、Kotlin AI アプリケーション の完全なオブザーバビリティを実現します。 +--- + +[Koog](https://docs.koog.ai/) は、単一の run や複雑なワークフローを持つ エージェント を構築するための Kotlin ベースの フレームワーク です。Koog には OpenTelemetry (OTEL) サポートが組み込まれており、トレース を直接 Weave にエクスポートできます。これにより、プロンプト、補完、ツール呼び出し、エンドツーエンド の エージェント 実行に関する豊富な 可視性 が得られます。 + +Weave エクスポーターを有効にすると、Koog は OpenTelemetry スパンを Weave の Projects に転送するため、デバッグやパフォーマンス分析、迅速なイテレーションが可能になります。 + + +![Koog](/weave/guides/integrations/imgs/koog.png) + + +## 事前準備 + +エージェント を実行する前に、以下の 環境 変数を設定してください: + +```bash +export WEAVE_API_KEY="" +export WEAVE_ENTITY="" # W&B の team/entity +export WEAVE_PROJECT_NAME="koog-tracing" # 任意のプロジェクト名。初回使用時に作成されます。 +``` + +## Koog のインストール (Gradle) + +Kotlin プロジェクト に Koog を追加します (Kotlin DSL の例): + +```kotlin +dependencies { + implementation("ai.koog:koog-agents:LATEST_VERSION") +} +``` + +インストールの詳細については、Koog の [公式ドキュメント](https://docs.koog.ai/) を参照してください。 + +## Weave エクスポートの有効化 (OpenTelemetry) + +Koog の OpenTelemetry 機能をインストールし、Weave エクスポーターを追加します。これにより、Weave の OpenTelemetry エンドポイントを使用して、Koog のスパンが Weave の トレース にマッピングされます。 + +以下の例は、`addWeaveExporter` の使用方法を示しています: + +```kotlin +fun main() = runBlocking { + val apiKey = "api-key" + val entity = System.getenv()["WEAVE_ENTITY"] ?: throw IllegalArgumentException("WEAVE_ENTITY is not set") + val projectName = System.getenv()["WEAVE_PROJECT_NAME"] ?: "koog-tracing" + + val agent = AIAgent( + executor = simpleOpenAIExecutor(apiKey), + llmModel = OpenAIModels.CostOptimized.GPT4oMini, + systemPrompt = "You are a code assistant. Provide concise code examples." + ) { + // OpenTelemetry をインストール + install(OpenTelemetry) { + // Weave エクスポーターを追加 + addWeaveExporter() + } + } + + println("Running agent with Weave tracing") + + val result = agent.run(""" + Create a Python function to calculate fibonacci numbers efficiently, + include error handling, type hints, and unit tests. + Verify the implementation works for n=50. + """) + + println("Result: $result\nSee traces on https://wandb.ai/$entity/$projectName/weave/traces") +} +``` + +この関数は Weave の 環境 変数を自動的に読み取りますが、以下のようにエクスポーターの [特定のパラメータ](https://api.koog.ai/agents/agents-features/agents-features-opentelemetry/ai.koog.agents.features.opentelemetry.integration.weave/add-weave-exporter.html?query=fun%20OpenTelemetryConfig.addWeaveExporter(weaveOtelBaseUrl:%20String?%20=%20null,%20weaveEntity:%20String?%20=%20null,%20weaveProjectName:%20String?%20=%20null,%20weaveApiKey:%20String?%20=%20null,%20timeout:%20Duration%20=%2010.seconds)) を 設定 することも可能です: + +```kotlin +install(OpenTelemetry) { + addWeaveExporter( + weaveOtelBaseUrl = "https://trace.wandb.ai", + weaveEntity = System.getenv()["WEAVE_ENTITY"], + weaveProjectName = System.getenv()["WEAVE_PROJECT_NAME"], + weaveApiKey = System.getenv()["WEAVE_API_KEY"], + timeout = 10.seconds + ) +} +``` + +上記の例では: + +- `weaveEntity` と `weaveProjectName` を使用して、トレース を特定の Teams と Projects にルーティングしています。 +- `weaveOtelBaseUrl` を トレース エンドポイント(例:`https://.wandb.io/`)に設定しています。専用の Weave インスタンスを使用する場合にこの パラメータ を使用してください。 + +Koog と Weave の連携を初めて行う場合は、以下のドキュメントを確認することをお勧めします: +* [Koog の Weave エクスポーターガイド](https://docs.koog.ai/opentelemetry-weave-exporter/): エクスポーターに関する詳細 情報 +* [Koog の OpenTelemetry サポートガイド](https://docs.koog.ai/opentelemetry-support/): Koog で OpenTelemetry がどのように動作するかという基本概念 +* [Weave OTEL ドキュメント](../tracking/otel): Weave が OTLP データ をどのように取り込むかに関する 情報 + +## トレース される内容 + +有効にすると、Koog の Weave エクスポーターは Koog の一般的な OTEL インテグレーションと同じスパンをキャプチャします。これには以下が含まれます: + +- エージェント のライフサイクルイベント(開始、停止、エラー) +- LLM とのやり取り(プロンプト、補完、トークン使用量、レイテンシ) +- ツールおよび API 呼び出し(関数呼び出しや外部リクエスト) +- システムコンテキスト(モデル 名、Koog の バージョン、環境 メタデータ) + +これらの トレース を Weave の UI で視覚化し、パフォーマンスや品質を把握できます。Weave での トレース のキャプチャに関する導入については、[Weave の トレース 概要](../tracking/tracing) を参照してください。 + +## サンプル ノートブック + +Weave に トレース をストリーミングする [実行可能な ノートブック](https://docs.koog.ai/examples/Weave/) については、Koog のドキュメントを参照してください。 + +## トラブルシューティング + +- トレース が表示されない場合は、まず `WEAVE_API_KEY`、`WEAVE_ENTITY`、`WEAVE_PROJECT_NAME` が正しく設定されているか確認してください。 +- 使用している 環境 から `https://trace.wandb.ai` にアクセスできること、およびエクスポーターが上記のように 設定 されていることを確認してください。 +- その他のトラブルシューティングやサンプリングに関する ガイド については、Koog の [OpenTelemetry support](https://docs.koog.ai/opentelemetry-support/) を参照してください。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/langchain.mdx b/ja/weave/guides/integrations/langchain.mdx new file mode 100644 index 0000000000..8f5e4d0fa2 --- /dev/null +++ b/ja/weave/guides/integrations/langchain.mdx @@ -0,0 +1,266 @@ +--- +title: LangChain +description: Weave を使用して、LangChain Python ライブラリを通じて行われるすべてのコールを追跡し、ログ を記録します。 +--- + + + Open In Colab + + +Weave は、 [LangChain Python library](https://github.com/langchain-ai/langchain) を介して行われるすべての呼び出しの追跡とログ記録を簡単に行えるように設計されています。 + +LLM を扱う際、デバッグは避けて通れません。 モデル呼び出しの失敗、出力形式の誤り、あるいはネストされたモデル呼び出しによる混乱など、問題の特定が困難な場合があります。 LangChain アプリケーションは多くの場合、複数のステップと LLM 呼び出しの実行で構成されているため、チェーンや エージェント の内部動作を理解することが極めて重要です。 + +Weave は、 [LangChain](https://python.langchain.com/v0.2/docs/introduction/) アプリケーションの トレース を自動的にキャプチャすることで、このプロセスを簡素化します。 これにより、アプリケーションのパフォーマンスを監視・分析し、LLM ワークフローのデバッグや最適化を容易に行うことができます。 + + +## クイックスタート + +使い始めるには、スクリプトの冒頭で `weave.init()` を呼び出すだけです。 `weave.init()` の 引数 は、 トレース を整理するのに役立つ Projects 名です。 + +```python lines {6} +import weave +from langchain_core.prompts import PromptTemplate +from langchain_openai import ChatOpenAI + +# プロジェクト名で Weave を初期化 +weave.init("langchain_demo") + +llm = ChatOpenAI() +prompt = PromptTemplate.from_template("1 + {number} = ") + +llm_chain = prompt | llm + +output = llm_chain.invoke({"number": 2}) + +print(output) +``` + +## 呼び出しメタデータの追跡 + +LangChain 呼び出しから メタデータ を追跡するには、 [`weave.attributes`](/weave/reference/python-sdk#function-attributes) コンテキストマネージャーを使用できます。 このコンテキストマネージャーを使用すると、チェーンや単一のリクエストなど、特定のコードブロックに対してカスタム メタデータ を設定できます。 + +```python lines {6,13} +import weave +from langchain_core.prompts import PromptTemplate +from langchain_openai import ChatOpenAI + +# プロジェクト名で Weave を初期化 +weave.init("langchain_demo") + +llm = ChatOpenAI() +prompt = PromptTemplate.from_template("1 + {number} = ") + +llm_chain = prompt | llm + +with weave.attributes({"my_awesome_attribute": "value"}): + output = llm_chain.invoke() + +print(output) +``` +Weave は LangChain 呼び出しの トレース に対して メタデータ を自動的に追跡します。 以下に示すように、Weave のウェブインターフェースで メタデータ を確認できます。 + +[![langchain_attributes.png](/weave/guides/integrations/imgs/langchain_attributes.png)](https://wandb.ai/parambharat/langchain_demo/weave/traces?cols=%7B%22attributes.weave.client_version%22%3Afalse%2C%22attributes.weave.os_name%22%3Afalse%2C%22attributes.weave.os_release%22%3Afalse%2C%22attributes.weave.os_version%22%3Afalse%2C%22attributes.weave.source%22%3Afalse%2C%22attributes.weave.sys_version%22%3Afalse%7D) + +## トレース + +LLM アプリケーションの トレース を中央データベースに保存することは、開発と プロダクション の両方のフェーズで不可欠です。 これらの トレース は、貴重な データセット を提供することで、アプリケーションのデバッグと改善に欠かせないものとなります。 + +Weave は LangChain アプリケーションの トレース を自動的にキャプチャします。 プロンプトテンプレート、チェーン、LLM 呼び出し、ツール、エージェント のステップなど、LangChain ライブラリを介して行われるすべての呼び出しを追跡し、ログを記録します。 トレース は Weave のウェブインターフェースで確認できます。 + +[![langchain_trace.png](/weave/guides/integrations/imgs/langchain_trace.png)](https://wandb.ai/parambharat/langchain_demo/weave/calls) + +## 手動による呼び出しのトレース + +自動追跡に加えて、 `WeaveTracer` コールバック または `weave_tracing_enabled` コンテキストマネージャーを使用して、手動で呼び出しを トレース することもできます。 これらの メソッド は、LangChain アプリケーションの個々の部分でリクエスト コールバック を使用するのと似ています。 + +**注意:** Weave はデフォルトで LangChain Runnable を トレース します。これは `weave.init()` を呼び出すと有効になります。 `weave.init()` を呼び出す前に環境変数 `WEAVE_TRACE_LANGCHAIN` を `"false"` に設定することで、この 振る舞い を無効にできます。 これにより、アプリケーション内の特定のチェーンや個々のリクエストの トレース 動作を制御できるようになります。 + +### `WeaveTracer` の使用 + +`WeaveTracer` コールバック を個々の LangChain コンポーネントに渡して、特定のリクエストを トレース できます。 + +```python lines {11,13,15,22} +import os + +os.environ["WEAVE_TRACE_LANGCHAIN"] = "false" # <- 明示的にグローバルトレースを無効化 + +from weave.integrations.langchain import WeaveTracer +from langchain_core.prompts import PromptTemplate +from langchain_openai import ChatOpenAI +import weave + +# プロジェクト名で Weave を初期化 +weave.init("langchain_demo") # <-- 環境変数が false に設定されているため、ここではトレースは有効になりません + +weave_tracer = WeaveTracer() + +config = {"callbacks": [weave_tracer]} + +llm = ChatOpenAI() +prompt = PromptTemplate.from_template("1 + {number} = ") + +llm_chain = prompt | llm + +output = llm_chain.invoke({"number": 2}, config=config) # <-- このチェーンの実行に対してのみトレースが有効になります + +llm_chain.invoke({"number": 4}) # <-- LangChain呼び出しのトレースは有効になりませんが、openai呼び出しは引き続きトレースされます +``` + +### `weave_tracing_enabled` コンテキストマネージャーの使用 + +あるいは、 `weave_tracing_enabled` コンテキストマネージャーを使用して、特定のコードブロックの トレース を有効にすることもできます。 + +```python lines {11,18} +import os + +os.environ["WEAVE_TRACE_LANGCHAIN"] = "false" # <- 明示的にグローバルトレースを無効化 + +from weave.integrations.langchain import weave_tracing_enabled +from langchain_core.prompts import PromptTemplate +from langchain_openai import ChatOpenAI +import weave + +# プロジェクト名で Weave を初期化 +weave.init("langchain_demo") # <-- 環境変数が false に設定されているため、ここではトレースは有効になりません + +llm = ChatOpenAI() +prompt = PromptTemplate.from_template("1 + {number} = ") + +llm_chain = prompt | llm + +with weave_tracing_enabled(): # <-- このチェーンの実行に対してのみトレースが有効になります + output = llm_chain.invoke({"number": 2}) + + +llm_chain.invoke({"number": 4}) # <-- LangChain呼び出しのトレースは有効になりませんが、openai呼び出しは引き続きトレースされます +``` + +## 設定 + +`weave.init` を呼び出すと、環境変数 `WEAVE_TRACE_LANGCHAIN` が `"true"` に設定され、 トレース が有効になります。 これにより、Weave が LangChain アプリケーションの トレース を自動的にキャプチャできるようになります。 この 振る舞い を無効にしたい場合は、環境変数を `"false"` に設定してください。 + +## LangChain コールバックとの関係 + +### 自動ログ記録 + +`weave.init()` による自動 ログ 記録は、LangChain アプリケーションのすべてのコンポーネントにコンストラクタ コールバック を渡すのと似ています。 つまり、プロンプトテンプレート、チェーン、LLM 呼び出し、ツール、エージェント のステップを含むすべてのインタラクションが、アプリケーション全体でグローバルに追跡されます。 + +### 手動ログ記録 + +手動 ログ 記録 メソッド ( `WeaveTracer` および `weave_tracing_enabled` )は、LangChain アプリケーションの個々の部分でリクエスト コールバック を使用するのと似ています。 これらの メソッド を使用すると、アプリケーションのどの部分を トレース するかをより細かく制御できます。 + +- **コンストラクタコールバック:** チェーンやコンポーネント全体に適用され、すべてのインタラクションを一貫して ログ 記録します。 +- **リクエストコールバック:** 特定のリクエストに適用され、特定の実行の詳細な トレース を可能にします。 + +Weave を LangChain と統合することで、LLM アプリケーションの包括的な ログ 記録と監視が可能になり、デバッグやパフォーマンスの最適化が容易になります。 + +詳細については、 [LangChain documentation](https://python.langchain.com/v0.2/docs/how_to/debugging/#tracing) を参照してください。 + +## Models と 評価 + +プロンプト、 モデル 設定、推論 パラメータ など複数のコンポーネントがある中で、さまざまな ユースケース に向けたアプリケーション内の LLM を整理し 評価 することは困難です。 [`weave.Model`](/weave/guides/core-types/models) を使用すると、システムプロンプトや使用した モデル などの 実験 の詳細をキャプチャして整理でき、異なるイテレーションの比較が容易になります。 + +次の例は、LangChain のチェーンを `WeaveModel` でラップする方法を示しています。 + +```python lines {10,12,16} +import json +import asyncio + +import weave + +from langchain_core.prompts import PromptTemplate +from langchain_openai import ChatOpenAI + +# プロジェクト名で Weave を初期化 +weave.init("langchain_demo") + +class ExtractFruitsModel(weave.Model): + model_name: str + prompt_template: str + + @weave.op() + async def predict(self, sentence: str) -> dict: + llm = ChatOpenAI(model=self.model_name, temperature=0.0) + prompt = PromptTemplate.from_template(self.prompt_template) + + llm_chain = prompt | llm + response = llm_chain.invoke({"sentence": sentence}) + result = response.content + + if result is None: + raise ValueError("No response from model") + parsed = json.loads(result) + return parsed + +model = ExtractFruitsModel( + model_name="gpt-3.5-turbo-1106", + prompt_template='Extract fields ("fruit": , "color": , "flavor": ) from the following text, as json: {sentence}', +) +sentence = "There are many fruits that were found on the recently discovered planet Goocrux. There are neoskizzles that grow there, which are purple and taste like candy." + +prediction = asyncio.run(model.predict(sentence)) + +# Jupyter Notebookの場合はこちらを実行: +# prediction = await model.predict(sentence) + +print(prediction) +``` +この コード により、Weave UI で可視化可能な モデル が作成されます。 + +[![langchain_model.png](/weave/guides/integrations/imgs/langchain_model.png)](https://wandb.ai/parambharat/langchain_demo/weave/object-versions?filter=%7B%22baseObjectClass%22%3A%22Model%22%7D&peekPath=%2Fparambharat%2Flangchain_demo%2Fobjects%2FExtractFruitsModel%2Fversions%2FBeoL6WuCH8wgjy6HfmuBMyKzArETg1oAFpYaXZSq1hw%3F%26) + +Weave Models は `serve` や [`Evaluations`](/weave/guides/core-types/evaluations) と併用することもできます。 + +### 評価 (Evaluations) +評価 は、 モデル のパフォーマンスを測定するのに役立ちます。 [`weave.Evaluation`](/weave/guides/core-types/evaluations) クラスを使用すると、特定のタスクや Datasets に対する モデル のパフォーマンスを把握でき、異なる モデル やアプリケーションのイテレーションの比較が容易になります。 次の例は、作成した モデル を 評価 する方法を示しています。 + +```python lines + +from weave.scorers import MultiTaskBinaryClassificationF1 + +sentences = [ + "There are many fruits that were found on the recently discovered planet Goocrux. There are neoskizzles that grow there, which are purple and taste like candy.", + "Pounits are a bright green color and are more savory than sweet.", + "Finally, there are fruits called glowls, which have a very sour and bitter taste which is acidic and caustic, and a pale orange tinge to them.", +] +labels = [ + {"fruit": "neoskizzles", "color": "purple", "flavor": "candy"}, + {"fruit": "pounits", "color": "bright green", "flavor": "savory"}, + {"fruit": "glowls", "color": "pale orange", "flavor": "sour and bitter"}, +] +examples = [ + {"id": "0", "sentence": sentences[0], "target": labels[0]}, + {"id": "1", "sentence": sentences[1], "target": labels[1]}, + {"id": "2", "sentence": sentences[2], "target": labels[2]}, +] + +@weave.op() +def fruit_name_score(target: dict, output: dict) -> dict: + return {"correct": target["fruit"] == output["fruit"]} + + +evaluation = weave.Evaluation( + dataset=examples, + scorers=[ + MultiTaskBinaryClassificationF1(class_names=["fruit", "color", "flavor"]), + fruit_name_score, + ], +) +scores = asyncio.run(evaluation.evaluate(model))) +# Jupyter Notebookの場合はこちらを実行: +# scores = await evaluation.evaluate(model) + +print(scores) +``` + +この コード は、Weave UI で可視化可能な 評価 トレース を生成します。 + +[![langchain_evaluation.png](/weave/guides/integrations/imgs/langchain_eval.png)](https://wandb.ai/parambharat/langchain_demo/weave/calls?filter=%7B%22traceRootsOnly%22%3Atrue%7D&peekPath=%2Fparambharat%2Flangchain_demo%2Fcalls%2F44c3f26c-d9d3-423e-b434-651ea5174be3) + +Weave を LangChain と統合することで、LLM アプリケーションの包括的な ログ 記録と監視が保証され、デバッグやパフォーマンスの最適化が容易になります。 + + +## 既知の問題 + +- **非同期呼び出しのトレース** - LangChain の `AsyncCallbackManager` の実装におけるバグにより、非同期呼び出しが正しい順序で トレース されない問題があります。 これを修正するために [PR](https://github.com/langchain-ai/langchain/pull/23909) を提出済みです。 そのため、LangChain Runnable で `ainvoke`、 `astream`、 `abatch` メソッド を使用する場合、 トレース 内の呼び出し順序が正確でない可能性があります。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/litellm.mdx b/ja/weave/guides/integrations/litellm.mdx new file mode 100644 index 0000000000..0e9fe83ce9 --- /dev/null +++ b/ja/weave/guides/integrations/litellm.mdx @@ -0,0 +1,153 @@ +--- +title: LiteLLM +description: LiteLLM を介して行われた LLM コールを自動的に追跡し、ログを記録します +--- + + + Open In Colab + + +Weave は、 `weave.init()` を呼び出した後、 LiteLLM を介して行われる LLM 呼び出しを自動的に追跡し、 ログ を記録します。 + +## Traces + +開発中および プロダクション の両方において、 LLM アプリケーション の トレース を中央の データベース に保存することは重要です。 これらの トレース は、 デバッグ や、 アプリケーション を改善するための データセット として活用できます。 + +> **注意:** LiteLLM を使用する場合、 `from litellm import completion` ではなく、 `import litellm` を使用して ライブラリ をインポートし、 `litellm.completion` で補完機能を呼び出すようにしてください。 これにより、 すべての関数と パラメータ が正しく参照されます。 + +Weave は LiteLLM の トレース を自動的に取得します。 通常通り ライブラリ を使用できます。 まずは `weave.init()` を呼び出すことから始めましょう: + +```python lines {4} +import litellm +import weave + +# Weaveを初期化 +weave.init("weave_litellm_integration") + +openai_response = litellm.completion( + model="gpt-3.5-turbo", + messages=[{"role": "user", "content": "Translate 'Hello, how are you?' to French"}], + max_tokens=1024 +) +print(openai_response.choices[0].message.content) + +claude_response = litellm.completion( + model="claude-3-5-sonnet-20240620", + messages=[{"role": "user", "content": "Translate 'Hello, how are you?' to French"}], + max_tokens=1024 +) +print(claude_response.choices[0].message.content) +``` + +これで Weave は、 LiteLLM を通じて行われるすべての LLM 呼び出しを追跡し、 ログ に記録します。 Weave のウェブインターフェースで トレース を確認できます。 + +## 独自の op でラップする + +Weave の op を使用すると、 実験 に伴い コード を自動的に バージョン管理 し、 入出力を取得することで、 結果 の再現性を高めることができます。 `@weave.op()` デコレータを付けた関数を作成し、 その中で LiteLLM の `completion` 関数を呼び出すだけで、 Weave が入出力を追跡します。 以下に例を示します: + +```python lines {4,6} +import litellm +import weave + +weave.init("weave_litellm_integration") + +@weave.op() +def translate(text: str, target_language: str, model: str) -> str: + # LiteLLMを呼び出すopを作成 + response = litellm.completion( + model=model, + messages=[{"role": "user", "content": f"Translate '{text}' to {target_language}"}], + max_tokens=1024 + ) + return response.choices[0].message.content + +print(translate("Hello, how are you?", "French", "gpt-3.5-turbo")) +print(translate("Hello, how are you?", "Spanish", "claude-3-5-sonnet-20240620")) +``` + +## 実験を容易にするための `Model` の作成 + +多くの要素が動的に変化する状況では、 実験 の整理が難しくなります。 `Model` クラスを使用すると、 システムプロンプトや使用している モデル などの アプリケーション の 実験 詳細を取得し、 整理することができます。 これにより、 アプリケーション の異なる反復(イテレーション)の整理や比較が容易になります。 + +コード の バージョン管理 や入出力の取得に加えて、 Models は アプリケーション の 振る舞い を制御する構造化された パラメータ を取得するため、 どの パラメータ が最適であったかを簡単に見つけ出すことができます。 また、 Weave の Models は `serve` や Evaluations と併用することも可能です。 + +以下の例では、 異なる モデル や temperature(温度)を試すことができます: + +```python lines {4,6,10} +import litellm +import weave + +weave.init('weave_litellm_integration') + +class TranslatorModel(weave.Model): + model: str + temperature: float + + @weave.op() + def predict(self, text: str, target_language: str): + response = litellm.completion( + model=self.model, + messages=[ + {"role": "system", "content": f"You are a translator. Translate the given text to {target_language}."}, + {"role": "user", "content": text} + ], + max_tokens=1024, + temperature=self.temperature + ) + return response.choices[0].message.content + +# 異なるモデルでインスタンスを作成 +gpt_translator = TranslatorModel(model="gpt-3.5-turbo", temperature=0.3) +claude_translator = TranslatorModel(model="claude-3-5-sonnet-20240620", temperature=0.1) + +# 翻訳に異なるモデルを使用 +english_text = "Hello, how are you today?" + +print("GPT-3.5 Translation to French:") +print(gpt_translator.predict(english_text, "French")) + +print("\nClaude-3.5 Sonnet Translation to Spanish:") +print(claude_translator.predict(english_text, "Spanish")) +``` + +## 関数呼び出し (Function Calling) + +LiteLLM は、 対応している モデル で関数呼び出しをサポートしています。 Weave はこれらの関数呼び出しを自動的に追跡します。 + +```python lines {4} +import litellm +import weave + +weave.init("weave_litellm_integration") + +response = litellm.completion( + model="gpt-3.5-turbo", + messages=[{"role": "user", "content": "Translate 'Hello, how are you?' to French"}], + functions=[ + { + "name": "translate", + "description": "Translate text to a specified language", + "parameters": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "The text to translate", + }, + "target_language": { + "type": "string", + "description": "The language to translate to", + } + }, + "required": ["text", "target_language"], + }, + }, + ], +) + +print(response) +``` + +プロンプトで使用された関数を自動的に取得し、 それらを バージョン管理 された状態で保持します。 + +[![litellm.gif](/weave/guides/integrations/imgs/litellm.gif)](https://wandb.ai/a-sh0ts/weave_litellm_integration/weave/calls) \ No newline at end of file diff --git a/ja/weave/guides/integrations/llamaindex.mdx b/ja/weave/guides/integrations/llamaindex.mdx new file mode 100644 index 0000000000..b4e2e7c9e4 --- /dev/null +++ b/ja/weave/guides/integrations/llamaindex.mdx @@ -0,0 +1,199 @@ +--- +title: LlamaIndex +description: Weave を使用して LlamaIndex アプリケーションを自動的にトレースし、デバッグします。すべての LLM 呼び出し、RAG パイプライン、エージェント + のステップ、および 評価 をキャプチャし、データと連携した AI ワークフロー の包括的なオブザーバビリティを実現します。 +--- + +Weave は、[LlamaIndex Python ライブラリ](https://github.com/run-llama/llama_index) を通じて行われるすべての呼び出しの追跡とログ記録を簡素化するように設計されています。 + +LLM を扱う際、デバッグは避けて通れません。モデル呼び出しの失敗、出力のフォーマットミス、あるいは入れ子になったモデル呼び出しによる混乱など、問題の特定は困難な場合があります。[LlamaIndex](https://docs.llamaindex.ai/en/stable/) アプリケーションは多くの場合、複数のステップと LLM 呼び出しの実行で構成されるため、チェーンやエージェントの内部動作を理解することが極めて重要です。 + +Weave は、LlamaIndex アプリケーションの Traces を自動的にキャプチャすることで、このプロセスを簡素化します。これにより、アプリケーションのパフォーマンスを監視および分析できるようになり、LLM ワークフローのデバッグや最適化が容易になります。また、Weave は評価ワークフローにも役立ちます。 + +## はじめに + +開始するには、スクリプトの冒頭で `weave.init()` を呼び出すだけです。`weave.init()` の引数には、Traces を整理するのに役立つ Projects 名を指定します。 + +```python lines {5} +import weave +from llama_index.core.chat_engine import SimpleChatEngine + +# プロジェクト名で Weave を初期化 +weave.init("llamaindex_demo") + +chat_engine = SimpleChatEngine.from_defaults() +response = chat_engine.chat( + "Say something profound and romantic about fourth of July" +) +print(response) +``` + +上記の例では、内部で OpenAI 呼び出しを行うシンプルな LlamaIndex チャットエンジンを作成しています。以下のトレースを確認してください: + +[![simple_llamaindex.png](/weave/guides/integrations/imgs/simple_llamaindex.png)](https://wandb.ai/wandbot/test-llamaindex-weave/weave/calls/b6b5d898-2df8-4e14-b553-66ce84661e74) + +## Tracing + +LlamaIndex は、データと LLM を簡単に接続できることで知られています。シンプルな RAG アプリケーションには、埋め込みステップ、リトリーバル(検索)ステップ、そしてレスポンス合成ステップが必要です。複雑さが増すにつれて、開発とプロダクションの両方のフェーズで、個々のステップの Traces を中央データベースに保存することが重要になります。 + +これらの Traces は、アプリケーションのデバッグと改善に不可欠です。Weave は、プロンプトテンプレート、LLM 呼び出し、ツール、エージェントのステップなど、LlamaIndex ライブラリを通じて行われるすべての呼び出しを自動的に追跡します。Traces は Weave のウェブインターフェースで表示できます。 + +以下は、LlamaIndex の [Starter Tutorial (OpenAI)](https://docs.llamaindex.ai/en/stable/getting_started/starter_example/) に基づくシンプルな RAG パイプラインの例です: + +```python lines {5} +import weave +from llama_index.core import VectorStoreIndex, SimpleDirectoryReader + +# プロジェクト名で Weave を初期化 +weave.init("llamaindex_demo") + +# `data` ディレクトリーに `.txt` ファイルがあることを想定 +documents = SimpleDirectoryReader("data").load_data() +index = VectorStoreIndex.from_documents(documents) + +query_engine = index.as_query_engine() +response = query_engine.query("What did the author do growing up?") +print(response) +``` + +トレースのタイムラインは「イベント」をキャプチャするだけでなく、実行時間、コスト、および該当する場合はトークン数も記録します。トレースをドリルダウンして、各ステップの入力と出力を確認できます。 + +[![llamaindex_rag.png](/weave/guides/integrations/imgs/llamaindex_rag.png)](https://wandb.ai/wandbot/test-llamaindex-weave/weave/calls?filter=%7B%22traceRootsOnly%22%3Atrue%7D&peekPath=%2Fwandbot%2Ftest-llamaindex-weave%2Fcalls%2F6ac53407-1bb7-4c38-b5a3-c302bd877a11%3Ftracetree%3D1) + +## ワンクリック・オブザーバビリティ(可観測性) 🔭 + +LlamaIndex は、プロダクション環境で原則に基づいた LLM アプリケーションを構築できるように、[ワンクリック・オブザーバビリティ 🔭](https://docs.llamaindex.ai/en/stable/module_guides/observability/) を提供しています。 + +私たちのインテグレーションはこの LlamaIndex の機能を活用し、[`WeaveCallbackHandler()`](https://github.com/wandb/weave/blob/master/weave/integrations/llamaindex/llamaindex.py) を自動的に `llama_index.core.global_handler` に設定します。したがって、LlamaIndex と Weave のユーザーとして必要なのは、Weave の Run を初期化する `weave.init()` を実行することだけです。 + +## 実験を容易にするための `Model` 作成 + +プロンプト、モデル設定、推論パラメータなど、複数のコンポーネントがある様々なユースケースにおいて、アプリケーション内の LLM を整理し評価することは困難です。[`weave.Model`](/weave/guides/core-types/models) を使用すると、システムプロンプトや使用するモデルなどの実験の詳細をキャプチャして整理でき、異なるイテレーション間の比較が容易になります。 + +次の例は、[weave/data](https://github.com/wandb/weave/tree/master/data) フォルダにあるデータを使用して、`WeaveModel` 内で LlamaIndex クエリエンジンを構築する方法を示しています。 + +```python lines {16,52,61} +import weave + +from llama_index.core import VectorStoreIndex, SimpleDirectoryReader +from llama_index.core.node_parser import SentenceSplitter +from llama_index.llms.openai import OpenAI +from llama_index.core import PromptTemplate + + +PROMPT_TEMPLATE = """ +You are given with relevant information about Paul Graham. Answer the user query only based on the information provided. Don't make up stuff. + +User Query: {query_str} +Context: {context_str} +Answer: +""" + +class SimpleRAGPipeline(weave.Model): + chat_llm: str = "gpt-4" + temperature: float = 0.1 + similarity_top_k: int = 2 + chunk_size: int = 256 + chunk_overlap: int = 20 + prompt_template: str = PROMPT_TEMPLATE + + def get_llm(self): + return OpenAI(temperature=self.temperature, model=self.chat_llm) + + def get_template(self): + return PromptTemplate(self.prompt_template) + + def load_documents_and_chunk(self, data): + documents = SimpleDirectoryReader(data).load_data() + splitter = SentenceSplitter( + chunk_size=self.chunk_size, + chunk_overlap=self.chunk_overlap, + ) + nodes = splitter.get_nodes_from_documents(documents) + return nodes + + def get_query_engine(self, data): + nodes = self.load_documents_and_chunk(data) + index = VectorStoreIndex(nodes) + + llm = self.get_llm() + prompt_template = self.get_template() + + return index.as_query_engine( + similarity_top_k=self.similarity_top_k, + llm=llm, + text_qa_template=prompt_template, + ) + + @weave.op() + def predict(self, query: str): + query_engine = self.get_query_engine( + # このデータは weave リポジトリの data/paul_graham にあります + "data/paul_graham", + ) + response = query_engine.query(query) + return {"response": response.response} + +weave.init("test-llamaindex-weave") + +rag_pipeline = SimpleRAGPipeline() +response = rag_pipeline.predict("What did the author do growing up?") +print(response) +``` + +この `weave.Model` を継承した `SimpleRAGPipeline` クラスは、この RAG パイプラインの重要なパラメータを整理します。`predict` メソッドを `weave.op()` でデコレートすることで、追跡が可能になります。 + +[![llamaindex_model.png](/weave/guides/integrations/imgs/llamaindex_model.png)](https://wandb.ai/wandbot/test-llamaindex-weave/weave/calls?filter=%7B%22traceRootsOnly%22%3Atrue%7D&peekPath=%2Fwandbot%2Ftest-llamaindex-weave%2Fcalls%2Fa82afbf4-29a5-43cd-8c51-603350abeafd%3Ftracetree%3D1) + +## `weave.Evaluation` による評価の実施 + +Evaluations は、アプリケーションのパフォーマンスを測定するのに役立ちます。[`weave.Evaluation`](/weave/guides/core-types/evaluations) クラスを使用することで、特定のタスクやデータセットに対してモデルがどれだけ適切に機能するかをキャプチャでき、異なるモデルやアプリケーションのイテレーションを比較しやすくなります。次の例は、作成したモデルを評価する方法を示しています。 + +```python lines {25,32,36} +import asyncio +from llama_index.core.evaluation import CorrectnessEvaluator + +eval_examples = [ + { + "id": "0", + "query": "What programming language did Paul Graham learn to teach himself AI when he was in college?", + "ground_truth": "Paul Graham learned Lisp to teach himself AI when he was in college.", + }, + { + "id": "1", + "query": "What was the name of the startup Paul Graham co-founded that was eventually acquired by Yahoo?", + "ground_truth": "The startup Paul Graham co-founded that was eventually acquired by Yahoo was called Viaweb.", + }, + { + "id": "2", + "query": "What is the capital city of France?", + "ground_truth": "I cannot answer this question because no information was provided in the text.", + }, +] + +llm_judge = OpenAI(model="gpt-4", temperature=0.0) +evaluator = CorrectnessEvaluator(llm=llm_judge) + +@weave.op() +def correctness_evaluator(query: str, ground_truth: str, output: dict): + result = evaluator.evaluate( + query=query, reference=ground_truth, response=output["response"] + ) + return {"correctness": float(result.score)} + +evaluation = weave.Evaluation(dataset=eval_examples, scorers=[correctness_evaluator]) + +rag_pipeline = SimpleRAGPipeline() + +asyncio.run(evaluation.evaluate(rag_pipeline)) +``` + +この評価は前のセクションの例に基づいています。`weave.Evaluation` を使用した評価には、評価データセット、スコアラー関数、および `weave.Model` が必要です。これら 3 つの主要コンポーネントに関する注意点は以下の通りです。 + +- 評価サンプルの辞書のキーが、スコアラー関数の引数および `weave.Model` の `predict` メソッドの引数と一致していることを確認してください。 +- `weave.Model` には、`predict`、`infer`、または `forward` という名前のメソッドが必要です。追跡のためにこのメソッドを `weave.op()` でデコレートしてください。 +- スコアラー関数は `weave.op()` でデコレートし、`output` を名前付き引数として持つ必要があります。 + +[![llamaindex_evaluation.png](/weave/guides/integrations/imgs/llamaindex_evaluation.png)](https://wandb.ai/wandbot/llamaindex-weave/weave/calls?filter=%7B%22opVersionRefs%22%3A%5B%22weave%3A%2F%2F%2Fwandbot%2Fllamaindex-weave%2Fop%2FEvaluation.predict_and_score%3ANmwfShfFmgAhDGLXrF6Xn02T9MIAsCXBUcifCjyKpOM%22%5D%2C%22parentId%22%3A%2233491e66-b580-47fa-9d43-0cd6f1dc572a%22%7D&peekPath=%2Fwandbot%2Fllamaindex-weave%2Fcalls%2F33491e66-b580-47fa-9d43-0cd6f1dc572a%3Ftracetree%3D1) + +Weave を LlamaIndex と統合することで、LLM アプリケーションの包括的なログ記録と監視が保証され、評価を使用したデバッグとパフォーマンスの最適化が容易になります。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/local_models.mdx b/ja/weave/guides/integrations/local_models.mdx new file mode 100644 index 0000000000..9240da1cbd --- /dev/null +++ b/ja/weave/guides/integrations/local_models.mdx @@ -0,0 +1,32 @@ +# Local Models + +多くの開発者が Llama-3、Mixtral、Gemma、Phi などのオープンソースモデルをローカルでダウンロードして実行しています。これらのモデルをローカルで実行する方法は数多くありますが、Weave は OpenAI SDK 互換をサポートしているものであれば、そのうちのいくつかを標準でサポートしています。 + +## ローカルモデルの関数を `@weave.op()` でラップする + +`weave.init('')` で Weave を初期化し、LLM への呼び出しを `weave.op()` でラップするだけで、任意の LLM を簡単に Weave と統合できます。詳細については、[トレーシング](/weave/guides/tracking/tracing) のガイドを参照してください。 + +## OpenAI SDK コードをローカルモデル用に更新する + +OpenAI SDK 互換をサポートするすべてのフレームワークやサービスにおいて、いくつかの軽微な変更が必要になります。 + +最も重要かつ最初に行うべきことは、`openai.OpenAI()` の初期化時における `base_url` の変更です。 + +```python lines +client = openai.OpenAI( + # ベースURLをローカルサーバーのアドレスに変更します + base_url="http://localhost:1234", +) +``` + +ローカルモデルの場合、`api_key` は任意の文字列を指定できますが、必ず上書きする必要があります。そうしないと、OpenAI SDK は環境変数からキーを取得しようとしてエラーを表示することがあります。 + +## OpenAI SDK をサポートするローカルモデルランナー + +以下は、Hugging Face からモデルをダウンロードしてコンピュータ上で実行でき、OpenAI SDK 互換をサポートしているアプリのリストです。 + +1. Nomic [GPT4All](https://www.nomic.ai/gpt4all) - 設定内の Local Server 経由でサポート ([FAQ](https://docs.gpt4all.io/gpt4all_help/faq.html)) +1. [LMStudio](https://lmstudio.ai/) - Local Server による OpenAI SDK サポート [ドキュメント](https://lmstudio.ai/docs/local-server) +1. [Ollama](https://ollama.com/) - OpenAI SDK の [実験的サポート](https://github.com/ollama/ollama/blob/main/docs/openai.mdx) +1. llama.cpp - [llama-cpp-python](https://llama-cpp-python.readthedocs.io/en/latest/server/) Python パッケージ経由 +1. [llamafile](https://github.com/Mozilla-Ocho/llamafile#other-example-llamafiles) - Llamafile 実行時に `http://localhost:8080/v1` で自動的に OpenAI SDK をサポート \ No newline at end of file diff --git a/ja/weave/guides/integrations/mcp.mdx b/ja/weave/guides/integrations/mcp.mdx new file mode 100644 index 0000000000..1e6516f983 --- /dev/null +++ b/ja/weave/guides/integrations/mcp.mdx @@ -0,0 +1,208 @@ +--- +title: Model Context Protocol (MCP) と Weave +description: Weave を使用して、MCP クライアントと MCP サーバー間のアクティビティをトレースする +--- + + + Open In Colab + + +Model Context Protocol (MCP) は、AI アプリケーションが大規模言語モデル (LLM) と情報を交換できるようにするための標準化された通信プロトコルです。ハードウェアの互換性を変革したユニバーサルコネクタと同様に、MCP は LLM が様々なデータソースにアクセスし、外部ツールと対話するためのインターフェースを提供します。これにより、新しいサービスごとにカスタムインテグレーションを作成する必要がなくなります。 + +Weave インテグレーションを使用すると、MCP クライアントと MCP サーバー間のアクティビティをトレースできます。これにより、MCP ベースのシステム全体におけるツールの呼び出し、リソースへのアクセス、プロンプトの生成を詳細に可視化できます。 + +## 仕組み + + +現在、このインテグレーションではクライアント側とサーバー側の操作を個別にキャプチャしますが、それらの相互作用をエンドツーエンドで可視化することはできません。エンドツーエンドの観測可能性を実現するために、MCP に OpenTelemetry トレースのサポートを追加する提案が進行中です。詳細については、[GitHub discussion #269](https://github.com/modelcontextprotocol/modelcontextprotocol/discussions/269) を参照してください。 + + +Weave インテグレーションは、コアメソッドを [`weave.op()`](../tracking/ops) デコレータでパッチすることにより、Model Context Protocol (MCP) の主要コンポーネントを自動的にトレースします。具体的には、[`mcp.server.fastmcp.FastMCP`](https://github.com/modelcontextprotocol/python-sdk/blob/b4c7db6a50a5c88bae1db5c1f7fba44d16eebc6e/src/mcp/server/fastmcp/server.py#L109) および [`mcp.ClientSession`](https://github.com/modelcontextprotocol/python-sdk/blob/b4c7db6a50a5c88bae1db5c1f7fba44d16eebc6e/src/mcp/client/session.py#L84) クラスのメソッドをパッチします。 + +このインテグレーションを通じて、Weave は以下の MCP コンポーネントをトレースします: + +- [Tools](https://modelcontextprotocol.io/docs/concepts/tools) +- [Resources](https://modelcontextprotocol.io/docs/concepts/resources) +- [Prompts](https://modelcontextprotocol.io/docs/concepts/prompts) + +[![mcp_trace_timeline.png](/weave/guides/integrations/imgs/mcp/mcp_trace_timeline.png)](https://wandb.ai/ayut/mcp_example/weave/traces?filter=%7B%22opVersionRefs%22%3A%5B%22weave%3A%2F%2F%2Fayut%2Fmcp_example%2Fop%2Frun_client%3A*%22%5D%7D&peekPath=%2Fayut%2Fmcp_example%2Fcalls%2F01966bbe-cc5e-7012-b45f-bf10617d8c1e%3FhideTraceTree%3D0) + + +## インテグレーションの使用方法 + +Weave インテグレーションは MCP のサーバーとクライアントの両方で動作します。インストール後、`weave` をインポートし、初期化するだけのわずか 2 行のコードを追加するだけでトレースを有効にできます。 + +### 事前準備 + +開始する前に、必要なパッケージをインストールしてください: + +```bash +pip install -qq "mcp[cli]" weave +``` + +### 設定 + +MCP インテグレーションは環境変数を通じて設定できます: + +- `MCP_TRACE_LIST_OPERATIONS`: `true` に設定すると、サーバー側とクライアント側の両方でリスト操作(`list_tools`、`list_resources`、`list_prompts`)をトレースします。 + +### サーバー側のインテグレーション + +MCP サーバーをトレースするには、既存の `FastMCP` セットアップに 2 行追加します。1 つは Weave のインポート、もう 1 つはクライアントの初期化です。これらを追加すると、ツール、リソース、プロンプトの操作が自動的にトレースされます。 + +```python lines +# Weave をインポート(トレースに必要) +import weave +from mcp.server.fastmcp import FastMCP + +# プロジェクト名で Weave を初期化 +weave_client = weave.init("my-project") + +# MCP サーバーをセットアップ +mcp = FastMCP("Demo") + +# ツールを定義(この呼び出しはトレースされます) +@mcp.tool() +def add(a: int, b: int) -> int: + """2つの数値を加算します。""" + return a + b + +# リソースを定義(この呼び出しはトレースされます) +@mcp.resource("greeting://{name}") +def get_greeting(name: str) -> str: + """パーソナライズされた挨拶を返します。""" + return f"Hello, {name}!" + +# プロンプトを定義(この呼び出しはトレースされます) +@mcp.prompt() +def review_code(code: str) -> str: + """コードレビュー用のプロンプトを返します。""" + return f"Please review this code:\n\n{code}" + +# サーバーを起動 +mcp.run(transport="stdio") +``` + +### クライアント側のインテグレーション + +クライアント側でも、トレースには 2 つの変更(Weave のインポートと初期化)が必要なだけです。すべてのツールの呼び出し、リソースへのアクセス、プロンプトのリクエストが自動的にトレースされます。 + +```python lines +# Weave をインポート(トレースに必要) +import weave +from mcp import ClientSession, StdioServerParameters +from mcp.client.stdio import stdio_client + +# プロジェクト名で Weave を初期化 +weave_client = weave.init("my-project") + +# MCP クライアントをセットアップして実行 +async with stdio_client(server_params) as (read, write): + async with ClientSession(read, write) as session: + # セッションを初期化 + await session.initialize() + + # ツールを呼び出す(これはトレースされます) + result = await session.call_tool("add", arguments={"a": 1, "b": 2}) + + # リソースを読み込む(これはトレースされます) + resource = await session.read_resource("greeting://user") + + # プロンプトを取得する(これはトレースされます) + prompt = await session.get_prompt("review_code", arguments={"code": "print('Hello')"}) +``` + +## チュートリアル: `mcp_demo` の例 + +[`mcp_example`](https://github.com/wandb/weave/tree/master/examples/mcp_demo) は、トレースのための Model Context Protocol (MCP) と Weave のインテグレーションを示しています。クライアントとサーバーの両方のコンポーネントを計測して、それらの相互作用の詳細なトレースをキャプチャする方法を紹介します。 + +### サンプルの実行 + +1. `weave` リポジトリをクローンし、`mcp_demo` サンプルに移動します。 + + ```bash + git clone https://github.com/wandb/weave + cd weave/examples/mcp_demo + ``` + + このサンプルには 2 つの主要なファイルが含まれています。 + + - `example_server.py`: `FastMCP` で構築されたデモ MCP サーバー。ツール、リソース、プロンプトを定義しています。 + - `example_client.py`: サーバーに接続し、そのコンポーネントと対話するクライアント。 + +2. 必要な依存関係を手動でインストールします。 + + ```bash + pip install mcp[cli] weave + ``` + +3. デモを実行します。 + + ```bash + python example_client.py example_server.py + ``` + + このコマンドはクライアントとサーバーの両方を起動します。クライアントは、様々な機能をテストできるインタラクティブな CLI を開始します。 + +### クライアント CLI コマンド + +クライアントインターフェースは以下のコマンドをサポートしています。 + +| コマンド | 説明 | +| :--- | :--- | +| `tools` | 利用可能なツールを一覧表示 | +| `resources` | 利用可能なリソースを一覧表示 | +| `prompts` | 利用可能なプロンプトを一覧表示 | +| `add ` | 2つの数値を加算 | +| `bmi ` | BMI を計算 | +| `weather ` | 都市の気象データを取得 | +| `greeting ` | パーソナライズされた挨拶を取得 | +| `user ` | ユーザープロフィールを取得 | +| `config` | アプリの設定を取得 | +| `code-review ` | コードレビューのプロンプトを生成 | +| `debug ` | デバッグ用のプロンプトを生成 | +| `demo` | 利用可能なすべての機能のフルデモを実行します。各機能を順番に実行し、Weave UI にインタラクションの全トレースタイムラインを生成します。 | +| `q` | セッションを終了 | + +### サンプルの理解 + +`example_server.py` サーバーは以下を定義しています: + +- _ツール_: `add()`、`calculate_bmi()`、`fetch_weather()` などの関数 +- _リソース_: `greeting://{name}`、`config://app`、`users://{id}/profile` などのエンドポイント +- _プロンプト_: `review_code()` や `debug_error()` などのテンプレート + +`weave.init()` でクライアントを初期化すると、すべてのサーバー側の操作が Weave によって自動的にトレースされます。 + +`example_client.py` クライアントは以下の方法を示しています: + +- MCP サーバーへの接続 +- 利用可能なツール、リソース、プロンプトの検出 +- パラメータを指定したツールの呼び出し +- リソース URI からの読み取り +- 引数を指定したプロンプトの生成 +- カスタムメソッド/関数での [`weave.op()`](../tracking/ops) の使用 + +Weave はすべてのクライアント側の呼び出しをトレースし、クライアントとサーバー間のインタラクションの完全なビューを提供します。 + +## FAQ + +### なぜ MCP トレースが必要なのですか? + +LLM アプリケーションの開発者は、通常以下の 3 つのカテゴリのいずれかに当てはまります: + +- _MCP サーバーサイド開発者_: 複数のツール、リソース、プロンプトを MCP クライアントに公開したい。既存のアプリケーションのツールやリソースなどを公開する場合や、エージェントを構築したり、オーケストレーターエージェントによって複数のエージェントをオーケストレーションしたりする場合。 + +- _MCP クライアントサイド開発者_: クライアントサイドのアプリケーションを複数の MCP サーバーに接続したい。クライアントサイドのロジックの核となる部分は、どのツールを呼び出すか、どのリソースを取得するかを決定するために LLM を呼び出すことです。 + +- _MCP サーバーおよびクライアント開発者_: サーバーとクライアントの両方を開発している。 + +最初の 2 つのカテゴリのいずれかに当てはまる場合、各ツールがいつ呼び出されたか、実行フローはどのようになっているか、トークン数、およびサーバーまたはクライアント側のロジックにおける各コンポーネントのレイテンシを知りたいはずです。 + +サーバーとクライアントの両方を開発している場合は、統合されたトレースタイムラインを表示できることで、サーバー側とクライアント側の両方のロジックを迅速に反復(イテレーション)できます。 + +いずれの場合も、観測可能性レイヤーを使用することで以下のことが可能になります: + +- アプリケーションの迅速な反復開発 +- ワークフローや実行ロジックの監査 +- ボトルネックの特定 \ No newline at end of file diff --git a/ja/weave/guides/integrations/mistral.mdx b/ja/weave/guides/integrations/mistral.mdx new file mode 100644 index 0000000000..9f54670bb3 --- /dev/null +++ b/ja/weave/guides/integrations/mistral.mdx @@ -0,0 +1,126 @@ +--- +title: MistralAI +description: Weave の自動トレーシング機能を使用して、MistralAI モデルの呼び出しを追跡・監視します。オープンウェイトモデルや商用 Mistral + モデルにおけるチャット補完、関数呼び出し、および モデル とのインタラクションをキャプチャします。 +--- + + + Open In Colab + + +Weave は、 [MistralAI Python library](https://github.com/mistralai/client-python) を介して行われる LLM コールを自動的に追跡し、ログを記録します。 + +> 新しい Mistral v1.0 SDK をサポートしています。移行ガイドについては [こちら](https://github.com/mistralai/client-python/blob/main/MIGRATION.mdx) をご確認ください。 + +## トレース + +開発中および プロダクション の両方において、 LLM アプリケーション の トレース を中央データベースに保存することは重要です。これらの トレース はデバッグに使用されるだけでなく、 アプリケーション を改善するための データセット としても役立ちます。 + +Weave は [mistralai](https://github.com/mistralai/client-python) の トレース を自動的にキャプチャします。ライブラリを通常通り使用し、まず `weave.init()` を呼び出すだけで開始できます。 + +```python lines +import weave +weave.init("cheese_recommender") + +# その後、通常通り mistralai ライブラリを使用します +import os +from mistralai import Mistral + +api_key = os.environ["MISTRAL_API_KEY"] +model = "mistral-large-latest" + +client = Mistral(api_key=api_key) + +messages = [ + { + "role": "user", + "content": "What is the best French cheese?", + }, +] + +chat_response = client.chat.complete( + model=model, + messages=messages, +) +``` + +これで、 Weave は MistralAI ライブラリを通じて行われるすべての LLM コールを追跡し、 ログ を記録します。 Weave のウェブインターフェースで トレース を確認できます。 + +[![mistral_trace.png](/weave/guides/integrations/imgs/mistral_trace.png)](https://wandb.ai/capecape/mistralai_project/weave/calls) + +## 独自の op でラップする + +Weave の op は、 実験 中の コード を自動的に バージョン管理 することで 結果 の *再現性* を高め、入力と出力をキャプチャします。 [`@weave.op()`](/weave/guides/tracking/ops) デコレータを付けた関数を作成し、その中で [`mistralai.client.MistralClient.chat()`](https://docs.mistral.ai/capabilities/completion/) を呼び出すだけで、 Weave が自動的に入力と出力を追跡します。チーズレコメンダーでこれをどのように行うか見てみましょう。 + +```python lines {1} +@weave.op() +def cheese_recommender(region:str, model:str) -> str: + "指定された地域の最高のチーズを推薦する" + + messages = [ + { + "role": "user", + "content": f"What is the best cheese in {region}?", + }, + ] + + chat_response = client.chat.complete( + model=model, + messages=messages, + ) + return chat_response.choices[0].message.content + +cheese_recommender(region="France", model="mistral-large-latest") +cheese_recommender(region="Spain", model="mistral-large-latest") +cheese_recommender(region="Netherlands", model="mistral-large-latest") +``` + +[![mistral_ops.png](/weave/guides/integrations/imgs/mistral_ops.png)](https://wandb.ai/capecape/mistralai_project/weave/calls) + +## より簡単な実験のために `Model` を作成する + +多くの可動パーツがある場合、 実験 を整理するのは困難です。 [`Model`](/weave/guides/core-types/models) クラスを使用すると、システムプロンプトや使用している モデル など、 アプリケーション の 実験 詳細をキャプチャして整理できます。これにより、 アプリケーション の異なる反復の整理と比較が容易になります。 + +コード の バージョン管理 や入出力のキャプチャに加えて、 [`Model`](/weave/guides/core-types/models) は アプリケーション の 振る舞い を制御する構造化された パラメータ をキャプチャするため、どの パラメータ が最適であったかを簡単に見つけることができます。また、 Weave の Models は `serve` や [`Evaluation`](/weave/guides/core-types/evaluations) と併用することもできます。 + +以下の例では、 `model` や `country` を使って 実験 できます。これらを変更するたびに、 `CheeseRecommender` の新しい *バージョン* が作成されます。 + +```python lines +import weave +from mistralai import Mistral + +weave.init("mistralai_project") + +class CheeseRecommender(weave.Model): # `weave.Model` に変更 + model: str + temperature: float + + @weave.op() + def predict(self, region:str) -> str: # `predict` に変更 + "指定された地域の最高のチーズを推薦する" + + client = Mistral(api_key=api_key) + + messages = [ + { + "role": "user", + "content": f"What is the best cheese in {region}?", + }, + ] + + chat_response = client.chat.complete( + model=model, + messages=messages, + temperature=self.temperature + ) + return chat_response.choices[0].message.content + +cheese_model = CheeseRecommender( + model="mistral-medium-latest", + temperature=0.0 + ) +result = cheese_model.predict(region="France") +print(result) +``` + +[![mistral_model.png](/weave/guides/integrations/imgs/mistral_model.png)](https://wandb.ai/capecape/mistralai_project/weave/models) \ No newline at end of file diff --git a/ja/weave/guides/integrations/notdiamond.mdx b/ja/weave/guides/integrations/notdiamond.mdx new file mode 100644 index 0000000000..519a49c2a0 --- /dev/null +++ b/ja/weave/guides/integrations/notdiamond.mdx @@ -0,0 +1,110 @@ +--- +title: Not Diamond ¬◇ +description: Not Diamond を使用して、精度を最大限に高めつつコストを節約しながら、ニーズに合った適切な モデル へプロンプトをルーティングします +--- + +複雑な LLM ワークフローを構築する際、ユーザーは精度、コスト、または呼び出しのレイテンシに応じて異なるモデルにプロンプトを送信する必要がある場合があります。 [Not Diamond][nd] を使用すると、これらのワークフロー内のプロンプトをニーズに合った適切なモデルにルーティングでき、モデルコストを抑えながら精度を最大化できます。 + +## クイックスタート + +[アカウントを作成][account] し、 [APIキーを生成][keys] していることを確認してください。その後、環境変数 `NOTDIAMOND_API_KEY` として API キーを追加します。 + +![[APIキーの作成](/weave/guides/integrations/imgs/notdiamond/api-keys.png)] + +ここから、以下のことが行えます。 + +- [クイックスタートガイド] を試す +- W&B Weave と Not Diamond を使用して [カスタムルーターを構築する][custom router] +- [Not Diamond とチャット][chat] してルーティングの動作を確認する + +## トレース + +Weave は [Not Diamond の Python ライブラリ][python] と連携し、 [自動的に API 呼び出しをログに記録][ops] します。ワークフローの開始時に `weave.init()` を実行するだけで、あとは通常通りルーティングされたプロバイダーを使用できます。 + +```python lines +from notdiamond import NotDiamond + +import weave +# Weaveを初期化 +weave.init('notdiamond-quickstart') + +client = NotDiamond() +session_id, provider = client.chat.completions.model_select( + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Concisely explain merge sort."} + ], + model=['openai/gpt-4o', 'anthropic/claude-3-5-sonnet-20240620'] +) + +print("LLM called: ", provider.provider) # openai, anthropic など +print("Provider model: ", provider.model) # gpt-4o, claude-3-5-sonnet-20240620 など +``` + +## カスタムルーティング + +また、 [Evaluations][evals] に基づいて独自の [カスタムルーター][custom router] をトレーニングすることもできます。これにより、特定の use case における評価パフォーマンスに従って Not Diamond がプロンプトをルーティングできるようになります。 + +まず、カスタムルーターをトレーニングします。 + +```python lines +from weave.flow.eval import EvaluationResults +from weave.integrations.notdiamond.custom_router import train_router + +# gpt-4o と Claude 3.5 Sonnet で Evaluation を構築 +evaluation = weave.Evaluation(...) +gpt_4o = weave.Model(...) +sonnet = weave.Model(...) + +model_evals = { + 'openai/gpt-4o': evaluation.get_eval_results(gpt_4o), + 'anthropic/claude-3-5-sonnet-20240620': evaluation.get_eval_results(sonnet), +} +preference_id = train_router( + model_evals=model_evals, + prompt_column="prompt", + response_column="actual", + language="en", + maximize=True, +) +``` + +この preference ID を `model_select` リクエストで再利用することで、評価データに基づいてパフォーマンスを最大化し、コストを最小限に抑えるようにプロンプトをルーティングできます。 + +```python lines +from notdiamond import NotDiamond +client = NotDiamond() + +import weave +weave.init('notdiamond-quickstart') + +session_id, provider = client.chat.completions.model_select( + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Concisely explain merge sort."} + ], + model=['openai/gpt-4o', 'anthropic/claude-3-5-sonnet-20240620'], + + # この preference ID を渡すことでカスタムルーターを再利用します + preference_id=preference_id +) + +print("LLM called: ", provider.provider) # openai, anthropic など +print("Provider model: ", provider.model) # gpt-4o, claude-3-5-sonnet-20240620 など +``` + +## 追加のサポート + +さらなるサポートについては、 [ドキュメント][docs] を参照するか、 [メッセージを送信][support] してください。 + +[account]: https://app.notdiamond.ai +[chat]: https://chat.notdiamond.ai +[custom router]: https://docs.notdiamond.ai/docs/router-training-quickstart +[docs]: https://docs.notdiamond.ai +[evals]: /weave/guides/core-types/evaluations +[keys]: https://app.notdiamond.ai/keys +[nd]: https://www.notdiamond.ai/ +[ops]: /weave/guides/tracking/ops +[python]: https://github.com/Not-Diamond/notdiamond-python +[quickstart guide]: https://docs.notdiamond.ai/docs/quickstart-routing +[support]: mailto:support@notdiamond.ai \ No newline at end of file diff --git a/ja/weave/guides/integrations/nvidia_nim.mdx b/ja/weave/guides/integrations/nvidia_nim.mdx new file mode 100644 index 0000000000..a349647efb --- /dev/null +++ b/ja/weave/guides/integrations/nvidia_nim.mdx @@ -0,0 +1,177 @@ +--- +title: NVIDIA NIM +description: Weave を使用して、ChatNVIDIA ライブラリ経由で行われる LLM コールのトレースと ログ 記録を行います。 +--- + +Weave は、`weave.init()` を呼び出した後、[ChatNVIDIA](https://python.langchain.com/docs/integrations/chat/nvidia_ai_endpoints/) ライブラリを介して行われた LLM 呼び出しを自動的に追跡し、ログを記録します。 + + +最新のチュートリアルについては、[Weights & Biases on NVIDIA](https://wandb.ai/site/partners/nvidia) をご覧ください。 + + +## Tracing + +開発中および Production (プロダクション) の両方において、LLM アプリケーションの Traces を中央データベースに保存することは重要です。これらの Traces はデバッグに使用したり、アプリケーションを改善しながら評価するための、トリッキーな例を含んだ Datasets を構築するのに役立ちます。 + + + + Weave は [ChatNVIDIA python library](https://python.langchain.com/docs/integrations/chat/nvidia_ai_endpoints/) の Traces を自動的にキャプチャできます。 + + 任意のプロジェクト名を指定して `weave.init()` を呼び出すことで、キャプチャを開始します。 + + ```python lines {4} + from langchain_nvidia_ai_endpoints import ChatNVIDIA + import weave + client = ChatNVIDIA(model="mistralai/mixtral-8x7b-instruct-v0.1", temperature=0.8, max_tokens=64, top_p=1) + weave.init('emoji-bot') + + messages=[ + { + "role": "system", + "content": "You are AGI. You will be provided with a message, and your task is to respond using emojis only." + }] + + response = client.invoke(messages) + ``` + + + + ```plaintext + このライブラリは Python 版のみのため、TypeScript ではまだこの機能を利用できません。 + ``` + + + + +![chatnvidia_trace.png](/weave/guides/integrations/imgs/chatnvidia_trace.png) + + +## 独自の ops を追跡する + + + +関数を `@weave.op` でラップすると、入力、出力、およびアプリケーションロジックのキャプチャが開始され、データがアプリ内をどのように流れるかをデバッグできるようになります。ops は深くネストさせることができ、追跡したい関数の ツリー を構築できます。これにより、実験中に git にコミットされていないアドホックな詳細をキャプチャするために、コード の バージョン管理 も自動的に開始されます。 + +単に [`@weave.op`](/weave/guides/tracking/ops) デコレータを付けた関数を作成し、その中で [ChatNVIDIA python library](https://python.langchain.com/docs/integrations/chat/nvidia_ai_endpoints/) を呼び出すだけです。 + +以下の例では、2つの関数を op でラップしています。これにより、RAG アプリにおける検索ステップのような中間ステップが、アプリの 振る舞い にどのように影響しているかを確認できます。 + + ```python lines {1,9,11,29,31,33} + import weave + from langchain_nvidia_ai_endpoints import ChatNVIDIA + import requests, random + PROMPT="""初期のポケモンの図鑑をエミュレートしてください。ポケモンの名前を述べ、その後に説明を加えてください。 + トーンは情報提供でありながら、少し生意気で、事実に基づいた詳細にドライなユーモアを交えてください。3文以内で簡潔に。""" + POKEMON = ['pikachu', 'charmander', 'squirtle', 'bulbasaur', 'jigpuff', 'meowth', 'eevee'] + client = ChatNVIDIA(model="mistralai/mixtral-8x7b-instruct-v0.1", temperature=0.7, max_tokens=100, top_p=1) + + @weave.op + def get_pokemon_data(pokemon_name): + # これは RAG アプリ内の検索ステップのような、アプリケーション内のステップです + url = f"https://pokeapi.co/api/v2/pokemon/{pokemon_name}" + response = requests.get(url) + if response.status_code == 200: + data = response.json() + name = data["name"] + types = [t["type"]["name"] for t in data["types"]] + species_url = data["species"]["url"] + species_response = requests.get(species_url) + evolved_from = "Unknown" + if species_response.status_code == 200: + species_data = species_response.json() + if species_data["evolves_from_species"]: + evolved_from = species_data["evolves_from_species"]["name"] + return {"name": name, "types": types, "evolved_from": evolved_from} + else: + return None + + @weave.op + def pokedex(name: str, prompt: str) -> str: + # これは他の ops を呼び出すルート op です + data = get_pokemon_data(name) + if not data: return "Error: Unable to fetch data" + + messages=[ + {"role": "system","content": prompt}, + {"role": "user", "content": str(data)} + ] + + response = client.invoke(messages) + return response.content + + weave.init('pokedex-nvidia') + # 特定のポケモンのデータを取得する + pokemon_data = pokedex(random.choice(POKEMON), PROMPT) + ``` + +Weave に移動し、UI で `get_pokemon_data` をクリックすると、そのステップの入力と出力を確認できます。 + + + ```plaintext + このライブラリは Python 版のみのため、TypeScript ではまだこの機能を利用できません。 + ``` + + + + +![nvidia_pokedex.png](/weave/guides/integrations/imgs/nvidia_pokedex.png) + + +## 実験を容易にするための `Model` の作成 + + + +多くの動的な要素がある場合、実験の整理は困難になります。[`Model`](/weave/guides/core-types/models) クラスを使用することで、システムプロンプトや使用している モデル など、アプリの実験的な詳細をキャプチャして整理できます。これにより、アプリの異なるイテレーションの整理や比較が容易になります。 + +コード の バージョン管理 や入力/出力のキャプチャに加えて、[`Model`](/weave/guides/core-types/models) はアプリケーションの 振る舞い を制御する構造化された パラメータ をキャプチャするため、どの パラメータ が最適だったかを簡単に見つけることができます。また、Weave Models は `serve` や [`Evaluations`](/weave/guides/core-types/evaluations) と併用することも可能です。 + +以下の例では、`model` と `system_message` を使って実験できます。これらいずれかを変更するたびに、`GrammarCorrectorModel` の新しい バージョン が作成されます。 + + ```python lines + import weave + from langchain_nvidia_ai_endpoints import ChatNVIDIA + + weave.init('grammar-nvidia') + + class GrammarCorrectorModel(weave.Model): # weave.Model に変更 + system_message: str + + @weave.op() + def predict(self, user_input): # predict に変更 + client = ChatNVIDIA(model="mistralai/mixtral-8x7b-instruct-v0.1", temperature=0, max_tokens=100, top_p=1) + + messages=[ + { + "role": "system", + "content": self.system_message + }, + { + "role": "user", + "content": user_input + } + ] + + response = client.invoke(messages) + return response.content + + corrector = GrammarCorrectorModel( + system_message = "You are a grammar checker, correct the following user input.") + result = corrector.predict("That was so easy, it was a piece of pie!") + print(result) + ``` + + + ```plaintext + このライブラリは Python 版のみのため、TypeScript ではまだこの機能を利用できません。 + ``` + + + + +![chatnvidia_model.png](/weave/guides/integrations/imgs/chatnvidia_model.png) + + +## 使用上の情報 + +ChatNVIDIA インテグレーションは、`invoke`、`stream`、およびそれらの非同期バリアントをサポートしています。また、ツールの使用もサポートしています。 +ChatNVIDIA は多種多様な モデル で使用されることを想定しているため、関数呼び出し(function calling)のサポートは含まれていません。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/openai.mdx b/ja/weave/guides/integrations/openai.mdx new file mode 100644 index 0000000000..ced8c18f83 --- /dev/null +++ b/ja/weave/guides/integrations/openai.mdx @@ -0,0 +1,383 @@ +--- +title: OpenAI +description: OpenAI を Weave と統合して、トレーシング、評価、モニタングを実行する +--- + + + Open In Colab + + + +セットアップなしで Weave 上で OpenAI モデルを試してみたいですか? [LLM Playground](../tools/playground) をお試しください。 + + +## トレース (Tracing) + +開発中およびプロダクション環境の両方で、LLM アプリケーションの トレース を中央データベースに保存することは重要です。これらの トレース は、デバッグや、アプリケーションを改善する際の 評価 に使用するトリッキーな例の データセット を構築するのに役立ちます。 + +Weave は [openai python library](https://platform.openai.com/docs/libraries/python-library) の トレース を自動的にキャプチャできます。 + +お好みの プロジェクト 名を指定して `weave.init()` を呼び出すことで、キャプチャを開始します。OpenAI は、インポートするタイミングに関係なく自動的にパッチが適用されます。 + +`weave.init()` を呼び出す際に W&B の チーム を指定しない場合は、デフォルトの Entity が使用されます。デフォルトの Entity の確認や更新については、W&B Models ドキュメントの [User Settings](https://docs.wandb.ai/platform/app/settings-page/user-settings/#default-team) を参照してください。 + +**自動パッチ適用 (Automatic Patching)** + +Weave は、`weave.init()` の前後のどちらでインポートされたかにかかわらず、OpenAI に自動的にパッチを適用します。 + + +```python Python lines {4} +from openai import OpenAI +import weave + +weave.init('emoji-bot') # OpenAI は自動的にパッチされます! + +client = OpenAI() +response = client.chat.completions.create( + model="gpt-4", + messages=[ + { + "role": "system", + "content": "You are AGI. You will be provided with a message, and your task is to respond using emojis only." + }, + { + "role": "user", + "content": "How are you?" + } + ] +) +``` + +```typescript TypeScript +import { OpenAI } from 'openai'; +import { wrapOpenAI } from '@wandb/weave'; + +const openai = wrapOpenAI(new OpenAI()); + +// これで OpenAI へのすべての呼び出しがトレースされます +openai.chat.completions.create( + { + model: "gpt-4", + messages: [ + { + role: "system", + content: "You are AGI. You will be provided with a message, and your task is to respond using emojis only." + }, + { + role: "user", + content: "How are you?" + } + ] + } +); +``` + + +**明示的なパッチ適用 (任意)** + +きめ細かな制御が必要な場合は、引き続き明示的にパッチを適用することもできます。 + +```python lines {3,4} +import weave + +weave.init('emoji-bot') +weave.integrations.patch_openai() # OpenAI のトレースを有効化 + +from openai import OpenAI +client = OpenAI() +response = client.chat.completions.create( + model="gpt-4", + messages=[ + {"role": "user", "content": "Make me a emoji"} + ] +) +``` + +[実際のトレースを表示](https://wandb.ai/capecape/emoji-bot/weave/calls/01928a78-6d8a-7e20-9b8c-0cbc8318a0c8) + + +[OpenAI Functions](https://platform.openai.com/docs/guides/function-calling) や [OpenAI Assistants](https://platform.openai.com/docs/assistants/overview) の関数呼び出しツールもキャプチャします。 + + +## 構造化出力 (Structured Outputs) + +Weave は OpenAI を使用した構造化出力もサポートしています。これは、LLM のレスポンスが特定の形式に従うようにするのに役立ちます。 + + +```python Python +from openai import OpenAI +from pydantic import BaseModel +import weave + +class UserDetail(BaseModel): + name: str + age: int + +client = OpenAI() +weave.init('extract-user-details') + +completion = client.beta.chat.completions.parse( + model="gpt-4o-2024-08-06", + messages=[ + {"role": "system", "content": "Extract the user details from the message."}, + {"role": "user", "content": "My name is David and I am 30 years old."}, + ], + response_format=UserDetail, +) + +user_detail = completion.choices[0].message.parsed +print(user_detail) +``` + + +## 非同期サポート (Async Support) + +Weave は OpenAI の非同期関数もサポートしています。 + + +```python Python +from openai import AsyncOpenAI +import weave + +client = AsyncOpenAI() +weave.init('async-emoji-bot') + +async def call_openai(): + response = await client.chat.completions.create( + model="gpt-4", + messages=[ + { + "role": "system", + "content": "You are AGI. You will be provided with a message, and your task is to respond using emojis only." + }, + { + "role": "user", + "content": "How are you?" + } + ] + ) + return response + +# 非同期関数を呼び出す +result = await call_openai() +``` + + +## ストリーミングサポート (Streaming Support) + +Weave は OpenAI からのストリーミングレスポンスもサポートしています。 + + +```python Python +from openai import OpenAI +import weave + +client = OpenAI() +weave.init('streaming-emoji-bot') + +response = client.chat.completions.create( + model="gpt-4", + messages=[ + { + "role": "system", + "content": "You are AGI. You will be provided with a message, and your task is to respond using emojis only." + }, + { + "role": "user", + "content": "How are you?" + } + ], + stream=True +) + +for chunk in response: + print(chunk.choices[0].delta.content or "", end="") +``` + + +## 関数呼び出しのトレース (Tracing Function Calls) + +Weave は、ツールを使用する際に OpenAI によって行われる関数呼び出しも トレース します。 + + +```python Python +from openai import OpenAI +import weave + +client = OpenAI() +weave.init('function-calling-bot') + +tools = [ + { + "type": "function", + "function": { + "name": "get_weather", + "description": "Get the weather in a given location", + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The location to get the weather for" + }, + "unit": { + "type": "string", + "enum": ["celsius", "fahrenheit"], + "description": "The unit to return the temperature in" + } + }, + "required": ["location"] + } + } + } +] + +response = client.chat.completions.create( + model="gpt-4", + messages=[ + { + "role": "user", + "content": "What's the weather like in New York?" + } + ], + tools=tools +) + +print(response.choices[0].message.tool_calls) +``` + + +## Batch API + +Weave は、複数のリクエストを処理するための OpenAI Batch API もサポートしています。 + + +```python Python +from openai import OpenAI +import weave + +client = OpenAI() +weave.init('batch-processing') + +# バッチファイルを作成 +batch_input = [ + { + "custom_id": "request-1", + "method": "POST", + "url": "/v1/chat/completions", + "body": { + "model": "gpt-4", + "messages": [{"role": "user", "content": "Hello, how are you?"}] + } + }, + { + "custom_id": "request-2", + "method": "POST", + "url": "/v1/chat/completions", + "body": { + "model": "gpt-4", + "messages": [{"role": "user", "content": "What's the weather like?"}] + } + } +] + +# バッチを送信 +batch = client.batches.create( + input_file_id="your-file-id", + endpoint="/v1/chat/completions", + completion_window="24h" +) + +# バッチ結果を取得 +completed_batch = client.batches.retrieve(batch.id) +``` + + +## Assistants API + +Weave は、会話型 AI アプリケーションを構築するための OpenAI Assistants API もサポートしています。 + + +```python Python +from openai import OpenAI +import weave + +client = OpenAI() +weave.init('assistant-bot') + +# アシスタントを作成 +assistant = client.beta.assistants.create( + name="Math Assistant", + instructions="You are a personal math tutor. Answer questions about math.", + model="gpt-4" +) + +# スレッドを作成 +thread = client.beta.threads.create() + +# スレッドにメッセージを追加 +message = client.beta.threads.messages.create( + thread_id=thread.id, + role="user", + content="What is 2+2?" +) + +# アシスタントを実行 +run = client.beta.threads.runs.create( + thread_id=thread.id, + assistant_id=assistant.id +) + +# アシスタントのレスポンスを取得 +messages = client.beta.threads.messages.list(thread_id=thread.id) +``` + + +## コスト追跡 (Cost Tracking) + +Weave は OpenAI API 呼び出しのコストを自動的に追跡します。Weave UI でコストの内訳を確認できます。 + + +コスト追跡はすべての OpenAI モデルで利用可能であり、最新の OpenAI 料金に基づいて計算されます。 + + +## カスタム関数のトレース + +`@weave.op` デコレータを使用することで、OpenAI を使用するカスタム関数も トレース できます。 + + +```python Python +from openai import OpenAI +import weave + +client = OpenAI() +weave.init('custom-function-bot') + +@weave.op +def generate_response(prompt: str) -> str: + response = client.chat.completions.create( + model="gpt-4", + messages=[ + { + "role": "user", + "content": prompt + } + ] + ) + return response.choices[0].message.content + +# この関数呼び出しがトレースされます +result = generate_response("Hello, how are you?") +``` + + +## 次のステップ + +OpenAI の トレース 設定が完了したので、以下のことが行えます。 + +1. **Weave UI で トレース を表示する**: Weave プロジェクト にアクセスして、OpenAI 呼び出しの トレース を確認します。 +2. **評価 を作成する**: トレース を使用して 評価 用の データセット を構築します。 +3. **パフォーマンスを監視する**: レイテンシ、コスト、その他の メトリクス を追跡します。 +4. **問題をデバッグする**: トレース を使用して、LLM アプリケーション内で何が起きているかを把握します。 + +これらのトピックの詳細については、[評価ガイド](../evaluation/scorers) および [モニタリングガイド](../tracking) を参照してください。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/openai_agents.mdx b/ja/weave/guides/integrations/openai_agents.mdx new file mode 100644 index 0000000000..b5a1d3ff2b --- /dev/null +++ b/ja/weave/guides/integrations/openai_agents.mdx @@ -0,0 +1,64 @@ +--- +title: OpenAI エージェント SDK +description: OpenAI Agents SDK で W&B Weave を使用して、エージェント アプリケーションの追跡と監視を行います +--- + +[OpenAI Agents Python SDK](https://github.com/openai/openai-agents-python) は、マルチエージェントのワークフローを構築するための軽量で強力なフレームワークです。 W&B Weave を OpenAI Agents SDK と併用することで、エージェントアプリケーションの追跡と監視が可能になります。 + +## インストール + +`pip` を使用して、必要な依存関係をインストールします。 + +```bash +pip install weave openai-agents +``` + +## はじめに + +OpenAI Agents SDK で Weave を使用するには、以下の手順が必要です。 + +- プロジェクト名で Weave を初期化する +- Weave のトレースプロセッサをエージェントに追加する +- 通常通りエージェントを作成して実行する + +以下のコードサンプルでは、OpenAI Agent を作成し、追跡可能性(トレース)のために Weave と統合しています。まず、 Weave プロジェクトを初期化し、実行トレースをキャプチャするために `WeaveTracingProcessor` をセットアップします。次に、天候情報を表すための `Weather` データモデルを作成します。 `get_weather` 関数は、エージェントが使用できるツールとしてデコレートされ、サンプルの天気予報を返します。 `Hello world` という名前のエージェントは、基本的な指示と気象ツールへのアクセス権を持って構成されています。 `main` 関数は非同期でエージェントを実行し、サンプル入力(「東京の天気はどうですか?」)を与えて最終的な結果を出力します。 + +```python lines +from pydantic import BaseModel +from agents import Agent, Runner, function_tool +import agents +import weave +import asyncio + +# Weaveプロジェクトを初期化 +weave.init("openai-agents") + +class Weather(BaseModel): + city: str + temperature_range: str + conditions: str + +# エージェントが使用するツールを定義 +@function_tool +def get_weather(city: str) -> Weather: + return Weather(city=city, temperature_range="14-20C", conditions="Sunny with wind.") + +# エージェントの設定 +agent = Agent( + name="Hello world", + instructions="You are a helpful agent.", + tools=[get_weather] +) + +async def main(): + # エージェントを実行し結果を取得 + result = await Runner.run(agent, input="What's the weather in Tokyo?") + print(result.final_output) + +if __name__ == "__main__": + asyncio.run(main()) +``` + +## トレースの表示 + +上記のコードサンプルを実行すると、 Weave ダッシュボードへのリンクが生成されます。エージェントの実行中に何が起きたかを確認するには、そのリンクにアクセスしてエージェントの トレース を確認してください。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/openrouter.mdx b/ja/weave/guides/integrations/openrouter.mdx new file mode 100644 index 0000000000..6e345c2121 --- /dev/null +++ b/ja/weave/guides/integrations/openrouter.mdx @@ -0,0 +1,43 @@ +--- +title: OpenRouter +description: 自動 Weave インテグレーションを備えた OpenRouter の統合インターフェースを使用して、多数の LLM を利用する +--- + +Openrouter.ai は、多くの LLM のための統合インターフェースです。OpenAI GPT-4、Anthropic Claude、Google Gemini などの基盤モデルだけでなく、LLama-3 や Mixtral などのオープンソースモデル、さらには [他にも多数](https://openrouter.ai/models) のモデルをサポートしており、一部のモデルは無料で提供されています。 + +OpenRouter は REST API と OpenAI SDK 互換性 ([ドキュメント](https://docs.together.ai/docs/openai-api-compatibility)) を提供しており、Weave はこれを自動的に検出してインテグレーションします(詳細は OpenRouter の [クイックスタート](https://openrouter.ai/docs/quick-start) を参照してください)。 + +OpenAI SDK のコードを OpenRouter に切り替えるには、APIキー を [OpenRouter API](https://openrouter.ai/docs/api-keys) キーに、`base_url` を `https://openrouter.ai/api/v1` に、そして model を多数ある [チャットモデル](https://openrouter.ai/docs/models) のいずれかに変更します。`weave.init()` を呼び出す際に、Traces のための プロジェクト 名を指定してください。指定しない場合は、デフォルトの Entities が使用されます。デフォルトの Entities を確認または更新するには、W&B Models ドキュメントの [User Settings](https://docs.wandb.ai/platform/app/settings-page/user-settings/#default-team) を参照してください。 + +```python lines {5,10-12} +import os +import openai +import weave + +weave.init('openrouter-weave') + +system_content = "You are a travel agent. Be descriptive and helpful." +user_content = "Tell me about San Francisco" + +client = openai.OpenAI( + api_key=os.environ.get("OPENROUTER_API_KEY"), + base_url="https://openrouter.ai/api/v1", +) +chat_completion = client.chat.completions.create( + extra_headers={ + "HTTP-Referer": $YOUR_SITE_URL, # オプション。openrouter.ai のランキングにあなたのアプリを含める場合に使用します。 + "X-Title": $YOUR_APP_NAME, # オプション。openrouter.ai のランキングに表示されます。 + }, + model="meta-llama/llama-3.1-8b-instruct:free", + messages=[ + {"role": "system", "content": system_content}, + {"role": "user", "content": user_content}, + ], + temperature=0.7, + max_tokens=1024, +) +response = chat_completion.choices[0].message.content +print("Model response:\n", response) +``` + +これは開始するための簡単な例ですが、より複雑な ユースケース で Weave を独自の関数と統合する方法については、[OpenAI](/weave/guides/integrations/openai#track-your-own-ops) ガイドを参照してください。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/pydantic_ai.mdx b/ja/weave/guides/integrations/pydantic_ai.mdx new file mode 100644 index 0000000000..f5c83cd037 --- /dev/null +++ b/ja/weave/guides/integrations/pydantic_ai.mdx @@ -0,0 +1,161 @@ +--- +title: PydanticAI +description: OpenTelemetry を使用して Weave で PydanticAI の エージェント と ツール の呼び出しをトレースする +--- + +[OpenTelemetry (OTEL)](https://opentelemetry.io/) を使用して、 [PydanticAI](https://ai.pydantic.dev/) の agent や tool の呼び出しを Weave でトレースできます。 PydanticAI は Pydantic チームによって構築された Python agent フレームワークで、 Generative AI を使用したプロダクション・グレードのアプリケーションを簡単かつ型安全に構築できるように設計されています。 PydanticAI は、すべての agent および tool の呼び出しをトレースするために OTEL を使用します。 + + +Weave における OTEL トレースの詳細については、 [Send OTEL Traces to Weave](../tracking/otel) を参照してください。 + + +このガイドでは、 OTEL を使用して PydanticAI の agent および tool の呼び出しをトレースし、それらの Traces を Weave で可視化する方法を説明します。必要な依存関係のインストール、 Weave にデータを送信するための OTEL トレーサーの設定、 PydanticAI の agent および tool のインスツルメンテーション方法について学びます。また、アプリケーション内のすべての agent でデフォルトでトレースを有効にする方法も紹介します。 + +## 事前準備 + +開始する前に、必要な OTEL 依存関係をインストールしてください。 + +```bash +pip install opentelemetry-sdk OTELemetry-exporter-otlp-proto-http +``` +次に、 [Weave での OTEL トレースの設定](#weave-での-otel-トレースの設定) を行います。 + +### Weave での OTEL トレースの設定 + +PydanticAI から Weave に Traces を送信するには、 `TracerProvider` と `OTLPSpanExporter` を使用して OTEL を設定します。エクスポーターには、 [認証とプロジェクト識別のための正しいエンドポイントと HTTP ヘッダー](#必要な設定) を設定してください。 + + +API キーやプロジェクト情報などの機密性の高い環境変数は、環境ファイル(例: `.env` )に保存し、 `os.environ` を使用してロードすることをお勧めします。これにより、認証情報を安全に保ち、コードベースから切り離すことができます。 + + +### 必要な設定 + +- **エンドポイント:** `https://trace.wandb.ai/otel/v1/traces` +- **ヘッダー:** + - `Authorization`: W&B APIキー を使用した基本認証 + - `project_id`: W&B の Entities / Projects 名(例: `myteam/myproject` ) + +### 設定例 + +以下のコードスニペットは、 OTLP スパンエクスポーターとトレーサープロバイダーを設定して、 PydanticAI アプリケーションから Weave に OTEL トレースを送信する方法を示しています。 + +```python lines +import base64 +import os +from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter +from opentelemetry.sdk import trace as trace_sdk +from opentelemetry.sdk.trace.export import SimpleSpanProcessor + +# 環境変数から機密性の高い値をロードします +WANDB_BASE_URL = "https://trace.wandb.ai" +PROJECT_ID = os.environ.get("WANDB_PROJECT_ID") # W&B の entity/project 名 (例: "myteam/myproject") +WANDB_API_KEY = os.environ.get("WANDB_API_KEY") # W&B APIキー + +OTEL_EXPORTER_OTLP_ENDPOINT = f"{WANDB_BASE_URL}/otel/v1/traces" +AUTH = base64.b64encode(f"api:{WANDB_API_KEY}".encode()).decode() + +OTEL_EXPORTER_OTLP_HEADERS = { + "Authorization": f"Basic {AUTH}", + "project_id": PROJECT_ID, +} + +# エンドポイントとヘッダーを指定して OTLP スパンエクスポーターを作成します +exporter = OTLPSpanExporter( + endpoint=OTEL_EXPORTER_OTLP_ENDPOINT, + headers=OTEL_EXPORTER_OTLP_HEADERS, +) + +# トレーサープロバイダーを作成し、エクスポーターを追加します +tracer_provider = trace_sdk.TracerProvider() +tracer_provider.add_span_processor(SimpleSpanProcessor(exporter)) +``` + +## OTEL を使用した PydanticAI Agents のトレース + +PydanticAI の agent をトレースしてトレースデータを Weave に送信するには、設定済みのトレーサープロバイダーを含む `InstrumentationSettings` オブジェクトを `Agent` コンストラクタに渡します。これにより、すべての agent および tool の呼び出しが OTEL 設定に従ってトレースされるようになります。 + +以下の例は、トレースを有効にしたシンプルな agent を作成する方法を示しています。重要なステップは、 agent の初期化時に `instrument` 引数を設定することです。 + +```python lines +from pydantic_ai import Agent +from pydantic_ai.models.instrumented import InstrumentationSettings + +# OTEL トレースを有効にした PydanticAI agent を作成します +agent = Agent( + "openai:gpt-4o", + instrument=InstrumentationSettings(tracer_provider=tracer_provider), +) + +result = agent.run_sync("What is the capital of France?") +print(result.output) +``` + +agent へのすべての呼び出しがトレースされ、 Weave に送信されます。 + + +![シンプルな PydanticAI agent のトレース可視化](/weave/guides/integrations/imgs/pydantic_ai/pydanticai_agent_trace.png) + + +## OTEL を使用した PydanticAI Tools のトレース + +Weave は、 agent と tool の両方の呼び出しを含む、 OTEL でインスツルメントされたあらゆる PydanticAI オペレーションをトレースできます。つまり、 agent が tool (例: `@agent.tool_plain` でデコレートされた関数)を呼び出すと、 tool の入力、出力、モデルの推論プロセスを含むインタラクション全体が Weave でキャプチャされ、可視化されます。 + +以下の例は、システムプロンプトと tool を持つ agent を作成する方法を示しています。 agent と tool の両方でトレースが自動的に有効になります。 + +```python lines +from pydantic_ai import Agent +from pydantic_ai.models.instrumented import InstrumentationSettings + +# システムプロンプトと OTEL トレースを備えた PydanticAI agent を作成します +agent = Agent( + "openai:gpt-4o", + system_prompt=( + "You are a helpful assistant that can multiply numbers. " + "When asked to multiply numbers, use the multiply tool." + ), + instrument=InstrumentationSettings(tracer_provider=tracer_provider), +) + +# tool を定義します +@agent.tool_plain +def multiply(a: int, b: int) -> int: + """2つの数値を掛け合わせます。""" + return a * b + +# agent に tool を使用するように依頼します +result = agent.run_sync("What is 7 multiplied by 8?") +print(result.output) +``` + +![tool 呼び出しのトレース可視化](/weave/guides/integrations/imgs/pydantic_ai/pydanticai_tool_call.png) + + +agent の呼び出しと tool の呼び出しの両方が Weave でトレースされ、アプリケーションの完全な推論と実行パスを検査できます。 + +## デフォルトですべての agent をインスツルメントする + +アプリケーション内のすべての PydanticAI agent に OTEL トレースを適用するには、 `Agent.instrument_all()` メソッドを使用します。これにより、 `instrument` パラメータを明示的に指定していないすべての agent に対して、デフォルトの `InstrumentationSettings` インスタンスが設定されます。 + +```python lines +from pydantic_ai import Agent +from pydantic_ai.models.instrumented import InstrumentationSettings + +# すべての agent に対してデフォルトのインスツルメンテーションを設定します +Agent.instrument_all(InstrumentationSettings(tracer_provider=tracer_provider)) + +# これ以降、新しい agent はデフォルトでこのインスツルメンテーションを使用します +agent1 = Agent("openai:gpt-4o") +agent2 = Agent("openai:gpt-4o", system_prompt="Be helpful.") + +result = agent1.run_sync("What is the capital of France?") +print(result.output) +``` + +これは、設定を繰り返すことなく、すべての agent で一貫したトレースを行いたい大規模なアプリケーションで便利です。詳細については、 [PydanticAI OTEL ドキュメント](https://ai.pydantic.dev/logfire/#using-logfire) を参照してください。 + +## 詳細情報 + +- [Weave documentation: Send OTEL traces to Weave](../tracking/otel) +- [Official OTEL documentation](https://opentelemetry.io/) +- [Official PydanticAI documentation](https://ai.pydantic.dev/) +- [PydanticAI GitHub repository](https://github.com/pydantic/pydantic-ai) \ No newline at end of file diff --git a/ja/weave/guides/integrations/smolagents.mdx b/ja/weave/guides/integrations/smolagents.mdx new file mode 100644 index 0000000000..5b483bc4f8 --- /dev/null +++ b/ja/weave/guides/integrations/smolagents.mdx @@ -0,0 +1,116 @@ +--- +title: Smolagents +description: Weave の自動トレーシング機能を使用して、Smolagents のエージェント アプリケーションを追跡・分析できます。OpenAI、Hugging + Face、Anthropic などの LLM プロバイダーにわたる ツール 呼び出し、モデル 推論、マルチステップの ワークフロー をキャプチャします。 +--- + + +このページに掲載されているすべてのコード例は Python で記述されています。 + + +このページでは、[Smolagents](https://huggingface.co/docs/smolagents/en/index) を W&B Weave と統合して、エージェントアプリケーションを追跡および分析する方法について説明します。モデルの推論のログ記録、関数呼び出しの監視、および Weave の Traces 機能とバージョニング機能を使用した実験の整理方法を学びます。提供されている例に従うことで、貴重なインサイトを取得し、アプリケーションを効率的にデバッグし、異なるモデル設定を比較することができます。これらすべては Weave のウェブインターフェース内で行えます。 + +## 概要 + +Smolagents は、強力なエージェントアプリケーションを構築するための最小限の抽象化を提供するシンプルなフレームワークです。OpenAI、Hugging Face Transformers、Anthropic など、複数の LLM プロバイダーをサポートしています。 + +Weave は [Smolagents](https://huggingface.co/docs/smolagents/en/index) のトレースを自動的に取得します。トラッキングを開始するには、`weave.init()` を呼び出し、通常通りライブラリを使用するだけです。 + +## 事前準備 + +1. Weave で Smolagents を使用する前に、必要なライブラリをインストールするか、最新バージョンにアップグレードしてください。次のコマンドは `smolagents`、`openai`、`weave` をインストールまたはアップグレードし、出力を抑制します。 + + ```python lines + pip install -U smolagents openai weave -qqq + ``` + +2. Smolagents は、OpenAI、Hugging Face Transformers、Anthropic などの複数の LLM プロバイダーをサポートしています。対応する環境変数を設定して、選択したプロバイダーの APIキー を設定します。 + + ```python lines + import os + import getpass + + os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API key: ") + ``` + +## 基本的なトレース + +言語モデルアプリケーションのトレースを中央の場所に保存することは、開発およびプロダクションにおいて不可欠です。これらのトレースはデバッグに役立ち、アプリケーションを改善するための貴重な Datasets として機能します。 + +Weave は [Smolagents](https://huggingface.co/docs/smolagents/en/index) のトレースを自動的に取得します。トラッキングを開始するには、`weave.init()` を呼び出して Weave を初期化し、その後は通常どおりライブラリを使用します。 + +次の例では、ツールを使用する LLM エージェントへの推論呼び出しを Weave でログ記録する方法を示します。このシナリオでは: + +- Smolagents の `OpenAIServerModel` を使用して言語モデル(OpenAI の `gpt-4o`)を定義します。 +- エージェントが必要に応じて呼び出すことができる検索ツール(`DuckDuckGoSearchTool`)を設定します。 +- ツールとモデルを渡して `ToolCallingAgent` を構築します。 +- 検索ツールをトリガーするクエリをエージェント経由で実行します。 +- Weave は各関数とモデルの呼び出しをログに記録し、ウェブインターフェースを介して検査できるようにします。 + +```python lines +import weave +from smolagents import DuckDuckGoSearchTool, OpenAIServerModel, ToolCallingAgent + +# Weave を初期化 +weave.init(project_name="smolagents") + +# Smolagents でサポートされている LLM プロバイダーを定義 +model = OpenAIServerModel(model_id="gpt-4o") + +# クエリに基づいて DuckDuckGo ウェブ検索ツールを定義 +search_tool = DuckDuckGoSearchTool() + +# ツール呼び出しエージェントを定義 +agent = ToolCallingAgent(tools=[search_tool], model=model) +answer = agent.run( + "Get me just the title of the page at url 'https://wandb.ai/geekyrakshit/story-illustration/reports/Building-a-GenAI-assisted-automatic-story-illustrator--Vmlldzo5MTYxNTkw'?" +) +``` + +コードサンプルを実行したら、Weave のプロジェクトダッシュボードに移動してトレースを確認してください。 + + +![Weave は各推論呼び出しをログに記録し、入力、出力、メタデータに関する詳細を提供します。](/weave/guides/integrations/imgs/smolagents-trace.png) + + +## カスタムツールのトレース + +`smolagents` の `@tool` デコレータを関数に付与するか、`smolagents.Tool` クラスを継承することで、エージェントワークフロー用のカスタムツールを宣言できます。 + +Weave は Smolagents ワークフローのカスタムツール呼び出しを自動的に追跡します。次の例は、カスタム Smolagents ツール呼び出しを Weave でログ記録する方法を示しています。 + +- カスタム関数 `get_weather` が定義され、Smolagents の `@tool` でデコレートされています。これにより、エージェントが推論プロセスの一部として呼び出せるようになります。 +- この関数は場所と、摂氏出力用のオプションのフラグを受け取ります。 +- `OpenAIServerModel` を使用して言語モデルがインスタンス化されます。 +- カスタムツールとモデルを使用して `ToolCallingAgent` が作成されます。 +- エージェントがクエリを実行すると、`get_weather` ツールを選択して呼び出します。 +- Weave はモデルの推論とカスタムツールの呼び出しの両方をログに記録し、引数 (arguments) と戻り値を含めます。 + +```python lines +from typing import Optional + +import weave +from smolagents import OpenAIServerModel, ToolCallingAgent, tool + +weave.init(project_name="smolagents") + +@tool +def get_weather(location: str, celsius: Optional[bool] = False) -> str: + """ + 指定された場所の今後数日間の天気を取得します。 + 引数: + location: 場所。 + celsius: 温度に摂氏を使用するかどうか。 + """ + return f"The weather in {location} is sunny with temperatures around 7°C." + +model = OpenAIServerModel(model_id="gpt-4o") +agent = ToolCallingAgent(tools=[get_weather], model=model) +answer = agent.run("What is the weather in Tokyo?") +``` + +コードサンプルを実行したら、Weave のプロジェクトダッシュボードに移動してトレースを確認してください。 + + +![Weave は各カスタムツール呼び出しをログに記録します。](/weave/guides/integrations/imgs/smolagents-custom-tool.png) + \ No newline at end of file diff --git a/ja/weave/guides/integrations/together_ai.mdx b/ja/weave/guides/integrations/together_ai.mdx new file mode 100644 index 0000000000..5b35c76074 --- /dev/null +++ b/ja/weave/guides/integrations/together_ai.mdx @@ -0,0 +1,46 @@ +--- +title: Together AI +description: Together AI のオープンソース LLM を、Weave の OpenAI SDK 互換機能を使用して追跡および評価できます。これにより、 + モデル 呼び出し、 ファインチューニング ワークフロー、およびホストされた モデル とのシームレスな インテグレーション が可能になります。 +--- + +Together AI は、オープンソース LLM に焦点を当てた、生成 AI モデルの構築およびファインチューニングのためのプラットフォームであり、顧客が自身の Models をファインチューンしてホストすることを可能にします。 + + + +`together` Python パッケージに対する完全な Weave サポートは現在開発中です。 + + + +`together` Python パッケージへの完全な Weave サポートは現在開発中ですが、Together は OpenAI SDK 互換性([docs](https://docs.together.ai/docs/openai-api-compatibility))をサポートしており、Weave はこれを自動的に検出して統合します。 + +Together API の使用に切り替えるには、API キーを [Together API](https://docs.together.ai/docs/get-started#access-your-api-key) キーに、`base_url` を `https://api.together.xyz/v1` に、そして model を同社の [チャットモデル](https://docs.together.ai/docs/inference-models#chat-models) のいずれかに変更するだけです。 + +```python lines {5, 10-13} +import os +import openai +import weave + +weave.init('together-weave') + +system_content = "You are a travel agent. Be descriptive and helpful." +user_content = "Tell me about San Francisco" + +client = openai.OpenAI( + api_key=os.environ.get("TOGETHER_API_KEY"), + base_url="https://api.together.xyz/v1", +) +chat_completion = client.chat.completions.create( + model="mistralai/Mixtral-8x7B-Instruct-v0.1", + messages=[ + {"role": "system", "content": system_content}, + {"role": "user", "content": user_content}, + ], + temperature=0.7, + max_tokens=1024, +) +response = chat_completion.choices[0].message.content +print("Together response:\n", response) +``` + +これは使い始めるための簡単な例ですが、より複雑な use case で Weave を独自の関数と統合する方法の詳細については、[OpenAI](/weave/guides/integrations/openai#track-your-own-ops) ガイドを参照してください。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/verdict.mdx b/ja/weave/guides/integrations/verdict.mdx new file mode 100644 index 0000000000..a4128da534 --- /dev/null +++ b/ja/weave/guides/integrations/verdict.mdx @@ -0,0 +1,323 @@ +--- +title: Verdict +description: Verdict Evaluation フレームワークと Weave を併用して、 LLM 評価 パイプライン のトレースとモニタリングを行います。 +--- + + + Open In Colab + + +Weave は、[Verdict Python ライブラリ](https://verdict.haizelabs.com/docs/) を介して行われるすべての呼び出しの追跡と ログ を簡単に行えるように設計されています。 + +AI 評価 パイプライン を扱う際、デバッグ は非常に重要です。パイプライン のステップが失敗したり、出力が予期しないものであったり、ネストされた操作が混乱を招いたりする場合、問題の特定は困難を極めることがあります。Verdict アプリケーション は多くの場合、複数の パイプライン ステップ、ジャッジ(判断ロジック)、変換で構成されており、評価 ワークフロー の内部動作を理解することが不可欠です。 + +Weave は、[Verdict](https://verdict.readthedocs.io/) アプリケーション の トレース を自動的にキャプチャすることで、このプロセスを簡素化します。これにより、パイプライン のパフォーマンスを監視・分析 でき、AI 評価 ワークフロー の デバッグ や最適化が容易になります。 + +## クイックスタート + +まずは、スクリプトの冒頭で `weave.init(project=...)` を呼び出すだけです。`project` 引数 を使用して、`team-name/project-name` で特定の W&B Team 名に ログ を記録するか、`project-name` を指定してデフォルトの チーム / Entity に ログ を記録します。 + +```python lines {7} +import weave +from verdict import Pipeline +from verdict.common.judge import JudgeUnit +from verdict.schema import Schema + +# プロジェクト名で Weave を初期化 +weave.init("verdict_demo") + +# シンプルな評価パイプラインを作成 +pipeline = Pipeline() +pipeline = pipeline >> JudgeUnit().prompt("Rate the quality of this text: {source.text}") + +# サンプルデータを作成 +data = Schema.of(text="This is a sample text for evaluation.") + +# パイプラインを実行 - これは自動的にトレースされます +output = pipeline.run(data) + +print(output) +``` + +## 呼び出しメタデータの追跡 + +Verdict パイプライン の呼び出しから メタデータ を追跡するには、[`weave.attributes`](/weave/reference/python-sdk#function-attributes) コンテキストマネージャを使用できます。このコンテキストマネージャを使用すると、パイプライン の実行や評価バッチなど、特定の コード ブロックに対してカスタム メタデータ を設定できます。 + +```python lines {7,14} +import weave +from verdict import Pipeline +from verdict.common.judge import JudgeUnit +from verdict.schema import Schema + +# プロジェクト名で Weave を初期化 +weave.init("verdict_demo") + +pipeline = Pipeline() +pipeline = pipeline >> JudgeUnit().prompt("Evaluate sentiment: {source.text}") + +data = Schema.of(text="I love this product!") + +with weave.attributes({"evaluation_type": "sentiment", "batch_id": "batch_001"}): + output = pipeline.run(data) + +print(output) +``` + +Weave は、Verdict パイプライン 呼び出しの トレース に対して自動的に メタデータ を追跡します。メタデータ は Weave の Web インターフェースで確認できます。 + +## トレース + +AI 評価 パイプライン の トレース を中央データベースに保存することは、開発と プロダクション の両方の段階において極めて重要です。これらの トレース は、貴重な データセット を提供することで、評価 ワークフロー の デバッグ や改善に不可欠な役割を果たします。 + +Weave は Verdict アプリケーション の トレース を自動的にキャプチャします。Verdict ライブラリを通じて行われる以下のようなすべての呼び出しを追跡し、ログ を記録します。 + +- パイプライン 実行ステップ +- ジャッジユニットによる 評価 +- レイヤー変換 +- プーリング操作 +- カスタムユニットおよび変換 + +Weave の Web インターフェースで トレース を表示し、パイプライン 実行の階層構造を確認できます。 + +## パイプライン トレース の例 + +以下は、Weave がネストされた パイプライン 操作をどのように トレース するかを示す、より複雑な例です。 + +```python lines {8} +import weave +from verdict import Pipeline, Layer +from verdict.common.judge import JudgeUnit +from verdict.transform import MeanPoolUnit +from verdict.schema import Schema + +# プロジェクト名で Weave を初期化 +weave.init("verdict_demo") + +# 複数のステップを持つ複雑なパイプラインを作成 +pipeline = Pipeline() +pipeline = pipeline >> Layer([ + JudgeUnit().prompt("Rate coherence: {source.text}"), + JudgeUnit().prompt("Rate relevance: {source.text}"), + JudgeUnit().prompt("Rate accuracy: {source.text}") +], 3) +pipeline = pipeline >> MeanPoolUnit() + +# サンプルデータ +data = Schema.of(text="This is a comprehensive evaluation of text quality across multiple dimensions.") + +# パイプラインを実行 - すべての操作がトレースされます +result = pipeline.run(data) + +print(f"Average score: {result}") +``` + +これにより、以下を示す詳細な トレース が作成されます。 +- メインの Pipeline 実行 +- Layer 内の各 JudgeUnit 評価 +- MeanPoolUnit 集計ステップ +- 各操作のタイミング情報 + +## 設定 + +`weave.init()` を呼び出すと、Verdict パイプライン の トレース が自動的に有効になります。この インテグレーション は、`Pipeline.__init__` メソッドをパッチして `VerdictTracer` を挿入し、すべての トレース データを Weave に転送することで動作します。 + +追加の設定は不要です。Weave は自動的に以下を行います。 +- すべての パイプライン 操作をキャプチャ +- 実行タイミングの追跡 +- 入力と出力の ログ 記録 +- トレース の階層構造の維持 +- パイプライン の並列実行の処理 + +## カスタムトレーサーと Weave + +アプリケーション でカスタムの Verdict トレーサーを使用している場合でも、Weave の `VerdictTracer` はそれらと併用できます。 + +```python lines {8} +import weave +from verdict import Pipeline +from verdict.common.judge import JudgeUnit +from verdict.util.tracing import ConsoleTracer +from verdict.schema import Schema + +# プロジェクト名で Weave を初期化 +weave.init("verdict_demo") + +# Verdictの内蔵トレーサーも引き続き使用可能 +console_tracer = ConsoleTracer() + +# Weave(自動)と Console トレースの両方を使用してパイプラインを作成 +pipeline = Pipeline(tracer=[console_tracer]) # Weaveトレーサーは自動的に追加されます +pipeline = pipeline >> JudgeUnit().prompt("Evaluate: {source.text}") + +data = Schema.of(text="Sample evaluation text") + +# これにより Weave とコンソールの両方にトレースされます +result = pipeline.run(data) +``` + +## Models と Evaluations + +複数の パイプライン コンポーネントを持つ AI システムを整理し評価することは困難な場合があります。[`weave.Model`](/weave/guides/core-types/models) を使用すると、プロンプト、パイプライン 設定、評価 パラメータ などの実験の詳細をキャプチャして整理でき、異なるイテレーションの比較が容易になります。 + +次の例では、Verdict パイプライン を `WeaveModel` でラップする方法を示します。 + +```python lines {8,10,14} +import asyncio +import weave +from verdict import Pipeline +from verdict.common.judge import JudgeUnit +from verdict.schema import Schema + +# プロジェクト名で Weave を初期化 +weave.init("verdict_demo") + +class TextQualityEvaluator(weave.Model): + judge_prompt: str + pipeline_name: str + + @weave.op() + async def predict(self, text: str) -> dict: + pipeline = Pipeline(name=self.pipeline_name) + pipeline = pipeline >> JudgeUnit().prompt(self.judge_prompt) + + data = Schema.of(text=text) + result = pipeline.run(data) + + return { + "text": text, + "quality_score": result.score if hasattr(result, 'score') else result, + "evaluation_prompt": self.judge_prompt + } + +model = TextQualityEvaluator( + judge_prompt="Rate the quality of this text on a scale of 1-10: {source.text}", + pipeline_name="text_quality_evaluator" +) + +text = "This is a well-written and informative piece of content that provides clear value to readers." + +prediction = asyncio.run(model.predict(text)) + +# Jupyter Notebook の場合は以下を実行: +# prediction = await model.predict(text) + +print(prediction) +``` + +この コード は Weave UI で視覚化可能な モデル を作成し、パイプライン 構造と 評価 結果の両方を表示します。 + +### Evaluations + +Evaluations(評価)は、評価 パイプライン 自体のパフォーマンスを測定するのに役立ちます。[`weave.Evaluation`](/weave/guides/core-types/evaluations) クラスを使用することで、特定のタスクや データセット に対して Verdict パイプライン がどの程度良好に機能するかをキャプチャできます。 + +```python lines {8} +import asyncio +import weave +from verdict import Pipeline +from verdict.common.judge import JudgeUnit +from verdict.schema import Schema + +# Weave を初期化 +weave.init("verdict_demo") + +# 評価モデルを作成 +class SentimentEvaluator(weave.Model): + @weave.op() + async def predict(self, text: str) -> dict: + pipeline = Pipeline() + pipeline = pipeline >> JudgeUnit().prompt( + "Classify sentiment as positive, negative, or neutral: {source.text}" + ) + + data = Schema.of(text=text) + result = pipeline.run(data) + + return {"sentiment": result} + +# テストデータ +texts = [ + "I love this product, it's amazing!", + "This is terrible, worst purchase ever.", + "The weather is okay today." +] +labels = ["positive", "negative", "neutral"] + +examples = [ + {"id": str(i), "text": texts[i], "target": labels[i]} + for i in range(len(texts)) +] + +# スコアリング関数 +@weave.op() +def sentiment_accuracy(target: str, output: dict) -> dict: + predicted = output.get("sentiment", "").lower() + return {"correct": target.lower() in predicted} + +model = SentimentEvaluator() + +evaluation = weave.Evaluation( + dataset=examples, + scorers=[sentiment_accuracy], +) + +scores = asyncio.run(evaluation.evaluate(model)) +# Jupyter Notebook の場合は以下を実行: +# scores = await evaluation.evaluate(model) + +print(scores) +``` + +これにより、Verdict パイプライン がさまざまなテストケースでどのように機能するかを示す 評価 トレース が作成されます。 + +## ベストプラクティス + +### パフォーマンス監視 +Weave は、すべての パイプライン 操作のタイミング情報を自動的にキャプチャします。これを使用して、パフォーマンスのボトルネックを特定できます。 + +```python lines {6} +import weave +from verdict import Pipeline, Layer +from verdict.common.judge import JudgeUnit +from verdict.schema import Schema + +weave.init("verdict_demo") + +# パフォーマンスにばらつきが出る可能性のあるパイプラインを作成 +pipeline = Pipeline() +pipeline = pipeline >> Layer([ + JudgeUnit().prompt("Quick evaluation: {source.text}"), + JudgeUnit().prompt("Detailed analysis: {source.text}"), # こちらの方が遅い可能性があります +], 2) + +data = Schema.of(text="Sample text for performance testing") + +# タイミングのパターンを確認するために複数回実行 +for i in range(3): + with weave.attributes({"run_number": i}): + result = pipeline.run(data) +``` + +### エラー処理 +Weave は、パイプライン の実行中に発生した例外を自動的にキャプチャします。 + +```python lines {6} +import weave +from verdict import Pipeline +from verdict.common.judge import JudgeUnit +from verdict.schema import Schema + +weave.init("verdict_demo") + +pipeline = Pipeline() +pipeline = pipeline >> JudgeUnit().prompt("Process: {source.invalid_field}") # これによりエラーが発生します + +data = Schema.of(text="Sample text") + +try: + result = pipeline.run(data) +except Exception as e: + print(f"Pipeline failed: {e}") + # エラー詳細は Weave トレースにキャプチャされます +``` + +Weave を Verdict と統合することで、AI 評価 パイプライン に対する包括的なオブザーバビリティが得られ、評価 ワークフロー の デバッグ、最適化、理解が容易になります。 \ No newline at end of file diff --git a/ja/weave/guides/integrations/verifiers.mdx b/ja/weave/guides/integrations/verifiers.mdx new file mode 100644 index 0000000000..d541d44d80 --- /dev/null +++ b/ja/weave/guides/integrations/verifiers.mdx @@ -0,0 +1,133 @@ +--- +title: ベリファイア +description: Weave を使用して Verifiers RL 環境や LLM agent のトレーニングを追跡・デバッグし、多層的な会話、評価ロールアウト、モデルのパフォーマンスメトリクスをキャプチャすることで、強化学習ワークフローの包括的なオブザーバビリティを実現します。 +--- + +[Verifiers](https://github.com/willccbb/verifiers) は、強化学習(RL)環境の構築と LLM エージェントのトレーニングのためのモジュール式コンポーネントライブラリです。Verifiers で構築された環境は、LLM の評価、合成データパイプライン、あらゆる OpenAI 互換エンドポイントのエージェントハーネス、および RL トレーニングとして機能します。 + +W&B を使用してトレーニングメトリクスを記録するだけでなく、Weave を Verifiers の RL ワークフローに統合することで、トレーニング中のモデルのパフォーマンスに関するオブザーバビリティ(可観測性)を得ることができます。Weave は各ステップの入力、出力、タイムスタンプを記録するため、各ターンでデータがどのように変換されるかを確認したり、複雑なマルチラウンドの会話をデバッグしたり、トレーニング結果を最適化したりすることができます。 + +また、Weave と Verifiers を組み合わせて 評価(Evaluations)を実行することも可能です。 + +このガイドでは、Verifiers、W&B、Weave のインストール方法を説明し、Verifiers を Weave および W&B と共に使用する 2 つの例を紹介します。 + +![verifiers wandb run page](/images/weave/verifiers.gif) + +## はじめに + +Verifiers と Weave を統合するには、まず `uv` を使用して Verifiers ライブラリをインストールします([ライブラリの作者によって推奨されています](https://github.com/willccbb/verifiers?tab=readme-ov-file#setup))。以下のコマンドのいずれかを使用してライブラリをインストールしてください。 + +```bash +# ローカル開発および API ベースのモデル向けのコアライブラリをインストール +uv add verifiers + +# PyTorch や GPU サポートを含む、すべてのオプションの依存関係を含むフルバージョンをインストール +uv add 'verifiers[all]' && uv pip install flash-attn --no-build-isolation + +# GitHub から直接最新バージョンをインストール(未リリースの最新機能や修正を含む) +uv add verifiers @ git+https://github.com/willccbb/verifiers.git +``` + +次に、Weave と W&B をインストールします。 + +```bash +uv pip install weave wandb +``` + +Weave は、デフォルトでこのライブラリに対して [暗黙的なパッチ適用(implicit patching)](/weave/guides/integrations#automatic-implicit-patching) を有効にします。これにより、パッチ関数を明示的に呼び出すことなく、Verifiers で Weave を使用できます。 + +### ロールアウトのトレースと評価 + +必要なライブラリをインストールしたら、Weave と Verifiers を併用してコールの トレース(Traces)や 評価(Evaluations)を実行できます。 + +以下のサンプルスクリプトは、Verifiers で評価を実行し、その結果を Weave に ログ(log)する方法を示しています。このスクリプトは、[GSM8K データセット](https://huggingface.co/datasets/openai/gsm8k) を使用して LLM が数学の問題を解く能力をテストします。GPT-4 に 2 つの数学の問題を解かせ、各回答から数値を抽出し、Verifiers を評価フレームワークとして使用してその試行を採点します。 + +サンプルを実行し、Weave で結果を確認してください。 + +```python lines +import os +from openai import OpenAI +import verifiers as vf +import weave + +os.environ["OPENAI_API_KEY"] = "" + +# Weave を初期化 +weave.init("verifiers_demo") + +# 最小限のシングルターン環境 +dataset = vf.load_example_dataset("gsm8k", split="train").select(range(2)) +parser = vf.ThinkParser() + +def correct_answer(parser, completion, answer): + parsed = parser.parse_answer(completion) or "" + return 1.0 if parsed.strip() == answer.strip() else 0.0 + +rubric = vf.Rubric(funcs=[correct_answer, parser.get_format_reward_func()], weights=[1.0, 0.2]) + +env = vf.SingleTurnEnv( + dataset=dataset, + system_prompt="Think step-by-step, then answer.", + parser=parser, + rubric=rubric, +) + +client = OpenAI() +results = env.evaluate( + client, "gpt-4.1-mini", num_examples=2, rollouts_per_example=2, max_concurrent=8 +) +``` + +### 実験管理とトレースを用いたモデルのファインチューン + +Weave は、トレーニング中のモデルの挙動に関する洞察を提供することで、RL のファインチューンワークフローにおける強力なツールとなります。W&B と併用することで、包括的なオブザーバビリティが得られます。W&B はトレーニングメトリクスとパフォーマンスチャートを追跡し、Weave はトレーニングプロセス中の各インタラクションの詳細な トレース(Traces)をキャプチャします。 + +`verifiers` リポジトリには、すぐに実行できる [例](https://github.com/willccbb/verifiers/tree/main/examples/grpo) が用意されています。 + +以下の RL トレーニングパイプラインの例では、ローカルの推論サーバーを実行し、GSM8K データセットを使用してモデルをトレーニングします。モデルは数学の問題に対する回答を返し、トレーニングループは出力をスコアリングしてそれに応じてモデルを更新します。W&B は損失、報酬、精度などのトレーニングメトリクスを記録し、Weave は入力、出力、推論過程、およびスコアリングをキャプチャします。 + +このパイプラインを使用するには: + +1. ソースからフレームワークをインストールします。以下のコマンドで GitHub から Verifiers ライブラリと必要な依存関係をインストールします。 + +```bash +git clone https://github.com/willccbb/verifiers +cd verifiers +uv sync --all-extras && uv pip install flash-attn --no-build-isolation +``` + +2. 既成の環境をインストールします。以下のコマンドで、事前設定済みの GSM8K トレーニング環境をインストールします。 + +```bash +vf-install gsm8k --from-repo +``` + +3. モデルをトレーニングします。以下のコマンドは、それぞれ推論サーバーとトレーニングループを ローンチ(Launch)します。このサンプルワークフローではデフォルトで `report_to=wandb` が設定されているため、別途 `wandb.init` を呼び出す必要はありません。W&B にメトリクスを記録するために、このマシンの認証を求められます。 + +```bash +# 推論サーバーを実行 +CUDA_VISIBLE_DEVICES=0 vf-vllm --model willcb/Qwen3-0.6B --enforce-eager --disable-log-requests + +# トレーニングループを実行 +CUDA_VISIBLE_DEVICES=1 accelerate launch --num-processes 1 --config-file configs/zero3.yaml examples/grpo/train_gsm8k.py +``` + + +この例は 2xH100 で正常にテストされました。安定性を高めるために、以下の環境変数を設定しています。 + +```bash +# ローンチ前に、両方のシェル(サーバーとトレーナー)で実行 +export NCCL_CUMEM_ENABLE=0 +export NCCL_CUMEM_HOST_ENABLE=0 +``` + +これらの変数は、デバイスメモリ割り当てのための CUDA Unified Memory (CuMem) を無効にします。 + + +トレーニングが開始されると、UI で run 中にログ記録された [トレースを確認](/weave/guides/tools/weave-in-workspaces) できます。 + +トレースでは、`Environment.a_generate` および `Rubric.score_rollouts` メソッドの `logprobs` が除外されます。これにより、トレーニング用のオリジナルデータはそのままに、ペイロードサイズを小さく抑えています。 + +## 関連項目 + +Verifiers は W&B Models との強力なインテグレーションを備えています。詳細は [Monitoring](https://verifiers.readthedocs.io/en/latest/training.html#monitoring) を参照してください。 \ No newline at end of file diff --git a/ja/weave/guides/platform.mdx b/ja/weave/guides/platform.mdx new file mode 100644 index 0000000000..a70eb5d4f5 --- /dev/null +++ b/ja/weave/guides/platform.mdx @@ -0,0 +1,47 @@ +--- +title: デプロイメント オプションとセキュリティ機能 +description: Weave の deployment オプション、IAM 管理、およびデータセキュリティ機能について説明します。 +--- + +Weave は以下のデプロイメントオプションで利用可能です: + +- **[W&B Multi-tenant Cloud](https://docs.wandb.ai/platform/hosting/hosting-options/multi_tenant_cloud):** 北米リージョンの W&B の Google Cloud Platform (Google Cloud) アカウントにデプロイされた、マルチテナントの完全管理型プラットフォーム。 +- **[W&B Dedicated Cloud](https://docs.wandb.ai/platform/hosting/hosting-options/dedicated_cloud):** AWS、Google Cloud、Azure で一般提供されています。 +- **[Self-Managed instances](/weave/guides/platform/weave-self-managed):** Weave を独自にホストすることを希望する Teams 向けに、デプロイメントオプションを評価するためのガイダンスを W&B チームから提供しています。 + +## アイデンティティとアクセス管理 + +[W&B Organization](/platform/hosting/iam/org_team_struct#organization) における安全な認証と効果的な認可のために、アイデンティティおよびアクセス管理機能を利用してください。Weave の Users は、デプロイメントオプションと [料金プラン](https://wandb.ai/site/pricing/) に応じて、以下の機能を利用できます: + +- **シングルサインオン (SSO) を使用した認証:** Google や Github などのパブリックな ID プロバイダーのほか、Okta、Azure Active Directory などのエンタープライズプロバイダーを [OIDC を使用して](/platform/hosting/iam/sso) 利用可能です。 +- **[チームベースの論理的分離](/platform/app/settings-page/teams):** 各 Team は、組織内のビジネスユニット、部門、またはプロジェクトチームに対応させることができます。 +- **W&B Projects を使用したイニシアチブの整理:** Team 内でイニシアチブを整理し、機密性の高いコラボレーションのための `restricted` スコープを含む、必要な [公開範囲](/platform/hosting/iam/access-management/restricted-projects) を設定します。 +- **ロールベースのアクセス制御:** [Team](/platform/hosting/iam/access-management/restricted-projects#assign-project-level-role-to-a-user) または [Project](/platform/hosting/iam/access-management/restricted-projects#assign-project-level-role-to-a-user) レベルでアクセス権を設定し、Users が必要最小限の原則に基づいてデータにアクセスできるようにします。 +- **スコープ指定されたサービスアカウント:** 組織または Team にスコープを絞ったサービスアカウントを使用して、Gen AI ワークフローを自動化します。 +- **[SCIM API および Python SDK](/platform/hosting/iam/automate_iam):** SCIM API と Python SDK を使用して、Users と Teams を効率的に管理します。 + +## データセキュリティ + +- **SaaS Cloud:** すべての Weave ユーザーのデータは、共有の Clickhouse Cloud クラスターに保存され、クラウドネイティブの暗号化を使用して暗号化されます。共有コンピューティングサービスがデータを処理し、W&B の組織、Team、および Project で構成されるセキュリティコンテキストを通じて分離を確保します。 + +- **Dedicated Cloud:** データは、選択したクラウドおよびリージョンの専用 Clickhouse Cloud クラスターに保存されます。独自のコンピューティング環境でデータが処理され、以下の追加保護が提供されます: + - **[IP 許可リスト](/platform/hosting/data-security/ip-allowlisting):** 特定の IP アドレスからインスタンスへのアクセスを認可します。これはオプション機能です。 + - **[プライベート接続](/platform/hosting/data-security/private-connectivity):** クラウドプロバイダーのプライベートネットワークを介してデータを安全にルーティングします。これはオプション機能です。 + - **[データの暗号化](/platform/hosting/data-security/data-encryption):** W&B は、W&B 管理の独自の暗号化キーを使用して、保管中のデータを暗号化します。 + - **Clickhouse クラスターのセキュリティ:** W&B は、クラウドプロバイダーのプライベートネットワークを介して Dedicated Cloud インスタンス用の専用 Clickhouse Cloud クラスターに接続します。また、Clickhouse のファイルレベルの暗号化を活用しつつ、W&B 管理の独自の暗号化キーを使用してクラスターを暗号化します。 + + +[W&B プラットフォームのセキュアストレージコネクタまたは BYOB](/platform/hosting/data-security/secure-storage-connector) は、Weave では利用できません。 + + +## メンテナンス + +SaaS Cloud または Dedicated Cloud で Weave を使用する場合、W&B プラットフォームは完全に管理されているため、プロビジョニング、運用、およびメンテナンスのオーバーヘッドやコストを回避できます。 + +## コンプライアンス + + +SOC 2 レポートやその他のセキュリティ・コンプライアンスドキュメントをリクエストするには、[W&B Security Portal](https://security.wandb.ai/) を参照するか、詳細について W&B チームにお問い合わせください。 + + +SaaS Cloud と Dedicated Cloud の両方のセキュリティ管理策は、定期的かつ内部および外部で監査されています。両プラットフォームとも SOC 2 Type II に準拠しています。さらに、Dedicated Cloud は、生成 AI アプリケーションを構築しながら PHI(保護対象保健情報)データを管理する組織向けに、HIPAA に準拠しています。 \ No newline at end of file diff --git a/ja/weave/guides/platform/weave-self-managed.mdx b/ja/weave/guides/platform/weave-self-managed.mdx new file mode 100644 index 0000000000..6d850ac50a --- /dev/null +++ b/ja/weave/guides/platform/weave-self-managed.mdx @@ -0,0 +1,1205 @@ +--- +title: セルフマネージドな W&B Weave インスタンスをセットアップする +description: 自社独自の インフラストラクチャー 上で Weave をデプロイ・管理する +--- + +W&B Weave をセルフホスティングすることで、環境と設定をより細かく制御できるようになります。これにより、より分離された環境を構築し、追加のセキュリティコンプライアンス要件を満たすことが可能になります。このドキュメントでは、Altinity ClickHouse Operator を使用して、自己管理型(セルフマネージド)環境で W&B Weave を実行するために必要なすべてのコンポーネントをデプロイする方法をガイドします。 + +自己管理型の Weave デプロイメントは、バックエンドの管理に [ClickHouseDB](https://clickhouse.com/) を利用します。このデプロイメントでは以下を使用します: + +- **Altinity ClickHouse Operator**: Kubernetes 向けのエンタープライズグレードの ClickHouse 管理ツール +- **ClickHouse Keeper**: 分散コーディネーションサービス (ZooKeeper の代替) +- **ClickHouse Cluster**: トレースストレージ用の高可用性データベースクラスター +- **S3 互換ストレージ**: ClickHouse データの永続化用オブジェクトストレージ + + +詳細なリファレンスアーキテクチャーについては、 [W&B Self-Managed Reference Architecture](https://docs.wandb.ai/guides/hosting/self-managed/ref-arch/#models-and-weave) を参照してください。 + + +## セットアップに関する重要な注意点 + +このガイドの設定例は参照用です。組織の Kubernetes 環境はそれぞれ異なるため、セルフホストインスタンスでは以下の調整が必要になる可能性が高いです: + +- **セキュリティとコンプライアンス**: 組織のセキュリティポリシーや Kubernetes/OpenShift の要件に従って、セキュリティコンテキスト、 `runAsUser`/`fsGroup` の値、その他のセキュリティ設定を調整してください。 +- **リソースのサイジング**: 記載されているリソース割り当ては開始点です。予想されるトレース量とパフォーマンス要件に基づく適切なサイジングについては、 **W&B のソリューションアーキテクトチームにご相談ください** 。 +- **インフラストラクチャーの詳細**: 環境に合わせて、ストレージクラス、ノードセレクター、その他のインフラ固有の設定を更新してください。 + +このガイドの設定は、規定の解決策ではなく、テンプレートとして扱う必要があります。 + +## アーキテクチャー + +```mermaid +graph TD + A["W&B Platform (wandb)
weave-trace · app/API · console/parquet"] --> B["ClickHouse Cluster"] + B --> C["ch-server-0"] + B --> D["ch-server-1"] + B --> E["ch-server-2"] + C --> F["ClickHouse Keeper Cluster
keeper-0
keeper-1
keeper-2"] + D --> F + E --> F + C --> G["S3 Storage
(AWS/MinIO)"] + D --> G + E --> G +``` + +## 前提条件 + +自己管理型 Weave インスタンスには、以下のリソースが必要です: + +- **Kubernetes クラスター**: バージョン 1.29 以上 +- **Kubernetes ノード**: マルチノードクラスター(高可用性のために最低 3 ノードを推奨) +- **ストレージクラス**: 永続ボリューム用の動作可能な StorageClass(例: `gp3`, `standard`, `nfs-csi`) +- **S3 バケット**: 適切なアクセス権限が設定された、構成済みの S3 または S3 互換バケット +- **W&B プラットフォーム**: すでにインストールされ実行されていること( [W&B Self-Managed Deployment Guide](https://docs.wandb.ai/guides/hosting/hosting-options/self-managed/) を参照) +- **W&B ライセンス**: W&B サポートから提供された Weave 有効化済みのライセンス + + +この前提条件リストだけでサイジングを決定しないでください。リソースの必要量は、トレース量や使用パターンによって大きく異なります。具体的なクラスターサイジングのガイダンスについては、詳細な [リソース要件](#resource-requirements) セクションを参照してください。 + + +### 必要なツール + +インスタンスをセットアップするには、以下のツールが必要です: + +- クラスターへのアクセス権が設定された `kubectl` +- `helm` v3.0 以上 +- AWS クレデンシャル(S3 を使用する場合)または S3 互換ストレージへのアクセス権 + +### ネットワーク要件 + +Kubernetes クラスターには以下のネットワーク設定が必要です: + +- `clickhouse` ネームスペース内の Pod が `wandb` ネームスペース内の Pod と通信できること +- ClickHouse ノードがポート 8123, 9000, 9009, 2181 で相互に通信できること + +## 自己管理型 Weave インスタンスのデプロイ + +### ステップ 1: Altinity ClickHouse Operator のデプロイ + +Altinity ClickHouse Operator は、Kubernetes での ClickHouse のインストールを管理します。 + +#### 1.1 Altinity Helm リポジトリの追加 + +```bash +helm repo add altinity https://helm.altinity.com +helm repo update +``` + +#### 1.2 オペレーター設定の作成 + +`ch-operator.yaml` という名前のファイルを作成します: + +```yaml +operator: + image: + repository: altinity/clickhouse-operator + tag: "0.25.4" + + # セキュリティコンテキスト - クラスターの要件に合わせて調整してください + containerSecurityContext: + runAsGroup: 0 + runAsNonRoot: true + runAsUser: 10001 # OpenShift/Kubernetes のセキュリティポリシーに基づいて更新してください + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + +metrics: + enabled: false + +# 名前のオーバーライド - 必要に応じてカスタマイズ +nameOverride: "wandb" +``` + +ここに示されている `containerSecurityContext` の値は、ほとんどの Kubernetes ディストリビューションで動作します。 **OpenShift** の場合は、プロジェクトに割り当てられた UID 範囲に合わせて `runAsUser` と `fsGroup` を調整する必要がある場合があります。 + +#### 1.3 オペレーターのインストール + +```bash +helm upgrade --install ch-operator altinity/altinity-clickhouse-operator \ + --version 0.25.4 \ + --namespace clickhouse \ + --create-namespace \ + -f ch-operator.yaml +``` + +#### 1.4 オペレーターインストールの確認 + +```bash +# オペレーター Pod が実行中であることを確認 +kubectl get pods -n clickhouse + +# 期待される出力: +# NAME READY STATUS RESTARTS AGE +# ch-operator-wandb-xxxxx 1/1 Running 0 30s + +# オペレーターのイメージバージョンを確認 +kubectl get pods -n clickhouse -o jsonpath="{.items[*].spec.containers[*].image}" | \ + tr ' ' '\n' | grep -v 'metrics-exporter' | sort -u + +# 期待される出力: +# altinity/clickhouse-operator:0.25.4 +``` + +### ステップ 2: S3 ストレージの準備 + +ClickHouse はデータの永続化のために S3 または S3 互換ストレージを必要とします。 + +#### 2.1 S3 バケットの作成 + +AWS アカウントまたは S3 互換ストレージプロバイダーで S3 バケットを作成します: + +```bash +# AWS の例 +aws s3 mb s3://my-wandb-clickhouse-bucket --region eu-central-1 +``` + +#### 2.2 S3 クレデンシャルの設定 + +S3 アクセス用のクレデンシャルを提供するには、2 つのオプションがあります: + +##### オプション A: AWS IAM ロールの使用 (IRSA - AWS 推奨) + +Kubernetes ノードに S3 アクセス権を持つ IAM ロールが付与されている場合、ClickHouse は EC2 インスタンスのメタデータを使用できます: + +```yaml +# ch-server.yaml で以下を設定: +true +``` + +**必要な IAM ポリシー** (ノードの IAM ロールにアタッチ): + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "s3:GetObject", + "s3:PutObject", + "s3:DeleteObject", + "s3:ListBucket" + ], + "Resource": [ + "arn:aws:s3:::my-wandb-clickhouse-bucket", + "arn:aws:s3:::my-wandb-clickhouse-bucket/*" + ] + } + ] +} +``` + +##### オプション B: アクセスキーの使用 + +静的なクレデンシャルを使用する場合は、Kubernetes secret を作成します: + +```bash +kubectl create secret generic aws-creds \ + --namespace clickhouse \ + --from-literal aws_access_key=YOUR_ACCESS_KEY \ + --from-literal aws_secret_key=YOUR_SECRET_KEY +``` + +その後、この secret を使用するように ClickHouse を設定します(後述の ch-server.yaml 設定を参照)。 + +### ステップ 3: ClickHouse Keeper のデプロイ + +[ClickHouse Keeper](https://clickhouse.com/docs/guides/sre/keeper/clickhouse-keeper) は、データレプリケーションと分散 DDL クエリ実行のためのコーディネーションシステムを提供します。 + +#### 3.1 Keeper 設定の作成 + +`ch-keeper.yaml` という名前のファイルを作成します: + +```yaml +apiVersion: "clickhouse-keeper.altinity.com/v1" +kind: "ClickHouseKeeperInstallation" +metadata: + name: wandb + namespace: clickhouse + annotations: {} +spec: + defaults: + templates: + podTemplate: default + dataVolumeClaimTemplate: default + + templates: + podTemplates: + - name: keeper + metadata: + labels: + app: clickhouse-keeper + spec: + # Pod セキュリティコンテキスト - 環境に合わせて調整してください + securityContext: + fsGroup: 10001 # クラスターのセキュリティ要件に基づいて更新してください + fsGroupChangePolicy: Always + runAsGroup: 0 + runAsNonRoot: true + runAsUser: 10001 # OpenShift の場合は、プロジェクトに割り当てられた UID 範囲を使用してください + seccompProfile: + type: RuntimeDefault + + # Keeper をノード間に分散させるためのアンチアフィニティ(高可用性のために推奨) + # クラスターのサイズと可用性要件に基づいてカスタマイズまたは削除してください + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: "app" + operator: In + values: + - clickhouse-keeper + topologyKey: "kubernetes.io/hostname" + + containers: + - name: clickhouse-keeper + imagePullPolicy: IfNotPresent + image: "clickhouse/clickhouse-keeper:25.3.5.42" + # リソースリクエスト - 例示的な値。ワークロードに基づいて調整してください + resources: + requests: + memory: "256Mi" + cpu: "0.5" + limits: + memory: "2Gi" + cpu: "1" + + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + + volumeClaimTemplates: + - name: data + metadata: + labels: + app: clickhouse-keeper + spec: + storageClassName: gp3 # 使用する StorageClass に変更してください + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + + configuration: + clusters: + - name: keeper # Keeper クラスター名 - サービス DNS 名に使用されます + layout: + replicasCount: 3 + templates: + podTemplate: keeper + dataVolumeClaimTemplate: data + + settings: + logger/level: "information" + logger/console: "true" + listen_host: "0.0.0.0" + keeper_server/four_letter_word_white_list: "*" + keeper_server/coordination_settings/raft_logs_level: "information" + keeper_server/enable_ipv6: "false" + keeper_server/coordination_settings/async_replication: "true" +``` + +**重要な設定の更新**: + +- **StorageClass**: クラスターで使用可能な StorageClass に合わせて `storageClassName: gp3` を更新してください。 +- **セキュリティコンテキスト**: 組織のセキュリティポリシーに準拠するように `runAsUser`, `fsGroup` の値を調整してください。 +- **アンチアフィニティ**: クラスターのトポロジーと高可用性要件に基づいて `affinity` セクションをカスタマイズまたは削除してください。 +- **リソース**: CPU/メモリの値は例です。適切なサイジングについては W&B ソリューションアーキテクトにご相談ください。 +- **ネーミング**: `metadata.name` または `configuration.clusters[0].name` を変更した場合は、ch-server.yaml (ステップ 4) の Keeper ホスト名を一致するように **必ず更新** する必要があります。 + +#### 3.2 ClickHouse Keeper のデプロイ + +```bash +kubectl apply -f ch-keeper.yaml +``` + +#### 3.3 Keeper デプロイの確認 + +```bash +# Keeper Pod の確認 +kubectl get pods -n clickhouse -l app=clickhouse-keeper + +# 期待される出力: +# NAME READY STATUS RESTARTS AGE +# chk-wandb-keeper-0-0-0 1/1 Running 0 2m +# chk-wandb-keeper-0-1-0 1/1 Running 0 2m +# chk-wandb-keeper-0-2-0 1/1 Running 0 2m + +# Keeper サービスの確認 +kubectl get svc -n clickhouse | grep keeper + +# ポート 2181 で keeper サービスが表示されることを確認 +``` + +### ステップ 4: ClickHouse クラスターのデプロイ + +Weave のトレースデータを保存する ClickHouse サーバークラスターをデプロイします。 + +#### 4.1 ClickHouse サーバー設定の作成 + +`ch-server.yaml` という名前のファイルを作成します: + +```yaml +apiVersion: "clickhouse.altinity.com/v1" +kind: "ClickHouseInstallation" +metadata: + name: wandb + namespace: clickhouse + annotations: {} +spec: + defaults: + templates: + podTemplate: default + dataVolumeClaimTemplate: default + + templates: + podTemplates: + - name: clickhouse + metadata: + labels: + app: clickhouse-server + spec: + # Pod セキュリティコンテキスト - 環境に合わせてカスタマイズしてください + securityContext: + fsGroup: 10001 # セキュリティポリシーに基づいて調整してください + fsGroupChangePolicy: Always + runAsGroup: 0 + runAsNonRoot: true + runAsUser: 10001 # OpenShift の場合は割り当てられた UID 範囲を使用 + seccompProfile: + type: RuntimeDefault + + # アンチアフィニティルール - サーバーが異なるノードで実行されるようにします(オプションですが推奨) + # クラスターのサイズと要件に基づいて調整または削除してください + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: "app" + operator: In + values: + - clickhouse-server + topologyKey: "kubernetes.io/hostname" + + containers: + - name: clickhouse + image: clickhouse/clickhouse-server:25.3.5.42 + # 例示的なリソース割り当て - ワークロードに基づいて調整してください + resources: + requests: + memory: 1Gi + cpu: 1 + limits: + memory: 16Gi + cpu: 4 + + # AWS クレデンシャル(IRSA を使用する場合はこのセクションを削除してください) + env: + - name: AWS_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + name: aws-creds + key: aws_access_key + - name: AWS_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + name: aws-creds + key: aws_secret_key + + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + + volumeClaimTemplates: + - name: data + metadata: + labels: + app: clickhouse-server + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Gi + storageClassName: gp3 # 使用する StorageClass に変更 + + configuration: + # Keeper (ZooKeeper) 設定 + # 重要: これらのホスト名はステップ 3 の Keeper デプロイと一致している必要があります + zookeeper: + nodes: + - host: chk-wandb-keeper-0-0.clickhouse.svc.cluster.local + port: 2181 + - host: chk-wandb-keeper-0-1.clickhouse.svc.cluster.local + port: 2181 + - host: chk-wandb-keeper-0-2.clickhouse.svc.cluster.local + port: 2181 + # オプション: 必要に応じてタイムアウトを調整するためにコメント解除 + # session_timeout_ms: 30000 + # operation_timeout_ms: 10000 + + # ユーザー設定: https://clickhouse.com/docs/operations/configuration-files#user-settings + # パスワード作成のヒント: + # sha256sum <<< weave123 または echo -n weave123 | sha256sum または printf "weave123" | sha256sum + # ユーザー設定で ... として返されます + users: + weave/password: weave123 + weave/access_management: 1 + weave/profile: default + weave/networks/ip: + - "0.0.0.0/0" + - "::" + + # サーバー設定 + settings: + disable_internal_dns_cache: 1 + + # クラスター設定 + clusters: + - name: weavecluster # クラスター名 - カスタマイズ可能ですが wandb-cr.yaml と一致させる必要があります + layout: + shardsCount: 1 + replicasCount: 3 # レプリカ数 - 高可用性要件に基づいて調整 + templates: + podTemplate: clickhouse + dataVolumeClaimTemplate: data + + # 設定ファイル + files: + config.d/network_configuration.xml: | + + 0.0.0.0 + :: + + + config.d/logger.xml: | + + + information + + + + config.d/storage_configuration.xml: | + + + + + s3 + + https://YOUR-BUCKET-NAME.s3.YOUR-REGION.amazonaws.com/s3_disk/{replica} + /var/lib/clickhouse/disks/s3_disk/ + true + YOUR-REGION + + + cache + s3_disk + /var/lib/clickhouse/s3_disk_cache/cache/ + + 40Gi + true + + + + + +
+ s3_disk_cache +
+
+
+
+
+ + s3_main + +
+``` + +**必要な重要な設定更新**: + +1. **StorageClass**: クラスターの StorageClass に合わせて `storageClassName: gp3` を更新してください。 +2. **S3 Endpoint**: `YOUR-BUCKET-NAME` と `YOUR-REGION` を実際の値に置き換えてください。 +3. **Cache Size**: `40Gi` は、永続ボリュームのサイズ (50Gi) よりも **小さく** なければなりません。 +4. **セキュリティコンテキスト**: 組織のポリシーに合わせて `runAsUser`, `fsGroup` およびその他のセキュリティ設定を調整してください。 +5. **リソース割り当て**: CPU/メモリの値はあくまで例です。予想されるトレース量に基づく適切なサイジングについては、 **W&B ソリューションアーキテクトにご相談ください** 。 +6. **アンチアフィニティルール**: クラスターのトポロジーと高可用性のニーズに基づいてカスタマイズまたは削除してください。 +7. **Keeper Hostnames**: Keeper ノードのホスト名は、ステップ 3 の Keeper デプロイ時の名前に **必ず一致** させる必要があります(下記の「Keeper の命名規則について」を参照)。 +8. **Cluster Naming**: クラスター名 `weavecluster` は変更可能ですが、ステップ 5 の `WF_CLICKHOUSE_REPLICATED_CLUSTER` の値と一致させる必要があります。 +9. **Credentials**: + - IRSA の場合: `true` を保持するか、環境変数にマップされた secret キーにアクセスしてください。 + +#### 4.2 S3 設定の更新 + +`ch-server.yaml` の `storage_configuration.xml` セクションを編集します: + +**AWS S3 の例**: + +```xml +https://my-wandb-clickhouse.s3.eu-central-1.amazonaws.com/s3_disk/{replica} +eu-central-1 +``` + +**MinIO の例**: + +```xml +https://minio.example.com:9000/my-bucket/s3_disk/{replica} +us-east-1 +``` + + +**`{replica}` を削除しないでください。** これにより、各 ClickHouse レプリカがバケット内の独自のフォルダに書き込むようになります。 + + +#### 4.3 クレデンシャルの設定 (オプション B のみ) + +ステップ 2 の **オプション B (アクセスキー)** を使用する場合は、`ch-server.yaml` の `env` セクションが secret を参照していることを確認してください: + +```yaml +env: + - name: AWS_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + name: aws-creds + key: aws_access_key + - name: AWS_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + name: aws-creds + key: aws_secret_key +``` + +**オプション A (IRSA)** を使用する場合は、 `env` セクション全体を削除してください。 + +#### 4.4 Keeper の命名規則について + +`zookeeper.nodes` セクションの Keeper ノードホスト名は、ステップ 3 の Keeper デプロイに基づく特定のパターンに従います: + +**ホスト名パターン**: `chk-{インストール名}-{クラスター名}-{クラスターインデックス}-{レプリカインデックス}.{ネームスペース}.svc.cluster.local` + +各要素の説明: + +- `chk` = ClickHouseKeeperInstallation プレフィックス (固定) +- `{インストール名}` = ch-keeper.yaml の `metadata.name` (例: `wandb`) +- `{クラスター名}` = ch-keeper.yaml の `configuration.clusters[0].name` (例: `keeper`) +- `{クラスターインデックス}` = クラスターインデックス。単一クラスターの場合は通常 `0` +- `{レプリカインデックス}` = レプリカ番号。3 レプリカの場合は `0`, `1`, `2` +- `{ネームスペース}` = Kubernetes ネームスペース (例: `clickhouse`) + +**デフォルト名の例**: + +``` +chk-wandb-keeper-0-0.clickhouse.svc.cluster.local +chk-wandb-keeper-0-1.clickhouse.svc.cluster.local +chk-wandb-keeper-0-2.clickhouse.svc.cluster.local +``` + +**Keeper のインストール名をカスタマイズした場合** (例: `metadata.name: myweave`): + +``` +chk-myweave-keeper-0-0.clickhouse.svc.cluster.local +chk-myweave-keeper-0-1.clickhouse.svc.cluster.local +chk-myweave-keeper-0-2.clickhouse.svc.cluster.local +``` + +**Keeper のクラスター名をカスタマイズした場合** (例: `clusters[0].name: coordination`): + +``` +chk-wandb-coordination-0-0.clickhouse.svc.cluster.local +chk-wandb-coordination-0-1.clickhouse.svc.cluster.local +chk-wandb-coordination-0-2.clickhouse.svc.cluster.local +``` + +**実際の Keeper ホスト名を確認するには**: + +```bash +# 実際の名前を確認するために Keeper サービスをリスト +kubectl get svc -n clickhouse | grep keeper + +# 命名パターンを確認するために Keeper Pod をリスト +kubectl get pods -n clickhouse -l app=clickhouse-keeper +``` + + +`ch-server.yaml` 内の Keeper ホスト名は、Keeper デプロイによって作成された実際のサービス名と **完全に一致** している必要があります。一致しない場合、ClickHouse サーバーはコーディネーションサービスに接続できません。 + + +#### 4.5 ClickHouse クラスターのデプロイ + +```bash +kubectl apply -f ch-server.yaml +``` + +#### 4.6 ClickHouse デプロイの確認 + +```bash +# ClickHouse Pod の確認 +kubectl get pods -n clickhouse -l app=clickhouse-server + +# 期待される出力: +# NAME READY STATUS RESTARTS AGE +# chi-wandb-weavecluster-0-0-0 1/1 Running 0 3m +# chi-wandb-weavecluster-0-1-0 1/1 Running 0 3m +# chi-wandb-weavecluster-0-2-0 1/1 Running 0 3m + +# ClickHouse 接続テスト +kubectl exec -n clickhouse chi-wandb-weavecluster-0-0-0 -- \ + clickhouse-client --user weave --password weave123 --query "SELECT version()" + +# クラスターステータスの確認 +kubectl exec -n clickhouse chi-wandb-weavecluster-0-0-0 -- \ + clickhouse-client --user weave --password weave123 --query \ + "SELECT cluster, host_name, port FROM system.clusters WHERE cluster='weavecluster'" +``` + +### ステップ 5: W&B プラットフォームで Weave を有効化 + +次に、Weave トレースに ClickHouse クラスターを使用するように W&B プラットフォームを設定します。 + +#### 5.1 ClickHouse 接続情報の収集 + +以下の情報が必要です: + +- **Host**: `clickhouse-wandb.clickhouse.svc.cluster.local` +- **Port**: `8123` +- **User**: `weave` (ch-server.yaml で設定したもの) +- **Password**: `weave123` (ch-server.yaml で設定したもの) +- **Database**: `weave` (自動的に作成されます) +- **Cluster Name**: `weavecluster` (ch-server.yaml で設定したもの) + +ホスト名は次のパターンに従います: `clickhouse-{インストール名}.{ネームスペース}.svc.cluster.local` + +#### 5.2 W&B カスタムリソースの更新 + +W&B プラットフォームのカスタムリソース (CR) を編集して Weave の設定を追加します: + +```yaml +apiVersion: apps.wandb.com/v1 +kind: WeightsAndBiases +metadata: + name: wandb + namespace: wandb +spec: + values: + global: + # ... 既存の設定 ... + + # ClickHouse 設定の追加 + clickhouse: + install: false # 別途デプロイしたため + host: clickhouse-wandb.clickhouse.svc.cluster.local + port: 8123 + user: weave + password: weave123 + database: weave + replicated: true # マルチレプリカ構成の場合は必須 + + # Weave トレースを有効化 + weave-trace: + enabled: true + + # Weave トレースの設定 + weave-trace: + install: true + extraEnv: + WF_CLICKHOUSE_REPLICATED: "true" + WF_CLICKHOUSE_REPLICATED_CLUSTER: "weavecluster" + image: + repository: wandb/weave-trace + tag: 0.74.1 + replicaCount: 1 + size: "default" + sizing: + default: + autoscaling: + horizontal: + enabled: false + # 例示的なリソース割り当て - ワークロードに基づいて調整してください + resources: + limits: + cpu: 4 + memory: "8Gi" + requests: + cpu: 1 + memory: "4Gi" + # Pod セキュリティコンテキスト - 環境に合わせてカスタマイズしてください + podSecurityContext: + fsGroup: 10001 # セキュリティ要件に基づいて調整してください + fsGroupChangePolicy: Always + runAsGroup: 0 + runAsNonRoot: true + runAsUser: 10001 # OpenShift の場合は割り当てられた UID 範囲を使用 + seccompProfile: + type: RuntimeDefault + # コンテナセキュリティコンテキスト + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false +``` + +**重要な設定**: + +- `clickhouse.replicated: true` - 3 レプリカを使用する場合は **必須** +- `WF_CLICKHOUSE_REPLICATED: "true"` - レプリケートされたセットアップでは **必須** +- `WF_CLICKHOUSE_REPLICATED_CLUSTER: "weavecluster"` - ch-server.yaml のクラスター名と **一致させる必要** があります + + +上記のセキュリティコンテキスト、リソース割り当て、およびその他の Kubernetes 固有の設定は参照例です。組織の要件に合わせてカスタマイズし、適切なリソースサイジングについては W&B のソリューションアーキテクトチームにご相談ください。 + + +#### 5.3 更新した設定の適用 + +```bash +kubectl apply -f wandb-cr.yaml +``` + +#### 5.4 Weave トレースデプロイの確認 + +```bash +# weave-trace Pod のステータス確認 +kubectl get pods -n wandb | grep weave-trace + +# 期待される出力: +# wandb-weave-trace-bc-xxxxx 1/1 Running 0 2m + +# ClickHouse 接続に関する weave-trace のログを確認 +kubectl logs -n wandb --tail=50 + +# ClickHouse への接続成功メッセージを探してください +``` + +### ステップ 6: Weave データベースの初期化 + +weave-trace サービスは、最初の起動時に必要なデータベーススキーマを自動的に作成します。 + +#### 6.1 データベースマイグレーションの監視 + +```bash +# 起動中の weave-trace ログを監視 +kubectl logs -n wandb -f + +# データベースの初期化が成功したことを示すマイグレーションメッセージを探してください +``` + +#### 6.2 データベース作成の確認 + +```bash +# ClickHouse に接続してデータベースを確認 +kubectl exec -n clickhouse chi-wandb-weavecluster-0-0-0 -- \ + clickhouse-client --user weave --password weave123 --query \ + "SHOW DATABASES" + +# 'weave' データベースがリストされていることを確認 + +# weave データベース内のテーブルを確認 +kubectl exec -n clickhouse chi-wandb-weavecluster-0-0-0 -- \ + clickhouse-client --user weave --password weave123 --query \ + "SHOW TABLES FROM weave" +``` + +### ステップ 7: Weave が有効であることを確認 + +#### 7.1 W&B コンソールへのアクセス + +ウェブブラウザで W&B インスタンスの URL にアクセスします。 + +#### 7.2 Weave ライセンスステータスの確認 + +W&B コンソールにて: + +1. **右上のメニュー** → **Organization Dashboard** へ移動します。 +2. **Weave access** が有効になっていることを確認します。 + +#### 7.3 Weave 機能のテスト + +Weave が動作しているか確認するために、簡単な Python テストを作成します: + +```python +import weave + +# Weave を初期化(実際の W&B ホストに置き換えてください) +weave.init('test-project') + +# シンプルなトレース対象関数を作成 +@weave.op() +def hello_weave(name: str) -> str: + return f"Hello, {name}!" + +# 関数を呼び出し +result = hello_weave("World") +print(result) +``` + +これを実行した後、W&B UI の組織のトレースページでトレースを確認してください。 + +## トラブルシューティング + +### ClickHouse Keeper の問題 + +**問題**: Keeper Pod が `Pending` 状態のままになる + +**解決策**: 以下の複数の原因を確認してください: + +1. **PVC と StorageClass の問題**: + +```bash +kubectl get pvc -n clickhouse +kubectl describe pvc -n clickhouse +``` + +StorageClass が正しく設定され、利用可能な容量があることを確認してください。 + +2. **アンチアフィニティとノードの可用性**: + +```bash +# アンチアフィニティルールがスケジューリングを妨げていないか確認 +kubectl describe pod -n clickhouse | grep -A 10 "Events:" + +# 利用可能なノードとそのリソースを確認 +kubectl get nodes +kubectl describe nodes | grep -A 5 "Allocated resources" +``` + +よくある問題: +- アンチアフィニティに 3 つの個別のノードが必要だが、クラスターのノード数がそれ以下である +- ノードに Pod のリクエストを満たす十分な CPU/メモリがない +- ノードの Taint(汚れ)が Pod のスケジューリングを妨げている + +**対策**: +- ノードが 3 つ未満の場合は、アンチアフィニティルールを削除または調整する +- より柔軟なアンチアフィニティのために、 `requiredDuringSchedulingIgnoredDuringExecution` の代わりに `preferredDuringSchedulingIgnoredDuringExecution` を使用する +- ノードのリソースが不足している場合は、リソースリクエストを減らす +- クラスターにノードを追加する + +--- + +**問題**: Keeper Pod が `CrashLoopBackOff` になる + +**解決策**: ログを確認し、設定を検証してください: + +```bash +kubectl logs -n clickhouse +``` + +よくある問題: +- セキュリティコンテキストが正しくない(runAsUser, fsGroup を確認) +- ボリュームの権限の問題 +- ポートの競合 +- ch-keeper.yaml の設定エラー + +### ClickHouse サーバーの問題 + +**問題**: ClickHouse が S3 に接続できない + +**解決策**: S3 のクレデンシャルと権限を確認してください: + +```bash +# secret が存在するか確認(アクセスキーを使用している場合) +kubectl get secret aws-creds -n clickhouse + +# S3 エラーについて ClickHouse のログを確認 +kubectl logs -n clickhouse | grep -i s3 + +# ストレージ設定の S3 エンドポイントを確認 +kubectl get chi wandb -n clickhouse -o yaml | grep -A 10 storage_configuration +``` + +--- + +**問題**: ClickHouse が Keeper に接続できない + +**解決策**: Keeper のエンドポイントと名前を確認してください: + +```bash +# Keeper サービスとその実際の名前を確認 +kubectl get svc -n clickhouse | grep keeper + +# 命名パターンを確認するために Keeper Pod をリスト +kubectl get pods -n clickhouse -l app=clickhouse-keeper + +# ch-server.yaml の zookeeper.nodes 設定と比較 +# ホスト名は実際のサービス名と一致している必要があります + +# 接続エラーについて ClickHouse のログを確認 +kubectl logs -n clickhouse chi-wandb-weavecluster-0-0-0 | grep -i keeper +``` + +接続に失敗する場合、 `ch-server.yaml` の Keeper ホスト名が実際の Keeper デプロイと一致していない可能性があります。命名パターンについては、ステップ 4 の「Keeper の命名規則について」を参照してください。 + +### Weave トレースの問題 + +**問題**: `weave-trace` Pod の起動に失敗する + +**解決策**: ClickHouse への接続性を確認してください: + +```bash +# weave-trace Pod 名を取得 +kubectl get pods -n wandb | grep weave-trace + +# weave-trace のログを確認 +kubectl logs -n wandb + +# よくあるエラー: "connection refused" または "authentication failed" +# wandb-cr.yaml の ClickHouse クレデンシャルが ch-server.yaml と一致しているか確認 +``` + +--- + +**問題**: コンソールで Weave が有効として表示されない + +**解決策**: 設定を検証してください: + +1. ライセンスに Weave が含まれているか確認します: + ```bash + kubectl get secret license-key -n wandb -o jsonpath='{.data.value}' | base64 -d | jq + ``` +2. `wandb-cr.yaml` で `weave-trace.enabled: true` および `clickhouse.replicated: true` が設定されていることを確認します。 +3. W&B オペレーターのログを確認します: + ```bash + kubectl logs -n wandb deployment/wandb-controller-manager + ``` + +--- + +**問題**: データベースマイグレーションに失敗する + +**解決策**: クラスター名が一致しているか確認してください: + +`WF_CLICKHOUSE_REPLICATED_CLUSTER` 環境変数は、 `ch-server.yaml` のクラスター名と **一致させる必要** があります: + +```yaml +# ch-server.yaml 内: +clusters: + - name: weavecluster # <-- この名前 + +# wandb-cr.yaml 内で一致させる必要があるもの: +weave-trace: + extraEnv: + WF_CLICKHOUSE_REPLICATED_CLUSTER: "weavecluster" # <-- この値 +``` + +## リソース要件 + + +以下のリソース割り当ては、 **あくまで開始時の目安例** です。実際の要件は、以下によって大きく異なります: + +- トレースの取り込み量 (秒あたりのトレース数) +- クエリのパターンと同時実行数 +- データ保持期間 +- 同時実行ユーザー数 + +お客様の具体的なユースケースに適したサイジングを決定するために、 **必ず W&B のソリューションアーキテクトチームにご相談ください** 。リソース不足はパフォーマンスの問題につながり、過剰なプロビジョニングはインフラコストの無駄になります。 + + +### 最小構成 (プロダクション向け) + +| コンポーネント | レプリカ数 | CPU リクエスト / リミット | メモリ リクエスト / リミット | ストレージ | +| :--- | :--- | :--- | :--- | :--- | +| ClickHouse Keeper | 3 | 0.5 / 1 | 256Mi / 2Gi | 各 10Gi | +| ClickHouse Server | 3 | 1 / 4 | 1Gi / 16Gi | 各 50Gi | +| Weave Trace | 1 | 1 / 4 | 4Gi / 8Gi | - | +| **合計** | **7 pods** | **約 4.5 / 15 CPU** | **約 7.8Gi / 58Gi** | **180Gi** | + +_用途: 開発、テスト、または低負荷のプロダクション環境_ + +### 推奨構成 (プロダクション向け) + +トレース量が多いプロダクションワークロード向け: + +| コンポーネント | レプリカ数 | CPU リクエスト / リミット | メモリ リクエスト / リミット | ストレージ | +| :--- | :--- | :--- | :--- | :--- | +| ClickHouse Keeper | 3 | 1 / 2 | 1Gi / 4Gi | 各 20Gi | +| ClickHouse Server | 3 | 1 / 16 | 8Gi / 64Gi | 各 200Gi | +| Weave Trace | 2-3 | 1 / 4 | 4Gi / 8Gi | - | +| **合計** | **8-9 pods** | **約 6-9 / 52-64 CPU** | **約 27-33Gi / 204-216Gi** | **660Gi** | + +_用途: 高負荷のプロダクション環境_ + +超大規模なデプロイメントについては、具体的なトレース量とパフォーマンス要件に基づいたカスタムサイジングの推奨事項について、W&B のソリューションアーキテクトチームにお問い合わせください。 + +## 高度な設定 + +このセクションでは、垂直スケーリングや水平スケーリングによる ClickHouse キャパシティの拡張、Keeper とサーバー両方の設定でのイメージタグ変更による ClickHouse バージョンの更新、および ClickHouse のヘルス監視を含む、自己管理型 Weave デプロイメントのカスタマイズオプションについて説明します。 + +パフォーマンスと信頼性の要件に確実に対応するために、インスタンスに高度な変更を加える場合は、W&B のソリューションアーキテクトチームに相談することをお勧めします。 + +### ClickHouse のスケーリング + +ClickHouse のキャパシティを増やすには、以下の方法があります: + +1. **垂直スケーリング**: Pod あたりのリソースを増やします(よりシンプルなアプローチ)。 + + ```yaml + resources: + requests: + memory: 8Gi + cpu: 1 + limits: + memory: 64Gi + cpu: 16 + ``` + + **推奨事項**: 実際のリソース使用状況を監視し、それに応じてスケールしてください。超大規模なデプロイメントについては、W&B のソリューションアーキテクトチームにご相談ください。 + +2. **水平スケーリング**: レプリカを追加します(慎重な計画が必要です)。 + - レプリカを増やすにはデータの再配置(リバランシング)が必要です。 + - シャード管理については ClickHouse のドキュメントを参照してください。 + - プロダクション環境で水平スケーリングを実施する前に、 **W&B ソリューションアーキテクトにご相談ください** 。 + +### 異なる ClickHouse バージョンの使用 + +異なる ClickHouse バージョンを使用するには、 `ch-keeper.yaml` と `ch-server.yaml` 両方のイメージタグを更新します: + +```yaml +image: clickhouse/clickhouse-keeper:25.3.5.42 # Keeper バージョン +image: clickhouse/clickhouse-server:25.3.5.42 # サーバー バージョン +``` + +互換性のために、Keeper とサーバーのバージョンは一致させるか、Keeper バージョンをサーバーバージョン以上に(Keeper >= Server)する必要があります。 + +### ClickHouse の監視 + +監視のために ClickHouse のシステムテーブルにアクセスします: + +```bash +# ディスク使用量の確認 +kubectl exec -n clickhouse chi-wandb-weavecluster-0-0-0 -- \ + clickhouse-client --user weave --password weave123 --query \ + "SELECT name, path, formatReadableSize(free_space) as free, formatReadableSize(total_space) as total FROM system.disks" + +# レプリケーションステータスの確認 +kubectl exec -n clickhouse chi-wandb-weavecluster-0-0-0 -- \ + clickhouse-client --user weave --password weave123 --query \ + "SELECT database, table, is_leader, total_replicas, active_replicas FROM system.replicas WHERE database='weave'" + +# ClickHouse サーバー Pod のステータス確認 +kubectl get pods -n clickhouse -l app=clickhouse-server +``` + +### バックアップとリカバリ + +ClickHouse のデータは S3 に保存されるため、S3 のバージョニングやバケットレプリケーション機能を通じて本来的なバックアップ機能が提供されます。デプロイメント固有のバックアップ戦略については、W&B ソリューションアーキテクトチームに相談し、 [ClickHouse バックアップドキュメント](https://clickhouse.com/docs/en/operations/backup) を参照してください。 + +## セキュリティに関する考慮事項 + +1. **クレデンシャル**: ClickHouse のパスワードはプレーンテキストではなく、Kubernetes secret に保存してください。 +2. **ネットワークポリシー**: ClickHouse へのアクセスを制限するために、NetworkPolicies の実装を検討してください。 +3. **RBAC**: サービスアカウントに必要最小限の権限のみが付与されていることを確認してください。 +4. **S3 バケット**: 保存時の暗号化を有効にし、バケットへのアクセスを必要な IAM ロールのみに制限してください。 +5. **TLS** (オプション): プロダクション環境では、ClickHouse クライアント接続に対して TLS を有効にしてください。 + +## アップグレード + +### ClickHouse Operator のアップグレード + +```bash +helm upgrade ch-operator altinity/altinity-clickhouse-operator \ + --version 0.25.4 \ + --namespace clickhouse \ + -f ch-operator.yaml +``` + +### ClickHouse Server のアップグレード + +`ch-server.yaml` のイメージバージョンを更新して適用します: + +```bash +# ch-server.yaml を編集し、イメージタグを変更 +kubectl apply -f ch-server.yaml + +# Pod を監視 +kubectl get pods -n clickhouse +``` + +### Weave Trace のアップグレード + +`wandb-cr.yaml` のイメージタグを更新して適用します: + +```bash +kubectl apply -f wandb-cr.yaml + +# weave-trace Pod の再起動を監視 +kubectl get pods -n wandb | grep weave-trace +``` + +## 追加リソース + +- [Altinity ClickHouse Operator ドキュメント](https://docs.altinity.com/altinitykubernetesoperator/) +- [ClickHouse ドキュメント](https://clickhouse.com/docs) +- [W&B Weave ドキュメント](https://docs.wandb.ai/weave) +- [ClickHouse S3 ストレージ設定](https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#s3-virtual-hosted-style) + +## サポート + +プロダクション環境でのデプロイや問題については: + +- **W&B サポート**: `support@wandb.com` +- **ソリューションアーキテクト**: 超大規模デプロイメント、カスタムサイジング、およびデプロイ計画について。 +- **サポートリクエストに含める内容**: + - weave-trace、ClickHouse Pod、およびオペレーターのログ + - W&B バージョン、ClickHouse バージョン、Kubernetes バージョン + - クラスター情報とトレース量 + +## よくある質問 (FAQ) + +**Q: 3 つではなく、単一の ClickHouse レプリカを使用できますか?** + +A: 可能ですが、プロダクション環境では推奨されません。 `ch-server.yaml` で `replicasCount: 1` に更新し、 `wandb-cr.yaml` で `clickhouse.replicated: false` を設定してください。 + +**Q: ClickHouse の代わりに別のデータベースを使用できますか?** + +A: いいえ、Weave Trace はその高性能な列指向ストレージ機能のために ClickHouse を必要とします。 + +**Q: どの程度の S3 ストレージが必要ですか?** + +A: S3 ストレージの要件は、トレース量、保持期間、およびデータの圧縮率に依存します。デプロイ後に実際の使用量を監視し、それに応じて調整してください。ClickHouse の列指向フォーマットは、トレースデータに対して優れた圧縮を提供します。 + +**Q: ClickHouse で `database` 名を設定する必要がありますか?** + +A: いいえ、 `weave` データベースは最初の起動時に weave-trace サービスによって自動的に作成されます。 + +**Q: クラスター名が `weavecluster` ではない場合はどうなりますか?** + +A: `WF_CLICKHOUSE_REPLICATED_CLUSTER` 環境変数をクラスター名と一致するように設定する必要があります。そうしないと、データベースのマイグレーションに失敗します。 + +**Q: 例に示されているセキュリティコンテキストをそのまま使用すべきですか?** + +A: いいえ。このガイドで提供されているセキュリティコンテキスト (runAsUser, fsGroup など) は参照例です。組織のセキュリティポリシー、特に特定の UID/GID 範囲の要件がある OpenShift クラスターなどに合わせて調整する必要があります。 + +**Q: ClickHouse クラスターのサイジングが正しいかどうか、どうすればわかりますか?** + +A: 予想されるトレース量と使用パターンを添えて、W&B のソリューションアーキテクトチームにお問い合わせください。具体的なサイジングの推奨事項を提供します。デプロイメントのリソース使用状況を監視し、必要に応じて調整してください。 + +**Q: 例で使用されている命名規則をカスタマイズできますか?** + +A: はい、ただしすべてのコンポーネント間で一貫性を保つ必要があります: + +1. **ClickHouse Keeper 名** → `ch-server.yaml` の `zookeeper.nodes` セクションにある Keeper ノードホスト名と一致させる必要があります。 +2. **ClickHouse クラスター名** (`weavecluster`) → `wandb-cr.yaml` の `WF_CLICKHOUSE_REPLICATED_CLUSTER` と一致させる必要があります。 +3. **ClickHouse インストール名** → weave-trace が使用するサービスのホスト名に影響します。 + +命名パターンと実際の名前を確認する方法については、ステップ 4 の「Keeper の命名規則について」セクションを参照してください。 + +**Q: クラスターで異なるアンチアフィニティ要件がある場合はどうなりますか?** + +A: 示されているアンチアフィニティルールは、高可用性のための推奨事項です。クラスターのサイズ、トポロジー、および可用性要件に基づいて調整または削除してください。小規模なクラスターや開発環境では、アンチアフィニティルールは必要ない場合があります。 \ No newline at end of file diff --git a/ja/weave/guides/tools.mdx b/ja/weave/guides/tools.mdx new file mode 100644 index 0000000000..670e14e22f --- /dev/null +++ b/ja/weave/guides/tools.mdx @@ -0,0 +1,24 @@ +--- +title: ツール & ユーティリティ +description: AI アプリケーションの ワークフロー と デプロイメント のための Weave ツール と ユーティリティ +--- + +Weave は、AI アプリケーションの ワークフロー と デプロイメント プロセス を支援する一連の ツール とユーティリティを開発しています。これらは現在、初期のアルファ段階にあり、変更される可能性があります。現在取り組んでいる内容の概要は以下の通りです。 + +## Serve(実験的機能) + +[Serve](/weave/guides/tools/serve) は、Weave の op や Models を API エンドポイントとして公開するための機能です。以下のような可能性を検討しています。 + +- Weave コンポーネント用の Web サービスの作成 +- 既存の アプリケーション への Weave コンポーネントの統合 +- より プロダクション に近い 環境 で モデル をテストする方法の提供 + +## Deploy(実験的機能) + +[Deploy](/weave/guides/tools/deploy) は、Weave の op や Models のデプロイを支援するために開発中の、もう一つのアルファ段階のユーティリティです。検討中の主な機能は以下の通りです。 + +- クラウド プラットフォームへの モデル のプッシュ +- 異なる デプロイメント 環境 の管理 +- デプロイメント プロセス の一部を自動化する方法の探索 + +これらの ツール はまだ開発の非常に初期段階にあることにご注意ください。完全に機能しない可能性や、大幅に変更される可能性、あるいは提供が中止される可能性もあります。現時点では、実験的な目的でのみ使用することをお勧めします。 \ No newline at end of file diff --git a/ja/weave/guides/tools/attributes.mdx b/ja/weave/guides/tools/attributes.mdx new file mode 100644 index 0000000000..40400ac9d4 --- /dev/null +++ b/ja/weave/guides/tools/attributes.mdx @@ -0,0 +1,352 @@ +--- +title: 属性の定義とログの記録 +description: 属性を使用して、 トレース や 評価 にメタデータを追加します。 +--- + +Weave における Attributes(属性)を使用すると、トレースや Evaluations にカスタムの メタデータ を付加できます。この メタデータ には、環境名、モデル の バージョン 、実験 ID、ユーザー ID、またはその他のコンテキスト情報を含めることができ、Weave データの整理、フィルタリング、分析に役立ちます。 + +Weave では、属性を追加する2つの方法を提供しています。 + +* **コールごとの属性**: `weave.attributes()` を使用して、特定のオペレーションや コード ブロックに メタデータ を追加します。 +* **グローバル属性**: `global_attributes` フィールドを使用して初期化時に属性を設定し、プロジェクト 内のすべての トレース と Evaluations に適用します。 + +トレース や Evaluation の実行中に ログ 記録されたすべての属性は UI で確認できます。その後、これらを使用して データのフィルタリングやグループ化を行うことができます。 + + +`call.attributes` は、コールが開始されると変更できません。op を呼び出す前にこの コンテキスト マネージャーを使用して メタデータ を設定してください。 + + +## コールごとの属性 + +`weave.attributes()` コンテキスト マネージャーを使用すると、特定のトレース対象オペレーションに メタデータ を追加できます。これにより、特定の関数呼び出しや Evaluation の実行にコンテキスト情報をタグ付けできます。 + + + +```python lines +import weave + +weave.init("attribute-check") + +@weave.op +def my_function(name: str): + return f"Hello, {name}!" + +# 特定のコールに属性を追加する +with weave.attributes({'env': 'production', 'user_id': '12345'}): + result = my_function("World") +``` + + +```typescript lines +import {init, op, withAttributes} from 'weave'; + +async function main() { + await init('your-team/attribute-example'); + + const myFunction = op(async function myFunction(name: string) { + return `Hello, {name}!`; + }); + + // 特定のコールに属性を追加する + const result = await withAttributes( + {env: 'production', user_id: '12345'}, + async () => myFunction('World') + ); + + console.log('Result:', result); +} + +main().catch(console.error); +``` + + + +この関数は、コンテキスト マネージャー ブロック(Python)または コールバック 関数(TypeScript)内のすべてのトレース対象オペレーションに属性を付加します。 + +また、`weave.attributes()` コンテキストをネストすることもできます。内側のコンテキストは、同じ キー に対して外側のコンテキストを上書きします。 + + + +```python lines +@weave.op +def process_data(data: str): + return data.upper() + +# 外側のコンテキスト +with weave.attributes({ + "env": "production", + "version": "1.0.0", + "region": "us-west-2" +}): + process_data("hello") # 3つの属性すべてを持つ + + # 内側のコンテキストが 'version' を上書きする + with weave.attributes({ + "version": "1.1.0", + "experiment": "exp-456" + }): + process_data("world") # env='production', version='1.1.0', region='us-west-2', experiment='exp-456' を持つ +``` + + +```typescript lines +import {init, op, withAttributes} from 'weave'; + +async function main() { + await init('your-team/attribute-example'); + + const processData = op(async function processData(data: string) { + return data.toUpperCase(); + }); + + // 外側のコンテキスト + await withAttributes( + { + env: 'production', + version: '1.0.0', + region: 'us-west-2' + }, + async () => { + await processData('hello'); // 3つの属性すべてを持つ + + // 内側のコンテキストが 'version' を上書きする + await withAttributes( + { + version: '1.1.0', + experiment: 'exp-456' + }, + async () => { + await processData('world'); // env='production', version='1.1.0', region='us-west-2', experiment='exp-456' を持つ + } + ); + } + ); +} + +main().catch(console.error); +``` + + + +## グローバル属性 + +Weave の初期化時にグローバル属性を設定すると、プロジェクト 内の **すべて** の トレース と Evaluations に自動的に適用されます。これは、環境、デプロイメント バージョン 、チーム情報などの プロジェクト 全体の メタデータ を伝播させるのに便利です。 + + + +```python lines +import weave + +weave.init( + "my-project", + global_attributes={ + "env": "production", + "app_version": "2.1.0", + "region": "us-west-2", + "team": "ml-platform" + } +) + +# global_attributes 辞書は、これ以降のすべてのオペレーションにこれらの属性を適用します +@weave.op +def my_function(): + return "Hello" + +my_function() # 自動的にすべてのグローバル属性を持つ + +# Evaluations にもグローバル属性が付与される +evaluation = weave.Evaluation(dataset=examples, scorers=[scorer]) +asyncio.run(evaluation.evaluate(model)) # すべてのグローバル属性を持つ +``` + + +```typescript lines +import {init, op, withAttributes} from 'weave'; + +async function main() { + await init('your-team/attribute-example', { + globalAttributes: { + env: 'production', + app_version: '2.1.0', + region: 'us-west-2', + team: 'ml-platform' + } + }); + + // globalAttributes オブジェクトは、これ以降のすべてのオペレーションにこれらの属性を適用します + const myFunction = op(async function myFunction() { + return 'Hello'; + }); + + const result = await myFunction(); // 自動的にすべてのグローバル属性を持つ + console.log('Result:', result); +} +main().catch(console.error); +``` + + + +### グローバル属性とコールごとの属性の組み合わせ + +グローバル属性とコールごとの属性を組み合わせて使用できます。同じ キー を持つコールごとの属性は、グローバル属性を上書きします。 + + + +```python lines +import weave + +# グローバル属性を設定する +weave.init( + "my-project", + global_attributes={ + "env": "production", + "app_version": "2.1.0" + } +) + +@weave.op +def process(data: str): + return data + +# このコールは env='production', app_version='2.1.0' を持つ +process("test1") + +# このコールは env='staging', app_version='2.1.0', experiment='A' を持つ +with weave.attributes({'env': 'staging', 'experiment': 'A'}): + process("test2") +``` + + +```typescript lines +import {init, op, withAttributes} from 'weave'; + +async function main() { + // グローバル属性を設定する + await init('your-team/attribute-example', { + globalAttributes: { + env: 'production', + app_version: '2.1.0' + } + }); + + const process = op(async function process(data: string) { + return data; + }); + + // このコールは env='production', app_version='2.1.0' を持つ + await process('test1'); + + // このコールは env='staging', app_version='2.1.0', experiment='A' を持つ + await withAttributes( + {env: 'staging', experiment: 'A'}, + async () => process('test2') + ); +} +main().catch(console.error); +``` + + + +## 実行中の属性の取得 + +コールに ログ 記録されている現在の属性セットを返します。これは、コールのデバッグや、条件付きロジックのコンテキスト把握に役立ちます。 + + + + +以下の例では、Weave デコレータを設定して `process_data` 関数を ログ 記録し、ログ 記録する属性を構成してから、実行時にそれらを返します。 + +```python lines +import weave + +weave.init("your-team/your-project") + +@weave.op +def process_data(data: str): + # op 内で現在のコールを取得する + call = weave.get_current_call() + if call: + print(f"Attributes: {call.attributes}") + return data.upper() + +# 属性を設定して関数を実行する +with weave.attributes({ + "env": "production", + "version": "1.0.0", + "region": "us-west-2" +}): + process_data("hello") + + with weave.attributes({ + "version": "1.1.0", + "experiment": "exp-456" + }): + process_data("world") +``` + +出力結果: +```shell +Attributes: {'env': 'production', 'version': '1.0.0', 'region': 'us-west-2'} +Attributes: {'env': 'production', 'version': '1.1.0', 'region': 'us-west-2', 'experiment': 'exp-456'} +``` + + +`weave.get_current_call()` は、`@weave.op` デコレータが付いた関数 **内部** でのみ機能します。op の外部では `None` を返します。 + + + + +Weave TypeScript SDK を使用すると、`client.getCurrentAttributes()` を使用して現在の属性を取得できます。Weave Python SDK とは異なり、TypeScript の属性は op 内だけでなく、`withAttributes()` コンテキスト内であればどこからでもアクセスできます。 + +```typescript lines +import * as weave from 'weave'; +import { withAttributes } from 'weave'; + +async function main() { + const client = await weave.init('your-team/your-project'); + + const processData = weave.op(async function processData(data: string) { + // op 内部でも属性にアクセス可能 + const attrs = client.getCurrentAttributes(); + console.log('Attributes inside op:', attrs); + return data.toUpperCase(); + }); + + // 属性を設定して関数を実行する + await withAttributes( + { + env: 'production', + version: '1.0.0', + region: 'us-west-2' + }, + async () => { + // コンテキスト内のどこからでも属性を取得可能 + console.log('Current attributes:', client.getCurrentAttributes()); + await processData('hello'); + + await withAttributes( + { + version: '1.1.0', + experiment: 'exp-456' + }, + async () => { + console.log('Nested attributes:', client.getCurrentAttributes()); + await processData('world'); + } + ); + } + ); +} + +main().catch(console.error); +``` + +出力結果: +```shell +Current attributes: { env: 'production', version: '1.0.0', region: 'us-west-2' } +Attributes inside op: { env: 'production', version: '1.0.0', region: 'us-west-2' } +Nested attributes: { env: 'production', version: '1.1.0', region: 'us-west-2', experiment: 'exp-456' } +Attributes inside op: { env: 'production', version: '1.1.0', region: 'us-west-2', experiment: 'exp-456' } +``` + + \ No newline at end of file diff --git a/ja/weave/guides/tools/column-mapping.mdx b/ja/weave/guides/tools/column-mapping.mdx new file mode 100644 index 0000000000..bf29cac569 --- /dev/null +++ b/ja/weave/guides/tools/column-mapping.mdx @@ -0,0 +1,50 @@ +--- +title: Datasets 内の列をマッピングする +description: Datasets 内のカラムを別の名前にマッピングします。これにより、Datasets 内のカラム名とスコアラーが想定するカラム名を一致させることができます。 +--- + + + + Weave Python SDK では、スコーラーの `column_map` 属性を使用して、スコーラーが期待する引数名とデータセットの列名をマッピングします。マッピングの形式は `{scorer_parameter: dataset_column}` です。 + + 次の例では、`output` と `target` 引数を、データセットの `model_output` 列と `answer` 列にマッピングしています。 + + ```python + from weave.scorers import EmbeddingSimilarityScorer + + similarity_scorer = EmbeddingSimilarityScorer() + + similarity_scorer.column_map = { + "output": "model_output", # モデルによって生成されたテキスト + "target": "answer" # 期待される、または参照用の回答 + } + ``` + + スコーラーの列マッピングに関する詳細は、[Mapping Column Names with `column_map`](../evaluation/scorers#mapping-column-names-with-column_map) を参照してください。 + + + Weave TypeScript SDK では、列マッピングは個々のスコーラーではなく、`Evaluation` オブジェクトの `columnMapping` オプションで設定します。マッピングの形式は `{scorer_key: dataset_column}` です。 + + 次の例では、(スコーラーで使用される)`expectedOutputTimesTwo` をデータセットの `expected` 列にマッピングしています。 + + ```typescript + import * as weave from 'weave'; + + const myScorer = weave.op( + ({modelOutput, datasetRow}) => { + return modelOutput * 2 === datasetRow.expectedOutputTimesTwo; + }, + {name: 'myScorer'} + ); + + const myEval = new weave.Evaluation({ + id: 'my-evaluation', + dataset: [{expected: 2}], + scorers: [myScorer], + columnMapping: {expectedOutputTimesTwo: 'expected'}, + }); + ``` + + TypeScript のスコーラー引数に関する詳細は、[Scorer Keyword Arguments](../evaluation/scorers#scorer-keyword-arguments) を参照してください。 + + \ No newline at end of file diff --git a/ja/weave/guides/tools/comparison.mdx b/ja/weave/guides/tools/comparison.mdx new file mode 100644 index 0000000000..f14fc6354c --- /dev/null +++ b/ja/weave/guides/tools/comparison.mdx @@ -0,0 +1,131 @@ +--- +title: トレース とその他の ログ 情報の比較 +description: コード、 トレース、 プロンプト、 Models、 設定 を視覚的に比較し、その差分を確認します +--- + +Weave の比較機能(Comparison feature)を使用すると、コード、トレース、プロンプト、Models、およびモデル設定(configuration)を視覚的に比較し、その差分(diff)を確認できます。2つのオブジェクトを並べて比較したり、より大きなオブジェクトのセットを分析して、違い、パターン、傾向を特定したりすることが可能です。 + +このガイドでは、比較を開始する手順と、ベースライン(baseline)比較、数値差分のフォーマットなど、比較ビューをカスタマイズするための利用可能なアクションについて説明します。 + +## 比較ビューへのアクセス + +1. サイドバーで、比較したいオブジェクトのタイプ(**Traces**、**Models** など)を選択します。 +2. 比較したいオブジェクトを選択します。選択方法は、比較するオブジェクトのタイプによって異なります: + - **Traces** の場合、Traces カラムの適切な行にあるチェックボックスをオンにして、比較するトレースを選択します。 + - **Models** などのオブジェクトの場合、モデルの Versions ページに移動し、比較したいバージョン(version)の横にあるチェックボックスをオンにします。 +3. **Compare** をクリックして比較ビューを開きます。これで、[利用可能なアクション](#available-actions)を使用してビューを微調整できます。 + +## 利用可能なアクション + +比較ビューでは、比較されているオブジェクトの数に応じて、複数のアクションを利用できます。[使用上の注意](#usage-notes)も併せてご確認ください。 + +- [差分表示の変更](#change-the-diff-display) +- [並べて表示(Side-by-side)](#display-side-by-side) +- [統合ビューで表示(Unified view)](#display-in-a-unified-view) +- [ベースラインの設定](#set-a-baseline) +- [ベースラインの解除](#remove-a-baseline) +- [比較順序の変更](#change-the-comparison-order) +- [数値差分の表示形式の変更](#change-numeric-diff-display-format) +- [ベースラインまたは前のオブジェクトと比較する](#compare-with-baseline-or-previous) +- [複数オブジェクトの比較からペアを比較する](#compare-a-pair-from-a-multi-object-comparison) +- [比較からオブジェクトを削除する](#remove-an-object-from-comparison) + +### 差分表示の変更 + +デフォルトでは、**Diff only** はオフに設定されています。変更があった行のみを表示するようにテーブル行をフィルタリングするには、**Diff only** をオンに切り替えます。 + +### 並べて表示(Side-by-side) + +このオプションは、2つのオブジェクトを比較している場合、または [複数オブジェクトの比較から特定のペアを選択](#compare-a-pair-from-a-multi-object-comparison) している場合にのみ利用可能です。 + +各オブジェクトを別々の列に並べて比較するには、**Side-by-side** を選択します。 + + +![2つのオブジェクトの Side-by-side 比較ビュー](/weave/guides/tools/imgs/comparison-2objs-sidebyside.png) + + +### 統合ビューで表示(Unified view) + +このオプションは、2つのオブジェクトを比較している場合、または [複数オブジェクトの比較から特定のペアを選択](#compare-a-pair-from-a-multi-object-comparison) している場合にのみ利用可能です。 + +各オブジェクトを統合されたビューで比較するには、**Unified** を選択します。 + + +![2つのオブジェクトの Unified 比較ビュー](/weave/guides/tools/imgs/comparison-2objs-unified.png) + + +### ベースラインの設定 + +デフォルトでは、比較ビューの各オブジェクトはその左隣のオブジェクトと比較されます。しかし、特定のオブジェクトを _ベースライン(baseline)_ として設定することもできます。これにより、すべてのオブジェクトがビューの最も左にあるオブジェクトと比較されるようになります。 +オブジェクトをベースラインとして設定するには、以下の手順に従ってください: + +1. 比較ビューのトップバーで、ベースラインに設定したいオブジェクトの上にマウスを置きます。 +2. ID の右側にある3つのドットをクリックします。 + ![ベースラインに設定するオプションの表示。](/weave/guides/tools/imgs/comparison-2objs-baseline.png) +3. ドロップダウンで **Make baseline** を選択します。UI が更新され、ベースラインオブジェクトがトップバーの左端に配置され、ID の横に `Baseline` と表示されます。 + ![ベースラインが設定された状態。](/weave/guides/tools/imgs/comparison-2objs-baseline-set.png) + +### ベースラインの解除 + +オブジェクトのベースライン設定を解除するには、以下の手順に従ってください: + +1. 比較ビューのトップバーで、ベースラインオブジェクトの上にマウスを置きます。 +2. ID の右側にある3つのドットをクリックします。 +3. ドロップダウンで **Remove baseline** を選択します。これで、ID の横に `Baseline` が表示されなくなります。 + +### 比較順序の変更 + +比較の順序を変更するには、以下の手順に従ってください: + +1. 比較ビューのトップバーで、順序を変更したい ID の上にマウスを置きます。 +2. ID の左側にある6つのドットをクリックします。 + ![順序の設定。](/weave/guides/tools/imgs/comparison-2objs-reorder.png) +3. 選択したオブジェクトに応じて、ID を左または右にドラッグします。 +4. ID を希望の順序に配置します。UI が更新され、変更された比較順序が表示されます。 + +### 数値差分の表示形式の変更 + +`completion_tokens` や `total_tokens` などの数値(numeric value)については、差分を整数またはパーセンテージとして表示できます。さらに、正の数値は倍率として表示することも可能です。数値差分の表示形式を変更するには、以下の手順に従ってください: + +1. 比較テーブルで、差分の表示形式を更新したい数値を見つけます。 + ![整数として表示された数値。](/weave/guides/tools/imgs/comparison-2objs-numericdiffformat.png) +2. 差分の値(diff value)をクリックします。形式が自動的に整数またはパーセンテージに更新されます。 + ![パーセンテージに更新された数値。](/weave/guides/tools/imgs/comparison-2objs-numericdiffformat-updated.png) + +### ベースラインまたは前のオブジェクトと比較する + +このオプションは、3つ以上のオブジェクトを比較している場合にのみ利用可能です。また、[ID の右側にある3つのドットをクリックすることで、既存のベースラインを設定](#set-a-baseline) したり [解除](#remove-a-baseline) したりすることもできます。 + +3つ以上のオブジェクトでベースライン比較を実行するには、以下の手順に従ってください: + +1. 比較ビューの右隅にあるドロップダウンをクリックします。現在のビュー設定に応じて、ドロップダウンのタイトルは **Compare with previous** または **Compare with baseline** のいずれかになっています。 +2. 現在のビュー設定に応じて、**Compare with previous** または **Compare with baseline** のいずれかを選択します。 + - **Compare with baseline**: 最も左側のオブジェクトをベースラインとして設定します。テーブルが更新され、左端の列がベースラインになります。 + - **Compare with previous**: ベースラインとなるオブジェクトは設定されません(各オブジェクトをその直前のものと比較します)。 + +### 複数オブジェクトの比較からペアを比較する + +このオプションは、3つ以上のオブジェクトを比較している場合にのみ利用可能です。 + +3つ以上のオブジェクトを比較しているときに、単一のオブジェクトを前のオブジェクトまたはベースラインと比較できます。これにより、比較テーブルの表示が2つのオブジェクトの比較時と同じ形式に変更されます。複数オブジェクトの比較からペアを比較するには、以下の手順に従ってください: + +1. 比較ビューのトップバーで、前回のオブジェクトまたはベースラインと比較したい ID を見つけます。 +2. そのアイテムを選択するために ID をクリックします。UI が更新され、2方向の比較テーブルが表示されます。 + ![複数オブジェクト比較からのペア比較。](/weave/guides/tools/imgs/comparsion-7objs-diffonly-subset.png) + +テーブルに比較対象として最初に選択された6つのオブジェクトが表示されるようにビューをリセットするには、再度 ID をクリックします。 + +### 比較からオブジェクトを削除する + +このオプションは、3つ以上のオブジェクトを比較している場合にのみ利用可能です。 + +比較からオブジェクトを削除するには、以下の手順に従ってください: + +1. 比較ビューのトップバーで、比較から削除したいオブジェクトを見つけます。 +2. ID の右側にある3つのドットをクリックします。 +3. ドロップダウンで **Remove object from comparison** を選択します。UI が更新され、削除されたオブジェクトを含まない新しいテーブルが表示されます。 + +## 使用上の注意 + + - 比較機能は UI でのみ利用可能です。 + - 好きなだけ多くのオブジェクトを比較できます。ただし、UI に同時に表示されるのは最大6つまでです。6つ以上のオブジェクトを比較しているときに、現在表示されていないオブジェクトを比較テーブルで確認するには、[比較順序を変更](#change-the-comparison-order) してそのオブジェクトを左から6番目以内に移動させるか、表示しやすいように [複数オブジェクトの比較からペアを選択](#compare-a-pair-from-a-multi-object-comparison) してください。 \ No newline at end of file diff --git a/ja/weave/guides/tools/deploy.mdx b/ja/weave/guides/tools/deploy.mdx new file mode 100644 index 0000000000..21ccdf17ae --- /dev/null +++ b/ja/weave/guides/tools/deploy.mdx @@ -0,0 +1,22 @@ +--- +title: Google Cloud へのデプロイ +description: Weave モデル を クラウド プラットフォーム にデプロイする +--- + +## Google Cloud へのデプロイ + + +`weave deploy` を使用するには、マシンに `gcloud` がインストールされ、設定されている必要があります。 `weave deploy gcp` は、コマンドライン 引数で直接指定されない限り、既存の設定済み configuration を使用します。 + + +Weave モデルを Google Cloud にデプロイするには、以下のコマンドを実行します。 + +``` +weave deploy gcp +``` + +デプロイが完了すると、 ターミナル に以下の形式の URL が表示されます。 + +``` +Service URL: `. Visit `/docs` to interact with your model! +``` \ No newline at end of file diff --git a/ja/weave/guides/tools/evaluation_playground.mdx b/ja/weave/guides/tools/evaluation_playground.mdx new file mode 100644 index 0000000000..a168529220 --- /dev/null +++ b/ja/weave/guides/tools/evaluation_playground.mdx @@ -0,0 +1,121 @@ +--- +title: Evaluation Playground を使用したモデルパフォーマンスの比較 +description: コードを使用せずに、Weave の対話型 Playground を活用してモデルのパフォーマンスを比較・評価できます。視覚的なインターフェース上で、カスタム + Datasets や LLM judge を使用して Evaluations を実行し、システムプロンプト、Models 、スコアリング基準をテストすることが可能です。 +--- + +# Evaluation Playground + +Evaluation Playground を使用すると、既存の Models にアクセスし、Evaluation Datasets や LLM スコアリングジャッジを使用してそのパフォーマンスを比較できます。これにより、コードを記述することなく、モデルの実験や比較を開始できます。また、プレイグラウンドで開発した Models、スコアラー、Datasets を保存して、後の開発やデプロイメントに活用することも可能です。 + +例えば、Evaluation Playground を開き、以前に保存した 2 つの Models を追加して、新規または保存済みの質疑応答形式の Evaluation Dataset に基づいてパフォーマンスを評価できます。次に、インターフェース上で新しいモデルを追加し、システムプロンプトを設定して、3 つのモデルすべてに対して新しい評価を実行し、それぞれのパフォーマンスを比較することができます。 + + +![Evaluation Playground Interface](/weave/guides/evaluation/img/eval-playground-ui.png) + + +## プレイグラウンドで評価を設定する + +Evaluation Playground で評価を設定するには、以下の手順に従います。 + +1. [Weave UI](https://wandb.ai/wandb/quickstart_playground/weave/playground) を開き、評価を実行したい Project を開きます。これにより Traces ページが開きます。 +2. Traces ページで、左メニューの **Playground** アイコンをクリックし、Playground ページの **Evaluate** タブを選択します。Evaluate ページでは、以下のいずれかを選択できます。 + * **Load a demo example**: 定義済みの設定を読み込みます。これは MoonshotAI Kimi K2 モデルを期待される出力に対して評価し、LLM ジャッジを使用してその正当性を判断するデモです。この設定を使用してインターフェースを試すことができます。 + * **Start from scratch**: 構築のベースとなる空の設定を読み込みます。 +3. **Start from scratch** を選択した場合は、**Title** と **Description** フィールドに、評価の内容を示すタイトルと説明を追加します。 + +次のセクションの手順に従って、Datasets、Models、およびスコアラーを設定してください。 + +### Dataset を追加する + +[Datasets](../core-types/datasets) は、ユーザー入力の例と、モデルからの期待される応答をまとめたコレクションです。評価中、プレイグラウンドは各テスト入力をモデルに供給し、その出力を収集して、正確性などの選択したメトリクスに基づいて出力をスコアリングします。UI でデータセットを作成するか、プロジェクトに保存済みの既存のデータセットを追加するか、新しいデータセットをアップロードするかを選択できます。 + +以下の形式のデータセットをアップロードできます。 + +* `.csv` +* `.tsv` +* `.json` +* `.jsonl` + +Datasets のフォーマットや Weave への保存方法の詳細については、Datasets ページを参照してください。 + +**Dataset** セクションでデータセットを追加するには: + +1. ドロップダウンメニューをクリックし、以下のいずれかを選択します。 + * UI で新しいデータセットを作成するには **Start from scratch**。 + * ローカルマシンからデータセットをアップロードするには **Upload a file**。 + * プロジェクトに保存済みの既存のデータセット。 +2. 任意: **Save** をクリックして、後で使用するためにデータセットをプロジェクトに保存します。 + +オプションを選択すると、UI の右ペインにデータセットが表示され、各フィールドをクリックして必要に応じて編集できます。また、**Add row** をクリックしてデータセットに新しい行を追加することもできます。 + + +UI を使用して編集できるのは、新しいデータセットのみです。 + +また、スコアラーがデータにアクセスできるように、データセットの列に `user_input` および `expected_output` と適切に名前を付けることが重要です。 + + +### Model を追加する + +Weave における [Models](/weave/guides/core-types/models) は、AI モデル(GPT など)と、評価中にモデルがどのように動作するかを定義する環境(この場合はシステムプロンプト)の組み合わせです。プロジェクト内の既存のモデルを選択するか、評価用に新しいモデルを作成できます。また、複数のモデルを一度に追加して、同じデータセットとスコアラーで同時に評価することも可能です。**プレイグラウンド機能を使用して作成されたモデルのみを使用できます。** + +Evaluation Playground の **Models** セクションでモデルを追加するには: + +1. **Add Model** をクリックし、ドロップダウンメニューから **New Model** または既存のモデルを選択します。 +2. **New Model** を選択した場合は、以下のフィールドを設定します。 + * **Name**: 新しいモデルに分かりやすい名前を付けます。 + * **LLM Model**: 新しいモデルのベースとなる基盤モデル(OpenAI の GPT-4 など)を選択します。すでにアクセス設定済みの基盤モデルのリストから選択するか、**Add AI provider** を選択してモデルを選択し、基盤モデルへのアクセスを追加できます。プロバイダーを追加すると、そのプロバイダーへのアクセス資格情報の入力を求められます。APIキー、エンドポイント、および Weave を使用してモデルにアクセスするために必要な追加の設定情報の確認方法については、プロバイダーのドキュメントを参照してください。 + * **System Prompt**: モデルの動作に関する指示を提供します。例えば、`You are a helpful assistant specializing in Python programming.` などです。データセットからの `user_input` は後続のメッセージで送信されるため、システムプロンプトに含める必要はありません。 + + 既存のモデルを選択すると、モデル名の横に新しいフィールドが表示され、既存モデルのバージョンを選択できます。設定する追加フィールドはありません。評価の前後に既存のモデルに変更を加えたい場合は、[Prompt Playground](../tools/playground) を使用してください。 + +3. 任意: **Save** をクリックして、後で使用するためにモデルをプロジェクトに保存します。 +4. 任意: **Add Model** を再度クリックして他のモデルを追加することで、複数のモデルを同時に評価できます。 + +### スコアラーを追加する + +[Scorers](../evaluation/scorers) は、LLM ジャッジを使用して AI モデルの出力の品質を測定および評価します。プロジェクト内の既存のスコアラーを選択するか、モデルを評価するための新しいスコアラーを作成できます。 + +Evaluation Playground でスコアラーを追加するには: + +1. **Add Scorer** をクリックし、以下のフィールドを設定します。 + * **Name**: スコアラーに分かりやすい名前を付けます。 + * **Type**: スコアの出力方法を、Boolean(真偽値)または Number(数値)から選択します。Boolean スコアラーは、モデルの出力が設定した判定パラメータを満たしているかどうかに応じて、バイナリの `True` または `False` を返します。Number スコアラーは `0` から `1` の間のスコアを出力し、モデルの出力が判定パラメータをどの程度満たしているかの一般的なグレードを提供します。 + * **LLM-as-a-judge-model**: スコアラーのジャッジとして使用する基盤モデルを選択します。**Models** セクションの LLM Model フィールドと同様に、設定済みの基盤モデルから選択するか、新しくアクセスを設定できます。 + * **Scoring Prompt**: LLM ジャッジに、何を基準に出力をスコアリングすべきかのパラメータを提供します。例えば、ハルシネーションをチェックしたい場合は、次のようなスコアリングプロンプトを入力できます。 + + ``` + Given the following context and answer, determine if the answer contains any information not supported by the context. + + User input: {user_input} + Expected output: {expected_output} + Model Output: {output} + + Is the model output correct? + ``` + + データセットのフィールドや応答を、`{user_input}`、`{expected_output}`、`{output}` などの変数としてスコアリングプロンプトで使用できます。利用可能な変数のリストを表示するには、UI で **Insert variable** をクリックします。 + +2. 任意: **Save** をクリックして、後で使用するためにスコアラーをプロジェクトに保存します。 + +### 評価を実行する + +Datasets、Models、およびスコアラーの設定が完了したら、評価を実行できます。 + +* Evaluation Playground で評価を実行するには、**Run eval** をクリックします。 + +Weave は追加された各モデルに対して個別の評価を実行し、データセットを使用した各リクエストに関するメトリクスを収集します。Weave はこれらの各評価を、後で確認できるように **Evals** セクションに保存します。 + +### 評価結果を確認する + +評価が完了すると、プレイグラウンドは、モデルへの各リクエストで収集されたさまざまなメトリクスを表示するレポートを開きます。 + + +![Evals hero](/images/weave/evals-hero.png) + + +**Dataset results** タブには、入力、期待される出力、モデルの実際の出力、レイテンシ、トークン使用量、およびスコアリング結果が表示されます。**Row** 列の ID をクリックすると、特定のリクエストセットに関するメトリクスの詳細ビューが開きます。また、タブのすぐ下にある表示形式ボタンを使用して、レポートのセルの表示形式を変更できます。 + +**Summary** タブには、各モデルがどのようにパフォーマンスしたかの概要が、データの視覚的表現とともに提供されます。 + +評価を開いて比較する方法の詳細については、[Evaluations](../core-types/evaluations) を参照してください。 \ No newline at end of file diff --git a/ja/weave/guides/tools/limits.mdx b/ja/weave/guides/tools/limits.mdx new file mode 100644 index 0000000000..ce93eacdc5 --- /dev/null +++ b/ja/weave/guides/tools/limits.mdx @@ -0,0 +1,54 @@ +--- +title: 制限事項と期待される振る舞い +description: Weave の制限事項、既知の問題、および期待される 振る舞い の一覧 +--- + +* リトライ可能なリクエストについて、 Weave は最初のエラーを受信してから 1 秒後にリトライを開始し、その後、試行間の時間を 5 分を上限として倍増させます。リクエストは 36 時間後にタイムアウトします。 + +* 例外を発生させる代わりに、 [`.call()`](/weave/guides/tracking/tracing#creating-calls) は例外をキャプチャし、 `call.exception` に保存します。実行中に例外を発生させる必要がある場合は、次のように [`__should_raise` パラメータ](/weave/reference/python-sdk/trace/op#function-call) を設定してください: + + ```python showLineNumbers + # これは例外を発生させます + result, call = foo.call(__should_raise=True) + ``` + +* 専用の Weave インスタンスは、異なる OpenTelemetry イングレス URL を使用します。正式なエンドポイント情報については、 [Send OpenTelemetry Traces](/weave/guides/tracking/otel) を参照してください。 + +* Weave は、大きな トレース データ オブジェクト を切り捨てることがあります。これは、デフォルトの トレース 出力が、 Weave がシリアル化の方法を認識していない生のカスタム Python オブジェクト であるために発生します。すべての トレース データ を返すには、次のように文字列の 辞書 を定義します: + + ```python + import weave + + class MyObj: + """大きな文字列属性を持つオブジェクト。""" + def __init__(self, x: int): + self.x = x + + def __repr__(self): + return f"MyObj(x={self.x})" + + def to_dict(self): + return {"x": self.x} + + @weave.op() + def make_my_obj(): + x = "a" * 10_000 + return MyObj(x) + + def main(): + weave.init("") + + # MyObjを処理するトレース可能な演算を定義 + @weave.op() + def process_obj(obj: MyObj) -> int: + return len(obj.x) + + # 大きなMyObjインスタンスを作成して処理 + large_obj = make_my_obj() + length = process_obj(large_obj) + print(f"Length of x in MyObj: {length}") + print("dict:", large_obj.to_dict()) + + if __name__ == "__main__": + main() + ``` \ No newline at end of file diff --git a/ja/weave/guides/tools/playground.mdx b/ja/weave/guides/tools/playground.mdx new file mode 100644 index 0000000000..4e5c98df09 --- /dev/null +++ b/ja/weave/guides/tools/playground.mdx @@ -0,0 +1,456 @@ +--- +title: Playground を使用してプロンプトを 実験 します +description: LLM のプロンプトとレスポンスを反復的に改善する プロセス を簡素化します +--- + + +期間限定で、新しい W&B Inference サービスが無料枠に含まれています。W&B Inference を使用すると、API および Weave Playground を介して主要なオープンソースの基盤モデルにアクセスできます。 +- [開発者ドキュメント](../integrations/inference) +- [製品ページ](https://wandb.ai/site/inference) + + +LLM のプロンプトと応答を評価することは困難です。Weave Playground は、LLM のプロンプトと応答の反復プロセスを簡素化するように設計されており、さまざまなモデルやプロンプトでの実験を容易にします。プロンプトの編集、メッセージの再試行、モデル比較などの機能により、Playground は LLM アプリケーションの迅速なテストと改善を支援します。Playground は現在、OpenAI、Anthropic、Google、Groq、Amazon Bedrock、Microsoft Azure のモデル、および [カスタムプロバイダー](#add-a-custom-provider) をサポートしています。 + +- **クイックアクセス:** W&B サイドバーから新しいセッションとして、または Call ページから既存のプロジェクトをテストするために Playground を開くことができます。 +- **メッセージコントロール:** チャット内で直接メッセージの編集、再試行、削除が可能です。 +- **柔軟なメッセージング:** ユーザー入力またはシステム入力として新しいメッセージを追加し、LLM に送信できます。 +- **カスタマイズ可能な設定:** お好みの LLM プロバイダーを選択し、モデル設定を調整できます。 +- **マルチ LLM サポート:** チームレベルの API キー管理により、モデルを簡単に切り替えられます。 +- **モデル比較:** プロンプトに対して異なるモデルがどのように応答するかを比較できます。 +- **カスタムプロバイダー:** カスタムモデル用の OpenAI 互換 API エンドポイントをテストできます。 +- **保存済みモデル:** ワークフローに合わせて再利用可能なモデルプリセットを作成および設定できます。 + +Playground を使い始めて、LLM とのやり取りを最適化し、プロンプトエンジニアリングのプロセスと LLM アプリケーション開発を効率化しましょう。 + +- [事前準備](#prerequisites) + - [プロバイダーの認証情報と情報の追加](#add-provider-credentials-and-information) + - [Playground へのアクセス](#access-the-playground) +- [LLM の選択](#select-an-llm) +- [設定のカスタマイズ](#customize-settings) +- [メッセージコントロール](#add-retry-edit-and-delete-messages) +- [LLM の比較](#compare-llms) +- [カスタムプロバイダー](#custom-providers) +- [保存済みモデル](#saved-models) + +## 事前準備 + +Playground を使用する前に、[プロバイダーの認証情報の追加](#add-provider-credentials-and-information) と [Playground UI の表示](#access-the-playground) を行う必要があります。 + +### プロバイダーの認証情報と情報の追加 + +Playground は現在、OpenAI、Anthropic、Google、Groq、Amazon Bedrock、Microsoft Azure のモデルをサポートしています。利用可能なモデルを使用するには、W&B 設定のチームシークレットに適切な情報を追加してください。 + +- OpenAI: `OPENAI_API_KEY` +- Anthropic: `ANTHROPIC_API_KEY` +- Google: `GEMINI_API_KEY` +- Groq: `GROQ_API_KEY` +- Amazon Bedrock: + - `AWS_ACCESS_KEY_ID` + - `AWS_SECRET_ACCESS_KEY` + - `AWS_REGION_NAME` +- Azure: + - `AZURE_API_KEY` + - `AZURE_API_BASE` + - `AZURE_API_VERSION` +- X.AI: + - `XAI_API_KEY` +- Deepseek + - `DEEPSEEK_API_KEY` + +### Playground へのアクセス + +Playground にアクセスするには 2 つの方法があります。 + +1. _シンプルなシステムプロンプトで新しい Playground ページを開く_: サイドバーで **Playground** を選択します。Playground が同じタブで開きます。 +2. _特定の Call に対して Playground を開く_: + 1. サイドバーで **Traces** タブを選択します。トレースのリストが表示されます。 + 2. トレースリストで、表示したい Call の名前をクリックします。Call の詳細ページが開きます。 + 3. **Open chat in playground** をクリックします。Playground が新しいタブで開きます。 + + +![Open in Playground ボタンのスクリーンショット](/weave/guides/tools/imgs/open_chat_in_playground.png) + + +## LLM の選択 + +左上のドロップダウンメニューを使用して LLM を切り替えることができます。各プロバイダーから利用可能なモデルは以下の通りです。 + +- [Amazon Bedrock](#amazon-bedrock) +- [Anthropic](#anthropic) +- [Azure](#azure) +- [Google](#google) +- [Groq](#groq) +- [OpenAI](#openai) +- [X.AI](#xai) +- [Deepseek](#deepseek) + +{/* USE make update_playground_models */} +{/* LLM_LIST_START, DON'T EDIT THIS SECTION */} + +### [Amazon Bedrock](../integrations/bedrock) + +- ai21.j2-mid-v1 +- ai21.j2-ultra-v1 +- amazon.nova-micro-v1:0 +- amazon.nova-lite-v1:0 +- amazon.nova-pro-v1:0 +- amazon.titan-text-lite-v1 +- amazon.titan-text-express-v1 +- mistral.mistral-7b-instruct-v0:2 +- mistral.mixtral-8x7b-instruct-v0:1 +- mistral.mistral-large-2402-v1:0 +- mistral.mistral-large-2407-v1:0 +- anthropic.claude-3-sonnet-20240229-v1:0 +- anthropic.claude-3-5-sonnet-20240620-v1:0 +- anthropic.claude-3-haiku-20240307-v1:0 +- anthropic.claude-3-opus-20240229-v1:0 +- anthropic.claude-v2 +- anthropic.claude-v2:1 +- anthropic.claude-instant-v1 +- cohere.command-text-v14 +- cohere.command-light-text-v14 +- cohere.command-r-plus-v1:0 +- cohere.command-r-v1:0 +- meta.llama2-13b-chat-v1 +- meta.llama2-70b-chat-v1 +- meta.llama3-8b-instruct-v1:0 +- meta.llama3-70b-instruct-v1:0 +- meta.llama3-1-8b-instruct-v1:0 +- meta.llama3-1-70b-instruct-v1:0 +- meta.llama3-1-405b-instruct-v1:0 + +### [Anthropic](../integrations/anthropic) + +- claude-3-7-sonnet-20250219 +- claude-3-5-sonnet-20240620 +- claude-3-5-sonnet-20241022 +- claude-3-haiku-20240307 +- claude-3-opus-20240229 +- claude-3-sonnet-20240229 + +### [Azure](../integrations/azure) + +- azure/o1-mini +- azure/o1-mini-2024-09-12 +- azure/o1 +- azure/o1-preview +- azure/o1-preview-2024-09-12 +- azure/gpt-4o +- azure/gpt-4o-2024-08-06 +- azure/gpt-4o-2024-11-20 +- azure/gpt-4o-2024-05-13 +- azure/gpt-4o-mini +- azure/gpt-4o-mini-2024-07-18 + +### [Google](../integrations/google) + +- gemini/gemini-2.5-pro-preview-03-25 +- gemini/gemini-2.0-pro-exp-02-05 +- gemini/gemini-2.0-flash-exp +- gemini/gemini-2.0-flash-001 +- gemini/gemini-2.0-flash-thinking-exp +- gemini/gemini-2.0-flash-thinking-exp-01-21 +- gemini/gemini-2.0-flash +- gemini/gemini-2.0-flash-lite +- gemini/gemini-2.0-flash-lite-preview-02-05 +- gemini/gemini-1.5-flash-001 +- gemini/gemini-1.5-flash-002 +- gemini/gemini-1.5-flash-8b-exp-0827 +- gemini/gemini-1.5-flash-8b-exp-0924 +- gemini/gemini-1.5-flash-latest +- gemini/gemini-1.5-flash +- gemini/gemini-1.5-pro-001 +- gemini/gemini-1.5-pro-002 +- gemini/gemini-1.5-pro-latest +- gemini/gemini-1.5-pro + +### [Groq](../integrations/groq.mdx) + +- groq/deepseek-r1-distill-llama-70b +- groq/llama-3.3-70b-versatile +- groq/llama-3.3-70b-specdec +- groq/llama-3.2-1b-preview +- groq/llama-3.2-3b-preview +- groq/llama-3.2-11b-vision-preview +- groq/llama-3.2-90b-vision-preview +- groq/llama-3.1-8b-instant +- groq/llama3-70b-8192 +- groq/llama3-8b-8192 +- groq/gemma2-9b-it + +### [OpenAI](../integrations/openai.mdx) + +- gpt-4.1-mini-2025-04-14 +- gpt-4.1-mini +- gpt-4.1-2025-04-14 +- gpt-4.1 +- gpt-4.1-nano-2025-04-14 +- gpt-4.1-nano +- o4-mini-2025-04-16 +- o4-mini +- gpt-4.5-preview-2025-02-27 +- gpt-4.5-preview +- o3-2025-04-16 +- o3 +- o3-mini-2025-01-31 +- o3-mini +- gpt-4o-mini +- gpt-4o-2024-05-13 +- gpt-4o-2024-08-06 +- gpt-4o-mini-2024-07-18 +- gpt-4o +- gpt-4o-2024-11-20 +- o1-mini-2024-09-12 +- o1-mini +- o1-preview-2024-09-12 +- o1-preview +- o1-2024-12-17 +- gpt-4-1106-preview +- gpt-4-32k-0314 +- gpt-4-turbo-2024-04-09 +- gpt-4-turbo-preview +- gpt-4-turbo +- gpt-4 +- gpt-3.5-turbo-0125 +- gpt-3.5-turbo-1106 + +### X.AI + +- xai/grok-3-beta +- xai/grok-3-fast-beta +- xai/grok-3-fast-latest +- xai/grok-3-mini-beta +- xai/grok-3-mini-fast-beta +- xai/grok-3-mini-fast-latest +- xai/grok-beta +- xai/grok-2-1212 +- xai/grok-2 +- xai/grok-2-latest + +### Deepseek + +- deepseek/deepseek-reasoner +- deepseek/deepseek-chat + +{/* LLM_LIST_END, DON'T EDIT THIS SECTION */} + +## 設定のカスタマイズ + +### LLM パラメータの調整 + +選択したモデルに対して、異なるパラメータ値で実験することができます。パラメータを調整するには、以下の手順に従ってください。 + +1. Playground UI の右上にある **Chat settings** をクリックして、パラメータ設定ドロップダウンを開きます。 +2. ドロップダウンで、必要に応じてパラメータを調整します。Weave の Call 追跡のオン/オフを切り替えたり、[関数の追加](#add-a-function) を行うこともできます。 +3. **Chat settings** を再度クリックしてドロップダウンを閉じ、変更を保存します。 + + +![Playground 設定のスクリーンショット](/weave/guides/tools/imgs/playground_settings.png) + + +### 関数の追加 + +ユーザーからの入力に基づいて、異なるモデルがどのように関数を使用するかをテストできます。Playground でテスト用に関数を追加するには、以下の手順に従ってください。 + +1. Playground UI の右上にある **Chat settings** をクリックして、パラメータ設定ドロップダウンを開きます。 +2. ドロップダウン内の **+ Add function** をクリックします。 +3. ポップアップで、関数の情報を追加します。 +4. 変更を保存して関数のポップアップを閉じるには、右上の **x** をクリックします。 +5. **Chat settings** をクリックして設定ドロップダウンを閉じ、変更を保存します。 + +### 試行回数の調整 + +Playground では、試行回数(Number of trials)を設定することで、同じ入力に対して複数の出力を生成できます。デフォルト設定は `1` です。試行回数を調整するには、以下の手順に従ってください。 + +1. Playground UI で、設定サイドバーが開いていない場合は開きます。 +2. **Number of trials** を調整します。 + +## メッセージコントロール + +### メッセージの再試行、編集、削除 + +Playground では、メッセージの再試行、編集、削除が可能です。この機能を使用するには、編集、再試行、または削除したいメッセージの上にカーソルを置きます。**Delete**、**Edit**、**Retry** の 3 つのボタンが表示されます。 + +- **Delete**: チャットからメッセージを削除します。 +- **Edit**: メッセージの内容を修正します。 +- **Retry**: それ以降のすべてのメッセージを削除し、選択したメッセージからチャットを再試行します。 + +### 新しいメッセージの追加 + +チャットに新しいメッセージを追加するには、以下の手順に従ってください。 + +1. チャットボックスで、利用可能なロール(**Assistant** または **User**)のいずれかを選択します。 +2. **+ Add** をクリックします。 +3. LLM に新しいメッセージを送信するには、**Send** ボタンをクリックします。または、**Command** と **Enter** キーを同時に押します。 + + +![Playground メッセージ送信のスクリーンショット](/weave/guides/tools/imgs/playground_chat_input.png) + + +## LLM の比較 + +Playground では LLM を比較できます。比較を行うには、以下の手順に従ってください。 + +1. Playground UI で **Compare** をクリックします。元のチャットの隣に 2 つ目のチャットが開きます。 +2. 2 つ目のチャットでは、以下が可能です。 + - [比較する LLM の選択](#select-an-llm) + - [パラメータの調整](#adjust-llm-parameters) + - [関数の追加](#add-a-function) +3. メッセージボックスに、両方のモデルでテストしたいメッセージを入力し、**Send** を押します。 + +## カスタムプロバイダー + +### カスタムプロバイダーの追加 + +[サポートされているプロバイダー](#select-an-llm) に加えて、Playground を使用してカスタムモデル用の OpenAI 互換 API エンドポイントをテストできます。例としては以下があります。 + +- サポートされているモデルプロバイダーの旧バージョン +- ローカルモデル + +Playground にカスタムプロバイダーを追加するには、以下の手順に従ってください。 + +1. Playground UI の左上にある **Select a model** ドロップダウンをクリックします。 +2. **+ Add AI provider** を選択します。 +3. ポップアップモーダルで、プロバイダー情報を入力します。 + + - _Provider name_: 例: `openai` や `ollama`。 + - _API key_: 例: OpenAI の APIキー。 + - _Base URL_: 例: `https://api.openai.com/v1/` や ngrok の URL `https://e452-2600-1700-45f0-3e10-2d3f-796b-d6f2-8ba7.ngrok-free.app`。 + - _Headers_ (任意): 複数のヘッダーのキーと値を追加できます。 + - _Models_: 1 つのプロバイダーに対して複数のモデルを追加できます。例: `deepseek-r1` や `qwq`。 + - _Max tokens_ (任意): 各モデルについて、応答で生成できる最大トークン数を指定できます。 + +4. プロバイダー情報を入力したら、**Add provider** をクリックします。 +5. Playground UI の左上にある **Select a model** ドロップダウンから、新しいプロバイダーと利用可能なモデルを選択します。 + + +CORS の制限により、Playground から localhost や 127.0.0.1 の URL を直接呼び出すことはできません。Ollama などのローカルモデルサーバーを実行している場合は、ngrok のようなトンネリングサービスを使用して安全に公開してください。詳細は、[Ollama で ngrok を使用する](#use-ngrok-with-ollama) を参照してください。 + + +これで、標準の Playground 機能を使用してカスタムプロバイダーモデルをテストできます。また、カスタムプロバイダーの [編集](#edit-a-custom-provider) や [削除](#remove-a-custom-provider) も可能です。 + +### カスタムプロバイダーの編集 + +[以前に作成したカスタムプロバイダー](#add-a-custom-provider) の情報を編集するには、以下の手順に従ってください。 + +1. Weave サイドバーで **Overview** に移動します。 +2. 上部ナビゲーションメニューから **AI Providers** を選択します。 +3. **Custom providers** テーブルで、更新したいカスタムプロバイダーを見つけます。 +4. そのエントリの **Last Updated** 列にある編集ボタン(鉛筆アイコン)をクリックします。 +5. ポップアップモーダルで、プロバイダー情報を編集します。 +6. **Save** をクリックします。 + +### カスタムプロバイダーの削除 + +[以前に作成したカスタムプロバイダー](#add-a-custom-provider) を削除するには、以下の手順に従ってください。 + +1. Weave サイドバーで **Overview** に移動します。 +2. 上部ナビゲーションメニューから **AI Providers** を選択します。 +3. **Custom providers** テーブルで、削除したいカスタムプロバイダーを見つけます。 +4. そのエントリの **Last Updated** 列にある削除ボタン(ゴミ箱アイコン)をクリックします。 +5. ポップアップモーダルで、プロバイダーを削除することを確認します。この操作は取り消せません。 +6. **Delete** をクリックします。 + +### Ollama で ngrok を使用する + +Playground でローカルに実行されている Ollama モデルをテストするには、ngrok を使用して CORS 制限を回避する一時的な公開 URL を作成します。 + +設定するには、以下の手順に従ってください。 + +1. お使いの OS に合わせて [ngrok をインストール](https://ngrok.com/docs/getting-started/#step-1-install) します。 +2. Ollama モデルを起動します。 + + ```bash + ollama run + ``` + +3. 別のターミナルで、必要な CORS ヘッダーを指定して ngrok トンネルを作成します。 + + ```bash + ngrok http 11434 --response-header-add "Access-Control-Allow-Origin: *" --host-header rewrite + ``` + +ngrok が起動すると、`https://xxxx-xxxx.ngrok-free.app` のような公開 URL が表示されます。Playground で Ollama をカスタムプロバイダーとして追加する際に、この URL を Base URL として使用してください。 + +次の図は、ローカル環境、ngrok プロキシ、および W&B クラウドサービス間のデータフローを示しています。 + +```mermaid +flowchart LR + %% Style definitions + classDef clientMachine fill:#FFD95CCC,stroke:#454B52,stroke-width:2px + classDef proxy fill:#00CDDBCC,stroke:#454B52,stroke-width:2px + classDef wandbCloud fill:#DE72FFCC,stroke:#454B52,stroke-width:2px + classDef publicCloud fill:#FFCBADCC,stroke:#454B52,stroke-width:2px + + %% Subgraphs + subgraph Client_Machine + browser[ブラウザ] + llm_local[ローカル LLM プロバイダー] + end + + subgraph Proxy + ngrok[Ngrok プロキシ] + end + + subgraph WandB_Cloud + trace_server[Trace サーバー] + end + + subgraph Public_Cloud + llm_cloud[パブリック LLM プロバイダー] + end + + %% Apply styles to subgraphs + class Client_Machine clientMachine + class Proxy proxy + class WandB_Cloud wandbCloud + class Public_Cloud publicCloud + + %% Current Data Flow + browser -->|チャットリクエストを送信| trace_server + trace_server -->|パブリック LLM を使用| llm_cloud + trace_server -->|ローカル LLM を使用| ngrok + ngrok -->|転送先| llm_local + llm_cloud -->|レスポンスを返却| trace_server + llm_local -->|レスポンスを返却| ngrok + ngrok -->|転送先| trace_server + trace_server -->|レスポンスを返却| browser + + %% Future Possible Connection + browser -.->|将来:ローカル LLM を直接呼び出し| llm_local + + %% Link styles + linkStyle default stroke:#454B52,stroke-width:2px + linkStyle 8 stroke:#454B52,stroke-width:2px,stroke-dasharray:5 +``` + +## 保存済みモデル + +### モデルの保存 + +ワークフローに合わせて再利用可能なモデルプリセットを作成および設定できます。モデルを保存すると、好みの設定、パラメータ、および関数フックを適用した状態で素早くロードできます。 + +1. LLM ドロップダウンから、プロバイダーを選択します。 +2. プロバイダーリストから、モデルを選択します。 +3. Playground UI の右上にある **Chat settings** をクリックして、チャット設定ウィンドウを開きます。 +4. チャット設定ウィンドウで以下を行います。 + - **Model Name** フィールドに、保存するモデルの名前を入力します。 + - 必要に応じてパラメータを調整します。Weave の Call 追跡のオン/オフを切り替えたり、[関数の追加](#add-a-function) を行うこともできます。 +5. **Publish Model** をクリックします。モデルが保存され、LLM ドロップダウンの **Saved Models** からアクセスできるようになります。これで保存済みモデルを [使用](#use-a-saved-model) および [更新](#update-a-saved-model) できるようになります。 + +### 保存済みモデルの使用 + +以前に [保存したモデル](#save-a-model) に素早く切り替えて、実験やセッション間の一貫性を維持します。これにより、中断したところからすぐに再開できます。 + +1. LLM ドロップダウンから **Saved Models** を選択します。 +2. 保存済みモデルのリストから、ロードしたいモデルをクリックします。モデルがロードされ、Playground で使用できる状態になります。 + +### 保存済みモデルの更新 + +既存の [保存済みモデル](#save-a-model) を編集して、パラメータを微調整したり設定を更新したりします。これにより、ユースケースの進化に合わせて保存済みモデルを対応させることができます。 + +1. LLM ドロップダウンから **Saved Models** を選択します。 +2. 保存済みモデルのリストから、更新したいモデルをクリックします。 +3. Playground UI の右上にある **Chat settings** をクリックして、チャット設定ウィンドウを開きます。 +4. チャット設定ウィンドウで、必要に応じてパラメータを調整します。Weave の Call 追跡のオン/オフを切り替えたり、[関数の追加](#add-a-function) を行うこともできます。 +5. **Update model** をクリックします。モデルが更新され、LLM ドロップダウンの **Saved Models** からアクセスできるようになります。 diff --git a/ja/weave/guides/tools/saved-views.mdx b/ja/weave/guides/tools/saved-views.mdx new file mode 100644 index 0000000000..57697ee9b2 --- /dev/null +++ b/ja/weave/guides/tools/saved-views.mdx @@ -0,0 +1,189 @@ +--- +title: 保存されたビューの作成と管理 +description: トレースされた関数呼び出しや 評価 (Evaluations) とのインタラクション方法をカスタマイズする +--- + +Weave において、 _saved views_ (保存済みビュー)を使用すると、トレースされた関数呼び出しや評価(Evaluations)との対話方法をカスタマイズできます。保存済みビューを定義することで、フィルタ、ソート、列の表示設定を構成し、関連するデータに素早くアクセスできるようになります。 + +ビューの作成、修正、保存は、Weave Python SDK または UI から直接行うことができます。Python SDK はプログラムによるフィルタリングやクエリのきめ細かな制御を提供し、UI では **Traces** や **Evals** タブでさまざまなテーブル構成を簡単に探索・保存できます。 + +このガイドでは以下を説明します: + +- [Python SDK で保存済みビューを作成・修正する方法](#saved-views-in-the-python-sdk) +- [Weave UI で保存済みビューを作成・操作する方法](#saved-views-in-the-ui) + +## Saved views in the Python SDK + +Weave の `SavedView` クラスは、トレースおよび Evals データのビューを保存、フィルタリング、ソート、およびカスタマイズする方法を提供します。 + +### `SavedView` の初期化 + +Weave プロジェクトで `SavedView` インスタンスを初期化します。 + +```python lines +import weave +# プロジェクトを初期化 +client = weave.init() + +view = weave.SavedView() +``` + +### `SavedView` をグリッドとして可視化する + +`.to_grid()` を使用して、保存済みビューをグリッド形式で表示します。`limit` 引数で表示する最大行数を指定できます。 + +```python lines +view.to_grid(limit=5) +``` + +`.show()` を使用してグリッド表示を出力します。 + +```python lines +view.to_grid().show() +``` + +### 表示する列を設定する + +`.set_columns()` を使用して、ビューに表示する列を設定します。表示したい 1 つ以上の列を指定します。 + +```python lines +view.set_columns("id", "op_name") +``` + +### 列を追加する + +`.add_column()` を使用して、ビューに 1 つ以上の新しい列を追加します。追加したい列を指定します。 + +```python lines +# フィールド指定子とラベル "Created" を持つ列を追加 +view.add_column("Created") +# オプションで、第2引数を追加して新しい列に異なるラベル名を指定できます。デフォルトではフィールド指定子がラベルに使用されます。 +``` + +### 列をソートする + +`.sort_by()` を使用して、特定の列に基づいて結果をソートします。ソートする列名とソート順(`asc` または `desc`)を指定します。 + +```python lines +view.sort_by("started_at", "desc") +``` + +### オペレーション名でフィルタリングする + +Weave では、すべてのトレースや eval はオペレーション名に関連付けられています。 +`.filter_op()` を使用して、特定のオペレーションが実行された呼び出しのみを含むように `SavedView` をフィルタリングします。 + +```python lines +view.filter_op("Evaluation.predict_and_score") +``` + +### 演算子と条件でフィルタリングする + +`.add_filter()` を使用して、ビューにカスタムフィルタを適用します。[サポートされているフィルタ演算子](#filter-operators)のいずれかと条件を使用してフィルタを定義します。 + +```python lines +view.add_filter("output.model_latency", ">=", 5) +``` + +#### フィルタ演算子 + +| 演算子 | 説明 | 例 | +|----------|-------------|---------| +| `"contains"` | 文字列に部分文字列が含まれているかチェックします。 | `view.add_filter("output.status", "contains", "error")` | +| `"equals"` | 文字列が指定された値と完全に一致するかチェックします。 | `view.add_filter("input.category", "equals", "Alice")` | +| `"in"` | 文字列が値のリストに含まれているかチェックします。 | `view.add_filter("category", "in", ["A", "B", "C"])` | +| `"="` | 数値が値と等しいかチェックします。 | `view.add_filter("output.score", "=", 80)` | +| `"≠", "!="` | 数値が値と等しくないかチェックします。 | `view.add_filter("metrics.loss", "!=", 0.5)` | +| `"<"` | 数値が値より小さいかチェックします。 | `view.add_filter("age", "<", 30)` | +| `"≤", "<="` | 数値が値以下かチェックします。 | `view.add_filter("metric.value", "<=", 100)` | +| `">"` | 数値が値より大きいかチェックします。 | `view.add_filter("output.score", ">", 90)` | +| `"≥", ">="` | 数値が値以上かチェックします。 | `view.add_filter("output.model_latency", ">=", 5)` | +| `"is"` | boolean フィールドが `True` または `False` かチェックします。 | `view.add_filter("is_active", "is", True)` | +| `"after"` | 日付が指定されたタイムスタンプより後かチェックします。 | `view.add_filter("started_at", "after", "2024-01-01")` | +| `"before"` | 日付が指定されたタイムスタンプより前かチェックします。 | `view.add_filter("ended_at", "before", "2024-12-31")` | +| `"is empty"` | フィールドが空(`None` または `""`)かチェックします。 | `view.add_filter("comments", "is empty", None)` | +| `"is not empty"` | フィールドが空でないかチェックします。 | `view.add_filter("attachments", "is not empty", None)` | + +### フィルタの削除 + +`.remove_filter()` を使用して、インデックスまたはフィールド名で特定のフィルタをビューから削除します。 + +```python lines +view.remove_filter("output.model_latency") +``` + +`.remove_filters()` を使用してすべてのフィルタを削除します。 + +```python lines +view.remove_filters() +``` + +### 保存済みビューを保存する + +`.save()` を使用して、保存済みビューを Weave に公開(保存)します。 + +```python lines +view.save() +``` + +### 関数呼び出しの取得 + +`.get_calls()` を使用して、保存済みビューのフィルタに一致する関数呼び出しを取得します。`limit` や `offset` などのオプションパラメータを指定できます。 + +```python lines +calls = view.get_calls(limit=10) +``` + +## Saved views in the UI + +Weave UI では、保存済みビューの作成、読み込み、名前変更、編集が可能です。より細かな制御が必要な場合は、[Python SDK](#saved-views-in-the-python-sdk) を使用してください。 + +### 保存済みビューの作成 + +1. **Traces** または **Evals** タブに移動します。 +2. テーブル構成の以下の変数を調整します: + - フィルタ + - ソート順 + - ページサイズ + - 列の表示設定 + - 列の固定(ピン留め) +3. 次のいずれかのオプションを使用してビューを保存します: + - 右上隅にある **Save view** をクリックします。 + - **Save view** の左側にあるハンバーガーメニューをクリックします。ドロップダウンメニューで **+ Save as new view** をクリックします。 + +### 保存済みビューの読み込み + +1. **Traces** または **Evals** タブに移動します。 +2. タブタイトルの左側にあるハンバーガーメニューをクリックします。すべての保存済みビューを表示するドロップダウンメニューが表示されます。 +3. アクセスしたいビューをクリックします。保存されたビューが **Traces** または **Evals** タブに表示されます。 + +### 保存済みビューの名前変更 + +1. [保存済みビューの読み込み](#load-a-saved-view)に記載されている手順に従います。 +2. **Traces** または **Evals** タブの左上隅にあるビュー名をクリックします。 +3. ビューの新しい名前を入力します。 +4. 新しいビュー名を保存するには、 **Enter** キーを押します。 + +### 保存済みビューの編集 + +1. [保存済みビューの読み込み](#load-a-saved-view)に記載されている手順に従います。 +2. テーブル構成を調整します。 +3. 右上隅にある **Save view** をクリックします。 + +### 保存済みビューの削除 + + +ビューが自分やチームにとってもはや有用でないと判断した場合は、削除することができます。この操作は取り消せません。 + + +1. **Traces** または **Evals** タブに移動します。 +2. 削除したいビューを[読み込み](#load-a-saved-view)ます。 +3. **Save view** の左側にあるハンバーガーメニューをクリックします。 +4. ドロップダウンメニューで **Delete view** をクリックします。 +5. ポップアップモーダルで **Delete view** をクリックして確定します。または、 **Cancel** をクリックして削除を中止します。 + +### デフォルトビューに戻る + +1. **Traces** または **Evals** タブに移動します。 +2. **Traces** または **Evals** タブの右側にあるハンバーガーメニューをクリックします。すべての保存済みビューを表示するドロップダウンメニューが表示されます。 +3. メニューの下部にある **Traces** または **Evals** をクリックします。デフォルトのビューが表示されます。 \ No newline at end of file diff --git a/ja/weave/guides/tools/serve.mdx b/ja/weave/guides/tools/serve.mdx new file mode 100644 index 0000000000..8116e7c4b2 --- /dev/null +++ b/ja/weave/guides/tools/serve.mdx @@ -0,0 +1,31 @@ +--- +title: サーブ +description: Weave の ops と Models を API エンドポイントとして公開する +--- + +Weave Model への Weave ref があれば、以下のコマンドを実行できます。 + +``` +weave serve +``` + +これにより、その モデル 用の FastAPI サーバーが起動します。[http://0.0.0.0:9996/docs](http://0.0.0.0:9996/docs) にアクセスして、インタラクティブに モデル へのクエリを実行できます。 + +## FastAPI のインストール + +```bash +pip install fastapi uvicorn +``` + +## Model のサービング + +ターミナル で以下を呼び出します。 + +```bash +weave serve +``` + +モデル ref は、UI 上で対象の モデル に移動してコピーすることで取得できます。形式は以下のようになります。 +`weave://your_entity/project-name/YourModel:` + +これを使用するには、Swagger UI のリンクに移動し、predict エンドポイントをクリックしてから「Try it out!」をクリックしてください。 \ No newline at end of file diff --git a/ja/weave/guides/tools/weave-in-workspaces.mdx b/ja/weave/guides/tools/weave-in-workspaces.mdx new file mode 100644 index 0000000000..a34d68f937 --- /dev/null +++ b/ja/weave/guides/tools/weave-in-workspaces.mdx @@ -0,0 +1,178 @@ +--- +title: W&B トレーニング run で Weave を使用する +description: Weave トレース を W&B の トレーニング run と統合することで、トレーニング中の モデル の 振る舞い を深く把握できます。カスタマイズ可能な + Workspace ダッシュボード 上で、従来の ML メトリクス と共に関数実行の詳細や診断情報をキャプチャすることが可能です。 +--- + +# モデルトレーニングの Runs 中に Traces をログ記録する + + +![Workspaces内でのWeave Trace](/images/weave/traces-in-workspace.png) + + +モデルトレーニングの Runs 中に Weave の Traces をログ記録し、個人の Workspace で表示できるようになりました。 + +個人の Workspace は、UI 上でカスタマイズ可能なダッシュボードであり、モデルトレーニングの Runs に関する詳細な分析やデータ可視化を表示できます。 Workspace に Weave パネルを追加することで、モデルの Runs 中にログ記録されたトレースデータにアクセスして表示でき、トレーニング中のモデルのパフォーマンスについてより深い洞察を得るのに役立ちます。 + +例えば、LLM モデルをファインチューニングしており、W&B の Workspace でステップ 500 で精度が低下していることが示された場合、統合された Weave Traces を確認することで、モデルが評価基準に満たない冗長な回答を生成し始めたなど、何が起きたのかを正確に把握できます。 + +## Weave パネルの使用 + +機械学習パイプライン内の [関数を `@weave.op` でデコレートする](/weave/quickstart) ことで、その実行情報を自動的にキャプチャし、個人の Workspace でアクセスできるようになります。 + +以下のスクリプトは、Weave Traces を W&B のトレーニング Runs と統合する方法の例です。各トレーニングステップでメトリクスを W&B にログ記録すると同時に、詳細な Weave Traces を作成する機械学習トレーニングループをシミュレートしています。関数に付けられた `@weave.op` デコレータは、入力、出力、および実行の詳細を自動的にキャプチャします。トレーニングループが `wandb.log()` でメトリクスをログ記録すると、Weave のトレース情報もプロジェクトにログ記録されます。 + +```python lines +import wandb +import weave +import random + +# W&BとWeaveの両方を同じプロジェクト名で初期化 +project = "my-workspace-project" +weave.init(project) + +@weave.op +def evaluate_model(model_state, epoch): + # 評価メトリクスのシミュレーション + accuracy = 0.7 + epoch * 0.02 + random.uniform(-0.05, 0.05) + + # 特定のモデルの振る舞いを追跡 + test_responses = { + "conciseness_check": "Model generated 500 words for simple question", + "accuracy_check": "Model answered 8/10 questions correctly", + "hallucination_check": "No factual errors detected" + } + + return { + "accuracy": accuracy, + "diagnostic_results": test_responses + } + +@weave.op +def training_step(epoch, lr): + # トレーニングロジックのシミュレーション + loss = 1.0 / (epoch + 1) + random.uniform(-0.1, 0.1) + + # トレース付きの評価 + eval_results = evaluate_model(f"checkpoint_{epoch}", epoch) + + return { + "loss": loss, + "accuracy": eval_results["accuracy"], + "diagnostics": eval_results["diagnostic_results"] + } + +# トレーニングループ +with wandb.init(project=project, config={"lr": 0.01}) as run: + for epoch in range(5): + # Weaveトレーシングを実行しながらトレーニング + results = training_step(epoch, run.config.lr) + + # W&Bへのログ記録 - これが統合ポイントとなります + run.log({ + "epoch": epoch, + "loss": results["loss"], + "accuracy": results["accuracy"] + }) +``` + +このサンプルスクリプトを実行して、他の Run 情報とともにトレースがどのようにログ記録されるかを確認してください。 + +Run の実行中または終了後に Workspace でトレース情報を表示するには、Run の開始時にターミナルに表示されるリンク(例:`wandb: 🚀 View run at https://wandb.ai/wandb/my-project/runs/`)を開くか、UI から Workspace に移動します。 + +UI から Workspace に移動する方法: + +1. W&B UI を開き、 **Projects** タブをクリックします。プロジェクトの一覧が表示されます。 +2. リストから Run をログ記録したプロジェクトをクリックします。これにより **Workspaces** ページが開きます。 +3. Workspace を自動 Workspace として設定している場合、Run に関するデータ可視化と情報が自動的に表示されます。Run のトレースデータは、Workspace の **Weave** セクションにあります。手動 Workspace の場合は、 **Add panels** をクリックし、Add Panels メニューの **Weave** セクションから新しいパネルを選択して Weave パネルを追加できます。 + +Workspace の詳細については、 [実験結果の表示](https://docs.wandb.ai/models/track/workspaces) を参照してください。 + +## Weave トレース内での W&B Artifacts の参照 + +Weave トレース内で [W&B Artifacts](/models/artifacts) (モデル、データセット、チェックポイントなど)を参照できます。これにより、Weave UI 上に Artifact の詳細ページへ直接移動できるクリック可能なリンクが作成され、特定のオペレーションでどのバージョンの Artifact が使用されたかを追跡するのに役立ちます。 + +例えば、モデルの 2 つのバージョン( `v1` と `v2` )をトレーニングした場合、そのモデルをクエリする際に `v1` の Artifact 参照をトレースの属性として追加できます。これにより、どの Artifact バージョンが特定の出力を生成したかを正確にトレースできます。 + +Artifact をトレースに関連付けるには、 `wandb-artifact:///` プレフィックスと Artifact のフルネームを連結して、 Artifact の URL を次の構文で構築します: `wandb-artifact:///` 。その後、以下の 2 つの方法のいずれかで Weave に渡します。 + +* 任意の属性(attribute)として渡す +* `Model` の属性として渡す + +Artifact のフルネームは、W&B UI の Artifact 詳細ページで確認できます。形式は `//:` です。W&B UI の Artifact 詳細ページからフルネームをコピーできます。 + +### トレースの属性として追加する + +Artifact をトレースの属性として追加するには、 `weave.attributes()` コンテキストマネージャーにキーと値のペアとして渡します。 + + + +```python lines {10} +import weave + +weave.init("your-team-name/your-project-name") + +@weave.op +def my_function(name: str): + return f"Hello, {name}!" + +# 任意のキー名と、値としてArtifactのURLを追加します +with weave.attributes({'artifact_id': 'wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0'}): + result = my_function("World") +``` + + +```typescript lines {12} +import {init, op, withAttributes} from 'weave'; + +async function main() { + await init('wandb/docs'); + + const myFunction = op(async function myFunction(name: string) { + return `Hello, ${name}!`; + }); + + // 任意のキー名と、値としてArtifactのURLを追加します + const result = await withAttributes( + {artifact_id: "wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0"}, + async () => myFunction('World') + ); + + console.log('Result:', result); +} + +main().catch(console.error); +``` + + + +### `Model` の属性として Artifact を追加する + +Artifact を `Model` の属性として追加するには、モデルをインスタンス化する際に Artifact の URL を渡します。 + + +`Model` クラスは現在、Weave Python SDK でのみサポートされています。 + + +```python lines {7,17} +import weave + +weave.init("your-team-name/your-project-name") + +class MyModel(weave.Model): + # Artifactの参照をモデルの属性として保存 + artifact_id: str + temperature: float = 0.7 + + @weave.op + def predict(self, query: str) -> str: + # ここにモデルの推論ロジックを記述 + return f"Response to: {query}" + +# ArtifactのURLをモデルの属性として渡す +model = MyModel( + artifact_id="wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0" +) + +result = model.predict("Hello, World!") +``` \ No newline at end of file diff --git a/ja/weave/guides/tracking.mdx b/ja/weave/guides/tracking.mdx new file mode 100644 index 0000000000..324f990563 --- /dev/null +++ b/ja/weave/guides/tracking.mdx @@ -0,0 +1,40 @@ +--- +title: Tracing の概要 +description: オブジェクト や関数呼び出しの追跡と バージョン 管理を可能にする強力なトレーシング機能 +--- + +Weave は、アプリケーションにおける オブジェクト や関数呼び出しを追跡し、バージョン管理するための強力なトレース機能を提供します。この包括的なシステムにより、AI 駆動型アプリケーションのモニタリング、デバッグ、反復開発が容易になり、「コミット間のインサイトを追跡する」ことが可能になります。 + +## 主要なトレース機能 + +Weave のトレース機能は、主に 3 つのコンポーネントで構成されています。 + +### Calls + +[Calls](/weave/guides/tracking/tracing) は、関数の呼び出し、入力、出力をトレースし、以下のことを可能にします。 + +- アプリケーション内の データ フローの分析 +- コンポーネント間の複雑な相互作用のデバッグ +- 呼び出しパターンに基づいたアプリケーションパフォーマンスの最適化 + +### Ops + +[Ops](/weave/guides/tracking/ops) は、自動的に バージョン管理 され、追跡される関数(Calls を生成するもの)であり、以下のことを可能にします。 + +- 関数のパフォーマンスと 振る舞い のモニタリング +- 関数の変更履歴の保持 +- 実験 の 再現性 の確保 + +### Objects + +[Objects](/weave/guides/tracking/objects) は、Weave の拡張可能なシリアル化レイヤーを構成し、実行時の オブジェクト(多くの場合、Calls の入力や出力)を自動的に バージョン管理 します。この機能により、以下のことが可能になります。 + +- データ 構造の経時的な変化の追跡 +- オブジェクト の変更に関する明確な履歴の保持 +- 必要に応じて以前の バージョン への容易な切り戻し + +これらのトレース機能を活用することで、アプリケーションの 振る舞い についてより深いインサイトを得ることができ、開発 プロセス を効率化し、より堅牢な AI 駆動型システムを構築できます。 + +## よくある質問 + +Weave のトレースに関する よくある質問 への回答については、[FAQs ページ](/weave/guides/tracking/faqs) を参照してください。 \ No newline at end of file diff --git a/ja/weave/guides/tracking/costs.mdx b/ja/weave/guides/tracking/costs.mdx new file mode 100644 index 0000000000..b288cc119a --- /dev/null +++ b/ja/weave/guides/tracking/costs.mdx @@ -0,0 +1,153 @@ +--- +title: コストの追跡 +description: Weave における LLM オペレーションのコストを追跡・管理する +--- + +## カスタムコストの追加 + + + +[`add_cost`](/weave/reference/python-sdk/trace/weave_client#method-add-cost) メソッドを使用して、カスタムコストを追加できます。 +必須のフィールドは `llm_id`、`prompt_token_cost`、および `completion_token_cost` の3つです。 +`llm_id` は LLM の名前(例:`gpt-4o`)です。`prompt_token_cost` と `completion_token_cost` は、その LLM のトークンあたりのコストです(LLM の価格が100万トークン単位で指定されている場合は、必ず 値 を変換してください)。 +また、`effective_date` に `datetime` を設定することで、特定の日にコストを有効にすることもできます。デフォルトは現在の日付です。 + +```python lines +import weave +from datetime import datetime + +client = weave.init("my_custom_cost_model") + +client.add_cost( + llm_id="your_model_name", + prompt_token_cost=0.01, + completion_token_cost=0.02 +) + +client.add_cost( + llm_id="your_model_name", + prompt_token_cost=10, + completion_token_cost=20, + # 例えば、特定の日付以降にモデルの価格を上げたい場合 + effective_date=datetime(2025, 4, 22), +) +``` + + + + +```plaintext +この機能は TypeScript ではまだ利用できません。今後のアップデートをお待ちください。 +``` + + + + +## コストの照会 + + + +[`query_costs`](/weave/reference/python-sdk/trace/weave_client#method-query-costs) メソッドを使用して、コストを照会できます。 +コストを照会する方法はいくつかあり、単一のコスト ID を渡すか、LLM モデル名のリストを渡すことができます。 + +```python lines +import weave + +client = weave.init("my_custom_cost_model") + +costs = client.query_costs(llm_ids=["your_model_name"]) + +cost = client.query_costs(costs[0].id) +``` + + + + +```plaintext +この機能は TypeScript ではまだ利用できません。今後のアップデートをお待ちください。 +``` + + + + +## カスタムコストの削除 + + + +[`purge_costs`](/weave/reference/python-sdk/trace/weave_client#method-purge-costs) メソッドを使用して、カスタムコストを削除できます。コスト ID のリストを渡すと、それらの ID を持つコストが削除されます。 + +```python lines +import weave + +client = weave.init("my_custom_cost_model") + +costs = client.query_costs(llm_ids=["your_model_name"]) +client.purge_costs([cost.id for cost in costs]) +``` + + + + +```plaintext +この機能は TypeScript ではまだ利用できません。今後のアップデートをお待ちください。 +``` + + + + +## Projects のコスト計算 + + + +少しの設定を行い、`calls_query` を使用して `include_costs=True` を追加することで、プロジェクトのコストを計算できます。 + +```python lines +import weave + +weave.init("project_costs") +@weave.op() +def get_costs_for_project(project_name: str): + total_cost = 0 + requests = 0 + + client = weave.init(project_name) + # プロジェクト内のすべての call を取得 + calls = list( + client.get_calls(filter={"trace_roots_only": True}, include_costs=True) + ) + + for call in calls: + # call にコストが含まれている場合、合計コストに加算 + if call.summary["weave"] is not None and call.summary["weave"].get("costs", None) is not None: + for k, cost in call.summary["weave"]["costs"].items(): + requests += cost["requests"] + total_cost += cost["prompt_tokens_total_cost"] + total_cost += cost["completion_tokens_total_cost"] + + # 合計コスト、リクエスト数、および call 数を返す + return { + "total_cost": total_cost, + "requests": requests, + "calls": len(calls), + } + +# 関数を @weave.op() でデコレートしているため、 +# 合計値は履歴コストの合計計算用に Weave に保存される +get_costs_for_project("my_custom_cost_model") +``` + + + + +```plaintext +この機能は TypeScript ではまだ利用できません。今後のアップデートをお待ちください。 +``` + + + + +## カスタムコストを使用したカスタムモデルのセットアップ + +[カスタムモデルでのコスト設定](/weave/cookbooks/custom_model_cost) のクックブックをお試しください。 + + \ No newline at end of file diff --git a/ja/weave/guides/tracking/faqs.mdx b/ja/weave/guides/tracking/faqs.mdx new file mode 100644 index 0000000000..8f521c5436 --- /dev/null +++ b/ja/weave/guides/tracking/faqs.mdx @@ -0,0 +1,152 @@ +--- +title: よくある質問 +description: Weave tracing に関する よくある質問への回答 +--- + +このページでは、 Weave のトレースに関するよくある質問に回答します。 + +## Weave は関数に対してどのような情報を取得しますか? + +関数は、デコレータを使用して手動で、または有効化されたインテグレーションの一部として自動的に Weave [Op](/weave/guides/tracking/ops) として指定できます。 Op が実行されると、 Weave は分析をサポートするために詳細な情報を取得します。 Weave は、デフォルトとは異なる内容を記録したい場合に備えて、ログの内容をきめ細かく制御できるようになっています。設定例については以下を参照してください。 + +- **コードの取得** - Weave は Op のソースコードの表現を取得します。これには、インラインコメント、変数の値の再帰的な取得、または呼び出された非 Op 関数のソースが含まれます。コードの取得により、変更がソース管理システムに保存されていない場合でも、関数が何をしていたかを確認できます。コードの取得は Op のバージョン管理の一部として使用され、時間の経過に伴うコードの評価を理解するのに役立ちます。コードの取得が無効になっている場合は、代わりにハッシュ値が使用されます。 + +- **関数名、入力、および出力** - 関数の名前が取得されますが、 [上書き](/weave/guides/tracking/tracing/#call-display-name) することも可能です。入力と出力の JSON ベースの表現が取得されます。入力については、値に加えて引数名も取得されます。 Weave では、入力と出力の [ログのカスタマイズ](/weave/guides/tracking/ops#customize-logged-inputs-and-outputs) が可能です。ログに記録される内容を追加、削除、または変更するための関数を指定できます。 + +- **Op 呼び出しの階層** - ある Op の実行コンテキスト内で別の Op が呼び出された場合、その関係が取得されます。これは、中間に非 Op 関数の実行がある場合でも同様です。この Op 呼び出し間の関係は、「トレースツリー」を提供するために使用されます。 + +- **実行ステータスと例外** - Weave は、関数が実行中か、終了したか、またはエラーが発生したかを追跡します。実行中に例外が発生した場合は、エラーメッセージとスタックトレースが記録されます。 + +- **システム情報** - Weave は、クライアントが実行されているオペレーティングシステムに関する情報(詳細なバージョン情報を含む)を取得することがあります。 + +- **クライアント情報** - Weave は、使用されているプログラミング言語や、その言語および Weave クライアントライブラリの詳細なバージョン情報など、 Weave クライアント自体に関する情報を取得することがあります。 + +- **タイミング** - 実行の開始時間と終了時間が取得され、レイテンシの計算にも使用されます。 + +- **トークン使用量** - 一部の [インテグレーション](/weave/guides/integrations/) では、 LLM のトークン使用量が自動的にログに記録される場合があります。 + +- **ユーザーおよび run コンテキスト** - ログ記録は W&B ユーザーアカウントに関連付けられます。これは wandb Run コンテキストと共に取得されます。 + +- **派生情報** - Weave は、記録された生の情報から派生情報を計算することがあります。例えば、トークンの使用量と使用されたモデルの知識に基づいてコスト見積もりが計算される場合があります。また、 Weave は呼び出し全体にわたって一部の情報を集約します。 + +- **選択した追加情報** - 呼び出しの一部として [`weave.attributes` を使用したカスタムメタデータ](/weave/guides/core-types/models#track-production-calls) をログに記録したり、呼び出しに [フィードバック](/weave/guides/tracking/feedback#add-feedback-to-a-call) を添付したりすることができます。 + +## コードの取得を無効にするにはどうすればよいですか? + +Weave クライアントの初期化中にコードの取得を無効にできます: `weave.init("entity/project", settings={"capture_code": False})` 。 +また、 [環境変数](/weave/guides/core-types/env-vars) `WEAVE_CAPTURE_CODE=false` を使用することもできます。 + +## システム情報の取得を無効にするにはどうすればよいですか? + +Weave クライアントの初期化中にシステム情報の取得を無効にできます: `weave.init("entity/project", settings={"capture_system_info": False})` 。 + +## クライアント情報の取得を無効にするにはどうすればよいですか? + +Weave クライアントの初期化中にクライアント情報の取得を無効にできます: `weave.init("entity/project", settings={"capture_client_info": False})` 。 + +## UI で Python の datetime 値を表示するにはどうすればよいですか? + +Python の `datetime.datetime` (タイムゾーン情報付き)を使用し、 `weave.publish(...)` を使用してオブジェクトを公開します。 Weave はこの型を認識し、タイムスタンプとしてレンダリングします。 + +## UI で Markdown をレンダリングするにはどうすればよいですか? + +保存する前に文字列を `weave.Markdown(...)` でラップし、 `weave.publish(...)` を使用して保存します。 Weave はオブジェクトの型を使用してレンダリングを決定し、 `weave.Markdown` は既知の UI レンダラーにマップされます。値は UI 上でフォーマットされた Markdown オブジェクトとして表示されます。完全なコードサンプルについては、 [Viewing calls](./tracing.mdx#viewing-calls) を参照してください。 + +## Weave は関数の実行速度に影響しますか? + +Weave のログ記録によるオーバーヘッドは、通常、 LLM への呼び出しと比較して無視できる程度です。 +Op の実行速度への影響を最小限に抑えるため、 Weave のネットワークアクティビティはバックグラウンドスレッドで行われます。 +プログラムの終了時に、キューに残っているデータのログ記録が完了するまで一時停止するように見える場合があります。 + +## Weave のデータ取り込み量はどのように計算されますか? + +取り込まれたバイト数は、ユーザーに代わって受信、処理、および保存されたバイト数として定義されます。これにはトレースのメタデータ、 LLM の入力/出力、および Weave に明示的に記録されたその他の情報が含まれますが、通信のオーバーヘッド(例: HTTP ヘッダー)や、長期ストレージに配置されないその他のデータは含まれません。バイト数は、受信および保存された時点の 1 回だけ「取り込み済み」としてカウントされます。 + +## ペアワイズ評価(Pairwise evaluation)とは何ですか?また、どのように行いますか? + +Weave の [評価](/weave/guides/core-types/evaluations) でモデルを [スコーリング](/weave/guides/evaluation/scorers) する際、絶対値のメトリクス(例:モデル A は `9/10` 、モデル B は `8/10` )を割り当てることは、相対的なもの(例:モデル A はモデル B よりも優れている)を割り当てるよりも一般的に困難です。 _ペアワイズ評価_ を使用すると、 2 つのモデルの出力を互いに比較してランク付けすることができます。このアプローチは、テキスト生成、要約、質問回答などの主観的なタスクにおいて、どちらのモデルが優れているかを判断したい場合に特に有効です。ペアワイズ評価を使用すると、特定の入力に対してどのモデルが最適かを示す相対的な嗜好ランキングを取得できます。 + + +このアプローチはワークアラウンドであり、将来のリリースで変更される可能性があります。ペアワイズ評価をサポートするためのより堅牢な API に現在取り組んでいます。アップデートにご注目ください! + + +以下のコードサンプルは、 `PreferenceScorer` という名前の [クラスベースのスコーラー](/weave/guides/evaluation/scorers#class-based-scorers) を作成することで、 Weave でペアワイズ評価を実装する方法を示しています。 `PreferenceScorer` は 2 つのモデル `ModelA` と `ModelB` を比較し、入力テキスト内の明示的なヒントに基づいてモデル出力の相対スコアを返します。 + +```python lines +from weave import Model, Evaluation, Scorer, Dataset +from weave.flow.model import ApplyModelError, apply_model_async + +class ModelA(Model): + @weave.op + def predict(self, input_text: str): + if "Prefer model A" in input_text: + return {"response": "This is a great answer from Model A"} + return {"response": "Meh, whatever"} + +class ModelB(Model): + @weave.op + def predict(self, input_text: str): + if "Prefer model B" in input_text: + return {"response": "This is a thoughtful answer from Model B"} + return {"response": "I don't know"} + +class PreferenceScorer(Scorer): + @weave.op + async def _get_other_model_output(self, example: dict) -> Any: + """比較のために、もう一方のモデルからの出力を取得します。 + 引数: + example: もう一方のモデルで実行する入力サンプルデータ + 戻り値: + もう一方のモデルからの出力 + """ + + other_model_result = await apply_model_async( + self.other_model, + example, + None, + ) + + if isinstance(other_model_result, ApplyModelError): + return None + + return other_model_result.model_output + + @weave.op + async def score(self, output: dict, input_text: str) -> dict: + """プライマリモデルの出力ともう一方のモデルの出力を比較します。 + 引数: + output (dict): プライマリモデルからの出力。 + input_text (str): 出力を生成するために使用された入力テキスト。 + 戻り値: + dict: 比較結果と理由を含むフラットな辞書。 + """ + other_output = await self._get_other_model_output( + {"input_text": input_text} + ) + if other_output is None: + return {"primary_is_better": False, "reason": "Other model failed"} + + if "Prefer model A" in input_text: + primary_is_better = True + reason = "Model A gave a great answer" + else: + primary_is_better = False + reason = "Model B is preferred for this type of question" + + return {"primary_is_better": primary_is_better, "reason": reason} + +dataset = Dataset( + rows=[ + {"input_text": "Prefer model A: Question 1"}, # モデル A の勝ち + {"input_text": "Prefer model A: Question 2"}, # モデル A の勝ち + {"input_text": "Prefer model B: Question 3"}, # モデル B の勝ち + {"input_text": "Prefer model B: Question 4"}, # モデル B の勝ち + ] +) + +model_a = ModelA() +model_b = ModelB() +pref_scorer = PreferenceScorer(other_model=model_b) +evaluation = Evaluation(dataset=dataset, scorers=[pref_scorer]) +evaluation.evaluate(model_a) +``` \ No newline at end of file diff --git a/ja/weave/guides/tracking/feedback.mdx b/ja/weave/guides/tracking/feedback.mdx new file mode 100644 index 0000000000..c54e463075 --- /dev/null +++ b/ja/weave/guides/tracking/feedback.mdx @@ -0,0 +1,397 @@ +--- +title: フィードバックの収集とアノテーションの利用 +description: UI と SDK を通じて LLM アプリケーションのフィードバックを収集・分析します +--- + +LLM アプリケーションを効率的に評価するには、フィードバックを収集して分析するための堅牢なツールが必要です。 Weave は統合されたフィードバックシステムを提供しており、ユーザーは UI から直接、または SDK を通じてプログラムでコールフィードバックを提供できます。絵文字リアクション、テキストコメント、構造化データなど、さまざまなフィードバックタイプがサポートされており、チームは以下のことが可能になります。 + +- パフォーマンス監視のための評価用 Datasets の構築。 +- LLM のコンテンツに関する問題の特定と効果的な解決。 +- ファインチューニングなどの高度なタスクのための例の収集。 + +このガイドでは、UI と SDK の両方で Weave のフィードバック機能を使用する方法、フィードバックのクエリと管理、および詳細な評価のための人間によるアノテーションの使用方法について説明します。 + +- [UI でフィードバックを提供する](#provide-feedback-in-the-ui) +- [SDK 経由でフィードバックを提供する](#provide-feedback-via-the-sdk) +- [人間によるアノテーションを追加する](#add-human-annotations) + +## UI でフィードバックを提供する + +Weave UI では、[コール詳細ページから](#from-the-call-details-page) または [アイコンを使用して](#use-the-icons) フィードバックを追加および表示できます。 + +### コール詳細ページから + +1. サイドバーで **Traces** に移動します。 +2. フィードバックを追加したいコールの行を見つけます。 +3. コール詳細ページを開きます。 +4. コールの **Feedback** カラムを選択します。 +5. フィードバックの追加、表示、または削除を行います。 + - コール詳細のフィードバックビューの右上隅にある _[アイコンを使用してフィードバックを追加および表示](#use-the-icons)_ します。 + - _コール詳細のフィードバックテーブルからフィードバックを表示および削除_ します。該当するフィードバック行の右端のカラムにあるゴミ箱アイコンをクリックして、フィードバックを削除します。 + + +![コール詳細のフィードバックタブのスクリーンショット](/weave/guides/tracking/imgs/feedback_tab.png) + + +### アイコンを使用する + +コールテーブルと個別のコール詳細ページの両方にあるアイコンを使用して、リアクションの追加・削除やノートの追加ができます。 + +- _コールテーブル_: コールテーブルの該当する行の **Feedback** カラムにあります。 +- _コール詳細ページ_: 各コール詳細ページの右上隅にあります。 + +リアクションを追加するには: + +1. 絵文字アイコンをクリックします。 +2. 承認(thumbs up)、非承認(thumbs down)を追加するか、**+** アイコンをクリックして他の絵文字を表示します。 + +リアクションを削除するには: + +1. 削除したい絵文字リアクションにカーソルを合わせます。 +2. リアクションをクリックして削除します。 + +> [コール詳細ページの **Feedback** カラム](#from-the-call-details-page) からフィードバックを削除することもできます。 + +コメントを追加するには: + +1. コメントバブルアイコンをクリックします。 +2. テキストボックスにノートを追加します。 +3. ノートを保存するには、**Enter** キーを押します。追加のノートを入れることも可能です。 + + +フィードバックノートの最大文字数は 1024 文字です。ノートがこの制限を超えると、作成されません。 + + + +![フィードバックカラムがあるコールグリッドのスクリーンショット](/weave/guides/tracking/imgs/feedback_calls.png) + + +## SDK 経由でフィードバックを提供する + +> フィードバックの SDK 使用例は、UI のコール詳細ページの **Use** タブで確認できます。 + +Weave SDK を使用して、プログラムでコールのフィードバックを追加、削除、およびクエリできます。 + +### プロジェクトのフィードバックをクエリする + +SDK を使用して Weave プロジェクトのフィードバックをクエリできます。SDK は以下のフィードバッククエリ操作をサポートしています。 + +- `client.get_feedback()`: プロジェクト内のすべてのフィードバックを返します。 +- `client.get_feedback("")`: `` で指定された特定のフィードバックオブジェクトをコレクションとして返します。 +- `client.get_feedback(reaction="")`: 特定のリアクションタイプのすべてのフィードバックオブジェクトを返します。 + +また、`client.get_feedback()` で各フィードバックオブジェクトの追加情報を取得できます。 + +- `id`: フィードバックオブジェクトの ID。 +- `created_at`: フィードバックオブジェクトの作成時間情報。 +- `feedback_type`: フィードバックのタイプ(reaction、note、custom)。 +- `payload`: フィードバックのペイロード。 + + + + ```python lines + import weave + client = weave.init('intro-example') + + # プロジェクト内のすべてのフィードバックを取得 + all_feedback = client.get_feedback() + + # IDで特定のフィードバックオブジェクトを取得。 + # APIはコレクションを返します。通常、含まれるアイテムは最大1つです。 + one_feedback = client.get_feedback("")[0] + + # 特定のリアクションを持つすべてのフィードバックオブジェクトを検索。offsetとlimitを指定可能。 + thumbs_up = client.get_feedback(reaction="👍", limit=10) + + # 取得後、個々のフィードバックオブジェクトの詳細を表示。 + for f in client.get_feedback(): + print(f.id) + print(f.created_at) + print(f.feedback_type) + print(f.payload) + ``` + + + + ```plaintext + この機能は TypeScript ではまだ利用できません。 + ``` + + + +### コールにフィードバックを追加する + +コールの UUID を使用して、コールにフィードバックを追加できます。特定のコールを取得するために UUID を使用するには、[コールの実行中または実行後に取得](#retrieve-the-call-uuid) してください。SDK はコールへのフィードバック追加のために以下の操作をサポートしています。 + +- `call.feedback.add_reaction("")`: 👍 などのサポートされている `` (絵文字) を 1 つ追加します。 +- `call.feedback.add_note("")`: ノートを追加します。 +- `call.feedback.add("