国家超算互联网平台:模型服务体验与本地部署推理实践

news2024/11/27 16:52:22

目录

  • 前言
  • 一、平台显卡选用
    • 1、显卡选择
    • 2、镜像选择
    • 3、实例列表
    • 4、登录服务器
  • 二、平台模型服务【Stable Diffusion WebUI】体验
    • 1、模型运行
    • 2、端口映射配置
    • 3、体验测试
  • 三、本地模型【Qwen1.5-7B-Chat】推理体验
    • 1、安装依赖
    • 2、加载模型
    • 3、定义提示消息
    • 4、获取model_inputs
    • 5、生成模型输出
    • 6、获取生成结果
  • 结语


前言

在当今快速发展的人工智能领域,高性能计算平台的重要性不言而喻。国家超算互联网平台作为其中的重要一环,不仅提供了强大的计算资源,还通过其丰富的模型服务和便捷的操作体验,吸引了众多技术爱好者和专业人士的关注。本文将深入探讨该平台的显卡选用、模型服务体验以及本地模型推理体验,带您全方位了解这一前沿技术平台。
在这里插入图片描述

一、平台显卡选用

在进行深度学习和大规模数据处理时,显卡的选择至关重要。国家超算互联网平台提供了多种显卡选项,以满足不同用户的需求。
地址:https://www.scnet.cn/ui/mall/search/goods?common1=RESOURCE&common2=RESOURCE-AI

1、显卡选择

由于1分钱的显卡被抢占完了,我们选择了“NVIDIA L20 显存48GB PCIE”,这款显卡以其强大的计算能力和充足的显存,能够轻松应对复杂的模型训练和数据处理任务。(由于显卡是按小时收费,非常方便,不用的时候关机即可)
在这里插入图片描述

2、镜像选择

在显卡选择完成后,用户可以根据自己的需求选择基础镜像或平台提供的免费模型镜像。本次体验中,我们选择了“jupyterlab-stable-diffusion-normal-webui”镜像,它为用户带来了便捷的模型部署和运行体验。
在这里插入图片描述

3、实例列表

选择完服务器和镜像后,选择完服务器和镜像后,用户将被引导至实例列表,这里可以查看和管理所有创建的实例。
在这里插入图片描述

4、登录服务器

通过点击服务列表中的“JupyterLab”,用户可以自动登录服务器,开始模型的部署和运行。
在这里插入图片描述

二、平台模型服务【Stable Diffusion WebUI】体验

登录服务器后,会自动打开run.ipynb文件;可进行Stable Diffusion WebUI 快速体验

1、模型运行

在JupyterLab中,用户可以直接执行以下代码来启动Stable Diffusion WebUI:

#启动
!python StableDiffusionWebui/launch.py --enable-insecure-extension-access --port 1115  --server-name '0.0.0.0'

代码执行如下:
在这里插入图片描述

执行后,本地访问地址为:http://0.0.0.0:1115,用户可以通过此地址访问和体验模型。

2、端口映射配置

通过实例列表中的“访问自定义服务”设置端口映射,填入端口1115,用户便可以访问模型的Web界面。
在这里插入图片描述
配置映射端口
在这里插入图片描述

3、体验测试

模型运行后UI界面访问如下:
在这里插入图片描述

1)平台提供的模型镜像,整个启动运行过程快、非常便捷,几分钟内就能体验模型效果
2)模型运行效果很快,基本上都在2秒左右就能生成结果
3)模型效果测试也还不错,除了画质不是很好,生成的结果和提示词预期基本相符

三、本地模型【Qwen1.5-7B-Chat】推理体验

国家超算互联网平台不仅提供了模型镜像服务,还支持本地模型的推理体验。用户可以直接使用平台公共区域已经下载好的模型;或者自行下载模型,进行本地推理;平台公共区域“/root/public_data/llm_model”提供有多个开源模型。
在这里插入图片描述

1、安装依赖

首先,用户需要安装必要的依赖库,如modelscope:

#安装modelscope
!pip install modelscope

2、加载模型

接下来,加载本地的语言模型和分词器:

# 导入所需的库和模块
from modelscope import AutoModelForCausalLM, AutoTokenizer
# 设置设备为GPU(如果有的话)
device = "cuda" # the device to load the model onto

# 从预训练模型中加载大型语言模型
model = AutoModelForCausalLM.from_pretrained(
    "/root/public_data/llm_model/Qwen1.5-7B-Chat",
    device_map="auto"
)

# 从预训练模型中加载相应的分词器
tokenizer = AutoTokenizer.from_pretrained("/root/public_data/llm_model/Qwen1.5-7B-Chat")

需要注意的是,如果遇到模型加载报错如下,可能需要升级Transformer版本:

---------------------------------------------------------------------------KeyError                                  Traceback (most recent call last)
Cell In[5], line 4      1 from modelscope import AutoModelForCausalLM, AutoTokenizer      2 device = "cuda" # the device to load the model onto----> 4 model = AutoModelForCausalLM.from_pretrained(      5     "/root/public_data/llm_model/Qwen1.5-7B-Chat",      6     device_map="auto"      7 )      8 tokenizer = AutoTokenizer.from_pretrained("/root/public_data/llm_model/Qwen1.5-7B-Chat")

File /opt/conda/lib/python3.10/site-packages/modelscope/utils/hf_util.py:113, in get_wrapped_class.<locals>.ClassWrapper.from_pretrained(cls, pretrained_model_name_or_path, *model_args, **kwargs)    110 else:    111     model_dir = pretrained_model_name_or_path--> 113 module_obj = module_class.from_pretrained(model_dir, *model_args,    114                                           **kwargs)    116 if module_class.__name__.startswith('AutoModel'):    117     module_obj.model_dir = model_dir

File /opt/conda/lib/python3.10/site-packages/transformers/models/auto/auto_factory.py:456, in _BaseAutoModelClass.from_pretrained(cls, pretrained_model_name_or_path, *model_args, **kwargs)    453 if kwargs.get("torch_dtype", None) == "auto":    454     _ = kwargs.pop("torch_dtype")--> 456 config, kwargs = AutoConfig.from_pretrained(    457     pretrained_model_name_or_path,    458     return_unused_kwargs=True,    459     trust_remote_code=trust_remote_code,    460     **hub_kwargs,    461     **kwargs,    462 )    464 # if torch_dtype=auto was passed here, ensure to pass it on    465 if kwargs_orig.get("torch_dtype", None) == "auto":

File /opt/conda/lib/python3.10/site-packages/transformers/models/auto/configuration_auto.py:957, in AutoConfig.from_pretrained(cls, pretrained_model_name_or_path, **kwargs)    955     return config_class.from_pretrained(pretrained_model_name_or_path, **kwargs)    956 elif "model_type" in config_dict:--> 957     config_class = CONFIG_MAPPING[config_dict["model_type"]]    958     return config_class.from_dict(config_dict, **unused_kwargs)    959 else:    960     # Fallback: use pattern matching on the string.    961     # We go from longer names to shorter names to catch roberta before bert (for instance)

File /opt/conda/lib/python3.10/site-packages/transformers/models/auto/configuration_auto.py:671, in _LazyConfigMapping.__getitem__(self, key)    669     return self._extra_content[key]    670 if key not in self._mapping:--> 671     raise KeyError(key)    672 value = self._mapping[key]    673 module_name = model_type_to_module_name(key)
KeyError: 'qwen2'

主要是Transformer版本过低,需要升级版本

!pip install -U transformers

重新加载模型,加载成功效果如下:

在这里插入图片描述

3、定义提示消息

定义一个简短的介绍大型语言模型的提示,并构建消息列表:

# 定义一个简短的介绍大型语言模型的提示
prompt = "Give me a short introduction to large language model."

# 构建消息列表,包括系统角色和用户角色的内容
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": prompt}
]

4、获取model_inputs

使用分词器将消息列表转换为model_inputs:

# 使用分词器将消息列表转换为适合模型输入的格式
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)

# 将文本转换为模型输入张量并移动到指定设备上
model_inputs = tokenizer([text], return_tensors="pt").to(device)

model_inputs

输出:
在这里插入图片描述

5、生成模型输出

根据模型输入的inputs生成模型输出的generated_ids

# 生成模型输出
generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=512
)
# 提取生成的ID,去除输入部分
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

generated_ids

输出:
在这里插入图片描述

6、获取生成结果

对生成的generated_ids,进行解码获取响应结果

# 解码生成的ID为文本,并跳过特殊标记
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
# 打印生成的响应
print(response)

输出:

大语言模型(Large Language Model,LLM)是一种人工智能技术,它是一种能够理解和生成人类语言的复杂系统。这种模型通常基于深度学习,特别是基于Transformer架构的神经网络,通过大量的文本数据进行训练,学习语言的语法、词汇、句法和语义规律。

在训练过程中,大语言模型会接收各种类型的文本输入,如书籍、新闻、网页、社交媒体帖子等,然后通过学习这些文本中的模式和上下文关系来理解语言结构。训练的目标是让模型能够生成连贯、准确、具有逻辑性的文本,无论是回答问题、创作故事、撰写代码还是进行对话等。

大语言模型可以分为两类:预训练模型和任务特定模型。预训练模型是在大规模无标签文本上进行训练的通用模型,例如Google的通义千问、OpenAI的GPT-3等,这类模型通常具有较高的泛化能力和语言理解能力,可以适应多种下游任务。任务特定模型则是针对特定任务进行微调的,比如BERT(Bidirectional Encoder Representations from Transformers)和T5(Text-to-Text Transfer Transformer),它们在经过特定领域的数据训练后,可以更好地服务于某个特定领域的问题解答或文本生成。

大语言模型的发展对于自然语言处理、人工智能、机器翻译等领域有着深远的影响,它正在逐步改变我们与计算机交互的方式,并且在不断推动技术进步。然而,也需要注意的是,虽然大语言模型在很多方面表现出色,但它并不完美,有时可能会出现偏见或误解,需要持续优化和完善。

结语

国家超算互联网平台以其高效计算能力和用户友好的操作体验,为人工智能领域的研究和应用提供了强有力的支持。通过本文的体验和技术解析,我们见证了该平台如何简化模型部署和推理过程,加速了从理论到实践的转变。随着技术的不断进步,该平台有望进一步推动科研创新和产业发展,为人工智能的未来探索提供更多可能性。同时,我们也期待平台能够持续优化,满足日益增长的计算需求,助力构建一个更加智能化的世界。

在这里插入图片描述

🎯🔖更多专栏系列文章:AI大模型提示工程完全指南AI大模型探索之路(零基础入门)AI大模型预训练微调进阶AI大模型开源精选实践AI大模型RAG应用探索实践🔥🔥🔥 其他专栏可以查看博客主页📑

😎 作者介绍:我是寻道AI小兵,资深程序老猿,从业10年+、互联网系统架构师,目前专注于AIGC的探索。
📖 技术交流:欢迎关注【小兵的AI视界】公众号或扫描下方👇二维码,加入技术交流群,开启编程探索之旅。
💘精心准备📚500本编程经典书籍、💎AI专业教程,以及高效AI工具。等你加入,与我们一同成长,共铸辉煌未来。
如果文章内容对您有所触动,别忘了点赞、⭐关注,收藏!加入我,让我们携手同行AI的探索之旅,一起开启智能时代的大门!

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

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

相关文章

typescript中interface常见3种用法

文章目录 函数类型对象类型【自命名】&#xff1a; (函数)对象类型 函数类型 作用&#xff1a;声明一个函数接口&#xff1a;可用于类型声明 | 不可implements 对象类型 作用&#xff1a;声明对象具备哪些实例接口&#xff1a;可用于类型 | 可implements 【自命名】&…

【C#】ThreadPool的使用

1.Thread的使用 Thread的使用参考&#xff1a;【C#】Thread的使用 2.ThreadPool的使用 .NET Framework 和 .NET Core 提供了 System.Threading.ThreadPool 类来帮助开发者以一种高效的方式管理线程。ThreadPool 是一个线程池&#xff0c;它能够根据需要动态地分配和回收线程…

DATE_ADD、DATE_SUB Function - Mysql

DATE_ADD、DATE_SUB Function - SQL DATE_ADD() 和 DATE_SUB() 用于在日期或日期时间上增加或减少指定的时间间隔。 1. DATE_ADD() DATE_ADD() 函数用于向指定的日期或日期时间值添加一个时间间隔。 DATE_ADD(date, INTERVAL expr unit)date: 要添加时间间隔的日期或日期时间…

【Lampiao靶场渗透】

文章目录 一、IP地址获取 二、信息收集 三、破解SSH密码 四、漏洞利用 五、提权 一、IP地址获取 netdiscover -i eth0 Arp-scan -l Nmap -sP 192.168.78.0/24 靶机地址&#xff1a;192.168.78.177 Kali地址&#xff1a;192.168.78.128 二、信息收集 nmap -sV -p- 192.…

实战:ElasticSearch 索引操作命令(补充)

四.ElasticSearch 操作命令 4.1 集群信息操作命令 4.1.1 查询集群状态 &#xff08;1&#xff09;使用 Postman 客户端直接向 ES 服务器发 GET 请求 http://hlink1:9200/_cat/health?v &#xff08;2&#xff09;使用服务端进行查询 curl -XGET "hlink1:9200/_cat/h…

装饰大师——装饰模式(Python实现)

大家好&#xff0c;今天我们继续来讲结构型设计模式&#xff0c;上一期我们介绍了组合模式&#xff0c;这个模式特别适合用于处理树形结构的问题&#xff0c;它能够让我们像处理单个对象一样来处理对象组合。 装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设…

最新彩虹自助下单代发卡码知识付费商城多模板系统完整版去授权源码V6.9

