618ZXW

アリババはプロセス全体が完全に自動化されており、科学研究の初心者でも使用できる AI データ サイエンティストをリリースしました。

複雑なデータ サイエンスの問題を自動的に解決できる、オープン ソース エージェント フレームワークに基づくエージェントが登場しました。

具体的には、Data Science Assistant(以下、DS Assistant)は、Modelscope-Agent フレームワークに基づいて開発されたデータ サイエンス アシスタントです。

これを使用すると、要件を提供するだけで、このアシスタントが探索的データ分析 (EDA)、データ前処理、特徴エンジニアリング、モデルトレーニング、モデル評価の手順を自動的に完了できます。

もちろん、この記事の焦点となる DS Assistant に加えて、その背後にある Modelscope-Agent フレームワークについても言及する価値があります。

Alibaba によってオープンソース化されたこのフレームワークには、次の主な機能があります。

  • vllm や ollama などのツールを通じてさまざまな主流のオープンソース モデルにアクセスしたり、モデル API を直接呼び出すこともできます。
  • 開発者がナレッジベースを迅速に統合できるようにサポートする RAG コンポーネントを提供します。
  • ツールエコシステムは充実しており、多数のModelscopeコミュニティモデルをツールとしてサポートしているほか、langchainから直接呼び出せるツールも提供しています。また、Webブラウジング、テキスト生成グラフ、コードインタープリターなど、一般的に使用される様々なツールも統合されています。

さらに、Modelscope-Agent フレームワークを使用すると、開発者はコーディングせずに対話的にエージェント アシスタントを作成できます。

こうして、私たちのデータ サイエンス アシスタントが「誕生」しました。

複雑なデータサイエンスタスクの自動化

複雑なデータ サイエンスのタスクを自動化することは常に課題でした。

従来の ReAct (推論とアクション) フレームワークは単純なタスクには効果的ですが、次のような欠点があります。

  • 各ツール呼び出しには LLM 呼び出しが必要です。
  • LLMは一度に1つのサブ問題のみを計画します。これにより、タスク全体について「推論」する必要がなくなり、タスクの軌跡がより予測不可能になる可能性があります。

DS Assistant は、計画と実行手順を明確に定義することで複雑なタスクを効率的に完了する新しいエージェント フレームワークである計画および実行フレームワークを使用します。

LangChain の Web サイトでは、Plan-and-execute Agent について次のように説明されています: https://blog.langchain.dev/pl...

具体的には、そのワークフローには次の手順が含まれます。

1.タスク計画: エージェントは、ユーザーが入力したタスクの説明を受け取り、意味理解を実行し、タスクを複数の実行可能なサブタスクに分解します。

2.サブタスクのスケジュール: タスク間の依存関係と優先度に基づいて、サブタスクの実行順序がインテリジェントにスケジュールされます。

3.タスク実行: 各サブタスクは実行のために特定のモジュールに割り当てられます。

4.結果の統合: 各サブタスクの結果を要約して最終出力を作成し、ユーザーにフィードバックを提供します。

上記のフレームワークに基づいて、システム全体のアーキテクチャを見てみましょう。DS Assistantシステムには4つの主要モジュールがあります。

まずは右側のDSアシスタントから見ていきましょう。システム全体の頭脳として、システム全体の動作を調整する役割を担っています。

プラン モジュールは、ユーザーのニーズに基づいて一連のタスク リストを生成し、タスクのトポロジカル ソートを実行する役割を担います。

この段階で、DS Assistant は、ユーザーが入力した複雑なデータ サイエンスの問題を複数のサブタスクに自動的に分解します。

これらのサブタスクは、実行順序が論理的かつ効率的であることを保証するため、依存関係と優先順位に従って編成およびスケジュールされます。

次に実行モジュールがあります。これは、タスクの実際の実行とタスク実行結果の保存を担当します。

ここで、各サブタスクは、データの前処理やモデルのトレーニングなどの実行可能な操作として指定されます。

最後に、タスクの中間実行結果、コード、データの詳細などの情報を記録するメモリ管理モジュールがあります。

すべてのタスクが完了すると、DS Assistant は中間実行データ (各タスクによって生成されたコードと結果、消費されたトークンの数、タスク時間など) をファイルに保存します。

ケーススタディ

以下では、具体的な例を使用して、DS Assistant の実行プロセスを理解します。

例として、Kaggleコンペティションのタスク「ICR – 加齢に伴う症状の特定」を使用します。

このタスクは、医療記録、遺伝子データ、ライフスタイルデータなどのさまざまなデータを分析して、加齢に伴う健康状態を特定することを主な目的とする機械学習タスクです。

最終結果は、医療専門家が高齢者層によく見られる健康問題を早期に特定し、個別の予防および治療計画を提供するのに役立ちます。

さっそく始めましょう!

まず、選択した LLMを構成する必要があります。

タスクの種類に基づいて DS Assistant に適切なデータ サイエンス ツールを推奨できる MetaGPT のデータ サイエンス ツールとツール レコメンダーを導入しました。

