すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:DataJuicer タスクをすばやく送信する

最終更新日:Oct 17, 2025

このドキュメントでは、DLC 上でオープンソースツール DataJuicer を使用して、大規模なマルチモーダルデータを処理する方法について説明します。

DataJuicer

DataJuicer の概要

DataJuicer は、テキスト、イメージ、オーディオ、ビデオなどの大規模なマルチモーダルデータを処理するためのオープンソースツールキットです。豊富なオペレーターセット、効率的な分散処理、柔軟な構成により、データのクリーニング、変換、拡張を簡素化します。DataJuicer は、大規模言語モデル (LLM) およびマルチモーダルモデルのトレーニングデータ準備を最適化するように設計されています。

image

DataJuicer タスクの構成

DataJuicer は YAML 構成ファイルを使用して、データ処理ワークフロー全体を整理および管理します。単一の構成ファイル内で、グローバルパラメーターと順次実行される一連のオペレーターを定義できます。

process.yaml という名前の構成ファイルの例を次に示します。

image

データセットを処理するには、process_data.py スクリプトまたは dj-process コマンドラインツールを実行し、構成ファイルのパスを引数として指定します。

# ソースからのインストール用
python tools/process_data.py --config configs/demo/process.yaml

# コマンドラインツールの使用
dj-process --config configs/demo/process.yaml

主要なパラメーターの説明

  • dataset_path: 入力データへのパス。DLC タスクの場合、このパラメーターを Object Storage Service (OSS) などのデータストレージがコンテナー内にマウントされているパスに設定します。

  • export_path: 処理結果の出力パス。分散タスクの場合、このパスは特定のファイルではなく、ディレクトリである必要があります。

  • executor_type: エグゼキュータのタイプ。

    • default: DefaultExecutor を使用してシングルノードで実行します。

    • ray: RayExecutor を使用します。これは分散処理をサポートします。詳細については、「Data-Juicer 分散データ処理」をご参照ください。

オペレーター

オペレーターは、特定のデータ処理タスクを実行する DataJuicer の基本単位です。DataJuicer は、アグリゲーター、デデュプリケーター、フィルター、フォーマッター、グルーパー、マッパー、セレクターなど、100 以上のオペレーターを提供します。詳細については、「オペレータースキーマ」をご参照ください。

config_all.yaml ファイルには、すべてのオペレーターの構成が含まれています。

参考資料

DLC で DataJuicer タスクを実行する

DLC は DataJuicer をネイティブにサポートしています。タスクを作成するときは、[フレームワーク] を DataJuicer に設定して、このタイプのタスクを作成します。

image

実行モード

DLC タスクを作成するときは、構成ファイルの executor_type と一致する実行モードを選択します。

  • シングルノードモード:

    • DataJuicer 構成ファイル: 構成ファイルで、executor_typedefault に設定するか、フィールドを省略します。

    • DLC 構成:

      • [実行モード][シングルノード] に設定します。

      • [ノード数] を 1 に設定します。

  • 分散モード:

    • DataJuicer 構成ファイル: 構成ファイルで、executor_typeray に設定します。

    • DLC 構成:

      • [実行モード][分散] に設定します。

      • ノード数: Head ノードの数は 1 である必要があり、Worker ノードの数は 1 以上である必要があります。

      • リソース仕様: Head ノードには 8 GB 以上のメモリが必要です。Worker ノードのリソースは必要に応じて構成できます。

      • フォールトトレランスと診断 (オプション): 同じ VPC (virtual private cloud) 内の Redis インスタンスを選択して、ヘッドノードのフォールトトレランス を構成できます。

イメージ要件

DataJuicer タスクのイメージには、DataJuicer 環境がプリインストール済みで、dj-process コマンドが含まれている必要があります。data-juicer リポジトリの公式イメージ、または公式 data-juicer イメージに基づくカスタムイメージを使用できます。

image

起動コマンド

image

DLC は、Shell および YAML フォーマットの起動コマンドをサポートしています。デフォルトのフォーマットは Shell です。コマンドフォーマットが Shell の場合、使用方法は他の DLC タスクと同じです。コマンドフォーマットが YAML の場合、コマンドラインで DataJuicer 構成を直接入力できます。

