PythonコードからAPPまで、必要なのは小さなツールだけ:GitHubには3,000以上のスターがある

PythonコードからAPPまで、必要なのは小さなツールだけ:GitHubには3,000以上のスターがある

機械学習開発者にとってアプリを構築するのはどれくらい難しいのでしょうか?実際、Python コードを知っていれば、残りの作業はツールに任せることができます。最近、Streamlit の共同設立者である Adrien Treuille 氏が、自身が開発した機械学習ツール開発フレームワークである Streamlit を紹介する記事を書きました。Streamlit は、機械学習エンジニア向けに特別に作成された無料のオープンソース アプリ構築フレームワークです。このツールは、Python コードを記述しながらアプリケーションをリアルタイムで更新できます。現在、Streamlit の GitHub スター数は 3,400 を超えており、medim での人気は 9,000 を超えています。

[[280905]]
 

Streamlit ウェブサイト: https://streamlit.io/
GitHub アドレス: https://github.com/streamlit/streamlit/

300 行の Python コードで、ニューラル ネットワーク推論をリアルタイムで実行するセマンティック検索エンジンをプログラムします。

私の経験では、重要な機械学習プロジェクトはすべて、バグが多く、メンテナンスが難しい内部ツールの組み合わせを使用して構築されてきました。これらのツールは通常、Jupyter Notebook や Flask アプリで記述されており、デプロイが難しく、クライアント サーバー アーキテクチャ (C/S アーキテクチャ) に関する推論が必要であり、Tensorflow GPU セッションなどの機械学習コンポーネントとうまく統合されません。

私がこの種のツールを初めて目にしたのはカーネギーメロン大学で、その後はバークレー、Google X、Zoox でも目にしました。これらのツールは、センサー キャリブレーション ツール、シミュレーション比較アプリ、LIDAR アライメント アプリ、シーン再構築ツールなど、小さな Jupyter ノートブックとして始まりました。

ツールの重要性が増すと、プロジェクト マネージャーが関与するようになり、プロセスと要件が増加し続けます。これらの個々のプロジェクトはコード スクリプトになり、徐々に長期にわたるメンテナンスの悪夢へと発展していきました...

機械学習エンジニアによるアプリ作成プロセス(アドホック)。

そして、ツールが重要な場合は、ツール チームを編成します。彼らは、ラップトップに宣言型フレームワークのステッカーを貼りながら、Vue と React を流暢に書いています。設計プロセスは次のとおりです。

ツール チームがアプリを構築するプロセス (クリーンで整然と、ゼロから)。

これは本当に素晴らしいです!しかし、これらすべてのツールには、毎週のように新しい機能がリリースされるような新しい機能が必要です。一方、ツール チームは一度に 10 件以上のプロジェクトをサポートしている可能性があり、「2 か月以内にツールを更新します」と言うことがあります。

私たちは、Flask アプリをデプロイし、HTML、CSS、JavaScript を記述し、ノートブックからスタイルシートまですべてをバージョン管理するという、独自のツールを構築するプロセスに戻りました。 Google X の友人 Thiago Teixeira と私は、ツールの構築が Python スクリプトを書くのと同じくらい簡単だったらどうなるだろうと考え始めました。

私たちは、機械学習エンジニアがツールチームなしで優れたアプリを構築できるようにしたいと考えています。これらの内部ツールは、機械学習ワークフローの副産物として自然に生まれるはずです。このようなツールを書くのは、ニューラル ネットワークをトレーニングしたり、Jupyter でアドホック分析を実行したりするのと同じような感覚です。同時に、強力なアプリ フレームワークの柔軟性を維持したいと考えました。私たちはエンジニアが誇りに思える素晴らしいツールを作りたいと考えています。

私たちが望むアプリ構築プロセスは次のとおりです。

アプリ構築プロセスを合理化します。

私たちは、Uber、Twitter、Stitch Fix、Dropbox などのエンジニアと協力し、機械学習エンジニア向けの無料のオープンソース アプリ フレームワークである Streamlit を 1 年かけて作成しました。どのようなプロトタイプであっても、Streamlit の基本原理はよりシンプルで純粋です。

Streamlit の基本原則は次のとおりです。

1. Pythonを採用する

Streamlit アプリは、隠れた状態がなく、上から下まで完全に実行されるスクリプトです。関数呼び出しを使用してコードを操作できます。 Python スクリプトを書くことができれば、Streamlit アプリを書くこともできます。たとえば、次のように画面に書き込むことができます。
 import streamlit as stst.write( 'Hello, world!' )

