#開発者コミュニティ公式

0 フォロワー · 52 投稿

InterSystems開発者コミュニティの発表、リリース、および利用規約に関連する投稿。

お知らせ Mihoko Iijima · 6月 10, 2025

開発者の皆さん、こんにちは!

開発者コミュニティにスマートで積極的な新しい助っ人が誕生しました!

🤖 開発者コミュニティAIボット 通称 @DC AI Bot です! 🤖

DC AI assistant と同様に、IRIS のベクトル検索を搭載した @DC AI Bot は、さらに一歩進んでいます!

👉 新しく投稿されたすべての質問を自動的にスキャンし、関連する回答が見つかった場合、コメントに返信を残します。

メモ:現時点では、USコミュニティに投稿された質問に対して自動スキャンが行われています。日本語で質問を書いても英語でコメント欄に返信を残してくれるそうです!


0
0 27
お知らせ Anastasia Dyubaylo · 3月 21, 2025

🚨 計画メンテナンスのお知らせ 🚨

InterSystems 開発者コミュニティは、明日 (2025 年 3 月 22 日) 午前 10:30 から午後 12:30 (東部標準時) (午後 16:30 から午後 18:30 (中央ヨーロッパ標準時)) まで、計画メンテナンスを実施します。

この間、プラットフォームは断続的にダウンタイムが発生する可能性があります。 ご不便をおかけして申し訳ございませんが、サービスの向上に努めておりますので、今しばらくお待ちください。

ご理解のほどよろしくお願いいたします。

0
0 26
お知らせ Anastasia Dyubaylo · 1月 16, 2025

🚨 メンテナンス予定のお知らせ 🚨  

2025年1月20日(月曜日)、計画的なメンテナンスのため、Developer Communityサイトが一時的に利用できなくなる場合があります。

ご不便をおかけしますことをお詫び申し上げます。ご理解いただきありがとうございます。プラットフォームの改善に向けた取り組みにご協力いただき、感謝いたします!  

9 Under Maintenance Page Tips | Messages for a Down Website

1
0 48
ディスカッション Toshihiko Minamoto · 7月 26, 2024

コミュニティの皆さん
こんにちは!

ご存知かもしれませんが、Developer Community AIがリリースされて1ヶ月以上が経ちました🎉 興味を持たれた方は、ぜひ試してみてください😁 まだの方は、ぜひお試しください!いずれにせよ、まだベータ版であるため、私たちは皆さんがこのAIについてどのように考えているかを知りたいと思っています。

皆さんの時間と労力を大切にしているので、感想をシェアしてくれたメンバーに、抽選でキュートな賞品をプレゼントします。この懸賞に参加するには、以下のガイドラインに従ってください。

3
0 105
お知らせ Mihoko Iijima · 7月 8, 2024

開発者の皆さん、こんにちは!

💡 第3回 InterSystems アイデアコンテスト が終了しました。今回、🔥 30 もの新しいアイデアが投稿されました! 

いずれも InterSystems IRIS および関連製品やサービスの改善に焦点が当てられていて、アイデアが実装された場合、開発者にとってより具体的なメリットとなることでしょう。

この記事では、アイデアコンテストの勝者の皆さんをご紹介します。

  

0
0 64
お知らせ Mihoko Iijima · 5月 29, 2024

開発者の皆さん、こんにちは。

次のコンテストの開催が決定しました!💡 第3回 InterSystems アイデアコンテスト 💡

InterSystems アイデアコンテストは開発者コミュニティのメンバー(InterSystems社員も含)であればどなたでもご応募いただけます!

このコンテストでは、インターシステムズの製品やサービスを強化するための革新的なアイデアを募集しています。あなたのアイデアが他の利用者にもたらす具体的なメリットや、インターシステムズの技術で開発者の体験をどのように向上させるかについて実際の使用事例に基づいた提案をお待ちしています。

📅 期間:2024年6月10日~2024年7月7日

🏆 優秀なアイデアには賞品が贈られます!

🎁 参加賞あります!: コンテストに採用された方全員に参加賞をご用意しています!👕

 

>> 6月10日よりアイデア募集します! <<

0
0 97
お知らせ Mihoko Iijima · 2月 14, 2024

Whats New Images – Browse 10,871 Stock Photos, Vectors, and Video | Adobe  Stock

2024年1月の開発者コミュニティリリースニュースをお伝えします。

開発者コミュニティをより素晴らしい場所とするため、以下の機能について更新を行いました。

📌 ニックネーム🆕

📌 Credly バッジ

📌 サブスクリプション

📌 GIFの再生/一時停止

📌 タグの自動付与

それぞれの更新について、以下詳細をご紹介します!

0
0 211
お知らせ Mihoko Iijima · 7月 20, 2023

開発者の皆さん、こんにちは!

InterSystems製品に関連するアイデアをご提案いただく「アイデアソン」の2回目の開催が決定しました!

🎁 第2回 InterSystems Idea-A-Thon(アイデアソン) 🎁

8月1日~21日の期間にInterSystems 製品やサービスに関連するアイデアをご提案いただくコンテストで賞品の用意があります!

どなたでもご参加いただけます!

0
0 178
お知らせ Mihoko Iijima · 2月 26, 2023

開発者の皆さん、こんにちは!

21作品の応募があったデベロッパーツールコンテストが終わったばかりですが、次のコンテストの開催が決定しました!

✍️ 技術文書ライティングコンテスト:InterSystems IRIS チュートリアル ✍️

3月1日~31日までの期間に InterSystems IRISプログラマーを対象としたチュートリアルを投稿してください。
チュートリアルのレベルは初級、中級、上級のいずれでもかまいません。IRISプログラマ向けのチュートリアルを投稿してください。

🎁 参加者全員への賞品: 投稿いただいた方全員に参加賞があります。

🏆 特賞: 選ばれた6作品には特別賞があります。 

1
0 152
記事 Toshihiko Minamoto · 1月 29, 2023 1m read

数ヶ国語を知っていて、世界のさまざまな地域のユーザーと知識を共有したいとお考えですか?

でしたら、今こそあなたが輝く時です 🤩

開発者コミュニティでは、あなたのオリジナル記事とその翻訳を簡単にリンクさせることができます(翻訳を依頼することも可能です)

ではどのように翻訳記事を作成するのか説明しましょう。

0
0 128
記事 Toshihiko Minamoto · 1月 29, 2023 1m read

開発者コミュニティの皆さん
こんにちは。

インターシステムズの認定プログラムに合格された方の中には、プロフィールのアバターに緑色の目印を付けたい方や、開発者コミュニティのプロフィールに全ての認定証を掲載し、他の人に知ってもらいたいと考えている方もいらっしゃると思います。 

そこで、DC プロフィールに認定証を追加するために実行する3 つの簡単な手順をステップを紹介します。

1️⃣ 開発者コミュニティのプロファイルに移動します。 

2️⃣ InterSystems certifications (インターシステムズ認証)セクションに移動します。

3️⃣  Load my certification(s) ボタンをクリックします。 

以上です!  

0
0 114
お知らせ Toshihiko Minamoto · 1月 25, 2023

開発者の皆さん、こんにちは。

今年もインターシステムズ開発者コミュニティをご利用いただき、誠にありがとうございます。

私たちのチームは、12,000人以上のメンバーそれぞれにとって、より良い、便利なコミュニティとなるよう、日々努力しています。

開発者コミュニティが皆様にとってどの程度有用であるかを知りたいと思います。ぜひ、ご意見・ご感想をお寄せください。

👉🏼 インターシステムズ開発者コミュニティ通年アンケート 2022 👈🏼

注意: アンケートが完了するまで5分ほどかかります。

0
0 94
お知らせ Toshihiko Minamoto · 1月 16, 2023

開発者の皆さん、こんにちは。

今回は、開発者コミュニティの最新機能についてお知らせします!

🔥 2022年の総括 🔥  

メンバーは、投稿数、コメント数、閲覧数、上位およびお気に入りの投稿/タグなど、自分だけの2022年の活動概要にアクセスできるようになりました!

0
0 132
お知らせ Toshihiko Minamoto · 11月 28, 2022

開発者の皆さん、こんにちは。

コミュニティメンバー向けオンライン分析ダッシュボードという新機能をお知らせします!

これからは、全期間や週や月単位で以下のような詳細な統計情報を見ることができます。

  • 閲覧件数、いいねの数、コメント数、フォロワー数
  • 閲覧件数、いいねの数、投稿数、コメント数の推移グラフ
  • 投稿ごとの閲覧件数、コメント数の表

0
0 112
お知らせ Mihoko Iijima · 10月 18, 2022

コミュニティの皆様、こんにちは!

第1回 InterSystems Idea-A-Thon(アイデアソン) の応募期間中に 75件の素晴らしいアイデア が投稿されました!!🤩 

アイデアの投稿を行っていただき、また、投票やコメントを記入いただきありがとうございました!

この記事では、受賞者を発表します!

0
0 144
記事 Toshihiko Minamoto · 10月 5, 2022 5m read

開発者の皆さん
こんにちは。
 

誰かのヘルプが必要だったり、興味のある機能を議論したり、みんなにアナウンスしたり、知識を共有したりしませんか?
この記事ではそのすべての方法について説明します。

より簡単に投稿方法にたどり着くために以下の項目を用意しました。

一般的なガイドライン

最初に、開発者コミュニティサイトのトップメニューにある「新しい投稿」ボタンをクリックします。

