Skip to content

Latest commit

 

History

History
182 lines (136 loc) · 8.87 KB

README_CN.md

File metadata and controls

182 lines (136 loc) · 8.87 KB

PetSpotR

🛠️ 如果您需要参加 Workshop,请跳转到 workshop 文件夹开始! 🛠️


PetSpotR 允许您使用高级人工智能模型来报告和寻找丢失的宠物。 它是一个示例应用程序,使用 Azure 机器学习来训练模型来检测图像中的宠物。

它还利用流行的开源项目(例如 Dapr 和 Keda)来提供可扩展且有弹性的云原生架构。

Logo

涉及的相关技术

架构

注意:此应用程序是一个演示应用程序,不打算在生产中使用。 它旨在演示如何使用 Azure 机器学习和其他 Azure 服务来构建可扩展且有弹性的应用程序。 使用风险自负。

本地架构

local architecture

云端架构

从本地迁移到云端就像将本地 Dapr 组件替换为云端组件一样简单:

cloud architecture

微服务

PetSpotR 是一个微服务应用程序,它使用 Azure 机器学习 来训练模型以 检测图像中的宠物。 它还使用 Azure Blob 存储来存储图像,使用 Azure Cosmos DB 来存储元数据,利用 Dapr 绑定和状态管理来抽象底层基础设施。

前端是一个 .NET Blazor 应用程序,允许用户上传图像并查看结果。 后端是一个 Python Flask 应用程序,它使用 Azure 机器学习来训练和评分模型。

AI模型训练

该应用程序使用 Azure 机器学习 训练模型来检测图像中的宠物 . 该模型来自 Hugging Face,这是一个由 AI 研究人员和开发人员组成的社区。 该模型使用 Azure 机器学习计算实例 进行训练,这是一个面向数据科学家的托管计算环境 和人工智能开发者。

状态管理

该应用程序使用 Dapr 状态管理 API 来抽象底层基础设施。 当应用程序在本地运行时,状态存储在一个轻量级的 Redis 容器中。 当应用程序在云中运行时,状态存储在 Azure Cosmos DB 中。

发布和订阅消息

该应用程序使用 Dapr pub/sub API 来抽象底层基础设施。 当应用程序在本地运行时,消息通过轻量级 Redis 容器发送。 当应用程序在云端运行时,消息通过 Azure 服务总线发送。

绑定

该应用程序使用 Dapr 绑定 API 来抽象底层基础设施。 当应用程序在本地运行时,图像存储在本地文件系统中。 当应用程序在云中运行时,绑定存储在 Azure Blob 存储中。

###缩放

该应用程序使用 KEDA 进行扩展,它允许您根据队列中的消息数量进行扩展。 该应用程序使用 Azure 服务总线将消息排队供后端处理,利用 Dapr pub/sub 抽象出底层基础设施。

负载测试

Azure Load Testing用于模拟大量用户上传图片到 应用程序,它允许我们测试应用程序的可扩展性。

运行 PetSpotR

环境配置

在 Codespace 中运行

您可以在 GitHub Codespace 中运行此应用程序。 这对于开发和测试很有用。 机器学习训练和评分将在 Azure 订阅的 Azure 机器学习工作区内运行。

  1. 点击Code按钮并选择Open with Codespaces 1.等待创建Codespace
  2. 按“F5”或打开“运行和调试”选项卡并选择“✅ 使用 Dapr 调试”

本地运行

此应用程序中的服务可以使用 Dapr CLI 在本地运行。 这对于开发和测试很有用。 ML 训练和评分将在 Azure 订阅的 Azure 机器学习工作区内运行。

  1. 安装 Dapr CLI

  2. 初始化 Dapr

    dapr init
  3. 为 Windows 或 Mac 配置你的 Dapr 镜像组件

    1. 打开 ./iac/dapr/local/images.yaml
    2. 取消注释适用于您的操作系统的部分,并注释掉其他部分
  4. 部署 Azure 上所需要的资源

    az deployment group create --resource-group myrg --template-file ./iac/infra.bicep --parameters mode=dev
  5. 后端运行

    cd src/backend
    dapr run --app-id backend --app-port 6002 --components-path ../../iac/dapr/local -- python app.py
  6. 前端运行

    cd src/frontend/PetSpotR
    dapr run --app-id frontend --app-port 5114 --components-path ../../../iac/dapr/local -- dotnet watch
  7. 跳转到 http://localhost:5114

通过命令行部署应用到 Azure

  1. 确保您有权访问 Azure 订阅并安装了 Azure CLI

    az login
    az account set --subscription “我的订阅”
  2. 克隆这个存储库

    git clone https://github.com/azure-samples/petspotr.git
    cd petspotr
  3. 部署基础设施

    az deployment group deployment create --resource-group myrg --template-file ./iac/infra.json
  4. 部署配置

    az deployment group deployment create --resource-group myrg --template-file ./iac/config.json
  5. 获取AKS凭证

    az aks get-credentials --resource-group myrg --name petspotr
  6. 安装 Helm Charts

    helm repo add dapr https://dapr.github.io/helm-charts/
    helm repo add kedacore https://kedacore.github.io/charts
    helm repo update
    helm upgrade dapr dapr/dapr --install --version=1.10 --namespace dapr-system --create-namespace --wait
    helm upgrade keda kedacore/keda --install --version=2.9.4 --namespace keda --create-namespace --wait
  7. 登录到 Azure 容器注册表 您可以从 Azure 门户中的资源组获取注册表名称

    az acr login --name myacr
  8. 构建并推送容器

    docker build -t myacr.azurecr.io/backend:latest ./src/backend
    docker build -t myacr.azurecr.io/frontend:latest ./src/frontend
    docker push myacr.azurecr.io/petspotr:latest
    docker push myacr.azurecr.io/frontend:latest
  9. 部署应用

    az deployment group deployment create --resource-group myrg --template-file ./iac/app.json
  10. 获取您的前端网址

    kubectl 获取 svc
    
  11. 导航到您的前端网址

此应用程序中的服务可以使用 Dapr CLI 在本地运行。 这对于开发和测试很有用。 机器学习训练和评分将在 Azure 订阅的 Azure 机器学习工作区内运行。