LoginSignup
11
7

Livebook のはじめ方 -インストール、実行、注意点-

Last updated at Posted at 2023-07-27

はじめに

Livebook はブラウザ上で Elixir や Erlang のコードを実行し、結果を視覚化できるツールです

例えば以下の画像のように、黒い枠(セル)の中にコードを書いて実行すると、そのすぐ下に結果が表示されます

スクリーンショット 2023-07-26 9.59.45.png

実行した一連のコードは「ノートブック」という形式で保存され、他の人と共有することができます

Python の Jupyter のようなツールですが、より簡単に高度な UI/UX が実装できるようになっており、更に書いたコードをそのまま Web アプリとしてリリースすることまでできます

以前、 @nako_sleep_9h さんが書いた記事がありますが、改めて、2023年7月 Livebook のはじめ方最新版をまとめます

実行環境

Livebook は様々な方法で利用可能になっています

自分の好みや利用目的に合わせて使い分けましょう

環境 難易度 柔軟性 利便性 コメント
デスクトップアプリ 一番簡単です。ここから始めましょう
クラウド ★★ ★★ ★★★ 無料で使えます。有料で GPU も使えます
コンテナ ★★ ★★★ ★★ いくらでも環境カスタマイズ可能です
ローカルビルド ★★ ★★★ ★★ ローカルネットワークで分散処理したい場合など

デスクトップアプリ

環境構築初心者の方はデスクトップアプリがオススメです

Windows や macOS であればインストーラーから簡単にインストールできます

Livebook 公式のトップページ "Install Livebook" ボタンから簡単にインストール可能です

スクリーンショット 2023-07-26 9.13.35.png

インストールページに遷移します

Mac か Windows か、自分のローカルマシンに合ったものをクリックします

スクリーンショット 2023-07-26 9.14.35.png

macOS の場合

インストールページの "Mac (Universal)" をクリックします

"LivebookInstall-latest-macos-universal.dmg" というファイルがダウンロードされます

ファイルをダブルクリックすると、以下のように Finder が表示されます

スクリーンショット 2023-07-26 9.18.17.png

"Livebook.app" を "Applications" にドラッグ&ドロップします

macOS の画面最下部にあるバー(Dock)の Lanchpad をクリックします

スクリーンショット 2023-07-26 9.20.20.png

表示されるアプリのアイコンから、 Livebook のアイコンをクリックします

スクリーンショット 2023-07-26 9.20.32.png

デフォルトのブラウザ(Chrome や Safari)で Livebook が開きます

スクリーンショット 2023-07-26 9.24.05.png

バージョン "0.10.0" では、 localhost のランダムなポート番号で起動します

インストール後、 "LivebookInstall-latest-macos-universal.dmg" は不要なので削除しましょう

Livebook のホーム画面からノートブックを作成してみましょう

Windows の場合

インストールページの "Windows" をクリックします

"LivebookInstall-latest-windows-x86_64.exe" というファイルがダウンロードされます

ファイルをダブルクリックすると、警告メッセージが表示されます

スクリーンショット 2023-07-27 110139.png

「詳細情報」をクリックすると、実行できるようになります

スクリーンショット 2023-07-27 110156.png

その後、再び警告メッセージが表示されることがありますが、そのまま実行します

以下のようにインストーラーが表示されたら "Install" をクリックします

スクリーンショット 2023-07-27 110227.png

インストール時、ネットワークに関する警告がでることがありますが、「許可する」をクリックしてください

インストールが完了したらインストーラーを閉じてください

デスクトップに Livebook のショートカット(アイコン)が作成されています

スクリーンショット 2023-07-27 110839.png

また、 Windows のメニューバーからも検索できるようになっています

スクリーンショット 2023-07-27 111428.png

Livebook のアイコンをクリックすると、ブラウザで Livebook のホーム画面が開きます

スクリーンショット 2023-07-27 111253.png

Livebook のホーム画面からノートブックを作成してみましょう

高度なデスクトップアプリのインストール方法

古いバージョンや未リリースの最新版を使いたい場合は特殊な方法になります

Livebook 公式の GitHub リポジトリーから各バージョンのインストーラーをダウンロードできます

各 Release (バージョン)の Assets から ".dmg" や ".exe" をダウンロードしてください

スクリーンショット 2023-07-26 9.32.18.png

また、 Nightly (未リリースの最新コードによるビルド)版は以下のリンクからダウンロードできます

クラウド

好きなときに好きなスペックのマシンで動かしたい方にはクラウドをオススメします

