python Poolによる並列処理で、複数モデルを並列作成

Facebook Prophetを利用したkaggleのnotebookで、Poolを利用していたので、Poolのメモ

一つのモデルで、データ毎にモデルを作成したいときに、便利


参考サイト:


例1)Poolによる、データ並列入力、並列処理

    1. Poolインスタンスを作成(プロセス数を引数で指定)
    2. Poolインスタンスのmap()メソッドの第一引数に対象関数を、第二引数に対象データのリストを渡す


例2)Poolによるモデル並列作成

  • Poolインスタンスのstarmap(関数, データリスト)メソッドで並列化すると、各プロセスの戻り値をリストで受け取ることが出来る。
  • コードは、kaggle M-5 Forecasting で、prophetを使っていたnotebookより
  • 面倒なので、コード分割して貼り付け。
  • 以下では、店舗ごと、デパートメントごとにモデルを作成しているが、そのモデルの作成と予測作業を並列化している。


run_prophet()は、デパートメントid(dept_id)と、店舗id(store_id)を受取り、デパートメント毎・ストアごとにモデルを作成して予測し、予測値を返す関数。

idsは、対象デパートメント(dept_id)と、店舗id(store_id)のタプルのリスト。

Poolに、cpuのコア数を渡し、starmap()メソッドで(dept_id, store_id)ごとの予測値をリストで受け取る。また、各戻り値のリストをさらにリストに入れている

機械学習Tips保管庫

データ解析、機械学習のための学習内容の保管庫。復習用。

0コメント

  • 1000 / 1000