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

新氧整形网站开发模版考幼师证去哪个网站做试题

新氧整形网站开发模版,考幼师证去哪个网站做试题,实验一 电子商务网站建设与维护,求西北地区网站建设专家 西安沉睡网络 官方网址?从FasterTransformer源码解读开始了解大模型#xff08;1.0#xff09;了解FasterTransformer 写在前面的话 最近的一年时间真是令人感慨#xff0c;换了个工作方向#xff0c;学了些深度算子开发相关知识#xff0c;工作也转到对LLM的学习和开发了。入行不算深#xf…从FasterTransformer源码解读开始了解大模型1.0了解FasterTransformer 写在前面的话 最近的一年时间真是令人感慨换了个工作方向学了些深度算子开发相关知识工作也转到对LLM的学习和开发了。入行不算深还需要对整个LLM大模型进行更精细的了解。 如果从模型结构层去学习去看的话HuggingFace的transformers仓库源码包含了多种多样的大模型结构源码很方便去进行学习每个model都有自己的modeling模型文件适合去了解学习。不过从性能、算子结构以及作为一个大模型推理引擎的角度来看的话NV的FasterTransformer作为一个推理引擎虽然已经并不是很跟得上时代了不过从结构和算子的角度来看仍有可取之处。 之所以没有跟ffmpeg系列一样在前面写上学龄前是因为有些cuda的基础知识确实不是学龄前的水平先掌握一点cuda技术栈的基础知识会更适合学习大模型工程代码硬要说的话应该算是一二年级吧大概在代码解读中也会适当添加一些llm小知识在添加小知识的过程中也可以得到学习 初步的源码学习计划 从FasterTransformer的现有源码开始进行分析以GPT2或者Bloom结构二者在结构上基本是近似的为例来学习一些decoder only的模型分析整个LLM的模型结构之后再基于FasterTransform框架将现在比较流行的类Llama结构的模型Llama2进行适配原生的FasterTransformer目前是不支持Llama的。 为什么是GPT2BLOOM 在fastertransformer的multi_gpu_gpt代码中 能够看到很多比较成熟的大模型框架的结构特点如PP/TP划分moe混合专家处理以及卡间通行等等所以可以用来作为进行整体架构分析学习的不错的材料。更重要的一个原因是FasterTransformer里没有Llama不然就讲llama了悲。不过没关系等熟悉了源码之后我们可以将llama集成到这个框架中这样能够学习的更加深刻 零、什么是FasterTransformer 如果用简单的一句话来概括FasterTransformer下文简称FT或者ft是一个用于大语言模型的推理引擎。目前ft的源代码里集成了bartbertgpt2代码中叫multi_gpu_gpt、t5等模型如果有一定开发能力还可以自己在ft里集成llama、chatglm等模型。 ft可以作为Tritonhttps://developer.nvidia.cn/triton-inference-server的一个推理后端backend来提供推理服务同时也可以自己编译自己的直接进行离线推理而ft的推理性能上是优于一些使用python的推理框架的可以将ft的推理看做是一个巨大的cuda和C的融合算子。ft的代码是基于CUDA、cuBLAS的C代码卡间通信则是会使用到NCCL如果能够较好的掌握ft的代码除了能够了解一个基础的LLM推理引擎的基本架构是怎样的也能够给自己的cuda相关知识以及c基础知识带来一定好处。虽然ft的代码写的并不是非常的优美而且也存在一定资源调度等等的问题但并不妨碍初学者从其中学到一些值得借鉴的东西 ft仓库https://github.com/NVIDIA/FasterTransformer 一、初看代码结构 如果要从结构上了解ft那么直接从ft的源代码上开始看比较好。将ft的代码直接clone下来其中主要的源代码在FasterTransformer/src文件夹中其中可以看见多个子文件夹从中可以看见ft的功能层次也划分的比较清晰 cutlass_extensions这个文件夹提供了基于cutlass的一些GEMM算子和量化GEMM算子混合精度计算的支持(GEMM通用矩阵乘,General Matrix Multiplication) llm小知识-通用矩阵乘GEMM其实大部分LLM中使用到的算子并不算多其中主要的计算都是在做矩阵乘所以很多加速推理的框架都是在各种各样的矩阵乘算法优化上下功夫解决了GEMM优化的问题就能够对推理框架的性能进行很可观的提升 kernels这个文件夹内是所有models中注册的算子会使用到的一些cuda kernel包括一些转置的kerneltranspose_*.cu一些采样的kernelsampling_topk、toppbeam search等等一些基础算子layernorm激活activation_kernel以及量化算子等等它们由models和layers中的模型以及算子层来进行调用负责在cuda上实现一些推理过程中的不同功能。 llm小知识-采样这里的采样指的是概率的选取方式。大模型生成词的过程是会生成一个基于词表的logits比如llama2的词表大小是32000个那么每一步的生成就会产生32000个logits对所有的logits进行排序如果是topk采样是取最高的k个词作为本次的生成词如果是topp采样则是将排在前面的词的logist一个个加起来直到大于等于p为止这些词作为生成词。而beam search则是一种选取策略比如设置beam search宽度为2则是每次取两个词将这两个词作为下一step的输入那么选取最优可以得到四个词从这四个最优词中再选取两个作为下一个step的输入以此类推 layers:这个文件夹内是提供给models中进行大模型组装的功能层其中包括linear线性层adapter_layersattention注意力层attention_layersbeam search层sampling采样层FFN层和用于模型最后做一些dynamic处理的dynamicdecoder层等等这些层主要是提供给model进行组装内部的计算则是通过调用kernels中的一些算子kernel和cublas来进行实现 llm小知识-attention关于attention就不得不提到经典的attention is all you need这篇文章了如果不了解attention的建议去看一下或者找一些相关材料进行学习attention机制可以说是所有大语言模型的基石在这里就不进行展开赘述 models:这个文件夹里是所有目前ft支持的模型每个模型都按照名称排列好其中包括一些耳熟能详的bert、GPTmulti-gpu-gptt5等等每个模型的实际处理逻辑和实现都是在这个文件夹中在这里也可以学习到一些经典的大语言模型的结构也可以算是源码解读的核心部分了。 tensorrt-plugin/tf_op/th_op/triton_backend这几个文件夹则是为主流的一些服务框架和深度学习框架提供了ft的接口通过这几个文件夹中的功能实现能够在不同的深度学习框架和推理服务框架中接入ft完成模型推理。后续代码解读会以triton_backend为例进行一些展开讲解 utils这个文件夹则是实现了一些通用的工具类接口包括不同数据类型的cublas矩阵乘数据类型转换内存管理单元、nccl通信单元和一些数据结构基础定义等等它们主要是服务于models和layers中类似于帮助框架实现基础功能的toolkit ##二、编译和测试 2.1 FT的编译 ft进行编译要相对简单需要一个包含cuda相关库的基础环境之后在主目录下新建一个build文件夹按照需要填好自己的CMake编译项就可以了这里以A100环境举例DSM就需要设置为80。如果是其他的卡可以按实际情况不同卡的CUDA架构和计算能力进行修改https://developer.nvidia.com/cuda-gpus#compute mkdir build cd build cmake -DCMKAE_EXPORT_COMPILE_COMMANDS1 \-DCMAKE_BUILD_TYPERelease \-DCMAKE_INSTALL_PREFIX:PATH./install/backend \-DSM80 .. make make install2.2 模型权重的转换 目前比较通用的开源大模型很多都可以在HuggingFace的官方库中找到国内也有更新比较快的HuggingFace镜像站在上面可以下砸到很多模型这些模型可以通过transformers库直接加载大多是以pytorch的方式或者safetensor的格式来存储的。而FT则需要进行权重转换转换成FT自己的加载格式 在权重下载之后就可以进行转换了好消息是官方提供了从HuggingFace权重到ft权重的转换脚本在ft目录中的examples/pytorch/gpt/utils/huggingface_gpt_convert.py直接使用这个python脚本就可以完成模型权重的转化了。 python3 huggingface_gpt_convert.py -saved_dir save_path -i huggingface_model_path -t_g 1 -i_g 1 -p 20在脚本输入的参数中包含一个参数叫-i_g这个参数实际上会影响到在ft做推理时使用的TP数量也会跟推理所使用的GPU数量有关可以先不用考虑太复杂的情况先使用一个GPU来进行TP1 llm小知识-TP/PP:TP和PP是两种大模型的前向计算方式TP为张量并行PP为流水线并行除此以外还有DP数据并行后面做代码分析和模型解释的时候会更加详细地进行说明 权重转换完成后会在save_path中找到我们转换后的权重有一个1-gpu的文件夹其中包含一个config.ini配置文件以及一堆.bin文件这些bin文件是GPT模型中每一层计算的权重config.ini则用于配置推理任务的各个参数项。为了把ft中的multi-gpu-gpt的example跑起来我们还需要对config.ini做适当修改参考下面修改后的config.ini [ft_instance_hyperparameter] model_name gpt model_dir save_path/1-gpu data_type fp16 sparse 0 int8_mode 0 tensor_para_size 1 pipeline_para_size 1 max_seq_len 1024 beam_width 1 top_k 1 top_p 1 temperature 1 request_batch_size 1 beam_search_diversity_rate 1 len_penalty 1[gpt] model_name gpt model_dir save_path/1-gpu head_num 12 size_per_head 64 inter_size 3072 max_pos_seq_len 1024 decoder_layers 12 num_layer 12 vocab_size 50275 start_id 50256 end_id 50256 weight_data_type fp16 tensor_para_size 1 pipeline_para_size 1 int8_mode 0 sparse 0 data_type fp16[request] request_batch_size 1 request_output_len 128在这些参数中我们可以看见之前解释过的一些概念例如topk/toppPP/TPpipeline_para_size/tensor_para_size用于beam_search的beam_width等等。在ft_instance_hyperparameter中主要是一些任务型超参是配置整个推理任务的而gpt中则是一些结构型超参是用于描述整个模型结构的而request则是用于描述推理请求的。这里的参数太多在第一篇文章中不会一一做解释后面从源码解读上会将它们一一遍历解读的。 2.3 example测试 好了一切准备就绪看一下我们的样例运行起来会是怎样的吧。进入build/bin目录这里有我们一开始编译完成的可执行文件测试使用的输入的ids的话可以在examples/cpp/multi_gpu_gpt/start_dis.csv中找到直接执行一下我们的测试 ./multi_gpu_gpt_example save_path/1-gpu/config.ini ../../examples/cpp/multi_gpu_gpt/start_dis.csv稍微等待一下便可以看到examples给我们吐出了它的推理结果 为什么是一行奇怪的数字这里要提到一点就是在大模型推理中每个人类所看见的字符都会通过一个词表映射到数字上真正用于作为推理的输入以及输出实际上就是这些ids一般称之为token_ids。那么该如何将ids转换成我们能看懂的话(words)或者将我们能看懂的话(words)转换为ids呢可以借助transformers库来完成 from transformers import AutoTokenizertokenizer AutoTokenizer.from_pretrained(model_path, trust_remote_codeTrue) # 这里要输入你的HuggingFace模型路径model_path#之后调用tokenizer的encode将words转换为ids或者decode(将ids转换为words)就可以了 ids tokenizer.encode(how are youreturn_tensorspt) print(ids) words tokenizer.decode([818, 262, 938, 3155, 286, 1528, 11, 257, 1688, 4652]) print(words)下一回预告 下一回将会从代码开始入手先整理描绘一个decoder-only结构模型应该有的样子然后开始深入模型层(models)代码参考模型结构来进行源码解读。好的开始是成功的一半希望这一篇文章能够带来良好的开头作为一个进入大模型世界的良好导航。努力尽可能保持一到两周一更新的频率吧虽然也不知道能够坚持多久
http://www.zqtcl.cn/news/111642/

