ローカル AI を利用した Windows アプリケーションの開発

日本マイクロソフト株式会社 公式チャンネル
11 Jul 202444:46

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

00:00

🤖 AIモデルとWindowsアプリケーションの融合

物江さんが日本マイクロソフトのパートナーソリューションアーキテクトとして、ローカル環境のWindows上のAIモデルをアプリケーションに実装し、その機能を紹介します。近年のAIの進化により、言語生成モデルやマルチモーダル化されたAIが日常的に使用できるようになりました。しかし、AIモデルを動作させるには大きなコンピューティングパワーが必要なため、一般的な使用はクラウド上で行われています。最近では、SLM(サイズが小さくても動作可能な言語モデル)が登場し、ローカルでAIを活用することが可能になりました。多くのパートナーがWindowsローカルで動作するAIを利用しており、Microsoft製品もその利用をしています。AIの利用用途は多岐にわたり、特にチャットボットを用いたユーザーエクスペリエンスの向上やデータ入力の自動化が中心となっています。

05:01

🌐 ローカルAI実行の利点とWindowsでの活用

ローカルでAIモデルを実行する利点として、遅延が少なくリアルタイムの応答が可能であること、ネットワークに接続する必要がなくオフラインでも実行できること、プライバシーが守られることが挙げられます。また、クラウドでの推論に課金されることもありません。WindowsではローカルAIモデルが使用されており、Recall機能やWindows Studio Effectsなどの新しい機能が発表されています。さらに、ゲーム開発者向けにはAutomatic Super Resolutionという新機能も紹介されています。Windows Copilot LibraryのAPIを使えば、モデルを追加することなくAIをアプリケーションに活用することが可能です。

10:01

🛠️ 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のツールでも使用されています。

15:03

🔍 AIと機械学習モデルの概要

機械学習モデルの基礎について説明しています。モデルはデータから学習する数学的プログラムであり、履歴データに基づいて予測や認識、書き起こしなどを行うことができます。デモでは、Whisperモデルを使用して動画の文字起こしを行う方法を紹介しています。Whisperは音声認識に特化したモデルで、GitHubから入手し、ONNXに変換して使用します。

20:08

🌐 AIモデルの入手と動作化

AIモデルを入手し、動作させる方法について説明しています。Hugging Faceのようなコミュニティがモデルを公開しており、誰でもダウンロードして推論可以尝试できます。デバイス上でAIモデルを動作させるには、フレームワーク、ハードウェア、API、ローカルアクセラレーターなどが必要です。特にDirectMLはDirectX 12対応GPUであれば動作するため、広範なデバイスで使用可能です。

25:10

🔍 セマンティック検索とエンベディングモデル

セマンティック検索とエンベディングモデルについて紹介しています。エンベディングはコンテンツを多次元空間に表現し、言葉同士の関係性を位置づけ、グループ化や分類に効果的です。デモでは、SemanticIndex.csを使用して、アプリケーション内のコンテンツをベクトル化し、検索キーワードに応じて近くのベクターデータを検索して表示する方法を紹介しています。

30:11

📝 言語モデルの応用とデモ

言語モデルの応用について説明し、デモを通じて実際の動作を紹介しています。言語モデルは私たちの言語や意味を理解しており、テキストを理解し、推論したり自動生成することが可能です。デモでは、Phi-3 Miniを使用して、テキストの要約やオートコンプリートを行う方法を紹介しています。

35:13

📚 SLMとLLMの違いとRAGの紹介

SLM(Small Language Model)とLLM(Large Language Model)の違いについて説明しています。SLMは小さなモデルであり、より学習が可能です。一方、LLMは巨大なモデルで、広い知識を持っています。RAG(Retrieval Argumented Generation)は、AIに問い合わせに対する回答で、モデルが持っている汎用的なデータだけでなく、独自のデータを検索して回答させる方法を紹介しています。

40:14

🛠️ モデルのファインチューニングと責任ある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技術の進歩とその応用について語っています。例えば、「日本マイクロソフトでパートナーソリューションアーキテクトをしております」という文脈で使用されています。

💡AIモデル

AIモデルとは、機械学習や深層学習を用いて訓練されたアルゴリズムのことであり、ビデオではAIの進化とそれに伴う多様なモデルの開発が語されています。例えば、「昨今のAIの進化は非常に目まぐるしいものがありまして」という文脈でAIモデルの進化について触れられています。

💡マルチモーダル

マルチモーダルとは、複数の感覚やデータタイプを扱う能力を持つAIモデルのことを指します。ビデオでは、「言語生成モデルも当然として、これがマルチモーダル化されておりまして」として、AIが音声や画像など、さまざまなデータを処理できるようになったことを示しています。

💡コンピューティングパワー

コンピューティングパワーは、コンピュータの処理能力を指し、ビデオではAIモデルを動作させるために必要とされる高性能な計算資源について説明しています。例えば、「AIモデルを動作させるには、非常に大きなコンピューティングパワーが必要です」という文脈でその重要性が強調されています。

💡クラウド

クラウドは、インターネットを通じて提供されるコンピューティングサービスのことを指し、ビデオではAIを利用するために一般的にクラウド上でサービスが行われることについて触れています。例えば、「一般の方々が生成AIを利用するには、ネットワークを介してクラウド上で動作させるというのが一般的な使われ方になっています」という文でその活用形態が説明されています。

💡SLM

SLMとは、Small Language Modelの略で、ビデオではコンピューティングパワーを必要としない小さな言語モデルについて説明しています。例えば、「しかし最近はSLMと呼ばれますサイズが小さくて」という文脈で、ローカル環境で動作可能なAIモデルの登場が語られています。

💡Windowsアプリケーション

Windowsアプリケーションは、マイクロソフトのWindowsオペレーティングシステム上で動作するソフトウェアアプリケーションを指します。ビデオでは、「Windowsアプリケーションにどのような機能を実装できるか」という形で、AI技術がWindowsアプリケーションにどのように取り入れられるかが説明されています。

💡チャットボット

チャットボットとは、人間と会話をすることができるAIアプリケーションです。ビデオでは、「多くはチャットボットを使用したアシスタントのようなユーザーエクスペリエンスの向上であるます」と触れ、AIが提供するインタラクションの向上に役立つことについて説明しています。

💡データ入力

データ入力とは、情報やデータをシステムに入力するプロセスを指し、ビデオではAIが日常的なデータ入力タスクを自動化する可能性について説明しています。例えば、「データ入力などの日常的なタスクを人間から引き継ぐことに使われている」と、AIの潜在的な用途が語られています。

💡プライバシー

プライバシーは、個人が自分の私的な情報を保護する権利を指します。ビデオでは、ローカルAIの利点としてプライバシーの重要性が強調されています。例えば、「データをクラウドサービスに送信する必要がないため、プライバシーが守られます」と、ローカルAIモデルの利点が説明されています。

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

