2023年9月25日月曜日

Mac M1とPythonの相性が悪いのはなぜでしょうか?

https://jp.quora.com/Mac-M1%E3%81%A8Python%E3%81%AE%E7%9B%B8%E6%80%A7%E3%81%8C%E6%82%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B

 · 
フォロー

Python自体はM系CPUに対応しています。相性が悪いどころか性能も圧倒的に高いです。

ただ、ライブラリや外部連携アプリケーションがM系CPUにまだ対応していない場合、RosettaというIntel CPUのエミュレーションシステムが間に入ります。CPUそのものをエミュレートして何事もないように動かしてくれるというのはAppleのお家芸の中でも特にすごい技術なんですが、どうしても動作は遅くなります。また、トリッキーな処理をしているライブラリの場合、完全にエミュレーションしきれない場合があるため、正常に動作しないことがあるのです。

とはいえMacのM系CPUの処理性能の高さと費用対効果の高さは圧倒的なもので、評価も高く、ライブラリもアプリケーションもすごい勢いで対応が進んでいます。そのうち古いライブラリやアプリケーションを無理やり動かすなど妙な使い方をしない限り、何の疑問も問題もなく使えるようになると思いますよ。

 · 
フォロー

昨今の Python はグルー言語(cなどで書かれたライブラリを繋ぐ役割)の側面が強くなっています。

python で機械学習などやる場合、ライブラリの中身は殆ど c 実装だったりします。この場合は M1 と Intel 系とでバイナリが別になるのでややこしめの問題が発生します。

とはいえ M1/M2 の人口はどんどん増えており、サポートも充実してきているので2023年中には遜色なく使えるようになるでしょう。 動いて当たり前ではなく、 OSS コントリビュータに感謝し、問題があれば分析、報告する事で協力していきましょう。

 · 
フォロー

■macOS 11の仕様により実行優先順位が低い?

そういう話は聞いたことがないのですが、macOS 11ではシェルスクリプトなどのプロセスの実行優先度が低く設定(高性能コアではなく、低消費電力コアで実行)されていたので、macOS 11で使ったときには、そういう感想(遅い→相性が悪い)を抱く人も出てくるかもしれません。

# macOS 12以降ではこれが改められています。自分がいろいろベンチマークをとってバグレポートして要望しまくりましたので。バグレポートに「君たちの最新のハードウェアでは、10年前のロートルMacBook Airより遅い処理があるんだけど?」と書いてグラフとプログラムを添付したら対処されました。

■デフォルトでインストールされているpythonのバージョンの問題?

macOSにはPython 2.xがデフォルトでインストールされてきたため、作業を行う前にpythonのバージョンを確認し、3.xバージョンのpythonをインストールし、pythonのバージョンを切り替えられるコマンドをインストールする作業が必要です。けっこう面倒でもあります。

ただし、このあたりの話はIntel MacでもM1(Apple Silicon)Macでも同じ状況であるため、M1だからとくに「相性が悪い」という話でもありません。どちらでも平等に苦労します。

0 コメント:

コメントを投稿