transformer
transform概述 Encoders由N个Encoder组成,输入经由Encoders和Decoders编解码的过程,得到对应输出。 Encoder 输入部分 Embedding “embedding” 是一种将离散的输入数据(如单词、字符或符号)转换为连续的向量表示的技术。将输入的每个词(通常是词汇表中的索引)映射到一个固定大小的向量(比如300维或512维)。这些向量会作为模型的输入,传递给后续的编码器(Encoder)和解码器(Decoder)层。 位置编码 Transformer 模型中的注意力机制(Self-Attention)是并行计算的,它并不依赖于输入数据的顺序。因此,模型需要一种方法来捕捉输入序列中每个元素的顺序或位置信息,以便模型能够区分和理解数据的结构。 注意力机制 婴儿在干嘛?(颜色越深代表受的关注度越高) 计算公式 qkv的生成 Query(Q):查询的向量,代表模型当前正在关注或感兴趣的部分。 Key(K):键向量,用于与 Query 进行匹配,以决定输入序列中哪些部分应该被关注。 ...
Agent
Agent(智能体)特性: 解决复杂问题 依赖不同的tool(外部API) 将复杂问题拆分为简单问题(planning) HuggingGPT - 使用工具来解决问题结合GPT和其他模型工具的能力来解决复杂问题。 大模型的不足 LLM的能力局限在文本领域; 现实生活中的一些问题比较复杂,没有办法让大模型一次性帮我们输出答案; 有些复杂问题需要首先进一步拆解成简单的sub-tasks; 虽然像GPT4模型很优秀,但它的知识不具备实时性,而且在特定领域不一定比其他模型强; 四阶段Agent模型 stage1:Task Planning 三种类型的task: stage2:Model Selection 模型库:reolicate/huggingface stage3:Task Execution(执行) stage4:Response Generation 缺点: 1.没有验证的逻辑,无法评估task planning的效果。 2.tool的个数增加,大模型的选择可能也会出问题。 ...
GPT_API调用
GPT_API调用免费版免费的api-key https://github.com/chatanywhere/GPT_API_free 详情建议多看看文档 1234567891011121314151617181920# 测试代码from openai import OpenAIclient = OpenAI( # defaults to os.environ.get("OPENAI_API_KEY") api_key="your keys", base_url="https://api.chatanywhere.tech/v1" # base_url="https://api.chatanywhere.cn/v1")completion = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role":...
Langchain
langchain(本文为个人学习笔记,内容较为基础,如有错误,欢迎指正。欲了解详细信息,请参考官方文档。)https://api.python.langchain.com/en/latest/langchain_api_reference.html LangChain的功能比较广泛,涵盖了多个方面,主要包括以下几个方面: 链式操作(Chains):LangChain允许用户将多个语言模型调用组合成一个复杂的操作流程。例如,可以创建一个链式操作,其中第一个步骤是从用户获取输入,第二个步骤是处理和分析该输入,第三个步骤是生成相应的回复。 12345678910111213141516171819202122from dotenv import load_dotenv, find_dotenv# 加载apiload_dotenv(find_dotenv())from langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplatefrom...
提示词工程
LINK 提示词工程 prompt engineering什么是提示词工程:我们在使用AI时,必须提出具体要求,AI才知道如何去完成。但是我们下达的指令并不会直接进入AI模型,prompt engineering会对我们的输入进行处理转换成promprt,再输入到模型。这里的prompt可以理解一个把我们的指令进行复杂化的过程。(即赋予我们的指令更多的信息)prompt engineering帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。研究人员可利用提示工程来提升大语言模型处理复杂任务场景的能力,如问答和算术推理能力。开发人员可通过提示工程设计、研发强大的工程技术,实现和大语言模型或其他生态工具的高效接轨。 大模型参数设置 Temperature: 参数值越小,输出越确定,反之则越随机。 Top_p: 参数值越大,输出越随机,反之则越确定。 Max length: 输出文本最大长度。 stop sequence: 输出文本结束符。 Frequency penalty: 输出文本中重复词的惩罚系数。 Presence...
大模型学习综述
大模型学习之路持续更新中… 大模型简单讲就是参数量巨大的神经网络模型 1. 基础知识1.1NLP基础知识 RNN(循环神经网络) 对于语言来说顺序是十分重要的,顺序提供了一定的信息,”我爱你”和”你爱我”,就是两个不同的情况。RNN一个重视序列信息的网络,序列即前后关系。 HIDDEN STATE(隐状态):保存信息 缺点:数据输入时间越早,在隐状态中占据的影响就越小。 应用场景:机器翻译|图生文|语音识别|量化交易模型 seq2seq 受限于网络结构,RNN只实现N to N(机器翻译任务,一个词翻译一个词)或者1 to N,N to 1,不能解决N to...
OpenCV
OpenCV-图像的基础操作图像的读取、显示与保存 图片的读取与显示12345678910import cv2img = cv2.imread('img_path')cv2.imshow('windowname',img)cv2.waitkey(0) # 让窗口持续显示 不会一闪而过import matplotlib.pyplot as plt# 因为我用的vscode,更好的图片显示方式是pltplt.imshow(img) 使用PIL读取图片12345from PIL import Imageimage = Image.open(image_path)image.show() PIL打开的通道顺序是RGB opencv打开图片的通道顺序是BGR shape: opencv(820,818,3) PIL(670760,3) 图片的保存 cv2.imwrite(‘img_name.jpg’,img) 视频的读取与显示123456789import cv2cap =...
模型优化 剪枝 蒸馏 量化
模型优化(性能)https://pytorch.org/tutorials/beginner/profiler.html剪枝和蒸馏不可控,实际生产中一般使用量化。部署时需要根据设备,考虑模型大小与模型计算量 剪枝连接变稀疏了,计算量减少,直接使网络中的部分神经元失活(将参数置为0,不再参与运算可以加速模型的计算),但依赖于特定算法库或硬件平台的支持。模型深层拿到的是语义特征,模型浅层拿到的是边缘特征。 结构化剪枝破坏掉原有模型的结构1prune.random_structured(conv, name='weight', amount=0.5, dim=0) 非结构化剪枝不改变原有模型的结构(层数),改变的是每一层卷积核的个数代码:https://pytorch.org/tutorials/intermediate/pruning_tutorial.html 12345import torch.nn.utils.prune as pruneconv = model.conv1prune.random_unstructured(conv,...
相对路径与绝对路径
相对路径与绝对路径相对路径是相对于当前路径而言的,而绝对路径是相对于根目录而言的。 / 表示根目录./ 表示当前路径../ 表示上一级路径../../ 表示上两级路径 vscode中python自定义包的模块如何导入其他子包模块https://yxchangingself.xyz/posts/python-the-module-of-parentpkg-import-the-module-of-childpkg/ 解决方法: 在当前目录下创建一个__init__.py文件 将子包路径添加到系统路径中 123456# parent.__init__.pyimport sysimport...
模型打包
模型打包目前自己所用的框架为pytorch(python版本的torch),需要打包好训练好的AI模型(网络结构+网络参数),放到其他设备上运行。 LibTorch也是一个部署时候用的推理框架 c++/java 版本 TorchScript:torch自己的打包工具 torch保存模型的方式:1 只保存模型参数(权重文件)12345678910111213# torch.save(model.state_dict(), 'model.pth')import torchfrom torchvision.models import resnet18model = resnet18()torch.save(model.state_dict(), 'model.pth') # 只保存权重###import torchimport torchvision.models as modelsnet =...