言語処理用にカスタムパイプラインを使ってSpacy.ioを使用しようとしていますが、カスタム関数をパイプラインに追加するとそのプロセスは1つのスレッドでのみ実行されるようです。デフォルトのパイプラインプロセスでは、指定されたすべてのスレッドが使用されます。カスタムパイプラインを使ったSpacy.ioのマルチスレッド化
これは私がパイプラインを定義した方法です:
nlp = spacy.load(language, create_pipeline=custom_pipeline)
これはcustom_pipeline
機能です:
def custom_pipeline(nlp):
return (nlp.tagger, score_vocab_pipe)
これは私がパイプラインを実行する方法を示します。
nlp.pipe(texts, batch_size=1000, n_threads=8)
はのためのすべての要件がありますカスタムパイプライン機能はspacyでマルチスレッドをサポートしますか?
私が気づいていなかったのは、マルチスレッドを使用していないが、私の質問はカスタム定義のパイプライン関数でマルチスレッドをサポートするためにできることです。私のscore_vocab_pipe関数では、ドキュメント内のすべてのトークンに対して、あらかじめ定義されたレクメムに対して類似関数を実行するので、マルチスレッドでのメリットが重要になります。 –
Cythonで関数を実装し、GILを作品の主要部分の周りにリリースすることができれば、 'prange()'ループを使うことができます。ブログ投稿は私がこれをどうやって行ったかを説明しています マルチスレッド機能を使用したら、ミニバッチを累積して作業してください。 –