起動コマンドの例を次に示します。

  • Shell フォーマットの例 1: 構成を一時ファイルに書き込み、dj-process コマンドを使用してタスクを開始します。

    コマンド例 1

    set -ex
    
    cat > /tmp/run_config.yaml <<EOL
    # データセットのプロセス構成例
    
    # グローバルパラメーター
    project_name: 'ray-demo'
    dataset_path: '/mnt/data/process_on_ray/data/demo-dataset2.jsonl'  # データセットのディレクトリまたはファイルへのパス
    export_path: '/mnt/data/data-juicer-outputs/20250728/01/process_on_ray/result.jsonl'
    
    executor_type: 'ray'
    ray_address: 'auto'                     # ray クラスターのアドレスに変更します (例: ray://<hostname>:<port>)
    np: 12
    
    # プロセススケジュール
    # いくつかのプロセスオペレーターとその引数のリスト
    process:
      # フィルター操作
      - alphanumeric_filter:                                    # 英数字の比率が特定の範囲外のテキストをフィルターします。
          tokenization: false                                     # 英数字とトークン総数の比率をカウントするかどうか。
          min_ratio: 0.0                                          # フィルター範囲の最小比率
          max_ratio: 0.9                                          # フィルター範囲の最大比率
      - average_line_length_filter:                             # 行の平均長が特定の範囲外のテキストをフィルターします。
          min_len: 10                                             # フィルター範囲の最小長
          max_len: 10000                                          # フィルター範囲の最大長
      - character_repetition_filter:                            # 文字の繰り返し率が特定の範囲外のテキストをフィルターします
          rep_len: 10                                             # 文字レベルの n-gram の繰り返し長
          min_ratio: 0.0                                          # フィルター範囲の最小比率
          max_ratio: 0.5                                          # フィルター範囲の最大比率
      - flagged_words_filter:                                   # フラグ付き単語の比率が特定の最大値より大きいテキストをフィルターします
          lang: en                                                # どの言語のフラグ付き単語を考慮するか
          tokenization: false                                     # モデルを使用してドキュメントをトークン化するかどうか
          max_ratio: 0.0045                                       # テキストをフィルターする最大比率
          flagged_words_dir: ./assets                             # フラグ付き単語辞書を保存するディレクトリ
          use_words_aug: false                                    # 特に中国語とベトナム語の単語を拡張するかどうか
          words_aug_group_sizes: [2]                              # 拡張する単語のグループサイズ
          words_aug_join_char: ""                                 # 拡張する単語間の結合文字
      - language_id_score_filter:                               # 特定の言語のテキストで、言語スコアが特定の最大値より大きいものをフィルターします
          lang: en                                                # どの言語のテキストを保持するか
          min_score: 0.8                                          # テキストをフィルターする最小言語スコア
      - maximum_line_length_filter:                             # 行の最大長が特定の範囲外のテキストをフィルターします
          min_len: 10                                             # フィルター範囲の最小長
          max_len: 10000                                          # フィルター範囲の最大長
      - perplexity_filter:                                      # パープレキシティスコアが特定の範囲外のテキストをフィルターします
          lang: en                                                # どの言語でパープレキシティを計算するか
          max_ppl: 1500                                           # テキストをフィルターする最大パープレキシティスコア
      - special_characters_filter:                              # 特殊文字の比率が特定の範囲外のテキストをフィルターします
          min_ratio: 0.0                                          # フィルター範囲の最小比率
          max_ratio: 0.25                                         # フィルター範囲の最大比率
      - stopwords_filter:                                       # ストップワードの比率が特定の最小値より小さいテキストをフィルターします
          lang: en                                                # どの言語のストップワードを考慮するか
          tokenization: false                                     # モデルを使用してドキュメントをトークン化するかどうか
          min_ratio: 0.3                                          # テキストをフィルターする最小比率
          stopwords_dir: ./assets                                 # ストップワード辞書を保存するディレクトリ
          use_words_aug: false                                    # 特に中国語とベトナム語の単語を拡張するかどうか
          words_aug_group_sizes: [2]                              # 拡張する単語のグループサイズ
          words_aug_join_char: ""                                 # 拡張する単語間の結合文字
      - text_length_filter:                                     # 長さが特定の範囲外のテキストをフィルターします
          min_len: 10                                             # フィルター範囲の最小長
          max_len: 10000                                          # フィルター範囲の最大長
      - words_num_filter:                                       # 単語数が特定の範囲外のテキストをフィルターします
          lang: en                                                # どの言語のサンプルか
          tokenization: false                                     # モデルを使用してドキュメントをトークン化するかどうか
          min_num: 10                                             # フィルター範囲の最小数
          max_num: 10000                                          # フィルター範囲の最大数
      - word_repetition_filter:                                 # 単語の繰り返し率が特定の範囲外のテキストをフィルターします
          lang: en                                                # どの言語のサンプルか
          tokenization: false                                     # モデルを使用してドキュメントをトークン化するかどうか
          rep_len: 10                                             # 単語レベルの n-gram の繰り返し長
          min_ratio: 0.0                                          # フィルター範囲の最小比率
          max_ratio: 0.5                                          # フィルター範囲の最大比率
    EOL
    
    dj-process --config /tmp/run_config.yaml

  • Shell フォーマットの例 2: 構成ファイルを OSS などのクラウドストレージに保存します。ファイルを DLC コンテナーにマウントします。dj-process コマンドでマウントされた構成ファイルのパスを指定してタスクを実行します。

    dj-process --config /mnt/data/process_on_ray/config/demo.yaml
  • YAML フォーマットの例: コマンドラインで DataJuicer 構成を直接入力します。

    YAML フォーマットのコマンド例

    # データセットのプロセス構成例
    
    # グローバルパラメーター
    project_name: 'ray-demo'
    dataset_path: '/mnt/data/process_on_ray/data/demo-dataset2.jsonl'  # データセットのディレクトリまたはファイルへのパス
    export_path: '/mnt/data/data-juicer-outputs/20250728/01/process_on_ray/result.jsonl'
    
    executor_type: 'ray'
    ray_address: 'auto'                     # ray クラスターのアドレスに変更します (例: ray://<hostname>:<port>)
    np: 12
    
    # プロセススケジュール
    # いくつかのプロセスオペレーターとその引数のリスト
    process:
      # フィルター操作
      - alphanumeric_filter:                                    # 英数字の比率が特定の範囲外のテキストをフィルターします。
          tokenization: false                                     # 英数字とトークン総数の比率をカウントするかどうか。
          min_ratio: 0.0                                          # フィルター範囲の最小比率
          max_ratio: 0.9                                          # フィルター範囲の最大比率
      - average_line_length_filter:                             # 行の平均長が特定の範囲外のテキストをフィルターします。
          min_len: 10                                             # フィルター範囲の最小長
          max_len: 10000                                          # フィルター範囲の最大長
      - character_repetition_filter:                            # 文字の繰り返し率が特定の範囲外のテキストをフィルターします
          rep_len: 10                                             # 文字レベルの n-gram の繰り返し長
          min_ratio: 0.0                                          # フィルター範囲の最小比率
          max_ratio: 0.5                                          # フィルター範囲の最大比率
      - flagged_words_filter:                                   # フラグ付き単語の比率が特定の最大値より大きいテキストをフィルターします
          lang: en                                                # どの言語のフラグ付き単語を考慮するか
          tokenization: false                                     # モデルを使用してドキュメントをトークン化するかどうか
          max_ratio: 0.0045                                       # テキストをフィルターする最大比率
          flagged_words_dir: ./assets                             # フラグ付き単語辞書を保存するディレクトリ
          use_words_aug: false                                    # 特に中国語とベトナム語の単語を拡張するかどうか
          words_aug_group_sizes: [2]                              # 拡張する単語のグループサイズ
          words_aug_join_char: ""                                 # 拡張する単語間の結合文字
      - language_id_score_filter:                               # 特定の言語のテキストで、言語スコアが特定の最大値より大きいものをフィルターします
          lang: en                                                # どの言語のテキストを保持するか
          min_score: 0.8                                          # テキストをフィルターする最小言語スコア
      - maximum_line_length_filter:                             # 行の最大長が特定の範囲外のテキストをフィルターします
          min_len: 10                                             # フィルター範囲の最小長
          max_len: 10000                                          # フィルター範囲の最大長
      - perplexity_filter:                                      # パープレキシティスコアが特定の範囲外のテキストをフィルターします
          lang: en                                                # どの言語でパープレキシティを計算するか
          max_ppl: 1500                                           # テキストをフィルターする最大パープレキシティスコア
      - special_characters_filter:                              # 特殊文字の比率が特定の範囲外のテキストをフィルターします
          min_ratio: 0.0                                          # フィルター範囲の最小比率
          max_ratio: 0.25                                         # フィルター範囲の最大比率
      - stopwords_filter:                                       # ストップワードの比率が特定の最小値より小さいテキストをフィルターします
          lang: en                                                # どの言語のストップワードを考慮するか
          tokenization: false                                     # モデルを使用してドキュメントをトークン化するかどうか
          min_ratio: 0.3                                          # テキストをフィルターする最小比率
          stopwords_dir: ./assets                                 # ストップワード辞書を保存するディレクトリ
          use_words_aug: false                                    # 特に中国語とベトナム語の単語を拡張するかどうか
          words_aug_group_sizes: [2]                              # 拡張する単語のグループサイズ
          words_aug_join_char: ""                                 # 拡張する単語間の結合文字
      - text_length_filter:                                     # 長さが特定の範囲外のテキストをフィルターします
          min_len: 10                                             # フィルター範囲の最小長
          max_len: 10000                                          # フィルター範囲の最大長
      - words_num_filter:                                       # 単語数が特定の範囲外のテキストをフィルターします
          lang: en                                                # どの言語のサンプルか
          tokenization: false                                     # モデルを使用してドキュメントをトークン化するかどうか
          min_num: 10                                             # フィルター範囲の最小数
          max_num: 10000                                          # フィルター範囲の最大数
      - word_repetition_filter:                                 # 単語の繰り返し率が特定の範囲外のテキストをフィルターします
          lang: en                                                # どの言語のサンプルか
          tokenization: false                                     # モデルを使用してドキュメントをトークン化するかどうか
          rep_len: 10                                             # 単語レベルの n-gram の繰り返し長
          min_ratio: 0.0                                          # フィルター範囲の最小比率
          max_ratio: 0.5                                          # フィルター範囲の最大比率

オペレーターに必要なモデル

多くの DataJuicer オペレーターは外部モデルに依存しています。モデルがローカルで利用できない場合、オペレーターは最初の実行時に自動的にダウンロードするため、実行時間が増加する可能性があります。

繰り返しのダウンロードを避けるため、DataJuicer タスクはデフォルトモデルを自動的に処理します。タスクはデフォルトモデルを /ml/data-juicer/models/ ディレクトリにマウントし、DATA_JUICER_EXTERNAL_MODELS_HOME 環境変数を設定します。したがって、デフォルトモデルを手動でダウンロードする必要はありません。