llm接口高可用工程实践(尽快关注我,以后这些文章将只对粉丝开放)

news2024/11/29 11:38:18

上一节课程链接:中文llama3仿openai api实战-CSDN博客 ,本文是在上一节基础上继续操作 

课程介绍

本文基于Chinese-LLaMA-Alpaca-3(https://github.com/ymcui/Chinese-LLaMA-Alpaca-3)项目,介绍如何通过搭建2个llama3私有化api和oneapi网关,实现大模型接口的高可用方案。

(1)上节课,我们进行了llama3-8b模型的本地化部署及仿openai api接口开放;

(2)本次课基于上节课的基础,进行llama3-8b本地化及接口的高可用

学习知识:

(1)windows终端ssh服务器、windows版本客户端安装;

(2)windows作为客户端的cpu/gpu大模型的部署和应用:

(3)基于容器(docker)安装oneapi及配置,使用oneapi连接已部署的cpu/gpu版本大模型;

(4)基于oneapi学习高可用测试;

(5)一些常用指令操作;

实验环境

本文的基础环境如下

操作系统:ubuntu20.04

CUDA:12.2

英伟达显卡驱动版本:535.183.01

显卡型号:本实验用英伟达3090(全模型(未开量化)需要单张显存大于20GB的英伟达显卡;

**开量化之后的模型可以使用11GB显存的英伟达显卡,基本市面上大部分消费级显卡可以满足实验要求,

大家根据自己的显卡进行选择实验)

客户端演示环境: windows

实验环境准备

MacOS

命令行工具

如果您使用的是苹果操作系统,可以直接使用系统自带的终端软件来连接服务器。具体操作步骤如下,首先按Command+空格打开聚焦搜索界面:

然后在聚焦搜索框中,输入终端两个字,如下图:

回车即可打开终端

大模型聊天客户端

我们使用ChatGPTNextWeb工具测试我们的接口,如果您没有下载客户端,可以通过下面地址下载:

Mac:https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/releases/download/v2.14.2/NextChat_2.14.2_universal.dmg

Windows10/11

命令行工具

在windows系统中,我们使用Git Bash来连接服务器,下面是具体安装步骤,首先我们通过如下地址下载安装包:https://github.com/git-for-windows/git/releases/download/v2.46.0.windows.1/Git-2.46.0-64-bit.exe,下载好以后,双击安装包,出现如下画面:

可以将Only show new options选项去掉,以看到更多的安装选项。点击Next,将看到如下图:

继续点击Next,出现如下图界面:

在上述界面中,一直点击Next即可。最后点击install:

大模型聊天客户端

我们使用ChatGPTNextWeb工具测试我们的接口,如果您没有下载客户端,可以通过下面地址下载:

Windows:https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/releases/download/v2.14.2/NextChat_2.14.2_x64-setup.exe

下载后,双击安装包运行,如果出现如下画面,点击更多信息

然后一直点击Next即可安装。

开始实验

本文默认您在操作系统的用户名为:llm_course,如果您使用的是其他用户名,请更改涉及到用户名的地址。基本的搭建架构图如下:

我们通过人工停掉llama3-cpu,保持llama3-gpu运行,来模拟节点故障。

安装Docker(如有可跳过)

#移除 Docker 相关的软件包和容器运行时
apt remove docker-ce docker-ce-cli containerd.io docker-compose-plugin docker docker-engine docker.io containerd runc

# 切换国内源
sed -i -r 's#http://(archive|security).ubuntu.com#https://mirrors.aliyun.com#g' /etc/apt/sources.list && apt update -y

### 安装docker
# 安装ca-certificates curl gnupg lsb-release
apt install ca-certificates curl gnupg lsb-release -y
#下载 Docker 的 GPG 密钥,并将其添加到 apt-key 中
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
# 为Docker 添加阿里源
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 更新系统的软件包
apt -y update
# 安装docker相关的包
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

兼容多端口启动

因为我们要基于一份代码,启动两个服务,我们需要在原有的代码中加入端口参数,打开下面文件:~/Chinese-LLaMA-Alpaca-3-3.0/scripts/oai_api_demo/openai_api_server.py,做如下修改:

parser = argparse.ArgumentParser() # 找到改行代码,在改行代码下添加一行
parser.add_argument('--port', default=19327, type=int) # 新添加一行

# 找到这行代码
uvicorn.run(app, host="0.0.0.0", port=19327, workers=1, log_config=log_config)
# 改为如下内容
uvicorn.run(app, host="0.0.0.0", port=args.port, workers=1, log_config=log_config)

启动llama3 gpu和cpu版本

我们假设您已在上次课《中文llama3仿openai api实践》中搭建好了相应的环境。如果您还未搭建对应的环境,可以参考之前的课程文档。

启动gpu版本

conda activate chinese_llama_alpaca_3 # 激活虚拟环境
cd ~/Chinese-LLaMA-Alpaca-3-3.0/scripts/oai_api_demo/ # 进入脚本目录
python openai_api_server.py --gpus 0 --base_model /home/llm_course/.cache/modelscope/hub/ChineseAlpacaGroup/llama-3-chinese-8b-instruct-v3

默认情况下,程序将监听19327端口。

启动cpu版本

conda activate chinese_llama_alpaca_3_cpu # 激活虚拟环境
cd ~/Chinese-LLaMA-Alpaca-3-3.0/scripts/oai_api_demo/ # 进入脚本目录
python openai_api_server.py --only_cpu --port 19328 --base_model /home/llm_course/.cache/modelscope/hub/ChineseAlpacaGroup/llama-3-chinese-8b-instruct-v3

部署oneapi

创建docker-compose.yam文件

mkdir -p ~/oneapi-compose
cd ~/oneapi-compose
touch docker-compose.yaml

docker-compose.yaml文件中添加如下内容(命令行中可以使用nano docker-compose.yaml打开):

version: '3.8'
services:
  oneapi:
    image: m.daocloud.io/ghcr.io/songquanpeng/one-api:v0.6.7
    container_name: oneapi
    restart: always
    ports:
      - 3030:3000
    networks:
      - oneapi_llm_course
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./data:/data
networks:
  oneapi_llm_course:

启动服务

使用如下命令启动容器:docker compose up -d

修改默认密码

打开刚才部署的oneapi页面,通过ifconfig命令可以查看您的服务器地址,我们这里假设您的服务器地址是:192.168.9.96,在浏览器中打开:http://192.168.9.96:3030,可以看到如下界面:

点击登录,当您第一次登录oneapi时,默认用户名是root,默认密码是123456,登录后需要立即修改密码:

我们这里将密码设置为:Llm_course,您可以设置您自己认为安全的密码。

添加渠道

添加llama3-gpu渠道

再次点击渠道菜单,可以看到如下页面:

添加llama3-cpu渠道

再次点击渠道菜单,可以看到如下页面:

添加Token

我们需要添加一个Token用于后续测试:

输入令牌详情:

复制刚才创建的Token在后续高可用测试中将用到该Token

测试高可用

配置ChatGPTNextWeb

我们使用ChatGPTNextWeb来进行测试,首先我们需要配置该软件。如下图:

设置渠道信息:

双渠道可用

我们输入同样的问题两次,可以观察回答一次慢,一次快,说明是第一次是调用了CPU渠道,第二次是调用了GPU渠道,您在测试时,有可能是第一次快,第一次慢,是正常的现象。

CPU可用GPU不可用

我们切换到GPU渠道的命令行运行界面:

我们按Ctrl+c结束掉GPU渠道,如下所示:

我们再次回到ChatGPTNextWeb窗口,发送问题,依然可以得到回答,只是回答得非常慢,说明CPU渠道正在提供服务,我们到oneapi的渠道页面,对gpu渠道进行测试,应该会得到如下信息:

GPU可用CPU不可用

我们回到GPU渠道的命令行界面,再次启动GPU渠道服务:

然后切换到CPU渠道命令行页面,按Ctrl+c结束掉CPU渠道,如下所示:

我们再次回到ChatGPTNextWeb窗口,发送问题,依然可以得到回答,这次的回答非常快,说明GPU渠道正在提供服务,我们到oneapi的渠道页面,对cpu渠道进行测试,应该会得到如下信息:

常见问题

oneapi怎么做到高可用

以火山引擎为例,我们可以在多台ECS(云服务器)中部署oneapi,然后设置一个域名映射到多个ip即可:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生信初学者教程(二十五):验证候选特征

文章目录 介绍加载R包导入数据函数重要特征的表达ROC分析汇总筛选结果输出结果总结介绍 在成功识别出核心特征之后,为了验证这些特征的有效性和可靠性,我们在发现数据集和验证数据集上进行了进一步的评估。这一步骤旨在确保这些特征在不同数据集上的表达值具有一致性,并验证…

大模型时代下小模型知多少?从模型结构、预训练数据到运行时成本分析总结

今天,我们来谈谈小模型。《Small Language Models综述,Small Language Models: Survey, Measurements, and Insights》:https://arxiv.org/pdf/2409.15790这个工作,会有一些启发。 本文主要介绍三个话题,一个是小模型…

【笔记】信度检验

一、信度 信度是指测量结果的一致性和稳定性。 1.一致性(Consistency) 一致性指的是测量工具内部各个部分或项目之间的协调一致程度。高一致性意味着测量工具的不同部分都在测量同一个概念或特质。 例子:智力测试 假设我们有一个包含100…

成为AI产品经理,应该具备哪些条件?

开篇勘误标题:未来不会有AI产品经理这个岗位,就像没有移动产品经理一样。 如果你是个产品经理,但是不懂移动端的产品交互和设计,那你就只能在自己的头衔前面加上一个“PC”:PC产品经理,代表你的细分或者不…

在线Html到Markdown转换器

具体请前往:在线Html转Markdown

6个最受欢迎的大模型本地运行工具

运行大型语言模型 (LLM)(如 ChatGPT 和 Claude)通常涉及将数据发送到 OpenAI 和其他 AI 模型提供商管理的服务器。虽然这些服务是安全的,但一些企业更愿意将数据完全离线,以保护更大的隐私。 本文介绍了开发人员可以用来在本地运…

Java 枚举一口气讲完!(´▽`ʃ♡ƪ)

Java 枚举类型 Java面向对象设计 - Java枚举类型 什么是枚举类型&#xff1f; 枚举类型创建常量的有序列表作为类型。它以特定顺序指定常量。 在枚举类型中定义的常量是该枚举类型的实例。 语法 使用关键字enum使用以下语法定义枚举类型&#xff1a; <access-modifie…

Vue基础指令用法

vue2&#xff0c;官网&#xff1a;介绍 — Vue.js (vuejs.org) 例子&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…

【SpringBoot】基础+JSR303数据校验

目录 一、Spring Boot概要 1. SpringBoot介绍 2. SpringBoot优点 3. SpringBoot缺点 4. 时代背景-微服务 二、Spring Boot 核心配置 1. Spring Boot配置文件分类 1.1 application.properties 1.2 application.yml 1.3 小结 2. YAML概述 3. YAML基础语法 3.1 注意事…

生信初学者教程(二十六):特征和免疫浸润的关联分析

文章目录 介绍加载R包导入数据函数重要特征与免疫细胞的相关热图SLC6A8关联图SLC6A8与特定免疫细胞SLC6A8与其他免疫细胞输出结果总结介绍 在成功获取核心特征集之后,我们计划深入地探究这些特征与免疫浸润细胞之间的关联性,这是因为免疫浸润细胞在癌症的进程中扮演着至关重要…

成都睿明智科技有限公司抖音电商新蓝海的领航者

在当今这个数字化浪潮汹涌的时代&#xff0c;电商行业正以惊人的速度迭代升级&#xff0c;而抖音电商作为新兴势力&#xff0c;更是凭借其庞大的用户基数、精准的算法推荐和高度互动的社区氛围&#xff0c;成为了众多商家竞相追逐的蓝海市场。在这片充满机遇与挑战的海洋中&…

关于Excel将列号由字母改为数字

将Excel的列表由字母改为数字 步骤&#xff1a; 文件-选项-公式-勾选“使用公式”中的“R1C1引用样式(R)”-确定即可 部分步骤图示 设置前的样子 设置后的样子 虽然现在还不清楚在xlwings操作Excel时有什么作用&#xff0c;先留着吧。

内网靶场 | 渗透攻击红队内网域渗透靶场-1(Metasploit)零基础入门到精通,收藏这一篇就够了

“ 和昨天的文章同一套靶场&#xff0c;这次主要使用的是Kali Linux以及Metasploit来打靶场&#xff0c;熟悉一下MSF在内网渗透中的使用&#xff0c;仅供学习参考&#xff0c;大佬勿喷。本期文章靶场来自公众号&#xff1a;渗透攻击红队。” 靶场下载地址&#xff1a;https://…

SpringBoot框架在在线教育系统中的应用

3系统分析 3.1可行性分析 通过对本微服务在线教育系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本微服务在线教育系统采用SSM框架&#xff0c;JAVA作为开…

微调大语言模型——超详细步骤

微调一个语言模型&#xff0c;其实就是在一个已经训练过的模型上&#xff0c;继续用新数据进行训练&#xff0c;帮助模型更好地理解和处理这个新的任务。可以把这个过程想象成教一个已经懂很多道理的人去解决新的问题。 这个过程可以分为五个简单的步骤&#xff1a; 加载预训练…

【目标检测】桥梁表面缺陷检测数据集6710张7类缺陷VOC+YOLO格式

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6718 标注数量(xml文件个数)&#xff1a;6718 标注数量(txt文件个数)&#xff1a;6718 标注…

车载测试分享:CANoe工具使用、真实项目实操、UDS诊断测试、ECU刷写测试、物理层测试、数据链路层测试、应用层测试、HIL测试等

FOTA模块中OTA的知识点&#xff1a;1.测试过程中发现哪几类问题&#xff1f; 可能就是一个单键的ecu&#xff0c;比如升了一个门的ecu&#xff0c;他的升了之后就关不上&#xff0c;还有就是升级组合ecu的时候&#xff0c;c屏上不显示进度条。 2.在做ota测试的过程中&#xff…

知识链=知识图谱+大模型+推理-幻觉

最近由华东师大和香港大学联合提出了一种面向大语言模型推理的幻觉缓解方法Chain-of-Knowledge被ACL2024接收为长文主会。 PDF: https://arxiv.org/pdf/2306.06427 最近这两年&#xff0c;诸如GPT-4、LLaMA3等一系列超百亿规模的大语言模型相继提出&#xff0c;这些大模型以其…

AI少女/HS2甜心选择2 仿逆水寒人物卡全合集打包

内含AI少女/甜心选择2 仿逆水寒角色卡全合集打包共6张 内含&#xff1a;白灵雪魅落霞飞雁君临华歌白君临华歌黑平野星罗晚香幽韵 下载地址&#xff1a; https://www.51888w.com/436.html 部分演示图&#xff1a;

P10185 [YDOI R1] Necklace

[YDOI R1] Necklace - 洛谷 因为是方案数求和 我们考虑计算每种珠子单独贡献的方案数有 因为有二项式定理 构造 因为n不取0&#xff0c;便有 时间复杂度 modint qmi code #include <bits/stdc.h>#define INF (1ll<<60) #define eps 1e-6 using namespace std; …