その後、質問やアナウンス、記事、議論の作成が選択できるエディタが表示されます。投稿の種類に応じて必須項目と任意項目が表示されます。

0
0 140
お知らせ Toshihiko Minamoto · 10月 4, 2022

デベロッパーエコシステムサマーニュースへようこそ!

この夏、インターシステムズのデベロッパーエコシステムにおいて、たくさんのエキサイティングなイベントやアクティビティがありました。
その中でも最もホットなニュースやトピックを厳選してお届けします。

ここでは、この時期にあった注目すべきことを、一目でわかるようにまとめました。どうぞご覧ください!

0
0 134
お知らせ Toshihiko Minamoto · 10月 4, 2022

開発者の皆さん
こんにちは。
 

開発者コミュニティの新たな機能として開発者による重要な質問をご紹介します。

インターシステムズデータプラットフォームに関連する質問のうち、最もインパクトがあると思われるものに「Key Question」タグを追加します。

毎月、インターシステムズエキスパートがそのような質問を選び、その著者は栄誉ある賞を受賞することになります。

どのような栄誉なのかはつづきをご覧ください。

0
0 127
お知らせ Toshihiko Minamoto · 10月 4, 2022

開発者コミュニティのメンバーの皆さん
こんにちは。

インターシステムズ開発者コミュニティでいくつかの大きなマイルストーンを達成できたことを誇りに思います!

📝 10,000 件の投稿

👥 11,000 件の登録メンバー

👁 5,000,000 件の閲覧(ごひゃくまんですよ!)

0
0 98
お知らせ Mihoko Iijima · 9月 22, 2022

開発者の皆様、こんにちは!

新しいタイプのコンテスト「アイデアコンテスト」を開催します!​​​

💡 InterSystems Idea-A-Thon(アイデアソン) 💡

9月26日~10月16日の期間に、InterSystems 製品やサービスに関連するアイデアをご提案いただくコンテストで、必ず賞品がもらえます!

そして、どなたでもご参加いただけます!

>> あたなの素敵なアイデアを投稿してください! <<


0
0 206
お知らせ Toshihiko Minamoto · 8月 31, 2022

開発者コミュニティの皆さん
こんにちは。

今回は一新された「はじめに」ページを紹介します。

📍 jp.ommunity.intersystems.com/about

このページでは、開発者コミュニティに関する一般的な情報、興味深い統計、便利なリンク、その他多くの情報を得ることができます。
 

ここをチェックすると、長い間メンバーだった方でも、何か新しい発見があるかもしれません。

0
0 99
お知らせ Mihoko Iijima · 6月 16, 2022

開発者の皆さん、こんにちは!

次のコンテスト:🐍 InterSystems 技術文書ライティングコンテスト:Python エディション 🐍 が発表されました 📢

このコンテストは、6月20日~7月21日31日までの期間に、InterSystems のテクノロジと Python の使い方に関するあらゆるトピックについての記事を投稿いただくコンテストです!

今回は、応募期間中に投稿いただいた方 全員 に 🎁賞品🎁 をご用意しています。

🏆 特賞: AirPods Max; Apple Watch SE; Apple HomePod mini / Apple Pencil 

1
0 211
お知らせ Toshihiko Minamoto · 3月 31, 2022

2022年2月のコミュニティリリースへようこそ!

開発者コミュニティでは、以下の点が改良されています。

  • 新たなコミュニティ検索
  • コミュニティ全般の統計
  • Facebookプロフィールとの連携 
  • 投稿ページの変更:タグ、著者ブロック、下書きの強調表示

以下、詳しく見ていきましょう。 

0
0 63
お知らせ Toshihiko Minamoto · 3月 3, 2022

2022年2月のコミュニティリリースへようこそ!

開発者向けの新しいコミュニティ・イベント・カレンダーをご紹介します。​​​​

🎯 https://jp.community.intersystems.com/events 

このカレンダーでは、開発者コミュニティのイベント履歴を見ることができます。現在または近日中に開催されるイベントを確認したり、過去のイベントをチェックしたり、Communityのウェビナーやミートアップの録画を見たりすることができます。

ではその使い方を詳しく見ていきましょう。

0
0 79
記事 Toshihiko Minamoto · 2月 14, 2022 19m read

キーワード: IRIS、IntegratedML、Flask、FastAPI、Tensorflow Serving、HAProxy、Docker、Covid-19

目的:

過去数か月に渡り、潜在的なICU入室を予測するための単純なCovid-19 X線画像分類器やCovid-19ラボ結果分類器など、ディープラーニングと機械学習の簡単なデモをいくつか見てきました。  また、ICU分類器のIntegratedMLデモ実装についても見てきました。  「データサイエンス」の旅路はまだ続いていますが、「データエンジニアリング」の観点から、AIサービスデプロイメントを試す時期が来たかもしれません。これまでに見てきたことすべてを、一式のサービスAPIにまとめることはできるでしょうか。  このようなサービススタックを最も単純なアプローチで達成するには、どういった一般的なツール、コンポーネント、およびインフラストラクチャを活用できるでしょうか。