play00:17

皆さん こんにちは 日本マイクロソフトで

play00:19

パートナーソリューションアーキテクトをしております 物江と申します

play00:22

このセッションでは ローカル環境のWindows上の

play00:25

AIのモデルを使用して

play00:27

どのような機能をアプリケーションに実装できるか

play00:30

というのを紹介していきたいと思います

play00:32

昨今のAIの進化は非常に目まぐるしいものがありまして

play00:36

数年前には想像の域を出なかったようなものが

play00:40

今では日常的にツールとして使える状態になっています

play00:43

言語生成モデルも当然として

play00:46

これがマルチモーダル化されておりまして

play00:49

画像でありますとか音声認識も可能になっています

play00:53

とはいえ こういったAIモデルを動作させるには

play00:56

非常に大きなコンピューティングパワーが必要です

play00:59

そうした状況もあって

play01:00

一般の方々が生成AIを利用するには

play01:04

ネットワークを介してクラウド上で動作させるというのが

play01:07

一般的な使われ方になっています

play01:10

しかし最近はSLMと呼ばれますサイズが小さくて

play01:15

それほど強力なマシンパワーを必要としなくても

play01:18

動作させることのできる言語モデルが出てきています

play01:22

このセッションでは

play01:23

それらローカルで動作するAIモデルを使用して

play01:26

Windowsアプリケーションにどのような機能を

play01:29

実装できるか紹介していきたいと思います

play01:33

Windowsローカルで動作するAI自体は

play01:36

そう珍しいものではないんですね

play01:37

実は多くのパートナー様が

play01:39

Windowsローカルで動作するAIを利用しておりまして

play01:42

もちろんMicrosoft製品自体も利用しております

play01:46

AIの利用用途は様々なんですけども

play01:50

多くはチャットボットを使用したアシスタントのような

play01:53

ユーザーエクスペリエンスの向上でありますとか

play01:56

あとはデータ入力などの日常的なタスクを

play02:00

人間から引き継ぐことに使われていることが多いようですね

play02:03

例えばこのBe My Eyesというアプリケーションなんですけども

play02:07

このアプリケーションはアクセシビリティを提供するもので

play02:11

LLMAを使用して目が見えない人や視力の弱い人が

play02:15

グラフ 写真 スクリーンショットなどを

play02:18

実際に見るのを助けてくれるものになっています

play02:20

またTeamsの通話などの照明環境を設定する手助けも

play02:26

してくれるということですね

play02:27

そして今セッションをご覧になっている方々の中にも

play02:32

使われている方がいるかと思うんですけども

play02:35

ビデオ編集ソフトのDavinci Resolveですね

play02:39

その有償版のDavinci Resolve Studioの方の

play02:43

Magic Maskという機能があるんですけども

play02:45

これはNPUのある環境で動作させると

play02:49

3倍の速さで実行することができるようになっているそうです

play02:54

そしてもう一つですね

play02:55

こちらも使っている方がいらっしゃるかもしれませんが

play02:59

djay proという名前のアプリケーションですね

play03:03

これは音楽をミキシングするための非常に人気のある

play03:06

アプリケーションなんですけども

play03:08

こちらは最新のCopilot+PCでNPUを使って

play03:12

ニューラルミックスなどオーディオの さまざまな部分を分離して

play03:16

クールなものを作ったりBPMのようなものを見つけて

play03:19

トラックを簡単にミックスできるようになっています

play03:23

こういったアプリケーションというのは

play03:27

AIを利用するためのさまざまな技術要素を

play03:30

利用しているわけなんですけども

play03:32

本日このセッションで紹介する技術要素は

play03:35

こちらのスライドにあるものになります

play03:38

もちろんこれら以外でもAIを利用するための

play03:41

技術要素はたくさんあるんですけれども

play03:43

このセッションではこのスライドにある要素に

play03:46

焦点を当てて紹介していきます

play03:48

とはいえ時間の関係上これら個々について

play03:51

深く詳しく説明することはできないんですけれども

play03:55

それがどういったものでどのように動作するかは

play03:58

ご理解いただけるかと思います

play03:59

まず最初にアプリケーションにAIの機能を

play04:03

追加する方法についてです

play04:06

現在アプリケーションにAIの機能を追加する

play04:09

方法というのはたくさんあります

play04:11

クラウド上にはOpenAIでありますとか

play04:14

Azure OpenAI ServiceといったAIサービスが

play04:18

ホストされておりまして

play04:19

これらの機能をAPIとして

play04:21

呼び出すことはもちろんクラウドサービス

play04:24

例えばAzureにはモデルを作成したり

play04:26

モデルを微調整するためのさまざまな ツールも用意されています

play04:30

このようにLLMでありますとか高度な サービスを利用するには

play04:35

現在もまだオンライン上のAIサービスを 選択する必要があります

play04:40

しかし近年ではAIモデルの効率化が 著しくなってきておりまして

play04:46

以前であれば大きなコンピューティングパワーが

play04:48

なければできなかった処理が

play04:50

一般的な使用されるPCのスペックでも

play04:53

実行できるようになっています

play04:55

例えば先ほどお話したSLMとか文書での 会話のもちろん

play05:00

Buildで発表になりました

play05:02

Phi-3 Visionというものがあるんですけども

play05:04

これはSLMなんですけども

play05:09

マルチモーダルで画像も認識できます

play05:11

こういった高機能なものが手元で動かせる

play05:14

時代になりつつあるんですね

play05:16

ということでこのセッションのデモは全て

play05:19

私が今プレゼンテーションしている

play05:21

PCのローカルで動作するもので行って いきたいと思います

play05:24

ではローカルでモデルを実行する メリットについて

play05:28

紹介しておきましょう

play05:30

まず大きな特徴として遅延が少ない というのがありますよね

play05:34

問い合わせして応答を受け取るまで 何度もネットワークを介して

play05:38

クラウドとやり取りする必要はありません

play05:41

モデルとのやり取りは基本的にはメモリを介して

play05:44

瞬時に行われますので

play05:46

遅延のないほぼリアルタイムの体験を 提供することができます

play05:51

ネットワークに接続する必要がないので

play05:54

完全にオフラインで実行することができます

play05:56

ネットワークケーブルはもちろん

play05:58

Wi-Fiの電波通信量を一切気にする 必要はありません

play06:00

当然ネットワークインターフェースが ない機器でも

play06:03

使用することができます

play06:05

データをクラウドサービスに送信する 必要がないため

play06:09

プライバシーが守られますし

play06:12

そもそもネットワークに接続しなければ

play06:15

通信による情報漏洩リスクなんかも なくすことができます

play06:21

クラウド上での推論を行わないので

play06:24

その推論に対して課金されることもないんですね

play06:26

また逆に簡単な処理はフロント側のAIで処理して

play06:32

重い処理をクラウド上で動かすといった

play06:35

そんな柔軟な使い方もできるようになっています

play06:39

WindowsでもローカルAIのモデルは 使用されておりまして

play06:43

Buildで発表されて話題になった

play06:45

Recall という機能もその一つですね

play06:47

これはPCがユーザーがそのデバイスで行った

play06:51

全てのものを覚えていて

play06:52

元の作業に戻ることができる機能なんですけども

play06:55

これがまさにそれですね

play06:57

この機能は新しいCopilot+PCでしか

play07:00

使用できませんけども

play07:02

条件を満たしていれば開発者の方は

play07:05

UserActivity APIを使用して

play07:08

自分のアプリケーションとリコール機能を

play07:10

連携させることができるようになっています

play07:13

そしてNPUが搭載されたマシンで利用できる

play07:18

その他のエクスペリエンスとしては

play07:21

Windows Studio Effects というのがあります

play07:23

Windows Studio Effects では内蔵カメラとマイクに

play07:26

NPUアクセラレーション機能を適用して

play07:31

背景ぼかしやアイコンタクト

play07:33

自動フレーミング 音声フォーカス

play07:35

ポートレート ライト クリエイティブ フィルターなどなど

play07:38

さまざまなエフェクトをデバイスのGPUとCPUに

play07:43

負担をかけずに行えるようになっています

play07:46

開発者はアプリケーションにコントロールを追加して

play07:51

Windowsの設定でありますとか

play07:53

あとクリック設定ですか

play07:54

そちらでアプリケーションから直接これからの操作を

play07:59

制御することもできるようになっております

play08:01

もちろんAPIが提供されておりまして

play08:04

すでにWhatsAppというアプリケーションでは

play08:07

こういったものが使用されているということです

play08:10

またこれも新しいCopilot+PCの話に なってしまうんですけども

play08:17

ゲーム開発者向けには自動超解像ですね

play08:21

Automatic Super Resolution と呼ばれる 新機能がありまして

play08:24

これはゲームの解像度を自動的に上げてくれるもので

play08:28

ゲーム側では遥かに低い解像度でレンタリング できるようになるわけですね

play08:33

そうすれば解像度を維持しながら

play08:35

もしくは同じフレームレートか

play08:39

遥かに優れたフレームレートで

play08:42

ゲームを進めることができるんですね

play08:45

Windows AI関連の開発者向けの

play08:51

トピックとして非常に印象的だったのは

play08:54

Windows Copilot Libraryですね

play08:56

これはアプリケーションにモデルを 追加する必要がない

play09:01

APIのセットです

play09:02

アプリケーションでAIを利用する場合は

play09:05

一般的に目的の機能を持ったAIモデルを入手して

play09:09

それを使用するんですけれども

play09:10

そのモデルをわざわざ入手する必要がないんですね

play09:14

このWindows Copilot Libraryは

play09:16

アプリケーションの実行中にAPIを呼び出すだけで

play09:20

オンデバイスMLモデルですね

play09:22

要するに製品と一部として出荷される

play09:26

AIモデルがあるんですけれども

play09:27

それを呼び出すことができます

play09:29

近々リリースが予定されているAPIが

play09:31

テキスト認識とPhi Silicaというものですね

play09:35

テキスト認識はテキストデータを 認識するものではなくて

play09:39

OCR機能ですね 画像内のテキストを認識して

play09:43

認識されたテキストの境界と

play09:47

信頼度スコアを取得したりということができます

play09:49

もう一つが Phi Silicaのほうですね

play09:52

これはローカルのPhi Silica言語モデルを使用して

play09:55

ユーザープロンプトに対して

play09:57

テキスト応答を生成可能にしてくれるものです

play10:00

この2つのAPIですね

play10:02

スライドには近日中に提供予定と書いてますが

play10:05

まだちょっと提供されていないようです

play10:08

これはWindows App SDKの1.6 Experimental 2に

play10:13

含まれているんですけれども

play10:14

今日現在はまだ Experimental 1しか 出ていない状況です

play10:19

ただですね USのBuildの最中にですね

play10:23

開発者が7月ぐらいと言っていたので

play10:25

そろそろ利用可能になるのではないかな と思っています

play10:29

その他にもですね ベクトルのエンベディングで ありますとか

play10:33

あとRAGとかですね テキスト要約の機能 というのがですね

play10:37

今年後半にリリースが予定されているというものです

play10:40

つまりモデルの追加をしなくてもですね

play10:43

こういった機能が手軽に使えるように なるということで

play10:46

非常に待ち遠しいという感じですね

play10:50

今回のデモは

play10:52

アプリでデモを行うんですけれども

play10:54

それらの機能もですね お見せします

play10:56

今回のデモではですね

play10:57

当然そのCopilotライブラリはまだ使えませんので

play11:01

Phi-3 Miniを使ったチャットボットだとかですね

play11:04

あとテキスト要約

play11:05

あとそのエンベディングの別のモデルですね

play11:07

それを使った そうですね 検索でありますとか

play11:11

あとそうですね そういったものをですね

play11:13

お見せしていきたいと思います

play11:15

こちらがですね 今日様々な技術の 紹介にですね

play11:20

使用するアプリケーションになっています

play11:22

どんなアプリケーションかといいますと

play11:24

メモアプリなんですけれども

play11:25

当然ただのですね メモアプリじゃないんですね

play11:28

メモした文章を

play11:29

セマンティック検索するのはもちろん

play11:32

メディアファイルの音声認識なんかも 行ってくれます

play11:35

これは .NET 8のC#と

play11:38

WinUI 3で作られておりまして

play11:40

使用しているAIモデルは

play11:42

Phi-3 Whisper Embeddingsで

play11:45

完全に ローカルでオフラインで 動作するように 作っております

play11:49

これは既に

play11:50

GitHub上で公開されているものなので

play11:54

後ほど URLをシェアしますので

play11:57

ぜひ 手元でビルドして

play11:59

お試しいただければと思います

play12:01

はい でまず一番最初

play12:03

すいません あとこちらがですね

play12:05

今日のデモで使用するPCのスペックなんですけども

play12:08

まさに今 使っているものです

play12:10

こちらは 一昨年の年末ぐらいですかね

play12:14

リリースされたと思うんですけども

play12:15

Surfaceの Laptop5ですね

play12:18

使っておりまして

play12:19

プロセッサーはi7の

play12:23

2.7GHzでメモリは32GBですね

play12:26

おそらくまあ

play12:27

皆様がよく使われているPCと似てるかなと思っています

play12:30

まあ平均的なものですね 使っています

play12:33

はい でまずですね

play12:35

最初デモはテキスト認識なんですけども

play12:38

こちらは先ほどお話した通り

play12:40

Windows App SDKの1.6 Experimental2が

play12:44

まだリリースされていないので

play12:45

動作しないんですね

play12:47

でサンプルコードにはですね 記述され…

play12:49

