問題タブ [custom-training]
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.
python-3.x - tf.function を使用した Tensorflow 2.x でのマイクロバッチ処理 (勾配の累積)
テンソルフロー2.xでマイクロバッチ処理をどのように実装できますか? つまり、いくつかのバッチの勾配を蓄積し、これらの蓄積された勾配で重みを更新したいと考えています (これにより、実質的にバッチ サイズが累積ステップ * バッチ サイズに増加します)。
次のコードで試しました:
ただし、tf.range を使用するか、tf.function 装飾関数内で範囲を使用するかによって、2 つの異なる問題に遭遇しました。
- 範囲の使用: 提供されたミニ モデルで動作しますが、私のユース ケースではモデルがかなり大きく (2.6 Mio パラメータ)、このような勾配を累積すると、次のエラーが発生します。
2021-04-24 18:19:28.349940: W tensorflow/core/common_runtime/process_function_library_runtime.cc:733] マルチデバイス関数の最適化の失敗を無視: 期限を超えました: meta_optimizer が期限を超えました。
私の推測では、この部分を繰り返して一度だけ追加するのではなく、範囲を使用すると (tf.function がどのように機能するかを理解している限り)、すべての勾配累積ステップがグラフに追加されます。
- range を tf.range に置き換えると、次のエラーが発生します。
したがって、勾配、損失、予測など、発生するすべての変数を初期化してから動作しますが、(私の使用例では) 非常に遅いのはなぜですか?
何が欠けていますか?どんな助けでも大歓迎です。
spacy - 複数の GPU (1 つだけでなく) での spaCy NER モデルのトレーニング
次のコードを使用して NER モデルをトレーニングしています。
コードの開始:
コードの終わり。
問題:
問題は、各反復に約 30 分かかることです。非常に長いテキストと 6 つのラベルを含む 8000 のトレーニング レコードがあります。
したがって、より多くの GPU コアを使用して削減したいと考えていましたが、使用されているコアは 1 つだけのようです。上記のコードで print(util.gpu) を実行すると、最初のコアだけがゼロ以外の値を返します。
質問 1: トレーニング プロセスを高速化するために、より多くの GPU コアを使用する方法はありますか? リードをいただければ幸いです。
さらに調査した結果、spacy-ray は並列トレーニングを可能にすることを目的としているようです。しかし、私が見つけたのは「python -m spacy ray train config.cfg --n-workers 2.
質問 2: Ray は GPU を使用した並列処理を有効にしますか? それは CPU コアのみですか?
質問 3: 「python -m spacy ray train config.cfg --n-workers 2」を使用するのではなく、nlp.update を使用して Python コードに Ray を統合するにはどうすればよいですか。?
ありがとうございました!
環境:
上記のコードはすべて、ml.p3.2xlarge EC2 インスタンスを使用する AWS Sagemaker 上の 1 つの conda_python3 ノートブックにあります。
使用したPython バージョン: 3
spaCy 使用したバージョン: 3.0.6
spacy - ラベルを適切に予測しない NER スペーシー カスタム トレーニング モデル
ドキュメントhttps://towardsdatascience.com/train-ner-with-custom-training-data-using-spacy-525ce748fab7およびサンプルによるhttps://spacy.io/usage/processing-pipelinesを使用してトレーニングされた NER スペーシー カスタム トレーニング モデルテスト ケース データセットを使用して、指定されたテキストで正確に通貨を見つけます。
データセットの例:
モデルに「通貨」という名前を付けることで、モデルのトレーニングに成功しました。適切なラベルを持つトレーニング済みデータセットには適切に予測しますが、ほとんどの場合、間違ったラベルを持つトレーニングされていないテキスト データを予測します。
入力テスト行: 'I have AZWSQTS lot LOT of Indian MZW currency USD INR'
出力:
AZWSQTS - CUR 、LOT - CUR、MZW - CUR、USD - CUR、INR - CUR
ここで、「AZWSQTS」と「LOT」は通貨ではありませんが、予測します。これが私が得ている問題です。
完全なコード: