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 スクリプトを美しく便利な機械学習アプリに簡単に変換するのに役立つことを願っています。

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

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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

RPAは人工知能の究極の発展方向でしょうか?

ロボティック・プロセス・オートメーション (RPA) は、単調で反復的なタスクを排除するのでしょうか...

...

人工知能の発展に重要な4つの技術

[[423611]] AI を搭載したデバイスやテクノロジーはすでに私たちの生活の大きな部分を占めて...

...

Google Brain の公開: アルゴリズムのエラー修正と AI バイアスの解決に重点を置く

テンセントテクノロジーニュース、1月29日、海外メディアの報道によると、グーグルCEOサンダー・ピチ...

人気のSoraはDiTを最前線に押し上げ、GitHubのホットリストにも載りました。新しいバージョンのSiTに進化しました。

リリースされてから1週間近く経ちますが、OpenAIの動画生成モデルSoraの衝撃はまだまだ続きます...

機械学習による物流とサプライチェーン管理の変革

機械学習は、リアルタイムの需要予測、持続可能な物流、高度な予測分析など、大きなメリットをもたらします...

目に見えないものが見えるようになる!メタマテリアルとAIが融合し音像を解読

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

ブラックボックスモデルを突破せよ! MITの中国人博士がモデル解釈のための新しいツールExSumをリリース

近年の人工知能の急速な発展は主にニューラルネットワークモデルによるものですが、モデルが大規模かつ複雑...

ロボットインテリジェント把持システム:いくつかの主流ソリューション

ロボット学習における典型的な問題の 1 つは、分類、つまり乱雑に積み重なったアイテムの山から目的のア...

...

ブロックチェーン + AI、完璧な組み合わせですね?

「この二つの技は同じ名前だが、技の内容は大きく異なる。一つは全真剣術の強力な技で、もう一つは玉女剣...

ロシアのロボット宇宙飛行士が3Dプリントされた骨組織サンプルを持って地球に帰還

ロシア衛星ネットワークによると、最近、ロシアの「3Dバイオプリンティングソリューションズ」社のマネー...

キャッシュ除去アルゴリズムLRU実装原理についてお話しましょう

[[315530]] 01. はじめにデータのクエリ速度を向上させるために、キャッシュがよく使用され...