サンプルにですね コードは記述されているんですけど

play12:52

コメントアウトされています しかしですね

play12:54

開発者が作ったデモ動画がありますので

play12:57

それで 実行の様子をですね

play12:59

それをご覧いただきたいと思います

play13:01

はいこんな感じですね

play13:02

これどういうデモかと言いますと

play13:04

WhatsAppというですね

play13:06

アプリケーションにこういう風に

play13:07

写真で撮ったその用紙が届くんですけども

play13:10

それを貼り付けるとこのようにですね

play13:13

オープンしただけでですね

play13:14

文字が取得できるという

play13:16

そういった機能が実装されるということですね

play13:18

はいすいません 画面の切り替えをお願いします

play13:20

でこれがですね

play13:22

そのサンプルのコードのとこなんですけども

play13:26

ご覧いただいて分かる通りですね

play13:28

こんな風に はい コメントアウト

play13:32

Until API are availableって書いてあります

play13:34

ただコードは書いてありますので

play13:36

どういう処理をしているかというのを

play13:37

紹介したいと思います

play13:39

コメントアウト外しますので

play13:41

Ctrl KのUで外します

play13:43

はい でまずなんですけども

play13:45

ご覧の通り モデルを

play13:46

どこから持ってくるという必要はありません

play13:49

APIを呼ぶだけなんですね

play13:50

はじめに何をするかというと

play13:53

こちらの

play13:54

textrecognizerのところですね

play13:57

makeavailableasync() というのを使って

play14:01

これでインスタンスが作れるかどうか見てるんですね

play14:04

作れる場合には

play14:05

このtextrecognizerのところの

play14:08

createasync() を使ってインスタンスを作ります

play14:10

そして引数ですね

play14:11

image というのがあるかと思うんですけども

play14:14

これを imagebuffer に入れてあげまして

play14:16

あとは こちらの

play14:18

textrecognizerのところの

play14:19

textrecognizerの

play14:20

recognizertextfromimageasync() というところで

play14:25

imagebuffer の

play14:27

image を入れてあげる

play14:28

そうすると もうここで

play14:30

変換されたデータが返ってくる感じですね

play14:33

このコードでは テキストを取り出して いますけれども

play14:36

中には 先ほどお話したように

play14:38

テキストの境界でありますとか

play14:40

あと傾きなんかがですね

play14:42

取れるようになるということです

play14:43

これも もう少し待ってますと

play14:46

実際に使えるようになりますので

play14:47

ぜひ こちらお試しいただければと思います

play14:51

スライドに戻してください

play14:55

すいません はい で こちらの

play14:59

こういったですね ご覧いただいたような

play15:02

OCR機能は

play15:04

Windowsのツールである

play15:05

Snipping Toolでも

play15:07

使用されています

play15:08

Snipping Toolには

play15:10

テキストアクションという

play15:11

ボタンがありまして これをクリックしますと

play15:14

画像内のテキスト認識をして

play15:17

コピーすることができます

play15:18

はい あとですね

play15:20

これまでモデルモデルという話を してきましたので

play15:23

モデルについての話をしたいと思います

play15:27

機械学習のモデルとは何かといいますと

play15:29

基本的には

play15:30

データから学習する

play15:32

数学的プログラムですね

play15:34

この学習がどのように行われるかといいますと

play15:37

ざっくり言いますと

play15:38

それは子どもに

play15:39

たくさんの例を見せて

play15:41

その中から問題解決に適応できるパターンを

play15:44

見つけ出すというか

play15:45

それが認識できるように

play15:47

認識できるようになるまで

play15:48

学習させるようなものなんですね

play15:50

つまり履歴データに基づいて 何がですね

play15:54

何かが起こりそうな時期を予測したりとかですね

play15:57

オブジェクトやビデオや

play15:59

オーディオ認識したり

play16:01

また逆にそれを

play16:02

書き起こしたりするなど

play16:04

非常に高度なことができるようになっています

play16:07

デモで

play16:08

実際にアプリケーション内で

play16:10

どのようなことができるかという方法を

play16:13

ちょっとお見せしたいと思います

play16:15

はい これで この機能では

play16:20

Whisperを使って

play16:21

動画からの文字起こしを

play16:23

ちょっとしてみたいと思います

play16:24

すいません スライドの画面の切り替えをお願いします

play16:29

はい Whisperなんですけども

play16:33

文字起こしですね こちらのコードは

play16:37

Whisper.cs となっていまして

play16:40

ここを見ていただきたいんですけども

play16:43

ここでですね ONNXモデルをロードしています

play16:46

で ONNXモデルをロードしているので

play16:49

使っているライブラリはですね

play16:50

こちらの フレームワークですね

play16:54

ごめんなさい 依存関係ですね

play16:56

依存関係のパッケージでですね

play16:58

この中にちょっと狭いですね

play17:01

はい ここの Microsoft.ML

play17:05

OnnxRuntime.Extensions というのを使っています

play17:07

その前にですね これ

play17:08

モデルをどのように入手したかというと

play17:11

こちら これは実際にこのアプリケーションの

play17:14

GitHubで公開されているページなんですけども

play17:16

セットアップ方法があるんですが

play17:18

ここですね まずHugging Faceから

play17:21

Whisperのモデルを入手してきまして

play17:23

その次にですね この

play17:25

olive というツールを使って

play17:28

ONNXに変換しています 変換した際に

play17:32

大きいのと小さいのを作っているんですね

play17:34

ちょっとお待ちくださいね

play17:36

これをちょっと開けますね

play17:38

tinyとsmallというのがあります

play17:42

tinyというのがですね

play17:44

小さくてスピードが速いんですけども

play17:48

それほど精度が高くないですね

play17:50

smallはちょっと遅いんですけども

play17:53

サイズもでかいんですけども

play17:55

そこそこ認識がしっかりしているというものですね

play17:59

これをですね ここの ここですね

play18:04

この onnx-models というフォルダを作って

play18:08

入れてあるんですね

play18:08

ちょっと中に見てみましょう

play18:09

tinyの方を ダブルクリックします

play18:12

Visual Studioではこれを開けられないので

play18:14

一緒に入っているですね

play18:16

別途インストールしてある

play18:17

このNETRONというので開けてみます

play18:20

そうしますとこのようにですね

play18:21

フローチャートっぽいものが出てくるんですけども

play18:24

これ処理の流れが出てるんですね

play18:26

audio_stream ですね

play18:28

AudioDecoder とかですね

play18:30

あとTranspose とかですね

play18:32

Slice とかいろいろあるかと思うんですけども

play18:34

まずaudio_stream 見てみましょう

play18:36

そうしますとこういうふうにですね

play18:38

説明とかあるんですけど

play18:40

INPUTS としてまずですね

play18:43

長さが指定されていない

play18:44

audio_stream があることが分かりますよね

play18:47

あとは max_length min_length