2. ウィジェットを変数として扱う

Streamlit にはコールバックはありません。各インタラクションでは、スクリプトを上から下へ単純に再実行します。このアプローチにより、非常にクリーンなコードが作成されます。
 import streamlit as stx = st.slider( 'x' ) 
st.write(x, 'squared is' , x * x)  

3 行のコードで書かれた Streamlit インタラクティブ アプリ。

3. データと計算を再利用する

大量のデータをダウンロードしたり、複雑な計算を実行したりしたい場合はどうすればよいでしょうか?重要なのは、複数の実行にわたって情報を安全に再利用することです。 Streamlit は、Streamlit アプリが情報を簡単かつ安全に再利用できるようにする、永続的でデフォルトで不変のデータ ストレージとして機能するキャッシュ プリミティブを導入します。たとえば、次のコードは、Udacity 自動運転車プロジェクト (https://github.com/udacity/self-driving-car) からデータを 1 回だけダウンロードし、シンプルで高速なアプリを取得できます。

Streamlit の複数回の実行間でデータを保存するには、st.cache を使用します。コードの実行手順については、https://gist.github.com/treuille/c633dc8bc86efaa98eb8abe76478aa81#gistcomment-3041475 を参照してください。

上記の st.cache の例を実行したときの出力。

簡単に言うと、Streamlit のワークフローは次のようになります。

  1. 各ユーザー操作では、スクリプト全体を最初から実行する必要があります。
  2. Streamlit はウィジェットの状態に基づいて各変数に最新の値を割り当てます。
  3. キャッシュにより、Streamlit はデータと計算を再利用できるようになります。

次の図に示すように:

ユーザー イベントにより、Streamlit はスクリプトを最初から再実行します。実行間ではキャッシュのみが保持されます。

興味があればすぐに試せます!次の行を実行するだけです:

Web ブラウザが自動的に開き、ローカルの Streamlit アプリにリダイレクトされます。ブラウザ ウィンドウが表示されない場合は、リンクをクリックしてください。

これらのアイデアはシンプルですが効果的であり、Streamlit を使用しても機能豊富で便利なアプリを作成できるという利点があります。 Zoox と Google X に在籍していたとき、自動運転車プロジェクトが、パフォーマンスを比較するために画像データ上でモデルを実行するなど、検索して理解する必要があるギガバイト単位の視覚データにまで拡大していく様子を見てきました。私がこれまでに見た自動運転車プロジェクトでは、すべてチーム全体がこのツールの開発に取り組んでいました。

Streamlit でこのようなツールを構築するのは非常に簡単です。次の Streamlit デモでは、Udacity の自動運転車の写真データセット全体に対してセマンティック検索を実行し、人間が注釈を付けたグラウンド トゥルース ラベルを視覚化し、アプリ内で完全なニューラル ネットワーク (YOLO) をリアルタイムで実行します。

この Streamlit デモは、セマンティック ビジュアル検索とインタラクティブ ニューラル ネットワーク推論を 300 行のコードに組み合わせています。

アプリ全体の Python コードは 300 行のみで、そのほとんどは機械学習コードです。実際、アプリ全体で Streamlit コールは 23 件しかありません。以下を試すことができます:

機械学習チームとプロジェクトに携わる中で、私たちはこれらのシンプルなアイデアが多くの重要なメリットをもたらすことに気付きました。

Streamlit アプリは純粋な Python ファイルです。お好みのエディターとデバッガーを使用できます。


VSCode エディター (左) と Chrome (右) は、Streamlit を使用してアプリを構築するための私のお気に入りのエディターです。

純粋な Python コードは、コミット、プル リクエスト、問題、コメントなど、Git などのソース コード管理ソフトウェアとシームレスに接続できます。 Streamlit の基盤となる言語は Python なので、これらの共同作業ツールを無料で利用できます。

Streamlit アプリは Python スクリプトなので、Git を使用してバージョン管理を簡単に実行できます。

Streamlit は即時モードのプログラミング環境を提供します。 Streamlit がソース ファイルの変更を検出した場合は、[常に再実行] をクリックするだけです。

リアルタイムプログラミングを確実に行うには、「常に再実行」をクリックします。

キャッシュにより計算プロセスが簡素化されます。キャッシュ関数のチェーンにより、効率的な計算プロセスが自動的に作成されます。次のコードを試すことができます:

Streamlit での簡単な計算プロセス。上記のコードを実行し、手順を確認してください: https://gist.github.com/treuille/ac7755eb37c63a78fac7dfef89f3517e#gistcomment-3041436。

基本的に、このプロセスには、メタデータの読み込みからサマリーの作成までのステップ (load_metadata → create_summary) が含まれます。スクリプトが実行されるたびに、Streamlit はフローのサブセットのみを再計算する必要があります。

アプリの実行可能性を確保するために、Streamlit は UI を更新するために必要なものだけを計算します。

Streamlit は GPU 上で動作します。 Streamlit は、マシンレベルのプリミティブ (TensorFlow、PyTorch など) に直接アクセスし、これらのライブラリを補完できます。たとえば、次のデモでは、Streamlit のキャッシュに NVIDIA PGGAN 全体が保存されます。このアプローチにより、ユーザーが左のスライダーを更新したときに、アプリはほぼ瞬時に推論を実行できます。

この Streamlit アプリは、TL-GAN を使用した NVIDIA PGGAN の効果を示します。

Streamlit は、独自の Web アプリではなく、無料のオープン ソース ライブラリです。事前にご連絡いただくことなく、Streamlit アプリをローカルに展開できます。インターネットに接続せずに、ラップトップ上で Streamlit をローカルに実行することもできます。さらに、既存のプロジェクトでも Streamlit を段階的に使用できます。

Streamlit を段階的に使用するいくつかの方法。

上記は、Streamlit の機能のほんの一部です。最も興味深いのは、これらのプリミティブによって複雑なアプリを簡単に形成できるにもかかわらず、単純なスクリプトのように見えることです。これにはアーキテクチャの動作原理と機能が含まれますが、この記事では説明しません。

Streamlit コンポーネントの図。

私たちは Streamlit をコミュニティと共有できることを嬉しく思っており、Streamlit が Python スクリプトを美しく便利な機械学習アプリに簡単に変換するのに役立つことを願っています。

<<:  北京地下鉄は顔認識技術を使用して機密のセキュリティチェックを実施する予定

>>:  誇張ではなく、絶対にそうはならない

ブログ    
ブログ    

推薦する

ジェフ・ディーンらの新しい研究:言語モデルを別の視点から見る:規模が十分でなければ発見されない

近年、言語モデルは自然言語処理 (NLP) に革命的な影響を与えています。パラメータなどの言語モデル...

文字列マッチングのためのKMPアルゴリズム

文字列の照合は、コンピューターの基本的なタスクの 1 つです。たとえば、「BBC ABCDAB AB...

...

自社開発のAIチップのトレンドが始まっており、テクノロジー依存からの脱却は始まりに過ぎない

大規模な AI モデルへの熱狂に後押しされ、AI チップの分野ではついに百家争鳴の時代が到来しました...

2021年世界人工知能会議の結論によって、どのような新しいトレンドが明らかになるのでしょうか?

7月10日、2021年世界人工知能会議(WAIC)が上海で閉幕した。 2011年以来、ビッグデータ...

ヤン・ルカン:私は畳み込みニューラルネットワークの父ですが、その特許にも縛られてきました

[[409963]]学術研究の特許所有権は、研究者の研究成果を保護し、保証するものであるため、研究者...

機械学習がソーシャルメディアのプロフィールから明らかにする5つの秘密

[51CTO.com クイック翻訳] 現在、大手データ企業は機械学習技術を積極的に活用し、人間社会に...

PaddlePaddle 中国ツアー - スマート製造業を支援するゼロ閾値 AI 革新的アプリケーション

製造業は急速にインテリジェント化の新たな段階に入りつつあり、ますます多くの製造企業が「インテリジェン...

...

...

EUはAI規制のルールを強化する計画で、最も厳しい法案を発表

欧州委員会は4月21日にAIに関する法案草案を正式に発表した。 81ページに及ぶ草案では、EUは社会...

クラウドネイティブの運用とメンテナンスを簡素化する方法

クラウド コンピューティングは、集中性、効率性、弾力性、ビジネスの俊敏性をもたらしましたが、クラウド...

GoogleのAIチップのアップグレード:大規模モデルと生成AIをターゲットとし、主流のディープラーニングフレームワークを統合

Google は、AI を使用して最適化された新世代の人工知能とインフラストラクチャの開発をリードす...

リアルすぎて怖い! Gen-2 の壮大なアップデート、手作りの 4K ハリウッド大作、Midjourney の夢の連携、CEO: クリエイティブ ソフトウェアの時代は終わった

動画生成AIが狂った!ランウェイとミッドジャーニーは、それぞれが究極の技を駆使して激しい戦いを繰り広...