首页 > 其他分享 >一键云部署:资源编排 ROS 轻松部署 LLM 流程编排服务 Flowise

一键云部署:资源编排 ROS 轻松部署 LLM 流程编排服务 Flowise

时间:2024-06-06 19:55:30浏览次数:25  
标签:Flowise 部署 Ref 编排 ECS ALIYUN ROS Type

Flowise是一个开源的低代码工具,供开发者构建定制化的 LLM 流程编排和 AI 代理。

资源编排服务(Resource Orchestration Service, ROS)是阿里云提供基于基础设施即代码(Infrastructure as Code, IaC) 理念的自动化部署服务,我们可以通过定义一个 JSON/YAML/Terraform 模板,轻松部署一套云上的 Flowise 环境。

部署步骤

  1. 登录ROS 控制台-Flowise 部署页面
  2. 配置模板参数:选择 ECS 实例的可用区、实例类型等
  3. 点击【下一步】,然后【创建】。部署完成后,点击资源栈的输出,即可看到 Flowise 服务的地址。点击链接即可体验 Flowise 的功能。

⚠️说明:

  • 本示例使用 GitHub 站点进行克隆,可能会因网络问题导致克隆失败。如遇此问题,请重新部署,或手动登录到 ECS 实例中执行安装命令(见模板中 RunCommand)。
  • Flowise 安装在 /opt/Flowise 下,日志文件为 flowise.log

部署原理

我们可以看到通过 ROS 可以非常快捷地部署阿里云上的各种云资源(比如 VPC、VSwitch、ECS 实例等)和应用程序(比如 Flowise)。如果想了解是如何做到的,那么可以阅读此章节。

编写 ROS 模板。在如下模板中定义了:

  • Resources:定义了 VPC、VSwitch、ECS 实例、安全组、安全组规则以及安装 Flowise 的命令。
  • Parameters:定义了常用的参数,比如可用区、ECS实例类型类型。
  • Outputs:定义了自定义输出,比如 Flowise 服务的地址。
ROSTemplateFormatVersion: '2015-09-01'
Description:
  en: Build the LLM orchestration flow & AI agents service Flowise on the ECS instance (Ubuntu 22.04).
  zh-cn: 在ECS实例(Ubuntu 22.04)上搭建LLM流程编排和AI代理服务Flowise。