対象範囲

対象:

ジャンプスタートとして、docker-composeを使用して、次のDocker化されたコンポーネントをAWS Ubuntuサーバーにデプロイできます。

  • **HAProxy ** - ロードバランサー
  • Gunicorn と **Univorn ** - Webゲートウェイ****サーバー
  • FlaskFastAPI - WebアプリケーションUI、サービスAPI定義、およびヒートマップ生成などのアプリケーションサーバー
  • Tensorflow Model ServingTensorflow-GPU Model Serving - 画像や分類などのアプリケーションバックエンドサーバー
  • IRIS IntegratedML - SQL インターフェースを備えたアプリとデータベースを統合した AutoML
  • ベンチマーキング用クライアントをエミュレートする、JupyterノートブックのPython3
  •  Dockerとdocker-compose
  • Testla T4 GPU搭載のAWS Ubuntu 16.04 

注意: GPUを使用したTensorflow Servingはデモのみを目的としています。GPU関連の画像(dockerfile)と構成(docker-compose.yml)は、単純にオフにできます。

対象外またはウィッシュリスト:

  • Nginx またはApacheなどのWebサーバーは、今のところこのデモでは省略されています。
  • RabbitMQとRedis  - IRISまたはEnsembleと置き換えられる、信頼性の高いメッセージングキューブローカー。   
  • IAMIntersystems API Manger)またはKongはウィッシュリストに含まれます。
  • **SAM **(InterSystemsのシステムアラートと監視) 
  • Kubernetes Operator付きのICMInterSystems Cloud Manager)- 誕生したときからずっとお気に入りの1つです。
  • FHIR(IntesyStems IRISベースのFHIR R4サーバーとFHIRアプリのSMART用FHIRサンドボックス)
  • CI/CD開発ツールまたはGithub Actions

「機械学習エンジニア」は、サービスのライフサイクルに沿って本番環境をプロビジョニングする際に、必然的にこれらのすべてのコンポーネントを操作しなければならないでしょう。 今後徐々に、焦点を当てていきたいと思います。

GitHubリポジトリ

全ソースコードの場所: https://github.com/zhongli1990/covid-ai-demo-deployment

また、新しいリポジトリとともに、integratedML-demo-templateリポジトリも再利用します。
 

デプロイメントのパターン

以下に、この「DockerでのAIデモ」テストフレームワークの論理的なデプロイパターンを示します。

デモの目的により、意図的にディープラーニング分類とWebレンダリング用に個別のスタックを2つ作成し、HAProxyをソフトロードバランサーとして使用して、受信するAPIリクエストをこれらの2つのスタックでステートレスに分散できるようにしました。

  • Guniorn + Flask + Tensorflow Serving
  • Univcorn + FaskAPI + Tensorflow Serving GPU

前の記事のICU入室予測と同様に、機械学習デモのサンプルには、IntegratedMLを使用したIRISを使用します。

現在のデモでは、本番サービスでは必要または検討される共通コンポーネントをいくつか省略しました。

  • Webサーバー: NginxまたはApacheなど。 HAProxyとGunicorn/Uvicornの間で、適切なHTTPセッション処理を行うために必要となります(DoS攻撃を防止するなど)。
  • キューマネージャーとDB: RabbitMQやRedisなど。Flask/FastAPIとバックエンドサービングの間で、信頼性のある非同期サービングとデータ/構成の永続性などに使用されます。  
  • APIゲートウェイ: IAMまたはKongクラスター。単一障害点を作らないように、HAProxyロードバランサーとAPI管理用Webサーバーの間に使用されます。
  • 監視とアラート: SAMが適切でしょう。
  • CI/CD開発のプロビジョニング: クラウドニューラルデプロイメントと管理、およびその他の一般的な開発ツールによるCI/CDにはK8を使用したICMが必要です。

実際のところ、IRIS自体は、信頼性の高いメッセージングのためのエンタープライズ級のキューマネージャーとしても、高性能データベースとしても確実に使用することができます。 パターン分析では、IRISがRabbitMQ/Redis/MongoDBなどのキューブローカーとデータベースの代わりになることは明らかであるため、レイテンシが大幅に低く、より優れたスループットパフォーマンスとさらに統合する方が良いでしょう。  さらに、IRIS Webゲートウェイ(旧CSPゲートウェイ)は、GunicornやUvicornなどの代わりに配置できますよね?  

環境トポロジー

上記の論理パターンを全Dockerコンポーネントに実装するには、いくつかの一般的なオプションがあります。 頭に思い浮かぶものとしては以下のものがあります。  

  • docker-compose
  • docker swarmなど
  • Kubernetesなど 
  • K8演算を使用したICM

このデモは、機能的なPoCといくつかのベンチマーキングを行うために、「docker-compose」から始めます。 もちろん、いつかはK8やICMを使いたいとも考えています。 

docker-compose.ymlファイルに説明されているように、AWS Ubuntuサーバーでの環境トポロジーの物理的な実装は、以下のようになります。  

上図は、全Dockerインスタンスのサービスポートが、デモの目的でどのようにマッピングされており、Ubuntuサーバーで直接公開されているかを示したものです。 本番環境では、すべてセキュリティ強化される必要があります。 また、純粋なデモの目的により、すべてのコンテナは同じDockerネットワークに接続されています。本番環境では、外部ルーティング可能と内部ルーティング不可能として分離されます。

Docker化コンポーネント 

以下は、docker-compose.ymlファイルに示されるとおり、ホストマシン内でこれらのストレージボリュームが各コンテナインスタンスにどのようにマウントされているかを示します。 

ubuntu@ip-172-31-35-104:/zhong/flask-xray$ tree ./ -L 2

./├── covid19                             (Flask+GunicornコンテナとTensorflow Servingコンテナがここにマウントされます)├── app.py                                (Flaskメインアプリ:  WebアプリケーションとAPIサービスインターフェースの両方がここに定義されて実装されます)├── covid19_models               (CPU使用の画像分類Tensorflow Servingコンテナ用のTensorflowモデルはここに公開されてバージョン管理されます)├── Dockerfile                          (Flask サーバーとGunicorn:      CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:5000", "--workers", "4", "--threads", "2"]├── models                               (.h5形式のFlaskアプリ用モデルとX線画像へのGrad-CAMによるヒートマップ生成のAPIデモ)├── __pycache__├── README.md├── requirements.txt             (全Flask+Gunicornアプリに必要なPythonパッケージ) ├── scripts├── static                                  (Web静的ファイル)├── templates                         (Webレンダリングテンプレート)├── tensorflow_serving        (TensorFlow Servingサービスの構成ファイル)└── test_images├── covid-fastapi                   (FastAPI+UvicornコンテナとGPU使用のTensorflow Servingコンテナはここにマウントされます)├── covid19_models            (画像分類用のTensorflow Serving GPUモデルは、ここに公開されてバージョン管理されます)├── Dockerfile                       (Uvicorn+FastAPIサーバーはここから起動されます: CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4" ]├── main.py                           (FastAPIアプリ: WebアプリケーションとAPIサービスインターフェースの両方がここに定義されて実装されます)├── models                            (.h5形式のFastAPIアプリ用モデルとX線画像へのGrad-CAMによるヒートマップ生成のAPIデモ)├── __pycache__├── README.md├── requirements.txt├── scripts├── static├── templates├── tensorflow_serving└── test_images├── docker-compose.yml      (フルスタックDocker定義ファイル。  Docker GPU「nvidia runtime」用にバージョン2.3を使用。そうでない場合はバージョン3.xを使用可)├── haproxy                             (HAProxy dockerサービスはここに定義されます。  注意: バックエンドLBにはスティッキーセッションを定義できます。 )                             ├── Dockerfile└── haproxy.cfg└── notebooks                       (TensorFlow 2.2とTensorBoardなどを含むJupyterノートブックコンテナサービス)├── Dockerfile├── notebooks                  (機能テスト用に外部APIクライアントアプリをエミュレートするサンプルノートブックファイルとロードバランサーに対してPythonによるAPIベンチマークテストを行うサンプルノートブックファイル)└── requirements.txt

注意: 上記のdocker-compose.ymlはCovid-19 X線画像のディープラーニングデモ用です。  別のintegratedML-demo-templatedocker-compose.ymlとともに、環境トポロジーに表示されるフルサービススタックを形成するために使用されています。  

サービスの起動 

すべてのコンテナサービスを起動するには、単純なdocker-compose up -dを使用します。