play18:50

あとはですね num_beams とかってのがあります

play18:53

これが INPUTS のパラメーターで

play18:55

OUTPUTS の方がですね

play18:56

string で出しますというのは

play18:58

このように分かるかと思います

play18:59

通常こういった情報というのは

play19:03

モデルを提供している側から受け取るか

play19:08

あとは

play19:09

Hugging Faceなんかで見るわけですね

play19:11

ですがこういったところで

play19:14

情報を持ってくる必要があるとかですね

play19:15

実際の処理どのようになっているか

play19:17

というのをですね 見てみたいと思います

play19:20

まずですね ここでONNXモデルですね

play19:23

パスが分かったらここですね

play19:25

下の方で InferenceSession() ということで

play19:28

推論セッションを作っています

play19:30

推論セッションができたら

play19:31

その下ですね ここを見ていただきたいんですが

play19:36

ここですね audio_stream min_length

play19:39

max_length という形で

play19:41

先ほどのアプリで見たようなですね

play19:45

インプットのパラメーターが

play19:46

設定されているのが分かるかと思います

play19:48

そしてこれを下でですね 先ほど生成した

play19:51

推論セッションに与えてあげると

play19:54

これ見ていただきたいんですけども

play19:56

ここで string として

play19:58

文字起こしの結果が返ってくるという形ですね

play20:01

もう一つですね

play20:02

これはもう一つモデルを使ってまして ここですね

play20:07

ここに silero というのがあるかと思うんですけども

play20:10

これ何に使っているかというと

play20:12

この文字認識がですね 30秒間隔で

play20:16

行っているんですね 30秒間隔でやるときに

play20:21

単語の間とかですね

play20:22

話しているおかしなところで切らないように

play20:24

これを使って分割しているような形になります

play20:27

そしてもう一つ ここにですね

play20:30

inputLanguage とありますけども

play20:32

Whisperはこの 文字起こしの他に翻訳とかですね

play20:37

あとはそのタイムスタンプの

play20:39

抜き出しなんかも使えるんですね なのでこれは

play20:42

もともとは英語向けのものなんですけども

play20:45

日本語が分かるように

play20:46

今 Japanese になっていますね

play20:49

これをですね en にしてみましょう

play20:51

en にして日本語のものをちょっと読み込ませたら

play20:54

どうなるかというのを見てみたいと思います

play20:56

これ保存しまして 実行ですね

play21:00

今ビルドが始まっています

play21:06

すべてですね このPCでですね

play21:10

手前にあるPCで動かしています

play21:11

はいアプリケーションが 今起動してきまして

play21:21

これはもう事前に 貼り付けといたやつですね

play21:25

日本語で 日本語でですね

play21:28

このように文字起こしがされていまして

play21:31

これをクリックすると

play21:32

クリックしたときにビデオが飛びますし

play21:34

逆にこれをクリックすると

play21:36

その箇所にこの文字の方ですね

play21:38

が動くようになっています

play21:40

これ今日本語なんですけども

play21:41

ここに 同じ動画を

play21:45

ちょっと貼り付けてみましょう

play21:46

今度は コードが en になっているんですけども

play21:52

それを貼り付けるとどうなるか

play21:54

これ見ていただきたいんですが

play21:57

インジケーターが 出てきましたね

play22:03

これ今処理をしている状況ですね

play22:06

はい完了です

play22:09

もうすごいあっという間ですね

play22:10

日本語で

play22:11

この2分程度の動画だったらこんなもんですね

play22:13

クリックしますと はい見てください

play22:15

これですね 英語に翻訳されているんですね

play22:19

こういうふうにですね AIを使用すると

play22:21

Whisperですね AIというかWhisperを使用すると

play22:25

文字起こしはもちろんなんですけども

play22:27

このようにきちんと翻訳とかですね

play22:29

もちろんタイムラインもこれ 同期しますし

play22:32

こういったことができるというのが

play22:34

お分かりになったと思います

play22:35

こういったものが

play22:37

皆さんのローカルのマシンで

play22:39

作れる状況になってきています

play22:40

すみません また切り替えをお願いします

play22:43

はい そして デモでは

play22:50

アプリケーションが

play22:53

Whisperモデルをどのように使用しているか

play22:55

という話をしたんですけども

play22:57

Whisperモデルに限らずですね

play22:58

現在ではさまざまな機能を持った

play23:00

さまざまなAIモデルがですね

play23:02

さまざまな場所で公開されています

play23:03

その一つが Hugging Faceですね

play23:06

これはAIモデル用のGitHubのようなものでして

play23:09

コミュニティの研究者が モデルを置いて

play23:12

誰もが使えるようにするような場所ですね

play23:14

もちろん 作成したモデルを 公開することもできます

play23:17

さらに Hugging Faceでは

play23:19

モデルをダウンロードするだけではなく

play23:22

実際に推論させて試すことも

play23:24

できるようになっています

play23:25

さてモデルを 入手したらそれぞれを

play23:30

動作させる必要があります

play23:31

現在デバイス上で

play23:33

AIモデルを動作させるには

play23:35

さまざまなフレームワーク

play23:37

ハードウェア

play23:38

あとAPI

play23:38

さらには

play23:39

ローカルの アクセラレーターがありまして

play23:41

これらの組み合わせは

play23:43

環境や目的や用途によって

play23:45

変わってくることがありますよね

play23:47

特に

play23:48

特にですね

play23:49

ハードウェアAPIの選択は

play23:51

これはまあ

play23:52

各々のハードウェアが提供する機能であるために

play23:55

性質上 致し方ないことではあるんですけども

play23:59

動作対象となる

play24:00

デバイスの構成を狭めることになります

play24:03

ただしですね マイクロソフトが提供する

play24:06

今その ハードウェアAPIの一番左側に書いてあります

play24:10

そのDirectMLですね DirectMLは

play24:13

DirectX 12対応GPUであればですね

play24:16

動くように作られていますので

play24:18

これを選択することでですね

play24:20

動作対象をある程度広げることができます

play24:23

実際のところ

play24:24

今回のデモで使用しているアプリケーションの

play24:27

いくつかの機能も DirectMLを使用して

play24:29

ONNXモデルを動作させています

play24:31

今度は セマンティック検索ですね

play24:36

セマンティック検索何かといいますと

play24:39

これは エンベディングモデルを使用して

play24:41

アプリケーションの中の全てのコンテンツを

play24:44

取得してそれを使用するものですね

play24:47

エンベディングはですね 多次元ベクトルなので

play24:49

多次元でですね 表現できます

play24:52

例えば犬と猫をですね 埋め込みますと

play24:56

犬と猫の意味的な距離を測れるようになるんですね

play24:59

ベクトルの中ですね

play25:00

つまりコンテンツの意味を

play25:02

多次元空間に表現する方法です

play25:04

これもですね このデモで使用しているモデルはですね