Fly.ioHugging Face で CPU、メモリ、GPUなどのスペックを指定し、数クリックで利用開始できます

どちらのサービスも最低限のスペックであれば無料利用可能です

Fly.io と Hugging Face どちらもアカウント登録(サインアップ)が必要なので、初回はサインアップしてください

サインアップ完了後、 Livebook 公式からクラウド環境構築を実行します

スクリーンショット 2023-07-26 9.13.35.png

インストールページに遷移します

スクリーンショット 2023-07-26 9.39.24.png

  • Fly.io

    気軽に利用できるクラウドプラットフォームです

    3つまでならサーバーを無料で使えます

    PostgreSQL のデータベースも簡単に無料で利用できるので、データベースも使いたい場合は Fly.io を選択します

    GPU は 2023年7月時点で waitlist による待ち状態です(そのうち使えるようになります)

  • Hugging Face

    機械学習用のコード、データ、モデルファイルなどが集まっているコミュニティサイトです

    様々な機械学習用の環境をクラウド上に構築することができます

    現状、 GPU を使いたい場合は Hugging Face を選択します

Fly.io

Fly.io のサインアップ

初めての場合はサインアップ(無料)が必要です

Livebook の環境以外にも、様々な Web フレームワークを簡単に動かせるようになっているので、アカウント登録しておいて損はありません

トップページの右上 "Sign Up" から指示に従ってアカウントを登録します
(全部英語ですが頑張りましょう)

スクリーンショット 2023-07-26 10.38.22.png

Fly.io の料金

Fly.io の料金表はこちら

Resources included for free on all plans:

Up to 3 shared-cpu-1x 256mb VMs†
3GB persistent volume storage (total)
160GB outbound data transfer

shared-cpu-1x 256MB の仮想サーバーを3台、ストレージ 3GB 、 160 GB までの外向けデータ転送は無料です

Livebook を普通に使う分には十分ですが、一部のモジュールを使う場合、ビルド時点で大きなメモリが必要になることもあるので、その場合はリソースを拡張しましょう

Fly.io の支払い設定

無料利用範囲内であっても、クレジットカードを登録していないと Livebook を起動できません

クレジットカード登録なしの場合、起動しようとしたときに以下のようなメッセージが表示されます

We need your payment information to continue! Add a credit card or buy credit: https://fly.io/dashboard/xxxx/billing

Fly.io の支払い情報画面に移動します

"Add credit card" をクリックします

スクリーンショット 2023-07-26 10.56.22.png

以降、表示される画面の指示に従ってクレジットカードを登録してください

Fly.io での Livebook 起動

Livebook のインストールページから、 "Run on Fly.io" をクリックします

スクリーンショット 2023-07-26 9.39.24.png

Fly.io の画面に遷移するので、 "PICK AN APP NAME" に適当な名前を入力し、 "LIVEBOOK_PASSWORD" の値をどこかにメモしておきます

右下 "Deploy Livebook" をクリックします

スクリーンショット 2023-07-26 11.03.01.png

しばらくすると、以下のような画面に変化するので、 "APP URL" の下に表示されている URL をクリックします

スクリーンショット 2023-07-26 11.07.02.png

認証画面が表示されるので、メモしておいた "LIVEBOOK_PASSWORD" の値を入力し、 "Authenticate" ボタンをクリックします

スクリーンショット 2023-07-26 11.08.19.png

Livebook のホーム画面が表示されます

スクリーンショット 2023-07-26 11.20.28.png

Livebook のホーム画面からノートブックを作成してみましょう

Fly.io へのカスタムコンテナのデプロイ

カスタマイズした Livebook コンテナを Fly.io にデプロイすることも可能です

Hugging Face

Huggin Face のサインアップ

初めての場合はサインアップ(無料)が必要です

Livebook の環境以外にも、 AI 、機械学習を学習するのに役立つコンテンツがたくさんあるので、アカウント登録しておいて損はありません

トップページの右上 "Sign Up" から指示に従ってアカウントを登録します
(全部英語ですが頑張りましょう)

スクリーンショット 2023-07-26 9.50.40.png

Hugging Face の料金

Hugging Face の料金表はこちら

"CPU Basic" であれば無料で使用可能です

Hugging Face の支払い設定

GPU を使いたい場合、先に支払い設定をする必要があります

ログイン後のトップページ右上の自分のアイコンをクリックし、 "Settings" を開きます

スクリーンショット 2023-05-23 9.10.10.png

