
このコースで学習する内容や、作り上げるアプリケーション、対象者、前提条件を説明します。
受講にあたっての Q&A やリソースの活用などについて説明します。
Windows を使用する場合の WSL 2 のセットアップ手順を説明します。
Git とは何か、GitHub とは何か、Git と GitHub はどんな関係なのかを学びます。
GitHub でこのコースの学習用のリポジトリを作成します。
GitHub で作成したリポジトリを手元の PC に clone します。
Git の入門の最初のステップでおさえておきたい最小限のコマンドを学び、実際に練習します。
このコースでの Python およびパッケージ管理・仮想環境のセットアップの方針を説明します。
Python の特定バージョンをインストールするための準備として、asdf をインストールします。
asdf の使い方を学びながら、asdf で Python の特定のバージョンをインストールします。
asdf を使って、Python のパッケージ管理と仮想環境のためのツールである poetry をインストールします。
poetry init コマンドを使い、pyproject.toml を生成して、Python での実装の準備をします。
Python での実装の準備ができたことを確認するため、Hello World を実装します。
機械学習を使ったアプリケーションの開発に必要なコードの種類と、このセクションで実装する対象となるコード、使用する機械学習アルゴリズムとライブラリを説明します。
poetry を使って、機械学習の有名なライブラリである scikit-learn をインストールします。
scikit-learn を使って OpenML から MNIST のデータを取得し、データの内容を見てみます。
scikit-learn を使い、MNIST のデータをもとに学習するコードを実装します。
機械学習モデルの形式の一種である、ONNX (Open Neural Network Exchange) の概要を学びます。
skl2onnx を使い、scikit-learn で作成したモデルを ONNX 形式で保存します。
作成したモデルを使った推論を試すための準備として、画像データをモデルに入力する形式に変換する前処理を実装します。
Python の ONNX Runtime を使い、ONNX 形式のモデルで推論するコードを実装します。
JavaScript の特徴と、JavaScript を学習するメリットを説明します。
JavaScript の最初のコードとして、ブラウザで Hello World を実行します。
JavaScript の変数と定数について学びます。
JavaScript の配列と、for や while を使ったシンプルなループについて学びます。
JavaScript での if・else を使った分岐の基本と、null が falsy と判定されることを学びます。
JavaScript で現在よく使われる、3 種類の関数の定義方法を学びます。
JavaScript の関数を応用した「コールバック」について学びます。
ブラウザ上の JavaScript で UI を操作する「DOM 操作」の基本を学びます。
このセクションで実装する「手書き数字推論アプリケーション」の仕組みを説明します。
poetry を使い、Web アプリケーションを開発する準備を整えます。
Python の Web アプリケーション開発のフレームワークである FastAPI をインストールし、Hello World を実装します。
FastAPI を使って HTML ファイルを読み込んで返す処理を実装します。
手書き数字推論アプリケーションの HTML を実装します。
CSS や JavaScript を使用する準備として、FastAPI の StaticFiles 機能を使った static ディレクトリの配信を設定します。
手書き数字推論アプリケーションの見た目を整えるため、CSS を実装します。
ライブラリを使い、canvas に手書きする機能を実装します。
JavaScript と Python を連携させた推論処理の実装の前段階として、JavaScript から Python の処理を呼び出す例を実装します。
Python が返した推論結果を JavaScript で画面に表示する処理を実装します。
JavaScript から Python への通信で、手書きした画像データを送信する処理を実装します。
Python で ONNX Runtime を使った推論処理を実装します。
手書き数字推論アプリケーションの最終調整として、推論に使用した画像を画面に表示し直す処理を実装します。
このセクションで実装した内容をふりかえります。
Web アプリケーションを動かす方法の基本と、PaaS を使用するメリットを学びます。
PaaS の一種である Render を使い、手書き数字推論アプリケーションをインターネットに公開します。
Render の無料プランの制約と、次のセクションの実装のモチベーションを説明します。
機械学習を使ったアプリケーションを「静的サイト」の方式で実現する方法と、そのメリットを学びます。
静的サイト方式での実装変更にあたって、実装用のディレクトリを準備します。
画像のサイズを変換したり alpha 成分を取り出したりする、前処理を JavaScript で実装し直します。
ONNX Runtime Web を導入し、ONNX 形式のモデルを使って JavaScript で推論するコードを実装します。
Render の静的サイトホスティング機能を使い、静的サイト版の手書き数字推論アプリケーションをインターネットに公開します。
このセクションで実装した内容を確認し、静的サイトホスティングサービスのメリットと、機械学習を使ったアプリケーションを静的サイトとして公開する場合の注意事項を説明します。
このコースを完了したあと、さらにステップアップするための道筋を説明します。
近年、機械学習に入門するための情報源は非常に多くなっており、機械学習モデルの作成には気軽に取り組めるようになっています。
個人でも、ちょっとしたモデルを作ってみて手元で推論してみたことがある方は少なくありません。
しかし、個人が作ってみたモデルを、実際に推論を試せるアプリケーションとして「公開」している方は少ないです。
また、企業においても、データサイエンティストが R&D 的に作成したモデルを実際のアプリケーションに組み込む段階で苦戦している例は多いです。
そんな状況に対応するため、近年「MLOps」というキーワードも登場しています。
このコースでは、機械学習を使ったアプリケーションの「公開」に興味があるデータサイエンティスト・PM・PdM といった方を主な対象者として、Python と JavaScript で機械学習を使った Web アプリケーションを実装し、実際にインターネット上に公開してみます。
実装するのは MNIST で学習したモデルを使った「手書き数字推論アプリケーション」です。
Python の scikit-learn で学習したモデルを ONNX 形式で出力して、他のプログラミング言語 (ここでは JavaScirpt) で推論を実行する例も学習します。
キーワード
Git/GitHub、Python、JavaScript、FastAPI、scikit-learn、MNIST、ONNX、Render
更新履歴
2023/05/12「(補足)asdf のセットアップについて」を追加
2023/05/24「(追記)poetry add コマンドのエラーについて('HTTPResponse' object has no attribute 'strict')」を追加