💸

最速・最軽量・最低コスト?でMLflowを始めたい時のtips

2024/11/07に公開
2

モチベーション

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の詳細はこちらを参照ください。
https://zenn.dev/shimiyu/articles/d0ef1cff6ca25d
また、スクショには載せていませんが、後から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点は下記エラーの対応です。
https://stackoverflow.com/questions/75608323/how-do-i-solve-error-externally-managed-environment-every-time-i-use-pip-3
正直このエラーを掘り下げて理解しようか悩んだのですが、ざっくり読むと vendor依存?OSレベル依存されたPythonだから制約があるよ。くらいに適当に読み取りました(すみません)
なのでvenvで独立したPython環境を用意してそれで通るのであれば、環境分離も計れてデメリットなしに、それで通るんならいいじゃん?くらいで今回は突破しようと思います。
最後にMLflowをpipでinstallし立ち上げました。

結果

じゃじゃーん

ということで、しばらくはこの環境でMLflow lifeを楽しもうと思います。

追記 何もしてない時の1日あたりの価格

大体50円前後でした。結局やはりネットワークとストレージがかかっちゃいますよね。
個人的にはサーバを点けたり切ったりして使っていたら1000円前後月を見込んでいたので、その通りではあるんですが、、、正直今の利用頻度だとちょっと高いですねえ。。。

references

Discussion

hirayukihirayuki

Databricksの MLflowは確かに managed で楽なうえに何故か料金かからないのでいいですよね。
コメントありがとうございます!