相关文章:

  • 手机品牌网站如何做好网站内更新
  • 订餐网站模板下载毕业设计动漫网页设计
  • 网站阵地建设管理办法移动端网页界面设计
  • 网站和做游戏重庆市建设工程信息网安全监督特种人员
  • 沈阳网站建设活动方案部分网站打不开的原因
  • 网站维护界面设计做的网站一直刷新
  • 国外网站 国内访问速度土木工程毕业设计网站
  • 宿迁网站建设制作中国广告设计网
  • 上门做美容的有什么网站微信网页版本
  • 专门做餐饮运营的网站网站开发相关知识
  • 石家庄门户网站建设免费简历模板的网站
  • 微网站建设市场如何做好平台推广
  • 网站不备案做优化小程序开发前景怎么样
  • 美丽说网站优化百度关键词优化
  • 同性男做的视频网站赶集网招聘最新招聘附近找工作
  • 做挖机配件销售的网站oa办公系统软件哪家好
  • 聊城设计网站商务网站的特点
  • 厦门做个网站多少钱工程建设范围
  • 百度推广官方网站在哪里制作网页
  • 济南集团网站建设方案沈阳手机网站制作
  • 网站备案号注销的结果做网站的外包能学到什么
  • 在线购物网站开发项目网站建设电话推广话术
  • 网站主体信息太原站扩建
  • 西平县住房和城乡建设局网站空间商网站
  • p2p网站建设cms一键生成图片
  • 甘肃省第八建设集团公司网站能够做物理题的网站
  • 团购网站建设方案建筑工程网校官网
  • 佛山建站网站模板小公司管理方法
  • 常德住房和城乡建设局网站做风险代理案源的网站
  • 手机网站开发人员选项wordpress加载媒体库