当前位置: 首页 > news >正文

塑业东莞网站建设深圳高端网站建设收费

塑业东莞网站建设,深圳高端网站建设收费,h5游戏排行榜前十名,iis7 网站无法访问相关博客 【自然语言处理】【大模型】大语言模型BLOOM推理工具测试 【自然语言处理】【大模型】GLM-130B#xff1a;一个开源双语预训练语言模型 【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍 【自然语言处理】【大模型】BLOOM#xff1a;一个176B参数… 相关博客 【自然语言处理】【大模型】大语言模型BLOOM推理工具测试 【自然语言处理】【大模型】GLM-130B一个开源双语预训练语言模型 【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍 【自然语言处理】【大模型】BLOOM一个176B参数且可开放获取的多语言模型 【自然语言处理】【大模型】PaLM基于Pathways的大语言模型 【自然语言处理】【chatGPT系列】大语言模型可以自我改进 【自然语言处理】【ChatGPT系列】WebGPT基于人类反馈的浏览器辅助问答 【自然语言处理】【ChatGPT系列】FLAN微调语言模型是Zero-Shot学习器 【自然语言处理】【ChatGPT系列】ChatGPT的智能来自哪里 【自然语言处理】【ChatGPT系列】大模型的涌现能力 ​ BLOOM的原理见【自然语言处理】【大模型】BLOOM一个176B参数且可开放获取的多语言模型 ​ BLOOM是由HuggingFace推出的大模型其参数量达到176B(GPT-3是175B)。目前超过100B参数量且能够支持中文的开源大模型只有BLOOM和GLM-130B。由于HuggingFace是著名开源工具Transformers的开发公司很多推理工具都会支持Transformers中的模型。 ​ LLM(大语言模型)推理的两个问题(1) 单张显卡无法容纳整个模型(2) 推理速度太慢。本文初步整理了一些推理大模型的工具和代码并简单测试了推理速度。下面是本文测试的一些背景 目前是2023年2月 使用7B模型bloom-7b1-mt 4张3090(但在实际推理中仅使用2张3090) 依赖包的版本 transformers4.26.0 tensor-parallel1.0.24 deepspeed0.7.7 bminf2.0.1零、辅助函数 # utils.py import numpy as npfrom time import perf_counterdef measure_latency(model, tokenizer, payload, device, generation_args{}):input_ids tokenizer(payload, return_tensorspt).input_ids.to(device)latencies []# 预热for _ in range(2):_ model.generate(input_ids, **generation_args)# 统计时间for _ in range(10):start_time perf_counter()_ model.generate(input_ids, **generation_args)latency perf_counter() - start_timelatencies.append(latency)# 计算统计量time_avg_ms 1000 * np.mean(latencies) # 延时均值time_std_ms 1000 * np.std(latencies) # 延时方差time_p95_ms 1000 * np.percentile(latencies,95) # 延时的95分位数return fP95延时 (ms) - {time_p95_ms}; 平均延时 (ms) - {time_avg_ms:.2f} \- {time_std_ms:.2f};def infer(model, tokenizer, payload, device):input_ids tokenizer(payload, return_tensorspt).input_ids.to(device)logits model.generate(input_ids, num_beams1, max_length512)out tokenizer.decode(logits[0].tolist())return out一、层并行 ​ BLOOM是Huggingface开发的所以在transformers库中提供了支持。具体来说在使用from_pretrained加载模型时指定参数devce_map即可。其通过将模型的不同层放置在不同的显卡上从而将单个大模型分拆至多张卡上(流水线并行也会将层分拆然后采用流水线的方式训练模型)。下面是调用的示例代码 # layer_parallel_test.py import os import transformersfrom utils import measure_latency, infer from transformers import AutoTokenizer, AutoModelForCausalLMtransformers.logging.set_verbosity_error() os.environ[CUDA_VISIBLE_DEVICES] 0,1def run():model_name bigscience/bloomz-7b1-mtpayload 参考下面的文章然后用与文章相同的语言回答问题 段落当细菌突破免疫系统的防御而开始增生时疾病会由结核菌感染进展到症状明显的结核病。在原发型结核病 (占 1-5% 的比例)这种现象会在感染刚开始的时候很快的发生。然而多数人感染模式为潜伏结核感染通常没有明显症状。在5-10%潜伏结合感染的案例中这些休眠的细菌经常会在感染后数年的时间制造出活动的结核。 问题What is the next stage after TB infection?tokenizer AutoTokenizer.from_pretrained(model_name)model AutoModelForCausalLM.from_pretrained(model_name, device_mapauto)model model.eval()out infer(model, tokenizer, payload, model.device)print(*70 模型输入输出 *70)print(f模型输入: {payload})print(f模型输出: {out})print(\n\n*70 模型延时测试 *70)print(measure_latency(model, tokenizer, payload, model.device))print(\n\n*70 显存占用 *70)print(os.system(nvidia-smi))if __name__ __main__:run()pass模型的时延结果 P95延时 (ms) - 118.402308691293; 平均延时 (ms) - 117.72 - 0.58; 显存占用 二、张量并行 ​ 张量并行是将矩阵乘法进行分块从而将大矩阵拆分为更小的矩阵这样就能把不同的矩阵放置在不同的显卡上。(具体原理会在后续的文章中介绍) ​ 这里使用开源工具包tensor_parallel来实现。 # tensor_parallel_test.py import os import transformers import tensor_parallel as tpfrom utils import measure_latency, infer from transformers import AutoTokenizer, AutoModelForCausalLMtransformers.logging.set_verbosity_error() os.environ[CUDA_VISIBLE_DEVICES] 0,1def run():model_name bigscience/bloomz-7b1-mtpayload 参考下面的文章然后用与文章相同的语言回答问题 段落当细菌突破免疫系统的防御而开始增生时疾病会由结核菌感染进展到症状明显的结核病。在原发型结核病 (占 1-5% 的比例)这种现象会在感染刚开始的时候很快的发生。然而多数人感染模式为潜伏结核感染通常没有明显症状。在5-10%潜伏结合感染的案例中这些休眠的细菌经常会在感染后数年的时间制造出活动的结核。 问题What is the next stage after TB infection?tokenizer AutoTokenizer.from_pretrained(model_name)model AutoModelForCausalLM.from_pretrained(model_name, low_cpu_mem_usageTrue)model tp.tensor_parallel(model, [cuda:0, cuda:1])model model.eval()out infer(model, tokenizer, payload, model.device)print(*70 模型输入输出 *70)print(f模型输入: {payload})print(f模型输出: {out})print(\n\n*70 模型延时测试 *70)print(measure_latency(model, tokenizer, payload, model.device))print(\n\n*70 显存占用 *70)print(os.system(nvidia-smi))if __name__ __main__:run()pass模型的时延结果 P95延时 (ms) - 91.34029923006892; 平均延时 (ms) - 90.66 - 0.46; 显存占用 三、模型量化 ​ 原理见【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍。 ​ 量化是一种常见的模型压缩技术核心思想是将模型参数从高精度转换为低精度。在BLOOM上使用8-bit量化只需要在调用from_pretrained时设置参数load_in_8bitTrue, device_mapauto。 ​ (注bloom在实现量化时会按照是否超越阈值来分拆矩阵然后对低于阈值的模型参数进行量化这会拖慢推理速度) # int8_test.py import os import transformersfrom utils import measure_latency, infer from transformers import AutoTokenizer, AutoModelForCausalLMtransformers.logging.set_verbosity_error() os.environ[CUDA_VISIBLE_DEVICES] 0,1def run():model_name bigscience/bloomz-7b1-mtpayload 参考下面的文章然后用与文章相同的语言回答问题 段落当细菌突破免疫系统的防御而开始增生时疾病会由结核菌感染进展到症状明显的结核病。在原发型结核病 (占 1-5% 的比例)这种现象会在感染刚开始的时候很快的发生。然而多数人感染模式为潜伏结核感染通常没有明显症状。在5-10%潜伏结合感染的案例中这些休眠的细菌经常会在感染后数年的时间制造出活动的结核。 问题What is the next stage after TB infection?max_memory_mapping {0: 24GB, 1: 0GB}tokenizer AutoTokenizer.from_pretrained(model_name)model AutoModelForCausalLM.from_pretrained(model_name, load_in_8bitTrue, device_mapauto, max_memorymax_memory_mapping)model model.eval()out infer(model, tokenizer, payload, model.device)print(*70 模型输入输出 *70)print(f模型输入: {payload})print(f模型输出: {out})print(\n\n*70 模型延时测试 *70)print(measure_latency(model, tokenizer, payload, model.device))print(\n\n*70 显存占用 *70)print(os.system(nvidia-smi))if __name__ __main__:run()pass模型的时延结果 P95延时 (ms) - 147.89210632443428; 平均延时 (ms) - 143.30 - 3.02; 显存占用 四、DeepSpeed-Inference ​ DeepSpeed-Inference是分布式训练工具DeepSpeed中用户模型推理的功能。 # deepspeed_test.py import os import torch import deepspeed import transformersfrom utils import measure_latency, infer from transformers import AutoTokenizer, AutoModelForCausalLMtransformers.logging.set_verbosity_error() os.environ[CUDA_VISIBLE_DEVICES] 0,1def run():model_name bigscience/bloomz-7b1-mtpayload 参考下面的文章然后用与文章相同的语言回答问题 段落当细菌突破免疫系统的防御而开始增生时疾病会由结核菌感染进展到症状明显的结核病。在原发型结核病 (占 1-5% 的比例)这种现象会在感染刚开始的时候很快的发生。然而多数人感染模式为潜伏结核感染通常没有明显症状。在5-10%潜伏结合感染的案例中这些休眠的细菌经常会在感染后数年的时间制造出活动的结核。 问题What is the next stage after TB infection?tokenizer AutoTokenizer.from_pretrained(model_name)model AutoModelForCausalLM.from_pretrained(model_name, torch_dtypetorch.float16)model deepspeed.init_inference(modelmodel, # Transformers模型mp_size2, # 模型并行数量dtypetorch.float16, # 权重类型(fp16)replace_methodauto, # 让DS自动替换层replace_with_kernel_injectTrue, # 使用kernel injector替换)out infer(model, tokenizer, payload, model.module.device)print(*70 模型输入输出 *70)print(f模型输入: {payload})print(f模型输出: {out})print(\n\n*70 模型延时测试 *70)print(measure_latency(model, tokenizer, payload, model.module.device))print(\n\n*70 显存占用 *70)print(os.system(nvidia-smi))if __name__ __main__:run()pass这里不能使用python来自动脚本需要使用下面的命令 deepspeed --num_gpus 2 --master_port 60000 deepspeed_test.py模型的时延结果 P95延时 (ms) - 31.88958093523979; 平均延时 (ms) - 30.75 - 0.64; 显存占用 五、BMInf ​ BMInf能够在单张显卡下加载完整的模型但是推理速度非常慢(应该是利用了Offload技术)。 import os import bminf import transformersfrom utils import measure_latency, infer from transformers import AutoTokenizer, AutoModelForCausalLMtransformers.logging.set_verbosity_error() os.environ[CUDA_VISIBLE_DEVICES] 0,1def run():model_name bigscience/bloomz-7b1-mtpayload 参考下面的文章然后用与文章相同的语言回答问题 段落当细菌突破免疫系统的防御而开始增生时疾病会由结核菌感染进展到症状明显的结核病。在原发型结核病 (占 1-5% 的比例)这种现象会在感染刚开始的时候很快的发生。然而多数人感染模式为潜伏结核感染通常没有明显症状。在5-10%潜伏结合感染的案例中这些休眠的细菌经常会在感染后数年的时间制造出活动的结核。 问题What is the next stage after TB infection?tokenizer AutoTokenizer.from_pretrained(model_name)model AutoModelForCausalLM.from_pretrained(model_name, low_cpu_mem_usageTrue)model model.eval()model bminf.wrapper(model, quantizationFalse, memory_limit8 30)out infer(model, tokenizer, payload, model.device)print(*70 模型输入输出 *70)print(f模型输入: {payload})print(f模型输出: {out})print(\n\n*70 模型延时测试 *70)print(measure_latency(model, tokenizer, payload, model.device))print(\n\n*70 显存占用 *70)print(os.system(nvidia-smi))if __name__ __main__:run()pass模型的时延结果 P95延时 (ms) - 719.2403690889478; 平均延时 (ms) - 719.05 - 0.14; 显存占用 六、结论 DeepSpeed-Inference的速度是最快的张量并行比自带的层并行快一些8 bit量化虽然速度慢一些但是能够实现单卡推理BMInf虽然速度最慢但是其可能在不损失模型精度的情况下单卡推理 说明 本文并不是这些推理工具的最佳实践仅是罗列和展示这些工具如何使用这些工具从不同的角度来优化模型推理对于希望进一步了解具体如何实现的人来说可以阅读源代码
http://www.dnsts.com.cn/news/98762.html

