問題タブ [tfx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - TensorFlow 拡張 Kubeflow 複数のワーカー
Kubeflow DAG Runner の TFX に問題があります。問題は、実行ごとに 1 つのポッドしか開始できなかったことです。役に立たない Apache Beam 引数を除いて、「workers」の構成が表示されません。
1 つの Pod で CSV ロードを実行すると、ファイルが 5GB を超えているため、OOMKilled エラーが発生します。ファイルを 100MB ごとに分割しようとしましたが、それも役に立ちませんでした。
だから私の質問は次のとおりです。複数の「ワーカー」ポッドで Kubeflow で TFX ジョブ/ステージを実行する方法、またはそれは可能ですか?
これが私が使用しているコードです:
環境:
- Docker イメージ: boto3 がインストールされた tensorflow/tfx:0.26.0 (aws 関連の問題)
- Kubernetes: AWS EKS 最新
- キューブフロー: 1.0.4
python-3.x - TensorFlow Extended (TFX) を使用した MultiOutput 分類
私は TFX (TensorFlow Extended) を初めて使用し、TensorFlow ポータルのサンプルチュートリアルを実行して、データセットに適用する方法をもう少し理解しました。
私のシナリオでは、1 つのラベルを予測する代わりに、当面の問題で 2 つの出力 (カテゴリ 1、カテゴリ 2) を予測する必要があります。
純粋な TensorFlow Keras Functional API を使用してこれを実行しましたが、正常に動作しますが、TFX パイプラインに適合できるかどうかを確認しています。
エラーが発生する場所は、パイプラインのトレーナー段階であり、エラーがスローされる場所は_input_fnにあります。指定されたデータを (機能、ラベル) テンソル ペアに正しく分割していないためだと思われますパイプライン。
シナリオ:
入力データの各行は、[Col1、Col2、Col3、ClassificationA、ClassificationB] の形式になります。
ClassificationA と ClassificationB は、Keras Functional Model を使用して予測しようとしているカテゴリ ラベルです。
keras 機能モデルの出力レイヤーは以下のようになります。ここでは、1 つの高密度レイヤーに結合された 2 つの出力があります (注: 最後に追加された _xf は、クラスを int 表現にエンコードしたことを示すためのものです)。
output_1 = tf.keras.layers.Dense( TargetA_Class、activation='sigmoid'、name = 'ClassificationA_xf')(密)
output_2 = tf.keras.layers.Dense(TargetB_Class, activation='sigmoid', name = 'ClassificationB_xf')(密)
モデル = tf.keras.Model(入力 = 入力、出力 = [出力_1、出力_2])
トレーナー モジュール ファイルでは、モジュール ファイルの先頭に必要なパッケージをインポートしました >
トレーナー モジュール ファイルの現在のinput_fnは次のようになります (チュートリアルに従ってください)。
トレーナー コンポーネントを実行すると、次のエラーが表示されます。
label_key=_transformed_name(_CATEGORICAL_LABEL_KEYS[0]),transformed_name(_CATEGORICAL_LABEL_KEYS 1 )),
^ SyntaxError: 位置引数がキーワード引数に続く
また、エラーが発生する label_key=[_transformed_name(x) for x in _CATEGORICAL_LABEL_KEYS])も試しました。
ただし、単一のラベル キーlabel_key=transformed_name(_CATEGORICAL_LABEL_KEYS[0])を渡すだけで問題なく動作します。
参考までに - _CATEGORICAL_LABEL_KEYS は、予測しようとしている 2 つの出力 (ClassificationA、ClassificationB) の名前を含むリストに他なりません。
変換された_name は、変換されたデータの更新された名前/キーを返す関数に他なりません。
質問:
私が見ることができることから、dataset_options.TensorFlowDatasetOptions の label_key 引数は 、ラベルの単一の文字列/名前のみを受け入れることができます。つまり、複数のラベルを持つデータセットを出力できない可能性があります。
_input_fnによって返されるデータセットを取得して 2 つの出力ラベルを返すように_input_fnを変更する方法はありますか? したがって、返されるテンソルは次のようになります。
Feature_Tensor: {Col1_xf: Col1_transformedfeature_values、Col2_xf: Col2_transformedfeature_values、Col3_xf: Col3_transformedfeature_values}
Label_Tensor: {ClassificationA_xf: ClassA_encodedlabels, ClassificationB_xf: ClassB_encodedlabels}
tfx のより広いコミュニティからのアドバイスをいただければ幸いです。