設定画面が開くので、左メニューから "Billing" を開きます

まだ支払い設定をしていない場合、支払い情報を更新するように求められます

スクリーンショット 2023-05-23 9.04.42.png

"Payment information" タブを開き、 "Add a payment method" ボタンをクリックしてください

スクリーンショット 2023-05-23 9.04.55.png

クレジットカードの情報を入力し終えると、支払い情報が以下のように表示されます

スクリーンショット 2023-05-23 9.10.39.png

Hugging Face での Livebook 起動

Livebook のインストールページから、 "Run on Hugging Face" をクリックします

スクリーンショット 2023-07-26 9.39.24.png

Hugging Face の画面に遷移します

"Space name" に適当な名前(この例では "livebook")を入れ、 Space SDK に "Docker"、 Docker template に "Livebook" を選択します

スクリーンショット 2023-05-22 17.38.32.png

"Space hardware" から使用したいサーバーのスペックを選択します

"LIVEBOOK_PASSWORD" に Livebook 起動時に使用するパスワードを12文字以上で入力します(後で使うので覚えておいてください)

パスワード文字数が足りない場合、 Space 作成時にエラーが発生します

スクリーンショット 2023-07-26 10.01.51.png

GPU を使う場合、 "XLA_TARGET" に CUDA のバージョンを指定します

2023年7月現在、 "cuda118" を入れておけば問題ありません

有効な値は EXLA 公式を参照してください

最後に一番下の "Create Space" をクリックします

コンテナのビルドが開始され、数分待つと以下の画像のように最上部中央のステータスが "Running" になります

スクリーンショット 2023-07-26 10.23.51.png

画面下部の Logs パネルの右上 "x" をクリックし、ログを閉じます(後で開き直すこともできます)

スクリーンショット 2023-05-23 11.11.41.png

左側に Livebook の認証画面が表示されるので、入力した "LIVEBOOK_PASSWORD" の値を入力し、 "Authenticate" ボタンをクリックします

スクリーンショット 2023-07-26 10.29.12.png

Livebook のホーム画面が表示されます

スクリーンショット 2023-07-26 10.30.21.png

Livebook のホーム画面からノートブックを作成してみましょう

Google Colab

ちょっとしたハックで Google Colab 上で Livebook を動かすこともできます

コンテナ

色々なライブラリを制限なく使いたい、最低限の環境構築は自前でできる、という方はコンテナがオススメです

コンテナ定義(Dockerfile)で自由に何度でも好きな環境を構築できます

コンテナ実行環境の準備

学生や小規模ビジネス、個人開発、OSS開発のみでの利用の場合、 Docker Desktop を無償利用できます

Docker Desktop の公式からインストーラーをダウンロードし、実行しましょう

スクリーンショット 2023-07-26 11.23.25.png

一定規模以上の企業では Docker Desktop を無償利用できないので、無償で Docker のビルド、実行をしたい場合、 Rancher Desktop を使います

こちらも Rancher Desktop 公式からインストーラーをダウンロードししてください

スクリーンショット 2023-07-26 11.27.43.png

Rancher Desktop を使う場合、 docker の CLI は別途インストールする必要があります

macOS の場合、 Homebrew を使ってインストールします

brew install docker

Windows の場合、 Chocolatey を使ってインストールします

choco install docker-cli

プロキシ設定は以下の記事を参照してください

以下のコマンドが実行できれば Docker のビルド、実行環境が構築できています

docker run hello-world

公式イメージの実行

公式イメージをそのまま使う場合、以下のコマンドを実行します

docker run \
  -p 8080:8080 \
  -p 8081:8081 \
  --pull always \
  ghcr.io/livebook-dev/livebook

ビルド完了後、 http://localhost:8080 をブラウザで開けば Livebook が使用可能です

Livebook のホーム画面からノートブックを作成してみましょう

以下のようにオプション指定することで、ローカルのカレントディレクトリーをコンテナ内の /data にマウントできます

docker run \
  -p 8080:8080 \
  -p 8081:8081 \
  --pull always \
  -u $(id -u):$(id -g) \
  -v $(pwd):/data \
  ghcr.io/livebook-dev/livebook

Livebook をパスワード認証にしたい場合、 コンテナ上の環境変数 "LIVEBOOK_PASSWORD" に値を設定して実行します

docker run \
  -p 8080:8080 \
  -p 8081:8081 \
  --pull always \
  -e LIVEBOOK_PASSWORD="securesecret" \
  ghcr.io/livebook-dev/livebook