最新彩虹的知识付费商城源码&#xff0c;后台可以选择多套模板&#xff0c;完整版去授权,支持对接多个资源网站&#xff0c;不怕无资源 推荐用宝塔上传后直接访问即可根据提示安装。 后面用户名/密码&#xff1a;admin/123456 PHP推荐使用7.0及以上版本 V6.9 1.修复SQL注入…

k8s 部署RuoYi-Vue-Plus之ingress域名解析

可参看https://blog.csdn.net/weimeibuqieryu/article/details/140798925 搭建ingress 1.创建Ingress对象 ingress-ruoyi.yaml其中host替换为你对应域名&#xff0c;需要解析域名到服务器, 同时为后端服务添加了二级域名解析 api. 访问http://xxx.xyz/就能访问前端&#xff0…

应急靶场(11):【玄机】日志分析-apache日志分析

题目 提交当天访问次数最多的IP&#xff0c;即黑客IP黑客使用的浏览器指纹是什么&#xff0c;提交指纹的md5查看index.php页面被访问的次数&#xff0c;提交次数查看黑客IP访问了多少次&#xff0c;提交次数查看2023年8月03日8时这一个小时内有多少IP访问&#xff0c;提交次数 …

【Redis 初阶】Redis 常见数据类型(Set、Zset、渐进式遍历、数据库管理)

一、Set 集合 集合类型也是保存多个字符串类型的元素的&#xff08;可以使用 json 格式让 string 也能存储结构化数据&#xff09;&#xff0c;但和列表类型不同的是&#xff0c;集合中&#xff1a; 元素之间是无序的。&#xff08;此处的 “无序” 是和 list 的有序相对应的…

重载云台摄像机如何通过国标28181接入到统一视频接入平台(视频国标接入平台)

目录 一、国标GB/T 28181介绍 1、国标GB/T28181 2、内容和特点 二、重载云台摄像机 1、定义 2、结构与设计 3、功能和优势 4、特点 5、应用场景 二、接入准备工作 1、确定网络环境 &#xff08;1&#xff09;公网接入 &#xff08;2&#xff09;专网传输 2、检查重…

软件测试基础1--功能测试

1、什么是软件测试&#xff1f; 软件是控制计算机硬件运行的工具。 软件测试&#xff1a;使用技术手段验证软件是否满足使用需求&#xff0c;为了发现软件功能和需求不相符合的地方&#xff0c;或者寻找实际输出和预期输出之间的差异。 软件测试的目的&#xff1a;减少软件缺陷…

golang JSON序列化

JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 json历史 [外链图片转存失败,源站可能有防盗链机…

080基于ssm+vue的大学生兼职信息系统

开发语言&#xff1a;Java框架&#xff1a;ssmJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.…

获客工具大揭秘:为何它能让获客如此轻松?

你是不是也觉得&#xff0c;现在的市场环境&#xff0c;获客越来越难了&#xff1f; 今天我要给大家分享一个实用且高效的获客工具&#xff0c;它简直是营销界的福音&#xff01; 1、关键词搜索 关键词搜索功能是获客工具的基础&#xff0c;也是其重要性不可小觑的原因。 这…

【数据中台】大数据管理平台建设方案(原件资料)

建设大数据管理中台&#xff0c;按照统一的数据规范和标准体系&#xff0c;构建统一数据采集&#xfe63;治理&#xfe63;共享标准、统一技术开发体系、统一接口 API &#xff0c;实现数据采集、平台治理&#xff0c;业务应用三层解耦&#xff0c;并按照统一标准格式提供高效的…

LabVIEW发电机控制器自动测试系统

随着飞机电源系统对自动化与精确控制需求的提高&#xff0c;开发了一套基于LabVIEW和NI PXI硬件平台的飞机发电机控制器测试系统。该系统利用先进的测试技术&#xff0c;实现对飞机发电机控制器的自动测试&#xff0c;显著提升测试的效率、精度和一致性。 项目背景 飞机发电机…

nginx反向代理+nginx黑白名单+nginx负载均衡+平滑升级+配置jdk环境-7.30

一、反向代理 1.前端服务器配置 前端服务器&#xff1a;用于接收和响应客户端&#xff0c;代理另一台主机 Nginx 安装 (1).下载安装nginx [rootweb ~]# wget https://nginx.org/download/nginx-1.26.1.tar.gz (2).解压 [rootweb ~ ]# tar -zxvf nginx-1.26.1.tar.gz (3…

《从零开始做个摸鱼小网站! · 序》灵感来源

序 大家好呀&#xff0c;我是summo&#xff0c;这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛&#xff0c;2核2G的云服务器一年只要99块钱&#xff0c;懂行的人应该知道这个价格在业界已经是非常良心了&#xff0c;虽然优惠只有一年&a…