2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

知識0でもAWSを使ってmlflowサーバーを無料で立ち上げる方法

Last updated at Posted at 2021-02-19

なぜAWSでmlflowサーバーを立ち上げようと思ったか

はじめまして,機械学習を勉強し始めて1年になるものです。

この度はkaggleに初参加してみようと思ったのですが,kaggle notebookの実行ログをmlflowで管理したかったので,AWSを使って無料の範囲内でサーバーを立ち上げようと思いました。ただ,ネットにその情報が上がっていなかったので,他の方のために,知識0の人間が四苦八苦しながらmlflow serverを立ち上げた際の手順を記事にします。

※セキュリティ的にはガバガバなので,今回立ち上げるサーバーに重要な情報をアップロードしないでください。

step1: アカウント作成とログイン

これは誰でもできるはずです。途中でクレジットカードの登録が必要です。
下のような画面が見えたら成功です。
image.png

step2: アクセスキーIDとシークレットアクセスキーを設定

  1. IAMを選択します。
    image.png
  2. ユーザーを追加します。
    image.png
  3. ユーザー名はお好きな名前を選択してください。これがあなたの名前になります。
    image.png
  4. 「グループの作成」をクリックしユーザーが所属するグループを作成します。
    image.png
  5. 下記の2つをアタッチします。
    image.png
  6. グループが作成されていることを確認して,「次のステップ」へすすみます。
    image.png
  7. そのまま次へ。
    image.png
  8. どんどん次へ。
    image.png
  9. csvを保存して閉じます。
    image.png

step3: IMAロールの作成

  1. ロールの作成を選択します。
    image.png
  2. EC2をユースケースとして選択して次へをクリックします。
    image.png
  3. 「SSMF」などと入力して「AmazonSSMFullAccess」を選択して次へをクリックします。
    image.png
  4. 管理しやすいようにタグを追加しない場合は,そのまま次へをクリックします。
    image.png
  5. IAMロール名を適当に決めて次へをクリックします。
    image.png
  6. 作成されていることを確認します。
    image.png

step4: EC2インスタンスの起動

  1. EC2のサービスへ行きます。
    image.png
  2. リージョンを東京にして(重要!!),インスタンスを起動します。
    image.png
  3. 一番上の「Amazon Linux 2」が無料なのでこれを使います。
    image.png
  4. 無料のt2.microを選択して,**「次のステップ」**をクリックして次へ進みます。
    image.png
  5. 先ほど作成したIAMロールを選択して,「次のステップ」を選択します。
    image.png
  6. 30GBまで無料なので30に変更して「次のステップ」を選択します。
    image.png
  7. 特にタグが必要なければそのまま「次のステップ」を選択します。
    image.png
  8. 画像の順番で真似していきます。あとでSSH接続しない場合は,SSHはなくてもいいです。
    5000番のポートを開けておくのを忘れないでやりましょう。
    image.png
  9. 「起動」をクリック。
    image.png
  10. SSHでアクセスするためのキーペアを作成します。作成したらローカルPCに保存しておいて,絶対に消さないでください。
    image.png
    image.png
  11. 起動が確認できたら,これでEC2インスタンスの作成は完了です。
    image.png

step5: EC2インスタンスへ接続

  1. 先ほど作成したインスタンスにチェックを付けてから起動します。
    image.png
  2. 「接続」を押します。ここで書いてあるパブリックIPを控えておきましょう。ここでは13.112.11.58です。
    image.png

step6: mlflow serverのインストールと起動

下記の手順で入力してください。

python3.7をインストールします。

sudo yum install python37

pipのためのpythonファイルをダウンロードします。

curl -O https://bootstrap.pypa.io/get-pip.py

pipをインストールします。

python3 get-pip.py --user

pathを追加します。

export PATH=~/.local/bin:$PATH

設定を反映します。

source ~/.bash_profile

mlflowをインストールします。

pip install mlflow

mlflowサーバーを立ち上げます。
立ち上げが終わったら。ブラウザのバツボタンを押して接続を切っても大丈夫です。

mlflow server --backend-store-uri  ./mlruns  --host 0.0.0.0

接続が切ったら先程控えておいたIPとポート番号をブラウザに入力します。
今回の例だと13.112.11.58:5000とブラウザに入力すればmlflowの画面にたどり着きます。

課金されないために知っておきたいこと

  • Elastic IPを使うと,インスタンスを起動し直してもパブリックIPは変わらないのですが,Elastic IPはお金がかかってしまうため,今回は使用しませんでした。

  • 無料EC2インスタンスは月に750時間稼働可能なのですが,EC2インスタンスを2つ以上起動しておくと750時間を超えてお金がかかります。ちなみにこの月750時間というのはAWSアカウントを作成してから1年間有効です。

  • 最初はS3を使ってmlflowのartifactを保存しておきたかったのですが,5GBまでしか無料ではないので諦めました。

  • 過剰請求されたときのためにAWS Budgetを使ってアラートを設定しておくといいと思います。詳しくはググれば出てきます。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?