次に、タスクの具体的な要件をDS Assistantに送信する必要があります。要件には、DS Assistantへのデータファイルへのパスを指定する必要があります。

計画フェーズでは、DS Assistant はユーザーのニーズに基づいてタスク リストを生成し、データ処理フロー全体を分解して、タスク リストを順番に処理します。

ご覧のとおり、DS Assistant は、データ探索、データ前処理、特徴エンジニアリング、モデル トレーニング、予測という5 つのタスクを生成します。

次に、これら 5 つのタスクが実行フェーズに入りました。これらを 1 つずつ見ていきましょう。

タスク1: データ探索

numpy パッケージが含まれていないため、生成されたコードの実行中に次のエラーが発生しました。

DS Assistant はエラー メッセージを反映し、コードを再生成して実行し、データ探索の結果を正常に出力しました。

最後に、コード ジャッジはコードの品質チェックを実行し、生成されたコード ロジックが正しいことを確認します。

タスク2: データの前処理

データの前処理段階で、DS Assistant は数値データとカテゴリデータの両方に対して適切な欠損値処理を実行し、ID 列をクリアしました。

タスク3: 特徴エンジニアリング

2 つのエラーを修正した後、DS Assistant はデータに対して特徴エンジニアリングを実行し、カテゴリ変数をエンコードしました。

同時に、以前に定義された categorical_columns 変数が更新され、ID 列が削除されました。

タスク4: モデルのトレーニング

DS Assistant は、適切な依存関係をプロアクティブにインストールし、トレーニング用に複数のモデル (ランダム フォレスト、勾配ブースティング、ロジスティック回帰) を選択して、最終的に最良の結果をもたらすモデルを選択しました。

タスク5: モデルの検証

DS Assistant は、トレーニング セット内でF1 スコアが最も高いモデルを選択して検証セットでテストし、検証セットでのこのモデルの F1 スコアを計算して、タスクを正常に完了しました。

上記のタスクを完了すると、DS Assistant は結果を Jupyter Notebook ファイルとして保存し、中間プロセスを記録できるようになります。

△Jupyterノートブック

△JSONファイル内の中間プロセス記録

実験結果

テスト セットとしてML-Benchmark を使用し (論文「データ インタープリター: データ サイエンスのための LLM エージェント」を参照)、正規化されたパフォーマンス スコア (NPS)、合計時間、合計トークンの 3 つの側面から DS Assistant のパフォーマンスを評価しました。

NPS は、さまざまなタスクまたはモデルのパフォーマンス メトリックを標準化し、さまざまなメトリックを比較できるようにする方法です。

その計算には通常、次の手順が含まれます。

ステップ 1 : 指標の最適化の方向を決定し、パフォーマンス指標が「大きいほど良い」か「小さいほど良い」かを判断します。

ステップ2 :正規化計算。「大きいほど良い」という指標(精度、F1スコア、AUCなど)の場合、NPSは元の値と同じになります。「小さいほど良い」という指標(損失値など)の場合、元の値は1に近い高いNPS値にマッピングする必要があります。

正規化されたパフォーマンス スコアは通常 0 ~ 1 の範囲で、 1 は最高のパフォーマンスを表し、0 は最低のパフォーマンスを表します

実験タスクの詳細と結果は次のとおりです (緑は現在のタスクにおける最高のパフォーマンス インデックスを表します)。

ご覧のとおり、DS Assistant は、複雑なデータサイエンスタスクにおいて、正規化パフォーマンススコア (NPS)、タスク時間、トークン消費量の点で、オープンソースの最新技術 (SOTA) のパフォーマンスを上回っています。(オープンソースの SOTA パフォーマンスは、実際の MetaGPT 測定値を参照しています。)

完全な実験ログ: https://modelscope-agent.oss-...\_Assistant\_results.zip

要約

DS アシスタントの役割は個人によって異なります

  • データ分析プロセスに詳しくないが、それでも必要としている学生にとって、生成されたタスクと処理手順は、データ処理のアプローチと主要な手法をすぐに理解するのに役立ちます。
  • データ分析プロセスに精通している学生にとって、詳細な説明はデータ処理方法に影響を与え、さまざまな実験を実施したり比較したりすることが容易になります。
  • 誰でも、質問するだけで、現在手元にあるファイルについて、より深い理解を自動的かつ迅速に得ることができます。

次に、DS アシスタントは次の3 つの方向で最適化されます

1.タスク実行の成功率をさらに向上させる

a)コードエージェントの場合、入力情報(エラーメッセージ、中間データ、生成コード情報)が多すぎると、モデル生成コードの精度が低下する可能性があります。将来的には、LLMを用いて情報を要約・フィルタリングすることを検討します。

b)同じタスクをさらに分解して、LLM 推論能力の要件を減らすことができます。

2.インタラクティブなダイアログにより、タスクとその実行を分離できるため、対話を通じてタスクを進め、その結果に影響を与えることができます。

3. 同じタスクを持つ複数のファイルをバッチで処理するシナリオをサポートします。

詳細については、公式 Modelscope-Agent リポジトリの Data Science Assistant の例を参照してください。