play25:09

384次元を使ってですね これを表しています

play25:13

これもちょっとデモで

play25:14

お見せしたいと思います

play25:15

切り替えをお願いします

play25:16

では検索なんですが その前に

play25:22

ちょっとこれをお伝えしなければいけないことがありまして

play25:26

これですね データを

play25:29

ベクトル化するときに使っているAIが

play25:32

この all-MiniMLというのを使っているんですけども

play25:37

これがですね 残念ながら日本語に対応していませんで

play25:39

英語とラテンしかダメなんですね

play25:42

なので検索は今回英語で行います

play25:45

何やってくれるものかといいますと

play25:48

皆さんそのベクトル検索とかするときに

play25:51

インデクサーを使って

play25:53

情報をベクトル化しますよね

play25:55

それをやってくれるものをですね

play25:57

ちょっとコードを動かしてですね

play25:59

その状況をお見せしたいと思います

play26:01

アプリケーションですね 検索のキーワード

play26:05

これで検索キーワードをしてみましょう

play26:07

ごめんなさい オートコレクト これですね

play26:12

How to use function callingというのをですね

play26:17

検索してみましょう

play26:18

function callingどう使いますか

play26:22

そうすると ただこれもう

play26:24

function callingってキーワードが入っちゃっているので

play26:27

あんまりいい質問ではないんですけども

play26:30

こんな形で ここにありますよというのを

play26:33

検索してくれるんですけども

play26:36

これがどういうふうに動いているか というのを

play26:38

見たいと思います

play26:39

ソースコードがこちらですね

play26:43

検索コードがですね

play26:47

SemanticIndex.cs ですね

play26:50

ぶっちゃけ言うとですね

play26:53

ベクトル化したものを比較しています

play26:55

ちょっと動かしてみましょう

play26:57

ここでですね ブレークポイントを設定しまして

play27:04

まだ同じようにですね 検索をします

play27:08

こちらですね 閉じてからですね

play27:13

これ見ていただきたいんですが

play27:18

まずですね こちら storeVectors ってあります

play27:21

これ何が入っているかというと

play27:23

このアプリケーションに

play27:25

いろんなノートありますよね

play27:26

これがベクトル化して入っています

play27:28

これ92個あるんですけども この1個1個ね

play27:31

ベクトルストアですね ごめんなさい

play27:36

ちょっとね これですね

play27:39

この1個の配列につきですね

play27:42

開けてみると分かるんですけど

play27:43

先ほど384次元という話をしましたけども

play27:47

float の384個のデータが入っています

play27:50

これが こっち側がですね

play27:52

アプリケーションが持っているデータですね

play27:54

この searchVectors

play27:56

ここの searchTerm って見ると

play27:58

ここに表示しましょう ですね

play28:02

How to use function callingということで

play28:05

先ほどですね 私が 書いた質問が入ってきます

play28:09

で同じようにですね この処理結果が

play28:13

ここに入ってベクトル化されてるんですね

play28:15

これは配列1個しかありませんけども

play28:18

384個あります

play28:20

この2つのベクターデータ

play28:23

これも間は端折るんですけども

play28:25

ここ結局のところですね ここですね

play28:28

えっとですね はい ここで比較します

play28:32

コサイン比較 コサイン類似関数ですね

play28:39

これでループしながら そのベクター

play28:42

先ほど距離って話しましたけども

play28:44

質問に対して近いものを

play28:46

ここで調べていて ここに近かったら

play28:49

追加するような形になってですね

play28:51

なので 続行すると こういった候補が出てくると

play28:57

こういう仕組みになっているんですね

play28:58

先ほどお話したように ここで使っている

play29:02

エンベディングモデルというのは

play29:04

ベクトル化するために

play29:06

使われているという形になります

play29:07

以上デモでした

play29:10

まずスライド戻してください

play29:17

はい ということでですね デモのコードで

play29:20

説明してしまったんですけども

play29:21

つまりベクターベディングモデルはですね

play29:23

言葉同士の関係性を位置づけるですね

play29:26

空間地図のようなものなんですね

play29:27

なので検索グループ化 分類に非常に

play29:31

効果的に使用することができるようになっています

play29:36

今度は 言語モデルのデモを行うんですけども

play29:39

言語モデルか何か

play29:41

ご存じない方のために 簡単に説明すると

play29:44

一言で言ってしまうと

play29:45

ChatGPTみたいなものですよね

play29:47

言語モデルは 私たちの言語と

play29:50

私たちがどのように話すか

play29:51

またはその言語の背後にあるですね

play29:54

意味を一般的に理解しているモデルになります

play29:57

実際ですね セマンティック検索と

play29:59

エンベディングモデルは

play30:00

ある意味で それと関係しているわけですね

play30:03

それらのモデルを 使用して

play30:05

テキストを理解したり 言語を理解したりですね

play30:08

テキストを推論したりですね

play30:10

追加のテキストを自動生成したり

play30:13

アプリケーション内で

play30:15

非常に優れたことを行うことができます

play30:17

ChatGPTなんですけども あれは LLM

play30:21

Large Language Modelと呼ばれるとおり

play30:25

非常に巨大なものなんですけども

play30:27

このデモでは SLM

play30:29

Small Language Modelであります

play30:31

Phi-3 Miniをローカルで使用します

play30:34

このアプリケーションでは テキストを選択して

play30:37

このテキストを要約するように 依頼できます

play30:39

実際デモを お見せしましょう

play30:41

これはウェブアプリケーションの種類について

play30:45

説明する文章なんですけども これを

play30:48

選択しまして 画面で

play30:52

サマライズというメニューをクリックしますと

play30:59

元に内容を解釈してですね 要約をしてくれます

play31:03

これなんで ビデオで今ご覧いただいているかというと

play31:06

Phi-3日本語を理解するんですけど

play31:08

処理がちょっといまいち早くないんですね

play31:11

実際その回答が出てくるまで

play31:13

だいたい私のマシンだと

play31:14

40秒ぐらいかかってしまってますので

play31:16

ビデオにしています ここからですね

play31:18

実際にデモでお見せしたいと思います

play31:20

スライドを切り替えてください

play31:21

そのほかですね できるものとして

play31:25

今要約しましたけども

play31:27

オートコンプリートなんかもできるんですね

play31:31

ちょっとやってみましょう 例えば

play31:32

例えば えーとですね

play31:39

このドキュメントの中にはですね 一応

play31:42

この ちょっとね えーと

play31:46

Learn about Copilot prompts とか

play31:48

入ってますから

play31:49

Copilotの情報もですね 入ってるんですね

play31:50

ここで まず情報を ここに書きます

play31:55

えーとここですね まあ

play31:56

皆さんが途中まで文章を書いたと思ってください

play31:58

Copilot for Microsoft is

play32:00

っていう風に書きます そうしますと

play32:05

ちょっとGPUの様子を見ましょう これはですね

