ローカル AI を利用した Windows アプリケーションの開発
Summary
TLDRこのビデオスクリプトでは、日本マイクロソフトのパートナーソリューションアーキテクトが、ローカル環境のWindows上でAIモデルを活用し、アプリケーションに実装可能な機能を紹介しています。AIの進化により、言語生成モデルやマルチモーダル化された技術が日常的に利用できるようになり、コンピューティングパワーが必要なAIモデルのローカル動作が可能になりました。スライドとデモを交え、テキスト認識、音声認識、翻訳、要約などの機能を実演し、AIがユーザーエクスペリエンスや業務効率化に与える影響を示しました。
Takeaways
- 🌐 このセッションでは、Windows上のローカル環境でAIモデルを使用してアプリケーションに実装できる機能について紹介しています。
- 🚀 AIの進化は目まぐるしく、かつては想像もできなかった機能が日常的に使えるようになっています。
- 🔍 言語生成モデルやマルチモーダル化されたAIは、画像や音声認識など、さまざまな機能を備えています。
- 💻 AIモデルを動作させるには大きなコンピューティングパワーが必要なため、一般的にはクラウド上で動作させています。
- 🌱 しかし最近、SLM(Small Language Model)と呼ばれるコンパクトでローカルで動作できる言語モデルが登場しています。
- 🛠️ Windowsローカルで動作するAIは珍しくなく、多くのパートナーやMicrosoft製品で活用されています。
- 📈 AIの利用用途は多岐にわたり、チャットボットやユーザーエクスペリエンスの向上、データ入力の自動化などがあります。
- 📱 特定のアプリケーション例として、Be My Eyesは視力に問題がある人を支援するアクセシビリティアプリケーションです。
- 🎨 Davinci Resolve StudioのMagic Maskやdjay proなどのアプリケーションでは、AIを活用してパフォーマンスや機能を向上させています。
- 🔧 Windows Copilot Libraryを介して、モデルを追加することなくAI機能をアプリケーションに統合できるようになりました。
- 🔄 言語モデルは、テキストの要約やオートコンプリート、RAG(Retrieval Argumented Generation)など、高度な機能を提供しています。
Q & A
物江さんはどのような職業をしていますか?
-物江さんは日本マイクロソフトでパートナーソリューションアーキテクトをしています。
セッションの目的は何ですか?
-セッションの目的は、ローカル環境のWindows上でAIのモデルを使用してアプリケーションに実装できる機能を紹介することです。
AIの進化が日常的にツールとして使える状態に達したと言及しましたが、その具体的な例は何ですか?
-言語生成モデルやマルチモーダル化されたAIモデルが挙げられます。これらは画像や音声認識を可能にし、一般的な使用に耐えるようになりました。
AIモデルを動作させるために必要なものは何ですか?
-AIモデルを動作させるには、大きなコンピューティングパワーが必要です。
SLMとは何を指し、どのような特徴がありますか?
-SLMとはSmall Language Modelの略で、サイズが小さくても動作させるのに十分な性能を持ち、強力なマシンパワーを必要としない言語モデルを指します。
Windowsローカルで動作するAIの利用用途には何がありますか?
-チャットボットを使用したアシスタントやデータ入力などの日常的なタスクの自動化が挙げられます。
Be My Eyesアプリケーションはどのような機能を提供していますか?
-Be My Eyesアプリケーションはアクセシビリティを提供し、LLMAを使用して視覚に障害のある人々がグラフや写真、スクリーンショットなどを実際に見るのを助けています。
ローカルでAIモデルを実行する利点は何ですか?
-ローカルでAIモデルを実行する利点として、遅延が少なくリアルタイムで応答が得られることや、ネットワークに接続する必要がないためプライバシーが守られることが挙げられます。
Windows Copilot Libraryとは何ですか?
-Windows Copilot Libraryは、アプリケーションにAIの機能を追加するためにモデルを入手する必要がないAPIのセットです。製品と一部として出荷されるAIモデルをアプリケーションの実行中にAPIを呼び出して使用できます。
デモで使用されたメモアプリは何で作られていますか?
-デモで使用されたメモアプリは.NET 8のC#とWinUI 3で作られており、Phi-3 Whisper Embeddingsを使用してローカルで動作するように作られています。
テキスト認識のAPIがリリースされていない状況ですが、デモでどのように対応していますか?
-テキスト認識のAPIがリリースされていないため、デモではコメントアウトされているコードを参考に、開発者が作ったデモ動画を利用して実行の様子を示しました。
機械学習のモデルとはどのようなものですか?
-機械学習のモデルはデータから学習する数学的なプログラムであり、履歴データに基づいて何かが起こりそうな時期を予測したり、オブジェクトやビデオ、オーディオ認識、書き起こしなどを行うことができます。
RAGはどのような仕組みを持っていますか?
-RAGはRetrieval Argumented Generationの略で、AIに問い合わせをした際に、モデルが持っている汎用的なデータではなく、あらかじめ用意しておいた独自のデータの内容を検索して回答させる方法です。
ファインチューニングとは何を意味していますか?
-ファインチューニングは、SLMやLLMなどの言語モデルを特定のタスクに合わせてさらに学習させ、モデルに学習させられたデータを追加することで、そのタスクに対してモデルの性能を向上させるプロセスを指します。
AIの利用にはどのような責任があるとマイクロソフトは考えていますか?
-マイクロソフトではAIの利用には大きな責任があると考えており、モデルを構築または変更する際には徹底的なレビューを行い、利用者に害を及ばないように複数の原則に従順であることが求められています。
Windows上のAIサンプルギャラリーとは何ですか?
-Windows上のAIサンプルギャラリーは、GitHub上のサンプルアプリケーションのリンクが集められた場所で、オーディオエディターやメモアプリなど、多種多様な有益なサンプルコードが公開されています。
Outlines
🤖 AIモデルとWindowsアプリケーションの融合
物江さんが日本マイクロソフトのパートナーソリューションアーキテクトとして、ローカル環境のWindows上のAIモデルをアプリケーションに実装し、その機能を紹介します。近年のAIの進化により、言語生成モデルやマルチモーダル化されたAIが日常的に使用できるようになりました。しかし、AIモデルを動作させるには大きなコンピューティングパワーが必要なため、一般的な使用はクラウド上で行われています。最近では、SLM(サイズが小さくても動作可能な言語モデル)が登場し、ローカルでAIを活用することが可能になりました。多くのパートナーがWindowsローカルで動作するAIを利用しており、Microsoft製品もその利用をしています。AIの利用用途は多岐にわたり、特にチャットボットを用いたユーザーエクスペリエンスの向上やデータ入力の自動化が中心となっています。
🌐 ローカルAI実行の利点とWindowsでの活用
ローカルでAIモデルを実行する利点として、遅延が少なくリアルタイムの応答が可能であること、ネットワークに接続する必要がなくオフラインでも実行できること、プライバシーが守られることが挙げられます。また、クラウドでの推論に課金されることもありません。WindowsではローカルAIモデルが使用されており、Recall機能やWindows Studio Effectsなどの新しい機能が発表されています。さらに、ゲーム開発者向けにはAutomatic Super Resolutionという新機能も紹介されています。Windows Copilot LibraryのAPIを使えば、モデルを追加することなくAIをアプリケーションに活用することが可能です。
🛠️ Windows App SDK 1.6 Experimental 2のOCR API
Windows App SDK 1.6 Experimental 2に含まれるOCR APIについて説明しています。このAPIを使用すると、画像内のテキストを認識することができますが、まだAPIがリリースされていないため、デモはコメントアウトされています。しかし、開発者が作ったデモ動画を見ることで、OCR機能の実装方法を理解することができます。OCR機能はSnipping ToolなどのWindowsのツールでも使用されています。
🔍 AIと機械学習モデルの概要
機械学習モデルの基礎について説明しています。モデルはデータから学習する数学的プログラムであり、履歴データに基づいて予測や認識、書き起こしなどを行うことができます。デモでは、Whisperモデルを使用して動画の文字起こしを行う方法を紹介しています。Whisperは音声認識に特化したモデルで、GitHubから入手し、ONNXに変換して使用します。
🌐 AIモデルの入手と動作化
AIモデルを入手し、動作させる方法について説明しています。Hugging Faceのようなコミュニティがモデルを公開しており、誰でもダウンロードして推論可以尝试できます。デバイス上でAIモデルを動作させるには、フレームワーク、ハードウェア、API、ローカルアクセラレーターなどが必要です。特にDirectMLはDirectX 12対応GPUであれば動作するため、広範なデバイスで使用可能です。
🔍 セマンティック検索とエンベディングモデル
セマンティック検索とエンベディングモデルについて紹介しています。エンベディングはコンテンツを多次元空間に表現し、言葉同士の関係性を位置づけ、グループ化や分類に効果的です。デモでは、SemanticIndex.csを使用して、アプリケーション内のコンテンツをベクトル化し、検索キーワードに応じて近くのベクターデータを検索して表示する方法を紹介しています。
📝 言語モデルの応用とデモ
言語モデルの応用について説明し、デモを通じて実際の動作を紹介しています。言語モデルは私たちの言語や意味を理解しており、テキストを理解し、推論したり自動生成することが可能です。デモでは、Phi-3 Miniを使用して、テキストの要約やオートコンプリートを行う方法を紹介しています。
📚 SLMとLLMの違いとRAGの紹介
SLM(Small Language Model)とLLM(Large Language Model)の違いについて説明しています。SLMは小さなモデルであり、より学習が可能です。一方、LLMは巨大なモデルで、広い知識を持っています。RAG(Retrieval Argumented Generation)は、AIに問い合わせに対する回答で、モデルが持っている汎用的なデータだけでなく、独自のデータを検索して回答させる方法を紹介しています。
🛠️ モデルのファインチューニングと責任あるAIの開発
モデルのファインチューニングと責任あるAIの開発について語ています。ファインチューニングは、モデルを特定のタスクに合わせて微調整することを指し、Azure AI StudioやAI Toolkit for VS Codeなどのツールを使用して行うことができます。マイクロソフトでは、AIの利用には責任が伴うとされ、徹底的なレビューを行い、利用者に害を及ばないように原則を遵守しています。
📚 AIサンプルギャラリーとBuildセッションのリンク
最後に、Windows上のAIサンプルギャラリーと、Buildのセッションのリンクを紹介しています。AIサンプルギャラリーには、オーディオエディターやメモアプリなど、GitHub上の様々なサンプルアプリケーションのリンクが公開されており、誰でもビルドしてAIの機能を体験できます。また、Buildのセッションのリンクでは、Phiシリーズや.NET関連の深い内容について学ぶことができます。
Mindmap
Keywords
💡マイクロソフト
💡AIモデル
💡マルチモーダル
💡コンピューティングパワー
💡クラウド
💡SLM
💡Windowsアプリケーション
💡チャットボット
💡データ入力
💡プライバシー
Highlights
マイクロソフトのパートナーソリューションアーキテクト物江が、Windows上のローカルAIモデルを利用したアプリケーション機能の実装を紹介。
AIの進化により、言語生成モデルやマルチモーダル化が進み、画像や音声認識が可能に。
AIモデルを動作させるには大きなコンピューティングパワーが必要とされてきた。
SLM(Small Language Model)の登場により、小型でローカル動作可能な言語モデルが実現。
WindowsローカルAIの活用事例として、チャットボットやデータ入力支援が挙げられる。
Be My Eyesアプリケーションが視力制限のある人々にグラフや写真の閲覧支援を提供。
Davinci Resolve StudioのMagic Mask機能がNPU環境で3倍の速さで実行可能。
djay proアプリケーションがNPUを活用して音楽ミキシングの機能を向上。
ローカルAIモデルの利点として、遅延が少なくリアルタイムでの応答が可能であることが挙げられる。
ローカルAIモデルはオフラインで動作し、プライバシーが守られる利点がある。
Windows Copilot Libraryが提供するAPIセットでモデルを追加不要にAI機能を活用可能。
テキスト認識APIとPhi Silica言語モデルAPIが近日中に提供予定。
Windows Studio EffectsがNPUアクセラレーションを利用してカメラやマイクの機能を向上。
Automatic Super Resolution機能がゲームの解像度を自動的に向上させる。
メモアプリがPhi-3 Whisper Embeddingsを利用してローカルで動作し、メディアファイルの音声認識も可能に。
デモで使用したPCスペックがSurface Laptop5、i7 2.7GHz、32GBメモリ。
OCR機能のデモンストレーションが行われ、Windows App SDKの1.6 Experimental2で実現予定。
機械学習モデルの説明と、AIが履歴データからパターンを学習するプロセスが解説される。
Whisperモデルを使用した動画の文字起こしと翻訳のデモンストレーション。
Hugging FaceコミュニティでAIモデルの共有と試用が可能に。
DirectMLが提供する幅広いGPU対応とONNXモデルの動作化が解説される。
エンベディングモデルがコンテンツを多次元空間に表現し、検索やグループ化に効果的な方法であることが紹介。
言語モデルの機能として、テキストの要約やオートコンプリートがデモンストレーションされる。
SLMとLLMの比較と、RAG(Retrieval Argumented Generation)手法の紹介。
ファインチューニング手法がモデルの特定のタスクへの適応を可能に。
AI Toolkit for VS Codeがローカルでのモデルファインチューニングをサポート。
マイクロソフトがAIの責任ある利用を重視し、徹底的なレビューを行っていることの強調。
Windows上のAIサンプルギャラリーが公開され、サンプルアプリケーションが提供されている。
Buildセッションのリンクが提供され、深い内容については参照が可能に。
Transcripts
皆さん こんにちは 日本マイクロソフトで
パートナーソリューションアーキテクトをしております 物江と申します
このセッションでは ローカル環境のWindows上の
AIのモデルを使用して
どのような機能をアプリケーションに実装できるか
というのを紹介していきたいと思います
昨今のAIの進化は非常に目まぐるしいものがありまして
数年前には想像の域を出なかったようなものが
今では日常的にツールとして使える状態になっています
言語生成モデルも当然として
これがマルチモーダル化されておりまして
画像でありますとか音声認識も可能になっています
とはいえ こういったAIモデルを動作させるには
非常に大きなコンピューティングパワーが必要です
そうした状況もあって
一般の方々が生成AIを利用するには
ネットワークを介してクラウド上で動作させるというのが
一般的な使われ方になっています
しかし最近はSLMと呼ばれますサイズが小さくて
それほど強力なマシンパワーを必要としなくても
動作させることのできる言語モデルが出てきています
このセッションでは
それらローカルで動作するAIモデルを使用して
Windowsアプリケーションにどのような機能を
実装できるか紹介していきたいと思います
Windowsローカルで動作するAI自体は
そう珍しいものではないんですね
実は多くのパートナー様が
Windowsローカルで動作するAIを利用しておりまして
もちろんMicrosoft製品自体も利用しております
AIの利用用途は様々なんですけども
多くはチャットボットを使用したアシスタントのような
ユーザーエクスペリエンスの向上でありますとか
あとはデータ入力などの日常的なタスクを
人間から引き継ぐことに使われていることが多いようですね
例えばこのBe My Eyesというアプリケーションなんですけども
このアプリケーションはアクセシビリティを提供するもので
LLMAを使用して目が見えない人や視力の弱い人が
グラフ 写真 スクリーンショットなどを
実際に見るのを助けてくれるものになっています
またTeamsの通話などの照明環境を設定する手助けも
してくれるということですね
そして今セッションをご覧になっている方々の中にも
使われている方がいるかと思うんですけども
ビデオ編集ソフトのDavinci Resolveですね
その有償版のDavinci Resolve Studioの方の
Magic Maskという機能があるんですけども
これはNPUのある環境で動作させると
3倍の速さで実行することができるようになっているそうです
そしてもう一つですね
こちらも使っている方がいらっしゃるかもしれませんが
djay proという名前のアプリケーションですね
これは音楽をミキシングするための非常に人気のある
アプリケーションなんですけども
こちらは最新のCopilot+PCでNPUを使って
ニューラルミックスなどオーディオの さまざまな部分を分離して
クールなものを作ったりBPMのようなものを見つけて
トラックを簡単にミックスできるようになっています
こういったアプリケーションというのは
AIを利用するためのさまざまな技術要素を
利用しているわけなんですけども
本日このセッションで紹介する技術要素は
こちらのスライドにあるものになります
もちろんこれら以外でもAIを利用するための
技術要素はたくさんあるんですけれども
このセッションではこのスライドにある要素に
焦点を当てて紹介していきます
とはいえ時間の関係上これら個々について
深く詳しく説明することはできないんですけれども
それがどういったものでどのように動作するかは
ご理解いただけるかと思います
まず最初にアプリケーションにAIの機能を
追加する方法についてです
現在アプリケーションにAIの機能を追加する
方法というのはたくさんあります
クラウド上にはOpenAIでありますとか
Azure OpenAI ServiceといったAIサービスが
ホストされておりまして
これらの機能をAPIとして
呼び出すことはもちろんクラウドサービス
例えばAzureにはモデルを作成したり
モデルを微調整するためのさまざまな ツールも用意されています
このようにLLMでありますとか高度な サービスを利用するには
現在もまだオンライン上のAIサービスを 選択する必要があります
しかし近年ではAIモデルの効率化が 著しくなってきておりまして
以前であれば大きなコンピューティングパワーが
なければできなかった処理が
一般的な使用されるPCのスペックでも
実行できるようになっています
例えば先ほどお話したSLMとか文書での 会話のもちろん
Buildで発表になりました
Phi-3 Visionというものがあるんですけども
これはSLMなんですけども
マルチモーダルで画像も認識できます
こういった高機能なものが手元で動かせる
時代になりつつあるんですね
ということでこのセッションのデモは全て
私が今プレゼンテーションしている
PCのローカルで動作するもので行って いきたいと思います
ではローカルでモデルを実行する メリットについて
紹介しておきましょう
まず大きな特徴として遅延が少ない というのがありますよね
問い合わせして応答を受け取るまで 何度もネットワークを介して
クラウドとやり取りする必要はありません
モデルとのやり取りは基本的にはメモリを介して
瞬時に行われますので
遅延のないほぼリアルタイムの体験を 提供することができます
ネットワークに接続する必要がないので
完全にオフラインで実行することができます
ネットワークケーブルはもちろん
Wi-Fiの電波通信量を一切気にする 必要はありません
当然ネットワークインターフェースが ない機器でも
使用することができます
データをクラウドサービスに送信する 必要がないため
プライバシーが守られますし
そもそもネットワークに接続しなければ
通信による情報漏洩リスクなんかも なくすことができます
クラウド上での推論を行わないので
その推論に対して課金されることもないんですね
また逆に簡単な処理はフロント側のAIで処理して
重い処理をクラウド上で動かすといった
そんな柔軟な使い方もできるようになっています
WindowsでもローカルAIのモデルは 使用されておりまして
Buildで発表されて話題になった
Recall という機能もその一つですね
これはPCがユーザーがそのデバイスで行った
全てのものを覚えていて
元の作業に戻ることができる機能なんですけども
これがまさにそれですね
この機能は新しいCopilot+PCでしか
使用できませんけども
条件を満たしていれば開発者の方は
UserActivity APIを使用して
自分のアプリケーションとリコール機能を
連携させることができるようになっています
そしてNPUが搭載されたマシンで利用できる
その他のエクスペリエンスとしては
Windows Studio Effects というのがあります
Windows Studio Effects では内蔵カメラとマイクに
NPUアクセラレーション機能を適用して
背景ぼかしやアイコンタクト
自動フレーミング 音声フォーカス
ポートレート ライト クリエイティブ フィルターなどなど
さまざまなエフェクトをデバイスのGPUとCPUに
負担をかけずに行えるようになっています
開発者はアプリケーションにコントロールを追加して
Windowsの設定でありますとか
あとクリック設定ですか
そちらでアプリケーションから直接これからの操作を
制御することもできるようになっております
もちろんAPIが提供されておりまして
すでにWhatsAppというアプリケーションでは
こういったものが使用されているということです
またこれも新しいCopilot+PCの話に なってしまうんですけども
ゲーム開発者向けには自動超解像ですね
Automatic Super Resolution と呼ばれる 新機能がありまして
これはゲームの解像度を自動的に上げてくれるもので
ゲーム側では遥かに低い解像度でレンタリング できるようになるわけですね
そうすれば解像度を維持しながら
もしくは同じフレームレートか
遥かに優れたフレームレートで
ゲームを進めることができるんですね
Windows AI関連の開発者向けの
トピックとして非常に印象的だったのは
Windows Copilot Libraryですね
これはアプリケーションにモデルを 追加する必要がない
APIのセットです
アプリケーションでAIを利用する場合は
一般的に目的の機能を持ったAIモデルを入手して
それを使用するんですけれども
そのモデルをわざわざ入手する必要がないんですね
このWindows Copilot Libraryは
アプリケーションの実行中にAPIを呼び出すだけで
オンデバイスMLモデルですね
要するに製品と一部として出荷される
AIモデルがあるんですけれども
それを呼び出すことができます
近々リリースが予定されているAPIが
テキスト認識とPhi Silicaというものですね
テキスト認識はテキストデータを 認識するものではなくて
OCR機能ですね 画像内のテキストを認識して
認識されたテキストの境界と
信頼度スコアを取得したりということができます
もう一つが Phi Silicaのほうですね
これはローカルのPhi Silica言語モデルを使用して
ユーザープロンプトに対して
テキスト応答を生成可能にしてくれるものです
この2つのAPIですね
スライドには近日中に提供予定と書いてますが
まだちょっと提供されていないようです
これはWindows App SDKの1.6 Experimental 2に
含まれているんですけれども
今日現在はまだ Experimental 1しか 出ていない状況です
ただですね USのBuildの最中にですね
開発者が7月ぐらいと言っていたので
そろそろ利用可能になるのではないかな と思っています
その他にもですね ベクトルのエンベディングで ありますとか
あとRAGとかですね テキスト要約の機能 というのがですね
今年後半にリリースが予定されているというものです
つまりモデルの追加をしなくてもですね
こういった機能が手軽に使えるように なるということで
非常に待ち遠しいという感じですね
今回のデモは
アプリでデモを行うんですけれども
それらの機能もですね お見せします
今回のデモではですね
当然そのCopilotライブラリはまだ使えませんので
Phi-3 Miniを使ったチャットボットだとかですね
あとテキスト要約
あとそのエンベディングの別のモデルですね
それを使った そうですね 検索でありますとか
あとそうですね そういったものをですね
お見せしていきたいと思います
こちらがですね 今日様々な技術の 紹介にですね
使用するアプリケーションになっています
どんなアプリケーションかといいますと
メモアプリなんですけれども
当然ただのですね メモアプリじゃないんですね
メモした文章を
セマンティック検索するのはもちろん
メディアファイルの音声認識なんかも 行ってくれます
これは .NET 8のC#と
WinUI 3で作られておりまして
使用しているAIモデルは
Phi-3 Whisper Embeddingsで
完全に ローカルでオフラインで 動作するように 作っております
これは既に
GitHub上で公開されているものなので
後ほど URLをシェアしますので
ぜひ 手元でビルドして
お試しいただければと思います
はい でまず一番最初
すいません あとこちらがですね
今日のデモで使用するPCのスペックなんですけども
まさに今 使っているものです
こちらは 一昨年の年末ぐらいですかね
リリースされたと思うんですけども
Surfaceの Laptop5ですね
使っておりまして
プロセッサーはi7の
2.7GHzでメモリは32GBですね
おそらくまあ
皆様がよく使われているPCと似てるかなと思っています
まあ平均的なものですね 使っています
はい でまずですね
最初デモはテキスト認識なんですけども
こちらは先ほどお話した通り
Windows App SDKの1.6 Experimental2が
まだリリースされていないので
動作しないんですね
でサンプルコードにはですね 記述され…
サンプルにですね コードは記述されているんですけど
コメントアウトされています しかしですね
開発者が作ったデモ動画がありますので
それで 実行の様子をですね
それをご覧いただきたいと思います
はいこんな感じですね
これどういうデモかと言いますと
WhatsAppというですね
アプリケーションにこういう風に
写真で撮ったその用紙が届くんですけども
それを貼り付けるとこのようにですね
オープンしただけでですね
文字が取得できるという
そういった機能が実装されるということですね
はいすいません 画面の切り替えをお願いします
でこれがですね
そのサンプルのコードのとこなんですけども
ご覧いただいて分かる通りですね
こんな風に はい コメントアウト
Until API are availableって書いてあります
ただコードは書いてありますので
どういう処理をしているかというのを
紹介したいと思います
コメントアウト外しますので
Ctrl KのUで外します
はい でまずなんですけども
ご覧の通り モデルを
どこから持ってくるという必要はありません
APIを呼ぶだけなんですね
はじめに何をするかというと
こちらの
textrecognizerのところですね
makeavailableasync() というのを使って
これでインスタンスが作れるかどうか見てるんですね
作れる場合には
このtextrecognizerのところの
createasync() を使ってインスタンスを作ります
そして引数ですね
image というのがあるかと思うんですけども
これを imagebuffer に入れてあげまして
あとは こちらの
textrecognizerのところの
textrecognizerの
recognizertextfromimageasync() というところで
imagebuffer の
image を入れてあげる
そうすると もうここで
変換されたデータが返ってくる感じですね
このコードでは テキストを取り出して いますけれども
中には 先ほどお話したように
テキストの境界でありますとか
あと傾きなんかがですね
取れるようになるということです
これも もう少し待ってますと
実際に使えるようになりますので
ぜひ こちらお試しいただければと思います
スライドに戻してください
すいません はい で こちらの
こういったですね ご覧いただいたような
OCR機能は
Windowsのツールである
Snipping Toolでも
使用されています
Snipping Toolには
テキストアクションという
ボタンがありまして これをクリックしますと
画像内のテキスト認識をして
コピーすることができます
はい あとですね
これまでモデルモデルという話を してきましたので
モデルについての話をしたいと思います
機械学習のモデルとは何かといいますと
基本的には
データから学習する
数学的プログラムですね
この学習がどのように行われるかといいますと
ざっくり言いますと
それは子どもに
たくさんの例を見せて
その中から問題解決に適応できるパターンを
見つけ出すというか
それが認識できるように
認識できるようになるまで
学習させるようなものなんですね
つまり履歴データに基づいて 何がですね
何かが起こりそうな時期を予測したりとかですね
オブジェクトやビデオや
オーディオ認識したり
また逆にそれを
書き起こしたりするなど
非常に高度なことができるようになっています
デモで
実際にアプリケーション内で
どのようなことができるかという方法を
ちょっとお見せしたいと思います
はい これで この機能では
Whisperを使って
動画からの文字起こしを
ちょっとしてみたいと思います
すいません スライドの画面の切り替えをお願いします
はい Whisperなんですけども
文字起こしですね こちらのコードは
Whisper.cs となっていまして
ここを見ていただきたいんですけども
ここでですね ONNXモデルをロードしています
で ONNXモデルをロードしているので
使っているライブラリはですね
こちらの フレームワークですね
ごめんなさい 依存関係ですね
依存関係のパッケージでですね
この中にちょっと狭いですね
はい ここの Microsoft.ML
OnnxRuntime.Extensions というのを使っています
その前にですね これ
モデルをどのように入手したかというと
こちら これは実際にこのアプリケーションの
GitHubで公開されているページなんですけども
セットアップ方法があるんですが
ここですね まずHugging Faceから
Whisperのモデルを入手してきまして
その次にですね この
olive というツールを使って
ONNXに変換しています 変換した際に
大きいのと小さいのを作っているんですね
ちょっとお待ちくださいね
これをちょっと開けますね
tinyとsmallというのがあります
tinyというのがですね
小さくてスピードが速いんですけども
それほど精度が高くないですね
smallはちょっと遅いんですけども
サイズもでかいんですけども
そこそこ認識がしっかりしているというものですね
これをですね ここの ここですね
この onnx-models というフォルダを作って
入れてあるんですね
ちょっと中に見てみましょう
tinyの方を ダブルクリックします
Visual Studioではこれを開けられないので
一緒に入っているですね
別途インストールしてある
このNETRONというので開けてみます
そうしますとこのようにですね
フローチャートっぽいものが出てくるんですけども
これ処理の流れが出てるんですね
audio_stream ですね
AudioDecoder とかですね
あとTranspose とかですね
Slice とかいろいろあるかと思うんですけども
まずaudio_stream 見てみましょう
そうしますとこういうふうにですね
説明とかあるんですけど
INPUTS としてまずですね
長さが指定されていない
audio_stream があることが分かりますよね
あとは max_length min_length
あとはですね num_beams とかってのがあります
これが INPUTS のパラメーターで
OUTPUTS の方がですね
string で出しますというのは
このように分かるかと思います
通常こういった情報というのは
モデルを提供している側から受け取るか
あとは
Hugging Faceなんかで見るわけですね
ですがこういったところで
情報を持ってくる必要があるとかですね
実際の処理どのようになっているか
というのをですね 見てみたいと思います
まずですね ここでONNXモデルですね
パスが分かったらここですね
下の方で InferenceSession() ということで
推論セッションを作っています
推論セッションができたら
その下ですね ここを見ていただきたいんですが
ここですね audio_stream min_length
max_length という形で
先ほどのアプリで見たようなですね
インプットのパラメーターが
設定されているのが分かるかと思います
そしてこれを下でですね 先ほど生成した
推論セッションに与えてあげると
これ見ていただきたいんですけども
ここで string として
文字起こしの結果が返ってくるという形ですね
もう一つですね
これはもう一つモデルを使ってまして ここですね
ここに silero というのがあるかと思うんですけども
これ何に使っているかというと
この文字認識がですね 30秒間隔で
行っているんですね 30秒間隔でやるときに
単語の間とかですね
話しているおかしなところで切らないように
これを使って分割しているような形になります
そしてもう一つ ここにですね
inputLanguage とありますけども
Whisperはこの 文字起こしの他に翻訳とかですね
あとはそのタイムスタンプの
抜き出しなんかも使えるんですね なのでこれは
もともとは英語向けのものなんですけども
日本語が分かるように
今 Japanese になっていますね
これをですね en にしてみましょう
en にして日本語のものをちょっと読み込ませたら
どうなるかというのを見てみたいと思います
これ保存しまして 実行ですね
今ビルドが始まっています
すべてですね このPCでですね
手前にあるPCで動かしています
はいアプリケーションが 今起動してきまして
これはもう事前に 貼り付けといたやつですね
日本語で 日本語でですね
このように文字起こしがされていまして
これをクリックすると
クリックしたときにビデオが飛びますし
逆にこれをクリックすると
その箇所にこの文字の方ですね
が動くようになっています
これ今日本語なんですけども
ここに 同じ動画を
ちょっと貼り付けてみましょう
今度は コードが en になっているんですけども
それを貼り付けるとどうなるか
これ見ていただきたいんですが
インジケーターが 出てきましたね
これ今処理をしている状況ですね
はい完了です
もうすごいあっという間ですね
日本語で
この2分程度の動画だったらこんなもんですね
クリックしますと はい見てください
これですね 英語に翻訳されているんですね
こういうふうにですね AIを使用すると
Whisperですね AIというかWhisperを使用すると
文字起こしはもちろんなんですけども
このようにきちんと翻訳とかですね
もちろんタイムラインもこれ 同期しますし
こういったことができるというのが
お分かりになったと思います
こういったものが
皆さんのローカルのマシンで
作れる状況になってきています
すみません また切り替えをお願いします
はい そして デモでは
アプリケーションが
Whisperモデルをどのように使用しているか
という話をしたんですけども
Whisperモデルに限らずですね
現在ではさまざまな機能を持った
さまざまなAIモデルがですね
さまざまな場所で公開されています
その一つが Hugging Faceですね
これはAIモデル用のGitHubのようなものでして
コミュニティの研究者が モデルを置いて
誰もが使えるようにするような場所ですね
もちろん 作成したモデルを 公開することもできます
さらに Hugging Faceでは
モデルをダウンロードするだけではなく
実際に推論させて試すことも
できるようになっています
さてモデルを 入手したらそれぞれを
動作させる必要があります
現在デバイス上で
AIモデルを動作させるには
さまざまなフレームワーク
ハードウェア
あとAPI
さらには
ローカルの アクセラレーターがありまして
これらの組み合わせは
環境や目的や用途によって
変わってくることがありますよね
特に
特にですね
ハードウェアAPIの選択は
これはまあ
各々のハードウェアが提供する機能であるために
性質上 致し方ないことではあるんですけども
動作対象となる
デバイスの構成を狭めることになります
ただしですね マイクロソフトが提供する
今その ハードウェアAPIの一番左側に書いてあります
そのDirectMLですね DirectMLは
DirectX 12対応GPUであればですね
動くように作られていますので
これを選択することでですね
動作対象をある程度広げることができます
実際のところ
今回のデモで使用しているアプリケーションの
いくつかの機能も DirectMLを使用して
ONNXモデルを動作させています
今度は セマンティック検索ですね
セマンティック検索何かといいますと
これは エンベディングモデルを使用して
アプリケーションの中の全てのコンテンツを
取得してそれを使用するものですね
エンベディングはですね 多次元ベクトルなので
多次元でですね 表現できます
例えば犬と猫をですね 埋め込みますと
犬と猫の意味的な距離を測れるようになるんですね
ベクトルの中ですね
つまりコンテンツの意味を
多次元空間に表現する方法です
これもですね このデモで使用しているモデルはですね
384次元を使ってですね これを表しています
これもちょっとデモで
お見せしたいと思います
切り替えをお願いします
では検索なんですが その前に
ちょっとこれをお伝えしなければいけないことがありまして
これですね データを
ベクトル化するときに使っているAIが
この all-MiniMLというのを使っているんですけども
これがですね 残念ながら日本語に対応していませんで
英語とラテンしかダメなんですね
なので検索は今回英語で行います
何やってくれるものかといいますと
皆さんそのベクトル検索とかするときに
インデクサーを使って
情報をベクトル化しますよね
それをやってくれるものをですね
ちょっとコードを動かしてですね
その状況をお見せしたいと思います
アプリケーションですね 検索のキーワード
これで検索キーワードをしてみましょう
ごめんなさい オートコレクト これですね
How to use function callingというのをですね
検索してみましょう
function callingどう使いますか
そうすると ただこれもう
function callingってキーワードが入っちゃっているので
あんまりいい質問ではないんですけども
こんな形で ここにありますよというのを
検索してくれるんですけども
これがどういうふうに動いているか というのを
見たいと思います
ソースコードがこちらですね
検索コードがですね
SemanticIndex.cs ですね
ぶっちゃけ言うとですね
ベクトル化したものを比較しています
ちょっと動かしてみましょう
ここでですね ブレークポイントを設定しまして
まだ同じようにですね 検索をします
こちらですね 閉じてからですね
これ見ていただきたいんですが
まずですね こちら storeVectors ってあります
これ何が入っているかというと
このアプリケーションに
いろんなノートありますよね
これがベクトル化して入っています
これ92個あるんですけども この1個1個ね
ベクトルストアですね ごめんなさい
ちょっとね これですね
この1個の配列につきですね
開けてみると分かるんですけど
先ほど384次元という話をしましたけども
float の384個のデータが入っています
これが こっち側がですね
アプリケーションが持っているデータですね
この searchVectors
ここの searchTerm って見ると
ここに表示しましょう ですね
How to use function callingということで
先ほどですね 私が 書いた質問が入ってきます
で同じようにですね この処理結果が
ここに入ってベクトル化されてるんですね
これは配列1個しかありませんけども
384個あります
この2つのベクターデータ
これも間は端折るんですけども
ここ結局のところですね ここですね
えっとですね はい ここで比較します
コサイン比較 コサイン類似関数ですね
これでループしながら そのベクター
先ほど距離って話しましたけども
質問に対して近いものを
ここで調べていて ここに近かったら
追加するような形になってですね
なので 続行すると こういった候補が出てくると
こういう仕組みになっているんですね
先ほどお話したように ここで使っている
エンベディングモデルというのは
ベクトル化するために
使われているという形になります
以上デモでした
まずスライド戻してください
はい ということでですね デモのコードで
説明してしまったんですけども
つまりベクターベディングモデルはですね
言葉同士の関係性を位置づけるですね
空間地図のようなものなんですね
なので検索グループ化 分類に非常に
効果的に使用することができるようになっています
今度は 言語モデルのデモを行うんですけども
言語モデルか何か
ご存じない方のために 簡単に説明すると
一言で言ってしまうと
ChatGPTみたいなものですよね
言語モデルは 私たちの言語と
私たちがどのように話すか
またはその言語の背後にあるですね
意味を一般的に理解しているモデルになります
実際ですね セマンティック検索と
エンベディングモデルは
ある意味で それと関係しているわけですね
それらのモデルを 使用して
テキストを理解したり 言語を理解したりですね
テキストを推論したりですね
追加のテキストを自動生成したり
アプリケーション内で
非常に優れたことを行うことができます
ChatGPTなんですけども あれは LLM
Large Language Modelと呼ばれるとおり
非常に巨大なものなんですけども
このデモでは SLM
Small Language Modelであります
Phi-3 Miniをローカルで使用します
このアプリケーションでは テキストを選択して
このテキストを要約するように 依頼できます
実際デモを お見せしましょう
これはウェブアプリケーションの種類について
説明する文章なんですけども これを
選択しまして 画面で
サマライズというメニューをクリックしますと
元に内容を解釈してですね 要約をしてくれます
これなんで ビデオで今ご覧いただいているかというと
Phi-3日本語を理解するんですけど
処理がちょっといまいち早くないんですね
実際その回答が出てくるまで
だいたい私のマシンだと
40秒ぐらいかかってしまってますので
ビデオにしています ここからですね
実際にデモでお見せしたいと思います
スライドを切り替えてください
そのほかですね できるものとして
今要約しましたけども
オートコンプリートなんかもできるんですね
ちょっとやってみましょう 例えば
例えば えーとですね
このドキュメントの中にはですね 一応
この ちょっとね えーと
Learn about Copilot prompts とか
入ってますから
Copilotの情報もですね 入ってるんですね
ここで まず情報を ここに書きます
えーとここですね まあ
皆さんが途中まで文章を書いたと思ってください
Copilot for Microsoft is
っていう風に書きます そうしますと
ちょっとGPUの様子を見ましょう これはですね
DirectML使ってるんで GPUが動いてるが分かりますよね
でそうするとこんな形で えー
Assistant for Microsoft is みたいな形で
ここで学習してきたものを使って出してるんですね
日本語もちょっとやって
ちょっと日本語遅くなると思うんですけども
ちょっとやってみましょう はい
Microsoft Azure で Web アプリをホストするには
というところですね 入れます そして ちょっと
えーごめんなさい GPUですね
動いてますね アプリ側で見ると
来ましたね
必要なサービスを選択し設定します
例えばバックエンドサービス...
みたいな感じでやってくれます
これがどう動いているかというのをですね
ちょっと見てみたいと思います
そうしましたらですね
先ほどお話した通りですね
これは Phi-3使ってますので
ここで使っているのはですね
これですね DirectMLですね
なのでこれはダイレクト DirectXの12ですね
それがサポートされているGPUを積んでいれば
動くものになっています
はい こちらですね Phi-3ですね
ここで ONNXファイルを読み込んでいるのが
わかるかと思います
で この ModelDirですね ModelDirを使ってですね
下の方に行きますと ここでインスタンスを作ってですね
ニューモデルという形で作ってまして
でインスタンスを作ったらですね この後でですね
はい tokenizer を使ってその処理を与えてる感じですね
でジェネレートをしてます
こっちの方で見ていただきたいんですけども
えーとですね ありました ここですね
モデルのインスタンスを生成したらですね
new Generator() という形でやってですね
ここの generator.IsDone() だったらって
ループしてますね
これなんでループしてるかというと
言語モデルってですね
トークンという感じで
トークンという形で処理を行うんですね
文字列ですね トークン単位で
細切れに出てくるんですけども
それをジェネレートが終わった順番で出してですね
デモでちょっとお見せしましょう
そしたらですね
この辺りにブレークポイントを設定しまして
アプリケーション動いてますので
また同じ質問をですね 書いてみましょう
これでいいですね コピーして
貼ります ちょっと待ちます
はい止まりました ここですね
これ見ていただきたいんですけども
まずここにですね
trained って書いてありますね
じゃあもう一個動かしましょう
次 part って書いてますね
じゃあこれ全部動かすと
どうなるかって話なんですけども
アプリケーションの画面出してみます
ちょっと待ってましょう
そうすると 出来上がってくるのがですね
先ほど出てきた
trained to help users with a
みたいなのが入ってきますよね
こういう風にですね
トークンベースで処理がされてるというのが
分かったかと思います
このようにですね こんな感じでですね
言語モデルを使って 先ほどご覧いただいた
オートコンプリートなんかも
作れるというところですね
スライドに戻してください
この Phi-3 Miniを使ったデモを
ご覧いただいたんですけども
そこで使用されていた SLMまたは
ChatGPTのような LLM つまりは
小さな言語モデルと 大きな言語モデルの 違いは何でしょうという話ですね
違いは サイズと それらのモデルが
何のために開発されているかですね
一つの例えとして 博士課程の学生と
高校生の対比ですね 博士課程の学生は
特定の分野について
深い知識を持っていますが
高校生は 多くの異なる科目の
基本的な知識を持っていますよね
あるいは ある範囲の中の
基本的な知識です
当然博士課程の学生は
高校生の持っているような知識は
全部持っているんですね
要するに広くか浅くか
広くか深くかですね
なおですね SLMは 小規模なモデルですけれども
さらに学習させることができます
モデルに
追加データを導入するために
使用できる手法が
いくつかあるんですけども
その一つがですね RAGですね
Retrieval Argumented Generation
というのがあります
これはもうLLMを 使用している
使用した開発をされている方々であれば
ご存じかと思うんですけども
AIに 問い合わせをした際に
モデルが持っている
汎用的なデータではなくて
あらかじめ用途に応じて
用意しておいた 顧客のデータでありますとか
個人データといった
独自のデータの内容を検索して
回答させる方法ですね これもちょっと
デモでお見せしたいと思います
そうですね
デモでお見せしたいと思います
ちょっと画面の切り替えをお願いします
はい ではですね これから
RAGの検索ですね これご存じのとおりですね
これ私がセッションで話した内容とか
セッション用のこのデモのビデオとかですね
これ入っているんですね データですね
なので あと セッションの参考にした
今回のセッションの参考にしたですね
セッションデモ動画とかですね
これなんかも入っています なので
ここの中からですね
情報を検索できるようになっています
検索する 質問はですね これにしましょう
はい まずここのですね
ロボットマークのアイコンをクリックしますと
しまして
ここにですね こういう質問を書きます
先ほどまだリリースされてませんよと言った
What is the OCR API included in?
OCR APIどこにありますか?
何に含まれますか?という
何に含まれますか?
質問を投げてみましょう
ちょっとこれ いっぺん止めちゃったから
うまくいかないかもしれません
ちょっと動かしてみます
動かしてみましょう
今GPUが スパイクしているので
ちゃんと処理していると思います
ちょっと待ってみましょう
もう少しですね 数えましょうか
1 2 3 あ、来ましたね
はい 出てきました はい
なんて回答しているかですね
The OCR API is included as part of the next Windows App SDK 1.6 Experimental
次出てくるWindows App SDKの1.6 Experimentalに入ってますよ
というふうにですね ちゃんと答えています
そしてここに書いてあります
動画書いてありますとクリックします
そうするとここですね 惜しいですね
調子にいいときはですね ここを指してくれます
ここをちゃんとですね ここで書いてますよ
と言ってくれるんですけど
生成AIはですね ちょっと気まぐれなんで
こんな感じなんですけども こんな感じで
RAGがですね うまく動くということは
確認できたかと思います
またスライドの方に戻してください
はい ということで ちょっと待ってくださいね
RAGのほかにですね
独自のデータを追加する方法として
使用できる手法としてですね
ファインチューニングがあります
前述しましたようにですね
先ほど言いましたようにですね
SLMはですね ベースモデルでありまして
特定のタスクのために
訓練されていないんですね
しかしシナリオによっては
これらのモデルを使用する場合に
そのSLMには 用意されていない
ある特定のタスクの一部に
必要になることが タスクの一部がですね
必要になることがあります
その際には
ファインチューニングが役立つんですね
これはモデルの
再トレーニングではなくて
さらにモデルをトレーニングしたり
特定のタスクに対して モデルに
学習させたり 学習させるデータを
追加することですね
ここで例を挙げるとするならば
先ほど紹介した そのオートコンプリートですよね
オートコンプリートでは
基本モデルがすでに
持っている知識だけで
動作はするんですけども
そのモデルを微調整して
自分の与えた知識で話したり
組織で使用している用語を
使用したりできるようになるわけです
モデルを ファインチューニングする ツールとしては
Azure AI Studioなんかがありますけども
ローカルで モデルを微調整するために
使用できるツールもあります
それが AI Toolkit for VS Codeですね
これはWindows AI Studioですね
拡張機能の進化版でありまして
Azure AI Studioと Hugging Faceの
最先端のモデルを探索して それを
試したりファインチューニングして
アプリケーションに統合することができます
プロンプトを提供してですね
モデルがどのように応答するかを 確認できる
モデルプレイグラウンドやですね
あと結果が探しているものでない場合は
実際にデータセットを作成して モデルを
さらにトレーニングできたりもします
ぜひこういったものを
活用いただければと思います
はいということで まとめです
マイクロソフトでは
AIの利用には
責任を伴うと考えておりまして
マイクロソフトでモデルを
構築するとき あるいはモデルを
変更するときは 非常に
徹底的なレビューを行っています
利用者に 害を及ばさないように
するために マイクロソフトでは
従順すべき 複数の原則がありまして
AIを 使用してこれまでにない
全く新しいアプリケーションを
開発するときは それが
喜びをもたらす可能性があるだけでなく
逆に害をもたらす可能性があることも
考えておく必要があるかと思います
大きな力には
大きな責任を伴うという
古くからの格言がありますけれども
この言葉にあるように
世の中には 世の中に
大きな影響を与える 与えうるサービスや
機能をリリースする際には
それを正しく 責任を持って行う必要がありまして
誰にとっても 安全なもの
安全なものなのかどうか
十分に熟考する必要があるかと思います
現在では それを確認して
実行するためのツールや
リソースもたくさん出ておりますので
それらを活用して
ぜひ責任あるAIを 実現していただければと思います
次ですね こちら私がですね
このセッションで話した内容は
大体これを見れば分かるかと思います
あとスライドをちょっと切り替えて
画面切り替えてもらっていいですかね
でですね サンプルなんですけども
ここですね Windows上の
AIサンプルギャラリーというのがありまして
もちろんリンクこれ貼ってありますけども
ここにですね 様々なサンプルアプリケーション
GitHub上のサンプルアプリケーションのですね
リンクがあります
例えばオーディオエディターとかですね
先ほどのサンプルアプリケーションがありますので
先ほどのデモで私が使用しました
メモアプリでありますとか その他ですね
もろもろ非常にたくさんの有益なですね
サンプルコードが公開されております
これ動かすことができますので
ぜひお手元でですね ビルドをしていただいて
このAIの機能ですね
これを体感していただければと思います
画面を戻していただけますか
そしてこれ最後にですね
今回は 個々の技術要素に対して
細かいお話はできなかったんですけども
さらに深い内容については
このスライドの最後に
先月行われましたBuildですね
Buildのセッションのリンクが貼ってありますので
例えばもっと
Phiシリーズについて知りたいよとか
あとはその .NET関連のところは知りたいよね
という場合はですね ここら辺の
スライドですね スライドじゃないですね
公開されているセッション動画を
ご覧いただければと思います
はいということで 駆け足になってしまいましたけども
私のセッションは以上でございます
ご静聴ありがとうございました
5.0 / 5 (0 votes)