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

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

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

ブログ    
ブログ    

推薦する

...

ネットワーク管理における人工知能の役割

AI の主な利点の 1 つは、従業員を日常的な単純作業から解放することです。 AI は、ネットワーク...

SEO技術における人工知能の応用

[[188760]] SEO はますます「難しく」なっていると誰もが感じているはずです。すでに、SE...

自動化の将来はどうなるのでしょうか?

自動化ほど製造業界に大きな影響を与え、破壊的な影響を与えたテクノロジーはほとんどありません。自動化の...

AIが人間を支配するのではないかと心配ですか?人工知能の「怖さ」をどう克服するか?

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

レノボ、HPC+AI によるアルゴリズムの世界を構築する初のハイブリッド インテリジェンス アカデミック カンファレンスに初参加

8月25日〜26日、第1回中国認知コンピューティングおよびハイブリッドインテリジェンス学術会議が西安...

会話型AIとその技術コンポーネントの機能を探る

今日では、自動化、人工知能 (AI)、自然言語処理 (NLP) の進歩により、コスト効率の高いデジタ...

次世代交通におけるAI世代の影響

次世代の交通手段は、電子機器、持続可能性、経験を設計の中核としており、Gen AI は、想定される次...

...

IDC: 企業の AI ソリューションへの支出は 2021 年に 3,420 億ドルに達すると予想

[[417110]] IDCの世界人工知能市場に関する最新の半期追跡レポートによると、世界のAI市場...

感染症予防・抑制において、サービスロボットは「必須」なのか?

人工知能の概念の普及に伴い、サービスロボット業界も近年ますます注目を集めています。資本市場のサービス...

人工知能は匿名のチェスプレイヤーの身元を確認でき、プライバシーの脅威となる

人工知能技術はすでに音声や手書きを通じて個人の身元を確認することができます。現在、人工知能アルゴリズ...

すべてを圧縮するだけです! OpenAIの主任科学者イリヤ・スツケバーが教師なし学習に注目

最近、OpenAI の主任科学者 Ilya Sutskever 氏が、計算理論の研究に重点を置く S...

物流の新たな勢いを刺激するGewutaiは、Anjiのインテリジェントマシンビジョンのスマート化を支援します

[[417396]]上海にある新エネルギー車を製造する全自動立体倉庫では、受注から製品出荷までの時間...

GACの第2世代Trumpchi GS4が発売され、WeChat車載バージョンは安全で効率的な車内通信を実現

11月15日、WeChat車載バージョンを搭載したGACの第2世代Trumpchi GS4が発売され...