play32:07

DirectML使ってるんで GPUが動いてるが分かりますよね

play32:10

でそうするとこんな形で えー

play32:13

Assistant for Microsoft is みたいな形で

play32:16

ここで学習してきたものを使って出してるんですね

play32:18

日本語もちょっとやって

play32:19

ちょっと日本語遅くなると思うんですけども

play32:22

ちょっとやってみましょう はい

play32:27

Microsoft Azure で Web アプリをホストするには

play32:30

というところですね 入れます そして ちょっと

play32:34

えーごめんなさい GPUですね

play32:36

動いてますね アプリ側で見ると

play32:45

来ましたね

play32:49

必要なサービスを選択し設定します

play32:51

例えばバックエンドサービス...

play32:53

みたいな感じでやってくれます

play32:54

これがどう動いているかというのをですね

play32:57

ちょっと見てみたいと思います

play32:58

そうしましたらですね

play33:00

先ほどお話した通りですね

play33:01

これは Phi-3使ってますので

play33:06

ここで使っているのはですね

play33:07

これですね DirectMLですね

play33:11

なのでこれはダイレクト DirectXの12ですね

play33:18

それがサポートされているGPUを積んでいれば

play33:20

動くものになっています

play33:21

はい こちらですね Phi-3ですね

play33:26

ここで ONNXファイルを読み込んでいるのが

play33:29

わかるかと思います

play33:30

で この ModelDirですね ModelDirを使ってですね

play33:35

下の方に行きますと ここでインスタンスを作ってですね

play33:38

ニューモデルという形で作ってまして

play33:42

でインスタンスを作ったらですね この後でですね

play33:47

はい tokenizer を使ってその処理を与えてる感じですね

play33:51

でジェネレートをしてます

play33:53

こっちの方で見ていただきたいんですけども

play33:55

えーとですね ありました ここですね

play34:00

モデルのインスタンスを生成したらですね

play34:02

new Generator() という形でやってですね

play34:05

ここの generator.IsDone() だったらって

play34:08

ループしてますね

play34:09

これなんでループしてるかというと

play34:11

言語モデルってですね

play34:15

トークンという感じで

play34:16

トークンという形で処理を行うんですね

play34:19

文字列ですね トークン単位で

play34:22

細切れに出てくるんですけども

play34:24

それをジェネレートが終わった順番で出してですね

play34:28

デモでちょっとお見せしましょう

play34:30

そしたらですね

play34:31

この辺りにブレークポイントを設定しまして

play34:34

アプリケーション動いてますので

play34:36

また同じ質問をですね 書いてみましょう

play34:39

これでいいですね コピーして

play34:43

貼ります ちょっと待ちます

play34:50

はい止まりました ここですね

play34:52

これ見ていただきたいんですけども

play34:55

まずここにですね

play34:58

trained って書いてありますね

play35:01

じゃあもう一個動かしましょう

play35:03

次 part って書いてますね

play35:09

じゃあこれ全部動かすと

play35:10

どうなるかって話なんですけども

play35:12

アプリケーションの画面出してみます

play35:14

ちょっと待ってましょう

play35:15

そうすると 出来上がってくるのがですね

play35:18

先ほど出てきた

play35:20

trained to help users with a

play35:24

みたいなのが入ってきますよね

play35:25

こういう風にですね

play35:26

トークンベースで処理がされてるというのが

play35:29

分かったかと思います

play35:30

このようにですね こんな感じでですね

play35:32

言語モデルを使って 先ほどご覧いただいた

play35:37

オートコンプリートなんかも

play35:38

作れるというところですね

play35:39

スライドに戻してください

play35:48

この Phi-3 Miniを使ったデモを

play35:56

ご覧いただいたんですけども

play35:57

そこで使用されていた SLMまたは

play36:00

ChatGPTのような LLM つまりは

play36:05

小さな言語モデルと 大きな言語モデルの 違いは何でしょうという話ですね

play36:09

違いは サイズと それらのモデルが

play36:12

何のために開発されているかですね

play36:14

一つの例えとして 博士課程の学生と

play36:17

高校生の対比ですね 博士課程の学生は

play36:21

特定の分野について

play36:22

深い知識を持っていますが

play36:25

高校生は 多くの異なる科目の

play36:27

基本的な知識を持っていますよね

play36:29

あるいは ある範囲の中の

play36:32

基本的な知識です

play36:33

当然博士課程の学生は

play36:35

高校生の持っているような知識は

play36:36

全部持っているんですね

play36:38

要するに広くか浅くか

play36:39

広くか深くかですね

play36:41

なおですね SLMは 小規模なモデルですけれども

play36:45

さらに学習させることができます

play36:48

モデルに

play36:50

追加データを導入するために

play36:53

使用できる手法が

play36:54

いくつかあるんですけども

play36:56

その一つがですね RAGですね

play36:57

Retrieval Argumented Generation

play36:59

というのがあります

play37:00

これはもうLLMを 使用している

play37:04

使用した開発をされている方々であれば

play37:06

ご存じかと思うんですけども

play37:08

AIに 問い合わせをした際に

play37:11

モデルが持っている

play37:12

汎用的なデータではなくて

play37:14

あらかじめ用途に応じて

play37:16

用意しておいた 顧客のデータでありますとか

play37:19

個人データといった

play37:21

独自のデータの内容を検索して

play37:23

回答させる方法ですね これもちょっと

play37:26

デモでお見せしたいと思います

play37:27

そうですね

play37:28

デモでお見せしたいと思います

play37:30

ちょっと画面の切り替えをお願いします

play37:31

はい ではですね これから

play37:35

RAGの検索ですね これご存じのとおりですね

play37:38

これ私がセッションで話した内容とか

play37:40

セッション用のこのデモのビデオとかですね

play37:44

これ入っているんですね データですね

play37:45

なので あと セッションの参考にした

play37:49

今回のセッションの参考にしたですね

play37:51

セッションデモ動画とかですね

play37:53

これなんかも入っています なので

play37:55

ここの中からですね

play37:56

情報を検索できるようになっています

play37:58

検索する 質問はですね これにしましょう

play38:01

はい まずここのですね

play38:06

ロボットマークのアイコンをクリックしますと

play38:08

しまして

play38:09

ここにですね こういう質問を書きます

play38:13

先ほどまだリリースされてませんよと言った

play38:16

What is the OCR API included in?

play38:19

OCR APIどこにありますか?

play38:21

何に含まれますか?という

play38:22

何に含まれますか?

play38:24

質問を投げてみましょう

play38:25

ちょっとこれ いっぺん止めちゃったから

play38:28

うまくいかないかもしれません

play38:29

ちょっと動かしてみます

play38:29

動かしてみましょう

play38:30

今GPUが スパイクしているので

play38:34

ちゃんと処理していると思います

play38:35

ちょっと待ってみましょう

play38:39