ubuntu@ip-172-31-35-104:~$ docker ps
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                PORTS                                                                              NAMES
31b682b6961d        iris-aa-server:2020.3AA               "/iris-main"             7 weeks ago         Up 2 days (healthy)   2188/tcp, 53773/tcp, 54773/tcp, 0.0.0.0:8091->51773/tcp, 0.0.0.0:8092->52773/tcp   iml-template-master_irisimlsvr_1
6a0f22ad3ffc        haproxy:0.0.1                         "/docker-entrypoint.…"   8 weeks ago         Up 2 days             0.0.0.0:8088->8088/tcp                                                             flask-xray_lb_1
71b5163d8960        ai-service-fastapi:0.2.0              "uvicorn main:app --…"   8 weeks ago         Up 2 days             0.0.0.0:8056->8000/tcp                                                             flask-xray_fastapi_1
400e1d6c0f69        tensorflow/serving:latest-gpu         "/usr/bin/tf_serving…"   8 weeks ago         Up 2 days             0.0.0.0:8520->8500/tcp, 0.0.0.0:8521->8501/tcp                                     flask-xray_tf2svg2_1
eaac88e9b1a7        ai-service-flask:0.1.0                "gunicorn app:app --…"   8 weeks ago         Up 2 days             0.0.0.0:8051->5000/tcp                                                             flask-xray_flask_1
e07ccd30a32b        tensorflow/serving                    "/usr/bin/tf_serving…"   8 weeks ago         Up 2 days             0.0.0.0:8510->8500/tcp, 0.0.0.0:8511->8501/tcp                                     flask-xray_tf2svg1_1
390dc13023f2        tf2-jupyter:0.1.0                     "/bin/sh -c '/bin/ba…"   8 weeks ago         Up 2 days             0.0.0.0:8506->6006/tcp, 0.0.0.0:8586->8888/tcp                                     flask-xray_tf2jpt_1
88e8709404ac        tf2-jupyter-jdbc:1.0.0-iml-template   "/bin/sh -c '/bin/ba…"   2 months ago        Up 2 days             0.0.0.0:6026->6006/tcp, 0.0.0.0:8896->8888/tcp                                     iml-template-master_tf2jupyter_1

docker-compose up --scale fastapi=2 --scale flask=2 -d   for example will horizontally scale up to 2x Gunicorn+Flask containers and 2x Univcorn+FastAPI containers:

ubuntu@ip-172-31-35-104:/zhong/flask-xray$ docker ps
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                PORTS                                                                              NAMES
dbee3c20ea95        ai-service-fastapi:0.2.0              "uvicorn main:app --…"   4 minutes ago       Up 4 minutes          0.0.0.0:8057->8000/tcp                                                             flask-xray_fastapi_2
95bcd8535aa6        ai-service-flask:0.1.0                "gunicorn app:app --…"   4 minutes ago       Up 4 minutes          0.0.0.0:8052->5000/tcp                                                             flask-xray_flask_2

... ...

「integrtedML-demo-template」の作業ディレクトリで別の「docker-compose up -d」を実行することで、上記リストのirisimlsvrとtf2jupyterコンテナが起動されています。

テスト

1. 単純なUIを備えたAIデモWebアプリ

上記のdockerサービスを起動したら、一時アドレスhttp://ec2-18-134-16-118.eu-west-2.compute.amazonaws.com:8056/のAWS EC2インスタンスにホストされているCovid-19に感染した胸部X線画像の検出用デモWebアプリにアクセスできます。

以下は、私の携帯でキャプチャした画面です。  デモUIは非常に単純です。基本的に「Choose File」をクリックして「Submit」ボタンを押せば、X線画像がアップロードされて分類レポートが表示されます。 Covid-19感染のX線画像として分類されたら、DLによって「検出された」病変領域をエミュレートするヒートマップが表示されます。そうでない場合は、分類レポートにはアップロードされたX線画像のみが表示されます。

        

このWebアプリはPythonサーバーページです。このロジックは主にFastAPI's main.pyファイルとFlask's app.pyファイルにコーディングされています。

もう少し時間に余裕がある際には、FlaskとFastAPIのコーディングと規則の違いを詳しく説明かもしれません。  実は、AIデモホスティングについて、FlaskとFastAPIとIRISの比較を行いたいと思っています。 

2. テストデモAPI      

FastAPI(ポート8056で公開)には、以下に示すSwagger APIドキュメントが組み込まれています。 これは非常に便利です。 以下のようにURLに「/docs」を指定するだけで、利用することができます。 

いくつかのプレースホルダー(/helloや/itemsなど)と実際のデモAPIインターフェース(/healthcheck、/predict、predict/heatmapなど)を組み込みました。

これらのAPIに簡単なテストを実行してみましょう私がこのAIデモサービス用に作成したJupyterノートブックサンプルの1つで、Python行を(APIクライアントアプリエミュレーターとして)いくつか実行します。  

以下では、例としてこちらのファイルを実行しています。 https://github.com/zhongli1990/covid-ai-demo-deployment/blob/master/notebooks/notebooks/Covid19-3class-Heatmap-Flask-FastAPI-TF-serving-all-in-one-HAProxy2.ipynb

まず、バックエンドのTF-Serving(ポート8511)とTF-Serving-GPU(ポート8521)が稼働していることをテストします。 