バージョン指定での実行

Livebook のイメージは GitHub コンテナレジストリ上に保存されています

以下のページから各バージョンのタグを参照できます

例えば 0.9.3 を使いたい場合、以下のページにタグの指定方法が記載されています

docker pull ghcr.io/livebook-dev/livebook:0.9.3

従って、以下のようにバージョン指定して Livebook を起動することが可能です

docker run \
  -p 8080:8080 \
  -p 8081:8081 \
  --pull always \
  ghcr.io/livebook-dev/livebook:0.9.3

カスタムイメージを使う場合

公式イメージを元にカスタムする場合、 Dockerfile を作成します

こちらは私が実装した例です

FROM ghcr.io/livebook-dev/livebook:0.10.0

...

# For Vix, Image
RUN apt-get upgrade -y \
  && apt-get update \
  && apt-get install --no-install-recommends -y \
    libvips-dev \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

...

CMD ["/app/bin/livebook", "start"]

先頭行で公式イメージを元にするよう指定しています

RUN などを使ってコンテナ内の環境を定義します

最終行で Livebook を起動させています

また、Dockerfile と同じディレクトリーに docker-compose.yml を作っておくと、コンテナ起動が楽になります

---

version: '3.2'

services:
  livebook:
    build: .
    container_name: livebook
    ports:
      - '8080:8080'
      - '8081:8081'
...

Dockerfile と docker-compose.yml があるディレクトリー内で以下のコマンドを実行すると、 Livebook が起動します

docker compose up --build

ローカルビルド

Elixir に慣れている、ローカルマシンの性能が十分、Livebook自体のカスタマイズまでしたい、という方にはローカルビルドがオススメです

ローカルで Livebook をビルド、起動するため、物理的な制約以外は何もありません

Elixir の実行環境構築

macOS への Elixir の実行環境構築

asdf のインストール

macOS の場合、 asdf の利用をオススメします

複数バージョンをいつでもインストールでき、任意のバージョンに簡単に切り替え可能です

Elixir 以外の多種多様な開発言語、ツールに対応しています

asdf は Homebrew からのインストールが簡単です

brew install asdf

インストール後、パスを通すための設定が必要になります

シェルによって異なるので、以下を参照して実行してください

Homebrew でインストールし、 zsh (現在の macOS 標準)を使っている場合は以下のコマンドになります

echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
asdf による Elixir と Erlang のインストール

Elixir と Erlang のプラグインを追加します

asdf plugin add elixir
asdf plugin add erlang

それぞれ、 2023年7月時点の最新版をインストールします

asdf install elixir 1.15.4-otp-26
asdf install erlang 26.0.2

現在ローカルマシンにログインしているユーザーで基本的に最新版を使いたい場合は以下のコマンドを実行します

asdf global elixir 1.15.4-otp-26
asdf global erlang 26.0.2

Windows への Elixir の実行環境構築

Chocolatey を使って最新版をインストールします

choco install elixir

Erlang は依存パッケージとして同時にインストールされます

コードからのビルド、実行

GitHub からのコード取得

git コマンドで GitHub 上から Livebook の最新版コードを取得します

git clone https://github.com/livebook-dev/livebook.git

もしも特定のバージョンを使用したい場合は以下のようにタグを指定します

git clone https://github.com/livebook-dev/livebook.git -b v0.10.0

ビルド、起動

クローンしてきたディレクトリー内に移動します

cd livebook

asdf を使っていて、 Livebook の起動時のみ(livebook ディレクトリー配下にいるときのみ)特定バージョンを使いたい場合は以下のコマンドを実行してください

asdf local elixir 1.15.4-otp-26
asdf local erlang 26.0.2

依存モジュール(実行に必要なものだけ)を取得します

mix deps.get --only prod

Livebook を起動します

MIX_ENV=prod mix phx.server

しばらくすると Livebook の URL が表示されるので、ブラウザで開きます

...
[Livebook] Application running at http://localhost:8080/?token=xxxx

スクリーンショット 2023-07-26 13.43.10.png

Livebook のホーム画面からノートブックを作成してみましょう

パスワード認証にしたい場合は以下のようにして起動します

LIVEBOOK_PASSWORD="xxxxxxxxxxxx" MIX_ENV=prod mix phx.server

livebook コマンドのインストール

コマンドラインから実行できる livebook コマンドをインストールすることもできます

mix do local.rebar --force, local.hex --force
mix escript.install hex livebook

