1
3

More than 1 year has passed since last update.

📖nbdev2入門+Dockerによる環境構築

Last updated at Posted at 2022-08-06

nbdevとは

nbdevはライブラリ作成の多くを自動化して、少人数での大規模プロジェクト開発をサポートするツール。fastaiなどの開発に使われている。

前記事 https://qiita.com/lilacs/items/780123ecbb2936d493e7
公式トップページ nbdev – Jupyter Notebook で楽しいソフトウェアを作成する
ドキュメント nbdev - Getting started

nbdev1からの更新点

nbdevプロジェクトのセットアップが楽になった

  • nbdev_newコマンドでセットアップできるようになった。
  • 今まではGitHubでnbdev_templateでプロジェクト作成してから、ローカルへクローンする必要があり、ちょっと面倒だった。

ドキュメント生成ツールはjekyllからQuartoに変更

  • 今までのjekyllは難点が多かった。

    • rubyが必要だったりとインストールの手順が多く環境構築がつらい
    • インストール失敗が多い(docフォルダが未準備でjekyllインストールに失敗するなど)
    • ドキュメント更新後に、ローカルサーバでのプレビューが失敗したりする。(いったんdocフォルダを削除・再出力で解決したりする)
  • Quartoは比較的新しいツールで、上記の難点がいくつか解決している

    • インストールが楽。nbdevユーザとしてはnbdev_install_quartoを実行するだけ。内部的には1パッケージダウンロード・インストールしてる。
nbdevソースコードの該当箇所
# https://github.com/fastai/nbdev/blob/263a9af6690587922fc5ce8de162ace8ddc2a530/nbdev/_modidx.py#L28
    nbdev_install=nbdev.shortcuts:install

# https://github.com/fastai/nbdev/blob/master/nbdev/shortcuts.py#L26
    system(f'curl -LO {BASE_QUARTO_URL}quarto-linux-amd64.deb')
    system('sudo dpkg -i *64.deb && rm *64.deb')
  • Quartoチームは積極的に対応してくれてるぽい

nbdev+Quarto: A new secret weapon for productivity
Quartoは、Jupyter Notebook、VSCode、Observable、およびプレーンテキスト エディターをサポートするテクニカル パブリッシングを可能にするプロジェクトです。さらに、Quarto を使用すると、高品質の記事、レポート、Web サイト、ブログを HTML、PDF、ePub、PowerPoint スライドなどで公開できます。
...
Quarto と nbdev は多くの目標を共有しており、Quarto チームは私たちの提案に非常に迅速に対応してくれました。

その他

  • Windowsでは動かないので、wslを使うこと(2022年8月6日)
  • ライブラリ作成コマンドがnbdev_build_libからnbdev_exportに変更
    • 今までも、ビルドではなくコードを抜き出すだけだったので、妥当な名称になったと思う
  • execnb ノートブックをCLIで高速に実行するツール。テストが速くなる(nbdevでは、Notebookの実行成功をテストとするため)

変わらない点

  • Notebookの記述方法は同じ
      • #|exportを付けたセルは*.pyへ出力
      • #|hideを付けたセルはドキュメントに出力しない
    • 参考 📖nbdevの記述方法

利用条件

  • macOS, Linux(WSL可), ほとんどのUnix-style OS
  • Python 3.9 以上 (nbdev_installで失敗する)

Dockerによる環境構築

🐳Dockerイメージ

pytorchと一緒に使うために作成。nbdevはpython 3.9以上が必要だが、pytorch公式イメージはpython3.8までしかなかったため。(2022年8月6日)

🐳https://hub.docker.com/r/lilacs2039/fastai-nbdev
🐙https://github.com/lilacs2039/docker_fastai-nbdev

利用手順

# 本リポジトリの`docker-compose.yml`を取得
wget https://raw.githubusercontent.com/lilacs2039/docker_fastai-nbdev/main/docker-compose.yml
wget https://raw.githubusercontent.com/lilacs2039/docker_fastai-nbdev/main/Dockerfile

# 環境立ち上げ
sudo service docker start
docker compose up
1
3
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
1
3