ドキュメント要約アプリケーション

大規模言語モデル (LLM) は、テキストとの相互作用に変革を起こしました。このタイプのモデルは、ニュース記事、リサーチの報告、技術ドキュメント、法的文書といったテキスト類の要約に活用できます。PDF、概要ページ、顧客からの質問事項など、内容を要約したいドキュメントがいくつもあるとしましょう。ここで例として挙げるユースケースでは、要約手順の実装に LangChain を使用し、テキスト生成推論によってスムーズに処理できるようにしています。

![１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/d6e6f89c-9f68-5ef9-18e1-a50f5040f31f.png)

【ドキュメント要約サービスの実装】
ドキュメント要約サービスはインテル® Gaudi® 2 アクセラレーターとインテル® Xeon® スケーラブル・プロセッサーどちらでも簡単に実装することができます。Docker または Kubernetes のいずれをベースとするかによって、以下の手順を進めてください。現在サポートしているのは Docker Compose を使用した実装方法です。

＜必要なモデル＞
デフォルトは "Intel/neural-chat-7b-v3-3" モデルに設定しました。ほかのモデルを使いたい場合は、"set_env.sh" の "LLM_MODEL_ID" を変更してください。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/782c3be1-57b6-76c1-bbfe-c6b8b231983d.png)

ゲート付きモデルの場合は、Hugging Face トークンを "HUGGINGFACEHUB_API_TOKEN" 環境変数に渡す必要があります。
https://huggingface.co/docs/hub/security-tokens

【環境変数の設定】
ドキュメント要約サービスを実装するための環境変数の設定は、以下の手順で行います。
1.	必要な環境変数を設定する
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/bb4fe304-9286-d9a8-d123-93955dddc46d.png)
2.	プロキシー環境の場合は、プロキシー関連の環境変数も設定する
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/ac9a4086-8996-72d0-4317-6ab982b78230.png)
3.	その他の環境変数を設定する
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/5acda6d3-6754-43d8-08f8-6c270b3d343e.png)

【Docker を使用した実装】
＜インテル® Gaudi® アクセラレーターへの実装＞
ソースから Docker イメージをビルドする方法については、インテル® Gaudi® アクセラレーターのガイドを参照してください。イメージのビルドが完了したら、以下のコマンドを実行してサービスを開始します。
https://github.com/opea-project/GenAIExamples/blob/main/DocSum/docker_compose/intel/hpu/gaudi/README.md
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/5e8d7239-68bb-a864-1179-24115efbf990.png)
該当の compose.yaml を検索します。
https://github.com/opea-project/GenAIExamples/blob/main/DocSum/docker_compose/intel/hpu/gaudi/compose.yaml

注: 現時点では Habana Driver 1.16.x のみインテル® Gaudi® アクセラレーターに対応しています。

【インテル® Xeon® プロセッサーへの実装】
ソースから Docker イメージをビルドする詳しい手順については、インテル® Xeon® プロセッサーのガイドを参照してください。イメージのビルドが完了したら、以下のコマンドを実行してサービスを開始します。
https://github.com/opea-project/GenAIExamples/blob/main/DocSum/docker_compose/intel/cpu/xeon/README.md
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/51519ed7-c232-60f9-abc5-78557b666fd8.png)
該当の compose.yaml を検索します。
https://github.com/opea-project/GenAIExamples/blob/main/DocSum/docker_compose/intel/cpu/xeon/compose.yaml

【Kubernetes を使用した実装 (GMC あり)】
Kubernetes での実装を参照
https://github.com/opea-project/GenAIExamples/blob/main/DocSum/kubernetes/intel/README_gmc.md

【Kubernetes を使用した実装 (GMC なし)】
Kubernetes での実装を参照
https://github.com/opea-project/GenAIExamples/blob/main/DocSum/kubernetes/intel/README.md

【Helm Chart を使用し DocSum を Kubernetes に実装】
まずは Helm (v3.15 以降) をインストールします。詳しくは、Helm インストール・ガイドを参照してください。
https://helm.sh/docs/intro/install/
Kubernetes を使用して DocSum をインテル® Xeon® プロセッサー / インテル® Gaudi® アクセラレーターに実装する手順については、DocSum helm chart を参照してください。
https://github.com/opea-project/GenAIInfra/blob/main/helm-charts/docsum/README.md

【実装したドキュメント要約サービスのワークフロー】
こちらは GenAIComps で定義されているコンポーネント・レベルのマイクロサービスを使用して実装した DocSum の例です。以下のフローチャートは、この実装例でのマイクロサービス間の情報の流れを示しています。
https://github.com/opea-project/GenAIComps

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/a1a22a46-4fca-802d-1551-26782831027b.png)

【ドキュメント要約サービスの利用】
2 パターンのドキュメント要約サービス利用方法:
1.	Terminal で cURL コマンドを実行する
テキスト
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/c7d8c865-ddcd-4659-03b1-b77b12ae4283.png)
curl リクエストによる音声 / 動画ファイルのアップロードには対応していません。Gradio-UI を使用してください。
音声
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/8757f713-1e66-238b-cbc1-e824ca298c3a.png)
動画
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/3954465d-eb7f-3af8-dc0b-eec4c53ec6c7.png)
2.	フロントエンド経由でアクセスする
フロントエンドにアクセスするには、ブラウザーで以下の URL を開放します。
http://{host_ip}:5173
デフォルトの場合 UI は内部的に ポート 5173 で起動します。

【トラブルシューティング】
1.	「アクセスが拒否されました」といったエラーが表示される場合、まずはマイクロサービスを確認してください。簡単な例を示します。
https://github.com/opea-project/GenAIExamples/blob/main/DocSum/docker_compose/intel/cpu/xeon/README.md#validate-microservices

![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/c9850709-3522-4ba0-25e5-f577086d0aa2.png)

2.	(Docker のみ) すべてのマイクロサービスが問題なく起動している場合、ポート ${host_ip}:8888 を確認。ポートがほかのユーザーによって割り当てられていることもあるため、compose.yaml を修正します。

3.	(Docker のみ) 「指定されたコンテナ名は使用中です」などのエラーが表示される場合は、compose.yaml 内のコンテナ名を変更。