もう少しですね 数えましょうか

play38:45

1 2 3 あ、来ましたね

play38:48

はい 出てきました はい

play38:55

なんて回答しているかですね

play38:58

The OCR API is included as part of the next Windows App SDK 1.6 Experimental

play39:07

次出てくるWindows App SDKの1.6 Experimentalに入ってますよ

play39:14

というふうにですね ちゃんと答えています

play39:15

そしてここに書いてあります

play39:17

動画書いてありますとクリックします

play39:19

そうするとここですね 惜しいですね

play39:23

調子にいいときはですね ここを指してくれます

play39:27

ここをちゃんとですね ここで書いてますよ

play39:29

と言ってくれるんですけど

play39:30

生成AIはですね ちょっと気まぐれなんで

play39:33

こんな感じなんですけども こんな感じで

play39:35

RAGがですね うまく動くということは

play39:37

確認できたかと思います

play39:39

またスライドの方に戻してください

play39:40

はい ということで ちょっと待ってくださいね

play39:45

RAGのほかにですね

play39:48

独自のデータを追加する方法として

play39:51

使用できる手法としてですね

play39:52

ファインチューニングがあります

play39:53

前述しましたようにですね

play39:55

先ほど言いましたようにですね

play39:56

SLMはですね ベースモデルでありまして

play39:59

特定のタスクのために

play40:00

訓練されていないんですね

play40:02

しかしシナリオによっては

play40:03

これらのモデルを使用する場合に

play40:06

そのSLMには 用意されていない

play40:08

ある特定のタスクの一部に

play40:10

必要になることが タスクの一部がですね

play40:13

必要になることがあります

play40:14

その際には

play40:15

ファインチューニングが役立つんですね

play40:17

これはモデルの

play40:18

再トレーニングではなくて

play40:20

さらにモデルをトレーニングしたり

play40:21

特定のタスクに対して モデルに

play40:24

学習させたり 学習させるデータを

play40:27

追加することですね

play40:28

ここで例を挙げるとするならば

play40:31

先ほど紹介した そのオートコンプリートですよね

play40:34

オートコンプリートでは

play40:35

基本モデルがすでに

play40:37

持っている知識だけで

play40:38

動作はするんですけども

play40:40

そのモデルを微調整して

play40:42

自分の与えた知識で話したり

play40:44

組織で使用している用語を

play40:46

使用したりできるようになるわけです

play40:51

モデルを ファインチューニングする ツールとしては

play40:54

Azure AI Studioなんかがありますけども

play40:56

ローカルで モデルを微調整するために

play40:59

使用できるツールもあります

play41:01

それが AI Toolkit for VS Codeですね

play41:04

これはWindows AI Studioですね

play41:07

拡張機能の進化版でありまして

play41:09

Azure AI Studioと Hugging Faceの

play41:12

最先端のモデルを探索して それを

play41:16

試したりファインチューニングして

play41:17

アプリケーションに統合することができます

play41:19

プロンプトを提供してですね

play41:21

モデルがどのように応答するかを 確認できる

play41:25

モデルプレイグラウンドやですね

play41:27

あと結果が探しているものでない場合は

play41:29

実際にデータセットを作成して モデルを

play41:32

さらにトレーニングできたりもします

play41:34

ぜひこういったものを

play41:35

活用いただければと思います

play41:39

はいということで まとめです

play41:41

マイクロソフトでは

play41:43

AIの利用には

play41:44

責任を伴うと考えておりまして

play41:46

マイクロソフトでモデルを

play41:48

構築するとき あるいはモデルを

play41:50

変更するときは 非常に

play41:52

徹底的なレビューを行っています

play41:54

利用者に 害を及ばさないように

play41:57

するために マイクロソフトでは

play41:59

従順すべき 複数の原則がありまして

play42:02

AIを 使用してこれまでにない

play42:05

全く新しいアプリケーションを

play42:07

開発するときは それが

play42:09

喜びをもたらす可能性があるだけでなく

play42:12

逆に害をもたらす可能性があることも

play42:15

考えておく必要があるかと思います

play42:17

大きな力には

play42:19

大きな責任を伴うという

play42:21

古くからの格言がありますけれども

play42:23

この言葉にあるように

play42:25

世の中には 世の中に

play42:27

大きな影響を与える 与えうるサービスや

play42:30

機能をリリースする際には

play42:32

それを正しく 責任を持って行う必要がありまして

play42:36

誰にとっても 安全なもの

play42:39

安全なものなのかどうか

play42:41

十分に熟考する必要があるかと思います

play42:44

現在では それを確認して

play42:46

実行するためのツールや

play42:49

リソースもたくさん出ておりますので

play42:51

それらを活用して

play42:52

ぜひ責任あるAIを 実現していただければと思います

play42:56

次ですね こちら私がですね

play42:59

このセッションで話した内容は

play43:02

大体これを見れば分かるかと思います

play43:03

あとスライドをちょっと切り替えて

play43:05

画面切り替えてもらっていいですかね

play43:07

でですね サンプルなんですけども

play43:11

ここですね Windows上の

play43:14

AIサンプルギャラリーというのがありまして

play43:16

もちろんリンクこれ貼ってありますけども

play43:18

ここにですね 様々なサンプルアプリケーション

play43:22

GitHub上のサンプルアプリケーションのですね

play43:23

リンクがあります

play43:24

例えばオーディオエディターとかですね

play43:26

先ほどのサンプルアプリケーションがありますので

play43:26

先ほどのデモで私が使用しました

play43:28

メモアプリでありますとか その他ですね

play43:31

もろもろ非常にたくさんの有益なですね

play43:33

サンプルコードが公開されております

play43:36

これ動かすことができますので

play43:38

ぜひお手元でですね ビルドをしていただいて

play43:41

このAIの機能ですね

play43:42

これを体感していただければと思います

play43:44

画面を戻していただけますか

play43:46

そしてこれ最後にですね

play43:49

今回は 個々の技術要素に対して

play43:53

細かいお話はできなかったんですけども

play43:55

さらに深い内容については

play43:58

このスライドの最後に

play44:01

先月行われましたBuildですね

play44:05

Buildのセッションのリンクが貼ってありますので

play44:09

例えばもっと

play44:10

Phiシリーズについて知りたいよとか

play44:14

あとはその .NET関連のところは知りたいよね

play44:19

という場合はですね ここら辺の

play44:20

スライドですね スライドじゃないですね

play44:23

公開されているセッション動画を

play44:24

ご覧いただければと思います

play44:26

はいということで 駆け足になってしまいましたけども

play44:29

私のセッションは以上でございます

play44:31

ご静聴ありがとうございました

Rate This

5.0 / 5 (0 votes)

Related Tags
AI技術Windowsアプリケーション機能紹介実装方法セッション言語モデルマルチモーダルエンベディングRAGファインチューニング
Do you need a summary in English?