- 投稿日:2021-03-21T21:34:23+09:00
M1 mac で miniforge をインストールして環境構築
目的
miniforgeをインストールして、Pythonを動かせる環境を構築する!
miniforge構築しようと思ったキッカケ
機械学習について調べた際に、ニュートラルネットワークがとても気になり、ライブラリーを使わず再現したいと思ったのが始まりです。
ニュートラルネットワークについて記載している「ゼロから作るDeep Learning」に沿って、anacondaをインストールしようと試したが、何度やっても上手くいかず、、、。よく調べてみると、現状M1 macだと、anacondaは上手く動かないらしい。。。。(詳しくは、調べると出てきます。)
仕方ないので、M1 mac上でも動くminiforgeをインストールして環境構築するこにしました。miniforgeとは
miniforgeは コミュニティ。conda環境で必要最小限のパッケージです。
miniforge をインストール
https://github.com/conda-forge/miniforge から[Miniforge3-MacOSX-arm64]をダウンロードします。ダンロードが完了したら、ターミナル上で以下のコマンドを実行していきましょう。
# ダウンロードした[Miniforge3-MacOSX-arm64]が入ったディレクトリまで移動 cd Downloads # インストールフォルダを指定してインストール bash Miniforge3-Linux-x86_64.shあとは、時々聞かれる質問に[yes]と答えて行けば、インストールされます。
インストールされていることを確認
ターミナル上で以下を実行しましょう。
open ~/.bash_profile
以下のように、condaの初期化処理が ~/.zshrc に書き込まれることが確認できれば、インストール成功です。
# >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/Users/●●/miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/Users/●●/miniforge3/etc/profile.d/conda.sh" ]; then . "/Users/●●/miniforge3/etc/profile.d/conda.sh" else export PATH="/Users/●●/miniforge3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<<インストールが完了すると、自動的にconda環境になるため、以下のコマンドをターミナルで打ち込み、自動でconda環境にならないようにしておきましょう。
conda config --set auto_activate_base false
conda環境のオン•オフは以下のとおりです。
# conda環境オン。オンになると、”(base)”がついてきます。 conda activate # conda環境オフ conda deactivate最後に、conda環境上で、以下を実行すると、pythonを実行するための環境が構築します。
conda create -n ●●(名前) python=3.9
最後に、環境構築されたことを以下のコマンドで確認します。
conda list
リストに名前があれば成功です!
参考資料
miniforgeをインストールする際、以下を参考にさせていただきました。
M1 MacにPythonインストールして開発環境構築してみた https://note.com/osmszk/n/n277447e8c2a4
conda 公式ドキュメント https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands
AppleSilicon M1 Macにpythonをインストールする https://braveam.com/archives/1409
- 投稿日:2021-03-21T19:11:47+09:00
M1macとDocker。
まえがき
前提として、M1Macとは、AppleSiliconを搭載したArm64アーキテクチャCPUのPCである。
つまり、基本的にamd64/x86_64系アーキテクチャのバイナリは読めないし、M1Macでコンパイルしてうまくいったプログラムを配布しても、M1Mac以外では動かないと言ったことが当然起こる。
そこら辺はまぁ、コンパイラとかのオプションで同じソースから別のバイナリを作成すれば問題ない。結構簡単な話ではある。
だが、話は変わってDockerだったらどうだろうか?DockerはZembutsu氏のこちらの資料をみるとこう書かれている。
(なお、CPU amd64/x86_64 用にコンパイルしたバイナリは実行できますが、他の CPU アーキテクチャ向けのバイナリは amd64/x86_64 上では実行できません。例えば Raspberry Pi は ARM というアーキテクチャですので、この hello バイナリは Raspberry Pi でそのまま動きません。バイナリとして実行できない以上、仮に Docker イメージに入れたとしても、この次のセクションで説明する Docker コンテナとして実行はできません。Docker はハードウェアのエミュレーションを行いませんし、ハードウェアを仮想化するような技術でもありません。)
なるほど、やはり動かないと言うことらしい。
なら、実際動かしてみてどうなるか実験してみようじゃないか。
M1MacにDockerDesktopをインストール
M1MacにDockerDesktopをインストールするには、こちらのリンクを踏んでダウンロードする必要がある。
さらに、Rosetta2もインストールしなければならないため、以下のコマンドをShellに叩く
Rosetta2 installsoftwareupdate --install-rosetta
すると、しっかりインストールされ、動くようになる。
実際に試す。
以下を試してみた。
docker rundocker run -it python:3.9-alpine python
すると、
なんだ、しっかり動作するじゃないか。
なぜだろう。...実は単純な話でARMアーキテクチャ用にビルドされたものがDockerHubにちゃんと上がっているのだ。
実際にDockerHubで調べてみた。
なるほど、結構そもそも対応してるのね。と言う結論に。
M1macでビルドしたものをPushしても動かない?
M1Macでビルドしたものはどうなるのだろう。
そりゃまぁPullの時点でアーキテクチャが選択された上で層を重ねていくのだから、
いくらFROM python:3.9-alpineと指定した時点でARMイメージが決定するので、それに層を足してPushしてもリモートのLinuxサーバでは動かすことはできない可能性が高い。(まだ試したことはないが)これに対する解決策
JenkinsやGoogleCloudBuildとかに任せる
リモートにJenkinsのビルドサーバを建てて、そこからBuildすると言う形がいいかと思われる。
そうすれば、リモートで主に使用されているamd64/x86_64 archの対応ができるので、それで回避すると言う手がある。
普通に考えたらこれでいい気がする。というかそもそもローカルでビルドなんかしたくない。buildxコマンドを使用する
コンパイラと同様、アーキテクチャ別にbuildしてくれる機能をもつコマンドが実際に実装されているとのこと。
それがbuildxコマンド。詳細はこちら。あとがき
ちなみに、ラズパイとかの関係もあって、正味ARMアーキテクチャなど、さまざまなデバイスで動くようにもう基盤がある程度整っていて、Macが突然M1になったからと言って全然未対応な感じではなかった。なので、M1Macを買ってDockerとかどうしよう...みたいに考えている方でも、安心して欲しい。
あと、基本Rosetta2がなんとかしてくれるし、ここで重い動作させるわけでもないんだし、M1Macだからと言う理由で何か不都合が起こることは、正味このDockerPushが直でできないくらいなものだった。あとはなんとかなる基盤が今の時代全て揃っているので、M1macでも開発環境上、何も問題ないと言える。
やはりコード化と言う原理は最強だった...我々はコードだけを扱えばいいので、下のレイヤーは最悪気にしなくていい。そんな基盤ができている現代社会に感謝したい。
- 投稿日:2021-03-21T16:10:58+09:00
Mac・Windowsで.mp4や.movを.gifに変換する
FFmpegという動画と音声を記録・変換・再生するためのフリーソフト使用して簡単にできます。
FFmpegはMac・Windows共に使えるソフトなのでWindowsでも可能です。brewを使ってインストールします。
install.consolebrew install ffmpeg変換したい場合
templete.consoleffmpeg 入力オプション -i 入力ファイル名 出力オプション 出力ファイル名例
入力ファイル: test.mp4
出力ファイル: test.gifex.consoleffmpeg -i test.mp4 -r 24 test.gifこれで完了です!
- 投稿日:2021-03-21T09:16:45+09:00
M1 MacbookAirでpython環境を整える(備忘録)
2021/3/21時点で
M1チップにpipなど対応していない多い模様。pandasなどもインストールできないので
とりあえず、M1チップのMacでPythonが動く環境を整える。xcodedをインストール
ターミナルで下記のコマンドでxcodeをインストール
xcode-select --installMiniforge3をインストール
https://github.com/conda-forge/miniforge からarm64 (Apple Silicon)用のスクリプトをダウンロードしてホームディレクトリに置く
bash Miniforge3-MacOSX-arm64.sh~/.zshrcに色々書き込まれているようなので、下記コマンドで反映
source ~/.zshrc仮想環境を設定
conda create -n myenv python=3.9 conda activate myenvあとはconda install・・・でinstallができる。
matplotlib文字化け防止
https://ja.osdn.net/projects/ipafonts/releases/57327
からzipファイルをダウンロードして解凍したipaexg00201フォルダを
ライブラリフォルダ内のFontsにコピー
キャッシュが残っているかもしれないので、下記コマンドでキャッシュを削除rm -rf ~/.matplotlib/
- 投稿日:2021-03-21T09:16:45+09:00
m1でpython環境を整える(備忘録)
xcodedをインストール
ターミナルで下記のコマンドでxcodeをインストール
xcode-select --installMiniforge3をインストール
https://github.com/conda-forge/miniforge からarm64 (Apple Silicon)用のスクリプトをダウンロードしてホームディレクトリに置く
bash Miniforge3-MacOSX-arm64.sh~/.zshrcに色々書き込まれているようなので、下記コマンドで反映
source ~/.zshrc仮想環境を設定
conda create -n myenv python=3.9 conda activate myenvあとはconda install・・・でinstallができる。
matplotlib文字化け防止
https://ja.osdn.net/projects/ipafonts/releases/57327
からzipファイルをダウンロードして解凍したipaexg00201フォルダを
ライブラリフォルダ内のFontsにコピー
キャッシュが残っているかもしれないので、下記コマンドでキャッシュを削除rm -rf ~/.matplotlib/