asdf を使っている場合、以下のコマンドを実行し、 livebook コマンドにパスを通します

asdf reshim elixir

以下のコマンドを実行すると、ローカルマシン上で Livebook が起動します

livebook server

実行結果に表示される URL をブラウザで開いてください

[Livebook] Application running at http://localhost:8080/?token=xxxx

ノートブックの作成

Livebook でコードを実行するため、新しいノートブックを作成します

ホーム画面右上の "+ New notebook" をクリックします

スクリーンショット 2023-07-26 13.43.10.png

以下のような画面が開きます

スクリーンショット 2023-07-26 13.49.22.png

コードの実行

黒い枠(セル)の中にコードを入力し、セルの右上 "Evaluate" をクリックする、もしくはセル内で Shift + Enter を押すとコードが実行され、結果が表示されます

cell.gif

セルの追加

セルの下辺りにマウスカーソルを持っていくと、セル追加用のボタンが表示されます

"+ Elixir" のボタンをクリックすると、新しいセルが下に追加されます

add.gif

セルの外にいる状態(セルの外をどこかクリックした状態)で "n" キーを押しても同じようにセルが追加されます

セルの追加、実行を繰り返すことで、次々とコードを実行することができます

はじめた後に

ホーム画面からチュートリアルを実行できます

スクリーンショット 2023-07-26 13.43.10.png

全て英語になっていますが、一通りの操作を学べます

スクリーンショット 2023-07-26 14.13.34.png

Qiita にもたくさんの Livebook に関する記事があります

興味あるものを実行してみましょう

注意点

依存ライブラリ

Livebook 上でモジュールをインストールしていると、エラーが発生することがあります

例えば Image モジュールには libvips が必要なので、存在しないとエラーになります

そのような場合、環境に応じて必要なライブラリをインストールします

例えば libvips は以下を参考にインストールできます

Livebook をコンテナで実行している場合、 Dockerfile に必要なライブラリのインストールを追加しましょう

Elixir と Erlang のバージョン

Livebook の GitHub リポジトリーに実行環境のバージョン情報が掲載されています

...
@elixir_requirement "~> 1.14.2 or ~> 1.15-dev"
...

elixir="1.15.2"
otp="26.0.2"
...

2023年7月時点では Elixir 1.14.2 以上、 1.15 以下で動作します

Erlang は 26 で動くことが確認できています

asdf で Elixir と Erlang をインストールしている場合、 Elixir バージョンの "1.15.4-otp-26" の末尾の数字が Erlang バージョンの "26.0.2" の先頭の数字と一致していなければなりません

ブラウザのセキュリティ

デスクトップアプリ、コンテナ、ローカルビルドのように、ローカル(URL が "http://localhost" から始まっている場合)で実行している場合、 URL の先頭(プロトコル)が "http" になっています

通常、 Web サイトにアクセスする際は "https" を使って安全な暗号化通信を使っていますが、 "http" だとブラウザが危険だと判断し、一部の機能に制限をかけます

  • カメラの起動、映像取得
  • マイクからの録音
  • クリップボードへのコピー

このような場合、 ngrok を使って localhost へ外部から https 通信できるようにトンネリングします

ngrok の使い方

ngrok にサインアップします

ngrok の認証トークンページから認証トークンを発行します

以下のページを参考に ngrok の CLI をインストールします

  • macOS の場合

    brew install ngrok/ngrok/ngrok
    
  • Windows の場合

    choco install ngrok
    

ngrok の認証トークンを設定します

ngrok config add-authtoken <認証トークン>

Livebook が起動しているポート番号を指定し、 ngrok によるトンネリングを開始します

ngrok http 8080

実行すると、以下のように表示されます

ngrok by @inconshreveable                                                                     (Ctrl+C to quit)

Session Status                online
Account                       xxx@xxx.xxx (Plan: Free)
Update                        update available (version 2.3.41, Ctrl-U to update)
Version                       2.3.35
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://xxxx-xxx-xxx-xxx-xxx.ngrok-free.app -> http://localhost:8080
Forwarding                    https://xxxx-xxx-xxx-xxx-xxx.ngrok-free.app -> http://localhost:8080

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

https:// から始まっている URL にアクセスすると、 Livebook が開きます

まとめ

様々な方法で Livebook を利用することができます

外部に公開したい、 GPU を使って高速に処理したい、特殊なライブラリを使いたい、など様々な要件に応じて使い分けましょう

11
7
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
11
7