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

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

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

ブログ    
ブログ    

推薦する

Google の AI 覇権を解決する別の方法は?開発プラットフォームのエコシステム包囲

編集者注:この記事はWeChatパブリックアカウント「脑极体」(ID:unity007)からのもので...

中国語と英語で最大のAIモデルの世界記録が樹立され、大規模モデル競争の新たなステージが到来

[[429193]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

...

人工知能とサイバーセキュリティは諸刃の剣

[[379153]] [51CTO.com クイック翻訳] 研究によると、人工知能技術はさまざまな業...

AES暗号化アルゴリズムの強度が弱まった

この脆弱性は、広範囲にわたる暗号分析を行った3つの大学とマイクロソフトの研究者によって発見されたが、...

...

機械学習の導入を容易にする 6 つのツール

「機械学習」という言葉には魔法のような雰囲気があります。機械学習は一般に一般の人々に受け入れられてい...

...

2021年の主なAIトレンド:AIチップスタートアップのM&Aの可能性

人工知能 (AI) と機械学習は、テクノロジーの意思決定者、業界の専門家、投資家にとって引き続き注目...

今後 20 年間で人工知能は何ができるでしょうか?

人工知能は長年にわたって世界を支配しており、さまざまな分野における主要な問題が AI を使用して解決...

エンタープライズITがAIを実際に適用できる場所

人工知能は、さまざまなエンタープライズ システム、特に分析や異常検出のユース ケースで実際に応用され...

AIが悪事を働いている?人工知能における倫理について考えなければなりません!

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

データとAIが現代の人事慣行をどのように変えているのか

今日の人事チームにはバランスを取ることが求められています。一方では、データと AI の力を活用してビ...

人工知能とビッグデータは私たちの生活をこのように変えるだろう

現在、知能ロボットが急速に発展していますが、機械を知能化するための鍵は実はビッグデータです。ビッグデ...

クローズドループへ! DriveMLM: LLM と自動運転行動計画の完璧な組み合わせ!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...