最速・最軽量・最低コスト?でMLflowを始めたい時のtips
モチベーション
MLflowの練習環境が欲しい!というモチベーションで作っていこうと思います。
今回これを立ち上げるのに大体1時間かかってしまいましたが、それくらいできます。
コストは月々1000円は超えてほしくないですが、ざっくり試算でそれくらいになりそう。。。
またコストパフォーマンスについては追って記事にしたいと思います。
ローカルで立ち上げる術もありましたが、久しぶりのイチからの環境構築を m1 macでやるのはしんどそうだという偏見と(3年前の話で本当に不便でしたが、最近はマシなんでしょうか?)、あとはローカルで構築したVMをクラウド環境に向けて開放する方が面倒だと思ったので、あえて少しお金がかかってもVMで試してみようと思います。
環境
- Azure VM
- Linux (ubuntu 24.04)
- Python 3.12.3
環境構築
まずはVMを立ち上げよう。
ここはAzureの管理コンソールから普通に立ち上げます。
今回特に工夫というほどのことではないですが 最低コスト を目指してspot instanceを利用しました。
また立ち上げ直後に自動終了も設定しておきます。
この2つがあるだけでかなり安心ですね。
ネットワークの設定
さすがに public ネットワークに開けているのは怖いので、IPアドレスだけは絞ろうと思います。
ネットワークセキュリティグループの設定から SSHプロトコルで My IP Addressだけに設定して、SSHアクセスできるか試します。
この状態で無事に繋がりました。
Security groupの詳細はこちらを参照ください。
また、スクショには載せていませんが、後からHTTPで MLflowの console画面にアクセスするために TCP 8080 portに対しても、自身のIP Addressからアクセスできるようにしておきます。
MLFlowのinstall
ここはいかに実行したコマンドを全て羅列しておきます。
sudo apt update
sudo apt install build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-dev tk-dev
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo ln -s /usr/bin/pip3 /usr/bin/pip
sudo ln -s /usr/bin/python3-pip /usr/bin/pip
sudo apt install python3-pip
sudo apt install python3.12-venv
python -m venv common-env
source common-env/bin/activate
pip install mlflow
mlflow server --host 0.0.0.0 --port 8080
ちょっと細かく解説
上2段は ubuntuの updateと必要なライブラリ一式のinstallです。
sudo ln -s /usr/bin/python3 /usr/bin/python
はpythonとpython3を繋げています。
こちらはもちろん任意で大丈夫です。
そのあとはvenvを使えるようにしています。
venvを使っている理由は2点、ひとつは私がPythonの仮想環境管理によく使うのがこれ・・・という私的理由と、もう1点は下記エラーの対応です。
正直このエラーを掘り下げて理解しようか悩んだのですが、ざっくり読むと vendor依存?OSレベル依存されたPythonだから制約があるよ。くらいに適当に読み取りました(すみません)
なのでvenvで独立したPython環境を用意してそれで通るのであれば、環境分離も計れてデメリットなしに、それで通るんならいいじゃん?くらいで今回は突破しようと思います。
最後にMLflowをpipでinstallし立ち上げました。
結果
じゃじゃーん
ということで、しばらくはこの環境でMLflow lifeを楽しもうと思います。
追記 何もしてない時の1日あたりの価格
大体50円前後でした。結局やはりネットワークとストレージがかかっちゃいますよね。
個人的にはサーバを点けたり切ったりして使っていたら1000円前後月を見込んでいたので、その通りではあるんですが、、、正直今の利用頻度だとちょっと高いですねえ。。。
Discussion
azure をご利用とのことですので、azure databricks を利用しても格安で mlflow で利用できるかもしれません。azure databricks を利用する場合には、Python環境などを実行するクラスターを構築するとコストがかかりますが、 mlflow の利用にほほとんどコストがかかりません。
Databricksの MLflowは確かに managed で楽なうえに何故か料金かからないのでいいですよね。
コメントありがとうございます!