Macbookm1およびpythonライブラリ[クローズ]

Dec 02 2020

新しいmacbookm1はデータサイエンスに適していますか?

pandas、numpy、sklearnなどのデータサイエンスPythonライブラリはmacbook m1(Apple Silicon)チップで動作しますか?また、前世代のIntelベースのmacbookと比較してどれくらい高速ですか?

回答

23 jakub Dec 02 2020 at 00:43

このGitHubリポジトリには、AppleM1チップとPythonのデータサイエンスに関する有用な情報がたくさんあります。 https://github.com/neurolabusc/AppleSiliconForNeuroimaging。以下に代表的な引用を含めました。

TL; DR

あなたが開発者でない限り、私は科学者が短期的にアップルシリコンコンピュータを購入することを強く思いとどまらせます。生産的な作業には、コアツールを移植する必要があります。長期的には、このアーキテクチャは科学に大きな影響を与える可能性があります。特に、AppleがCPUの驚くべき電力効率を活用し(AWS Gravitonと競合)、コンピューティングタスクにMetal言語とGPUを活用する(NVidiaのTesla製品とCUDA言語と競合する)サーバーを開発する場合。

Appleシリコンが直面している制限

科学者が依存しているインフラストラクチャは、このアーキテクチャではまだ利用できません。短期的な制限のいくつかを次に示します。

  • 人気のあるR、Julia、Python言語を使用している科学者は、オープンソースのFortranコンパイラーを必要としています。PythonはAppleSiliconで利用できますが、NumpyやScipyなどのツールにはFortranのコンパイルが必要です。1つの解決策は、minicondaのようなPythonディストリビューションをインストールし、そのpipインストーラーを実行してIntelパッケージを追加することです(このリポジトリに含まれるスクリプトには、numpy、pandas、およびseabornが必要です)。これらのライブラリの翻訳中に、これらのライブラリの1つを最初にインポートするときに遅延が発生します。その後、翻訳されたPythonライブラリは正常に動作しているように見えます。
  • AppleのCClangコンパイラは高速のネイティブコードを生成しますが、多くの科学ツールはgcc、golang、gFortranコンパイラが利用可能になるまで待つ必要があります。
  • VirtualBox、VMware Fusion、Boot Camp、ParallelsなどのツールはまだAppleSiliconをサポートしていません。多くのユーザーは、macOSコンピューターでWindowsおよびLinuxプログラムを使用するためにこれらのツールに依存しています。
  • DockerはAppleSiliconをサポートしていません。これらのコンテナは、多くのニューロイメージングツールで人気があります。
  • 多くの自作コンポーネントはAppleシリコンをサポートしていません。ユーザーは、翻訳されたコンポーネントをインストールするか、サポートされているモジュールをソースからビルドする必要があります。
  • MATLABは、SPMを含む多くの科学ツールで使用されています。Matlabは翻訳で動作しますが、ネイティブではまだ利用できません(そして、mexファイルを再コンパイルする必要があります)。
  • FSLとAFNIは、このアーキテクチャをまだネイティブにサポートしていません。コードは翻訳で機能する場合がありますが、一部のネイティブツールを作成するには、コンパイラとライブラリが更新されるのを待つ必要があります。これにはおそらく数ヶ月かかるでしょう。
  • 現世代のM1には、4つの高性能コアしかありません。ほとんどのニューロイメージングパイプラインは、単一のコア(M1が優れている場合)のみを必要とする順次タスクと並列タスクを組み合わせています。これらの並列タスクは、より多くのコアを備えたCPUを悪用する可能性があります(以下のpigzおよびniimathテストに示されているように)。シリアルコードとパラレルコードのこの混合はアムダールの法則に直面しており、追加のコアの収穫逓減があることに注意してください。
  • 現世代のM1には最大16GbのRAMが搭載されています。ニューロイメージングデータセットには、多くの場合、大きなメモリ需要があります(特に、マルチバンド加速機能、静止状態、および拡散データセット)。