相关文章:

  • 旅游网站制作代码手机网站一般多宽
  • 怎么做视频平台网站吗外贸建个网站多少钱
  • 高端企业网站建设蓦然郑州网站建设theme wordpress
  • 家里做服务器开网站宁波企业网站开发
  • 长沙信息网宁波专业优化网站制作公司
  • 网站标题logo制作黄冈论坛遗爱网
  • pc网站优势张家口职教中心计算机网站建设
  • 肥城做网站tahmwlkj苏州外贸网站建设运营
  • 唐山哪里有建设网站的简单大气网站模板
  • 做书app下载网站有哪些百度快照投诉中心官网
  • 网站活跃度怎么做门户导航网页模板
  • 提高企业网站的访问率做模型常说的d站是什么网站
  • 高职网站建设专业书wordpress查询分页
  • 站长工具是什么网站更换空间对优化的影响
  • jsp网站开发工资自己做商城网站 哪种好
  • 网站开发需求分析文档中国菲律宾撤侨
  • 建设网站为什么要虚拟主机静态网站开发与实施的论文
  • 做网站设计用什么软件棋牌网站哪里做
  • 网站建设的意义是什么企业服务类型有哪些
  • 网站备案帐号wordpress字段
  • 厦门网站建设是什么服装网站制作
  • 做旅游产品的网站有哪些代挂网站维护
  • 苏州网站快速排名优化校园网上超市网站建设战略规划
  • 武安做网站现在网站开发和软件开发
  • 海南住建部建设网站的网站海外公司注册在哪里比较好
  • 德安县建设局网站wordpress 插件 手机
  • html5手机网站教程wordpress自定义json
  • 咸阳微网站建设怎么做网站淘宝转换工具
  • 学校资源网站建设有啥作用三网获客大数据获客营销软件
  • 泉州哪里做网站做思维导图好看的网站