!curl http://172.17.0.1:8511/v1/models/covid19  # tensorflow serving
!curl http://172.17.0.1:8521/v1/models/covid19  # tensorflow-gpu serving
{
 "model_version_status": [
  {
   "version": "2",
   "state": "AVAILABLE",
   "status": {
    "error_code": "OK",
    "error_message": ""
   }
  }
 ]
}
{
 "model_version_status": [
  {
   "version": "2",
   "state": "AVAILABLE",
   "status": {
    "error_code": "OK",
    "error_message": ""
   }
  }
 ]
}

 

次に、以下のサービスAPIが稼働していることをテストします。

  • Gunicorn+Flask+TF-Serving
  • Unicorn+FastAPI+TF-Serving-GPU
  • 上記の両サービスの手間にあるHAProxyロードバランサー
  • r = requests.get('http://172.17.0.1:8051/covid19/api/v1/healthcheck')  # tf srving docker with cpu 
    print(r.status_code, r.text)
    r = requests.get('http://172.17.0.1:8056/covid19/api/v1/healthcheck')  # tf-serving docker with gpu
    print(r.status_code, r.text)
    r = requests.get('http://172.17.0.1:8088/covid19/api/v1/healthcheck')  # tf-serving docker with HAproxy
    print(r.status_code, r.text)

    そして、以下のような結果が期待されます。

    200 Covid19 detector API is live!
    200 "Covid19 detector API is live!\n\n"
    200 "Covid19 detector API is live!\n\n"

     

    入力X線画像の分類とヒートマップ結果を返す、/predict/heatmapなどの機能的なAPIインターフェースをテストします。  受信する画像は、API定義に従ってHTTP POST経由で送信される前にbased64にエンコードされています。

    %%time# リクエストライブラリをインポート
    import argparse
    import base64import requests# api-endpointを定義
    API_ENDPOINT = "http://172.17.0.1:8051/covid19/api/v1/predict/heatmap"image_path = './Covid_M/all/test/covid/nejmoa2001191_f3-PA.jpeg'
    #image_path = './Covid_M/all/test/normal/NORMAL2-IM-1400-0001.jpeg'
    #image_path = './Covid_M/all/test/pneumonia_bac/person1940_bacteria_4859.jpeg'
    b64_image = ""
    # JPGやPNGなどの画像をbase64形式にエンコード
    with open(image_path, "rb") as imageFile:
        b64_image = base64.b64encode(imageFile.read())# APIに送信されるデータ
    data = {'b64': b64_image}# POSTリクエストを送信しレスポンスをレスポンスオブジェクトとして保存
    r = requests.post(url=API_ENDPOINT, data=data)print(r.status_code, r.text)# レスポンスを抽出
    print("{}".format(r.text))

    このようなすべてのテスト画像もGitHubにアップロード済みです。  上記のコードの結果は以下のようになります。

    200 {"Input_Image":"http://localhost:8051/static/source/0198f0ae-85a0-470b-bc31-dc1918c15b9620200906-170443.png","Output_Heatmap":"http://localhost:8051/static/result/Covid19_98_0198f0ae-85a0-470b-bc31-dc1918c15b9620200906-170443.png.png","X-Ray_Classfication_Raw_Result":[[0.805902302,0.15601939,0.038078323]],"X-Ray_Classification_Covid19_Probability":0.98,"X-Ray_Classification_Result":"Covid-19 POSITIVE","model_name":"Customised Incpetion V3"}
    
    {"Input_Image":"http://localhost:8051/static/source/0198f0ae-85a0-470b-bc31-dc1918c15b9620200906-170443.png","Output_Heatmap":"http://localhost:8051/static/result/Covid19_98_0198f0ae-85a0-470b-bc31-dc1918c15b9620200906-170443.png.png","X-Ray_Classfication_Raw_Result":[[0.805902302,0.15601939,0.038078323]],"X-Ray_Classification_Covid19_Probability":0.98,"X-Ray_Classification_Result":"Covid-19 POSITIVE","model_name":"Customised Incpetion V3"}
    
    CPU times: user 16 ms, sys: 0 ns, total: 16 ms
    Wall time: 946 ms

     

    3. デモサービスAPIをベンチマークテストする

    HAProxyロードバランサーインスタンスをセットアップします。 また、Flaskサービスを4個のワーカーで開始し、FastAPIサービスも4個のワーカーで開始しました。

    ノートブックファイルで直接8個のPythonプロセスを作成し、8個の同時APIクライアントがデモサービスAPIにリクエストを送信する様子をエミュレートしてみてはどうでしょうか。 

    #from concurrent.futures import ThreadPoolExecutor as PoolExecutor
    from concurrent.futures import ProcessPoolExecutor as PoolExecutor
    import http.client
    import socket
    import timestart = time.time()#laodbalancer:
    API_ENDPOINT_LB = "http://172.17.0.1:8088/covid19/api/v1/predict/heatmap"
    API_ENDPOINT_FLASK = "http://172.17.0.1:8052/covid19/api/v1/predict/heatmap"
    API_ENDPOINT_FastAPI = "http://172.17.0.1:8057/covid19/api/v1/predict/heatmap"
    def get_it(url):
        try:
            # 画像をループ
            for imagePathTest in imagePathsTest:
                b64_image = ""
                with open(imagePathTest, "rb") as imageFile:
                    b64_image = base64.b64encode(imageFile.read())
        
                data = {'b64': b64_image}
                r = requests.post(url, data=data)
                #print(imagePathTest, r.status_code, r.text)
            return r
        except socket.timeout:
            # 実際のケースではおそらく
            # ソケットがタイムアウトする場合に何かを行うでしょう
            passurls = [API_ENDPOINT_LB, API_ENDPOINT_LB, 
            API_ENDPOINT_LB, API_ENDPOINT_LB, 
            API_ENDPOINT_LB, API_ENDPOINT_LB, 
            API_ENDPOINT_LB, API_ENDPOINT_LB]with PoolExecutor(max_workers=16) as executor:
        for _ in executor.map(get_it, urls):
            pass
        
    print("--- %s seconds ---" % (time.time() - start))

    したがって、8x27 = 216個のテスト画像を処理するのに74秒かかっています。 これは負荷分散されたデモスタックが、(分類とヒートマップの結果をクライアントに返すことで)1秒間に3個の画像を処理できています。

    --- 74.37691688537598 seconds ---

    PuttyセッションのTopコマンドから、上記のベンチマークスクリプトが実行開始されるとすぐに8個のサーバープロセス(4個のGunicornと4個のUvicorn/Python)がランプアップし始めたことがわかります。

    今後の内容

    この記事は、テストフレームワークとして「全DockerによるAIデモ」のデプロイメントスタックをまとめるための出発点に過ぎません。 次は、Covid-19 ICU入室予測インターフェースなどさらに多くのAPIデモインターフェースを理想としてはFHIR R4などによって追加し、サポートDICOM入力形式を追加したいと思います。 これは、IRISがホストするML機能とのより緊密な統合を検討するためのテストベンチになる可能性もあります。 医用画像、公衆衛生、またはパーソナル化された予測やNLPなど、さまざまなAIフロントを見ていく過程で、徐々に、より多くのMLまたはDL特殊モデルを傍受するためのテストフレームワーク(非常に単純なテストフレーム)として使用していけるでしょう。 ウィッシュリストは、前の投稿(「今後の内容」セクション)の最後にも掲載しています。 

    0
    0 550
    お知らせ Toshihiko Minamoto · 1月 17, 2022
    0
    0 94
    お知らせ Toshihiko Minamoto · 1月 17, 2022
    開発者の皆さん
    こんにちは。
    こちらは 2021年に開発者コミュニティに投稿された記事のダイジェストです。
    2021 年も InterSystems コミュニティにご貢献いただき、ありがとうございました!
    全体統計
    418 件の投稿が公開 (2021 年):
        – 記事 327 件
        – アナウンス 76 件
        – 質問 14 件
        – 議論 1 件
    2,452 人のメンバーが開発者コミュニティに参加 (2021 年)
    656 件の投稿が公開 (全期間)
     登録者合計 10,287 名
    0
    0 62
    お知らせ Toshihiko Minamoto · 12月 14, 2021

    皆さん、こんにちは。

    開発者コミュニティやGlobal Masters、Open Exchangeといった開発者Ecoシステムで、メールアドレス(ログインメール)を変更しても、アクティビティが失われないようにする必要があります。

    それは簡単です。私たちにお任せください!

    1. 1️⃣   古いDC(開発者コミュニティ)アカウントから新しいDCアカウントへ、あなたの情報をすべて正しく移行します。 あなたの投稿、コメント、メンション、「いいね!」などの情報はすべて新アカウントに保存されます。
    2. 2️⃣ Global Mastersのメンバーであれば、あなたのレベル、バッジ、ポイントなども新しいアカウントに移行されます。
    3. 3️⃣ Open Exchangeでのアプリケーションの移行も行います。
    4. 4️⃣ また、古いアカウントを解除するだけで(アクティビティを引き継がない)あれば、ワンクリックで完了します。

    DCのダイレクトメッセージやメールで @Iryna Podmazko (または @Toshihiko Minamoto )に連絡するだけです。

    • 古いアカウントへのリンクを送る (-s)
    • 新しいアカウントへのリンクを送る(-s)
    • 自分のアクティビティのどのリソース(DC/GM/OEX/すべてのリソース)を移したいのかを明記してください。

    それでは。

    お客様が「アカウントを変えた」と思われないよう、最善を尽くします。

    0
    0 110