Parameters:
  ZoneId:
    Type: String
    Label:
      en: Availability Zone
      zh-cn: 可用区ID
    AssociationProperty: ALIYUN::ECS::Instance:ZoneId
  InstanceType:
    Type: String
    Label:
      en: Instance Type
      zh-cn: 实例类型
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ${ZoneId}
      DefaultValueStrategy: recent
  SystemDiskCategory:
    Type: String
    Label:
      en: System Disk Type
      zh-cn: 系统盘类型
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      LocaleKey: DiskCategory
      ZoneId: ${ZoneId}
      InstanceType: ${InstanceType}
      AutoSelectFirst: true
      AutoChangeType: false
    Default: cloud_essd
  InstancePassword:
    Type: String
    Label:
      en: Instance Password
      zh-cn: 实例密码
    Description:
      en: Server login password, Length 8-30, must contain three(Capital letters,
        lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol
        in).
      zh-cn: 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)。
    ConstraintDescription:
      en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers,
        ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in).
      zh-cn: 长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)。
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Equals:
          - ${SelectInstance}
          - false
    Default:
    AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
    MinLength: 8
    MaxLength: 30
    NoEcho: true
Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 192.168.0.0/16
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      ZoneId:
        Ref: ZoneId
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.0.0/24
  SecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      VpcId:
        Ref: Vpc
  SecurityGroupIngress_3000:
    Type: ALIYUN::ECS::SecurityGroupIngress
    Properties:
      SecurityGroupId:
        Ref: SecurityGroup
      SourceCidrIp: 0.0.0.0/0
      IpProtocol: tcp
      NicType: intranet
      PortRange: 3000/3000
  InstanceGroup:
    Type: ALIYUN::ECS::InstanceGroup
    Properties:
      VpcId:
        Ref: Vpc
      VSwitchId:
        Ref: VSwitch
      SecurityGroupId:
        Ref: SecurityGroup
      ImageId: ubuntu_22_04
      InstanceName: Flowise
      InstanceType:
        Ref: InstanceType
      SystemDiskCategory:
        Ref: SystemDiskCategory
      Password:
        Ref: InstancePassword
      IoOptimized: optimized
      MaxAmount: 1
  DS_Instances:
    Type: DATASOURCE::ECS::Instances
    Properties:
      InstanceIds:
        Fn::GetAtt:
        - InstanceGroup
        - InstanceIds
  InstallFlowise:
    Type: ALIYUN::ECS::RunCommand
    Properties:
      InstanceIds:
        Fn::GetAtt:
        - InstanceGroup
        - InstanceIds
      Type: RunShellScript
      Sync: true
      Timeout: 1800
      CommandContent: |
        #!/bin/bash
        echo "#########################"
        echo "# Install NodeJS"
        echo "#########################"
        curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
        export NVM_DIR="$HOME/.nvm"
        [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
        [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
        nvm install 22
        npm config set registry https://registry.npmmirror.com
        npm i -g pnpm
        
        echo "#########################"
        echo "# Install Flowise"
        echo "#########################"
        git clone --depth 1 https://gitclone.com/github.com/FlowiseAI/Flowise.git /opt/Flowise && cd /opt/Flowise
        ret_code=$?
        if [ $ret_code -ne 0 ]; then
          echo "Git clone https://gitclone.com/github.com/FlowiseAI/Flowise.git failed. Exiting."
          exit $ret_code
        fi
        pnpm install
        pnpm build
        nohup pnpm start > flowise.log 2>&1 &
Outputs:
  FlowiseUrl:
    Description: Flowise default address.
    Value:
      Fn::Sub:
      - http://${IP}:3000
      - IP:
          Fn::Jq:
          - First
          - if .[0].PublicIpAddress != [] then .[0].PublicIpAddress[0] else .[0].EipAddress.IpAddress
            end
          - Fn::GetAtt:
            - DS_Instances
            - Instances
Metadata:
  ALIYUN::ROS::Interface:
    TemplateTags:
    - acs:example:AI:在ECS实例(Ubuntu 22.04)上搭建LLM流程编排和AI代理服务Flowise

在 ROS 控制台中使用此模板创建资源栈。ROS 会自动解析出模板中资源的依赖关系,按照资源依赖顺序创建云资源。如果资源间没有依赖,则会并发创建,从而提升部署效率。ROS 会把这次创建的所有资源存放到一个“资源栈”中,后续可以方便地管理这组资源集合。比如:

  • 将新模板应用到这个“资源栈”中,从而更新里面的资源。
  • 删除这个“资源栈”,从而把所有的资源删掉。

总结

基于 IaC 的理念,通过定义一个模板,使用 ROS 进行自动化部署,可以非常高效快捷地部署任意云资源和应用(比如 Flowise 服务)。相比于手动部署或者通过 API、SDK 的部署方式,有着高效、稳定等诸多优势,也是服务上云的最佳实践。

标签:Flowise,部署,Ref,编排,ECS,ALIYUN,ROS,Type
From: https://www.cnblogs.com/alicloudros/p/18235922

相关文章

  • openEuler操作系统的安装与部署
    实验步骤(本篇教程所需的实验环境为VMwareWorkstation+openEuler22.03)1.下载官网下载地址:https://www.openeuler.org/zh/download/archiv版本选择:openEuler22.03LTSSP2,即长期更新版2.虚拟机配置单个文件--效率高,IO速度快多个文件--方便文件迁移......
  • 有哪些好用的私有化部署即时通讯软件?
    随着企业信息化建设的深入,越来越多的企业开始重视数据安全和内部沟通的效率。在这样的背景下,私有化部署即时通讯软件成为了众多企业的首选。这类软件不仅可以在企业内部建立稳定、安全的沟通渠道,还能根据企业需求进行定制开发,满足各种复杂的业务需求。今天,就为大家推荐几款好用的......
  • 部署项目到云服务器遇到的问题
    问题1:HTTPStatus500–InternalServerError(SpringBoot架构的Web项目部署到linux系统上访问出错):数据库的配置错误,服务器上是5.版本的MySQL,需要将配置改为5.的配置,数据库名称密码要一模一样问题2:记录报错_linux:suroot报错:su:Authenticationfailure![](https://img2024.......
  • 关于最后部署项目到服务器
    问题1:HTTPStatus500–InternalServerError(SpringBoot架构的Web项目部署到linux系统上访问出错):数据库的配置错误,服务器上是5.版本的MySQL,需要将配置改为5.的配置,数据库名称密码要一模一样问题2:记录报错_linux:suroot报错:su:Authenticationfailure输入sudopasswd......
  • chatglm4 多显卡部署
    importtorchfromtransformersimportAutoModelForCausalLM,AutoTokenizerimportosos.environ['HF_ENDPOINT']='https://hf-mirror.com'#加上这行之后又恢复以前的速度了!device="cuda"print("是否可用:",torch.cuda.is_available())......
  • 星海算力云:【ChatTTS】 无需部署,一键云启动
    镜像介绍ChatTTS:革新对话式文本转语音技术ChatTTS是由2noise团队开发的一款专为对话场景设计的文本转语音(TTS)模型。它不仅支持英文和中文两种语言,而且经过了超过10万小时的中英文数据训练,表现出色。ChatTTS的亮点在于其对话式TTS的优化,它能够生成自然流畅的语音并支持多......
  • Linu部署服务启停脚本
    Linux项目部署启停WEB应用(WAR包)部署实际开发中,难免遇见新业务项目构建、项目重构(重新优化整个项目的架构,相当于重写),也可能是项目拆分多个模块,也可能部分拆分,但项目的模块化分离,就存在新建项目,新开服务端的可能,在Linux部署中,我们通常遇见需要搭建一个新的服务:WEB应用(war......
  • 项目部署
    项目打包mvncleaninstall配置nginx安装:https://blog.csdn.net/qq_59125846/article/details/136401534修改配置文件nginx.conf(nginx/conf目录下):#API接口配置:server{server_namedwsapi.gzvast.com;listen80;location/{proxy_set_header......
  • 基于java ssm vue mysql校园短期闲置资源置换平台系统(源码+lw+部署文档+讲解等)
    前言......
  • 基于java ssm vue mysql网上招投标系统(源码+lw+部署文档+讲解等)
    前言......