PythonとNumpyはデータ分析や機械学習などの分野で広く利用されていますが、大規模なデータを扱う際にはパフォーマンスの問題が発生することがあります。
Numpyのパフォーマンス問題
Numpyは通常の演算においては非常に高速ですが、配列のサイズが大きくなると演算が遅くなるケースがあります。例えば、10,000 ✕ 10,000の2次元配列の内積計算を行うと、30秒ほどかかることがあります。
パフォーマンス改善のためのTips
データ型をfloat32にする
np.float32
は32ビット、つまり単精度の浮動小数点数を表しています。このデータ型を指定することでメモリを効率的に使うことができます。実際にfloat32
を指定した場合の速度を見てみると、実行時間が半分以下の14秒台まで出ました。
daskを使う
daskは、numpyやpandasライクで並列処理、分散処理を行うことのできるライブラリです。daskを使うと、配列のサイズが大きくなるに連れて分散処理の恩恵を感じられるようになります。
行列を分割して処理をする
配列が大きすぎるので処理に時間がかかったり、メモリに乗らなかったりするわけです。であれば、配列自体を小さくして処理するのが妥当でしょう。
これらのTipsが皆さんの参考になれば幸いです!.