大模型相关概念

news2024/11/17 11:57:47

GGML

以纯C语言编写的框架,让用户可以在MacBook电脑上轻松运行大型语言模型,这种模型通常在本地运行成本较高。目前,这一框架主要被业余爱好者使用,但在企业模型部署方面也有广泛的应用前景。
量化快速入门
我们首先简单介绍一下量化的概念:
量化是一种减少用于表示数字或值的比特数的技术。由于量化减少了模型大小,因此它有利于在cpu或嵌入式系统等资源受限的设备上部署模型。
一种常用的方法是将模型权重从原始的16位浮点值量化为精度较低的8位整数值。

llm已经展示了出色的能力,但是它需要大量的CPU和内存,所以我们可以使用量化来压缩这些模型,以减少内存占用并加速计算推理,并且保持模型性能。我们将通过将权重存储在低精度数据类型中来降低模型参数的精度。

计划

LLMOPS:
【算法、向量DB、图数据库、langchain】
MLOPS:
【算法仓库、数据管理、标定、训练、推理、量化、连接和下发、向量DB、图数据库】

LLM@AI,输出到dataq
云原生:kubeDL,PAI,kubeflow
KubeDL 是阿里开源的基于 Kubernetes 的 AI 工作负载管理框架,取自 “Kubernetes-Deep-Learning” 的缩写;旨在使深度学习工作负载能够更轻松、更高效地在 Kubernetes 上运行。KubeDL 是一个 CNCF Sandbox 项目。
AI量化
AI应用
数据工程
AutoGPT AgentGPT
AgentGPT是一种基于web的解决方案。它允许配置和部署自治AI代理,并让它完成任何目标。它将尝试通过思考要做的任务、执行任务并从结果中学习来达到目标。

相关大模型:
Llama,Chatglm,BLOOM,Baichuan,通义,文心

相关网站和插件
Local AI,Close AI,Langchain
https://console.bce.baidu.com/qianfan/overview
https://modelscope.cn/home
https://openbayes.com/
https://fastgpt.run/account?currentTab=inform

多模态(multimodal)

是指涉及到多种模态(如视觉、语音、文本等)的数据或信息。在AI领域中,多模态通常指将多种类型的数据或信息相结合,来解决特定的问题或任务。以图像识别为例,图像可以被视为一种视觉模态,而对图像的分类或识别就是单模态任务。而如果将图像和语音或文本数据相结合,就可以做更复杂的任务,这些任务需要利用图像和语言模态的信息。
以下是一些常见的多模态任务:

图像分类(Classification): 给定一张图片,需要将其分类到不同的类别。
图像描述(Image Caption): 给定一张图片,根据图片生成相应的文字描述。
视觉问答(VQA): 根据对图像的理解,回答与之相关的问题。

什么是大模型?

通常至少具备两个要素:
1.跨任务的通用性;
2.跨领域的通用性;
大模型的强大之处,正是来自于这种令人惊喜的通用性,统一了诸多任务的形式并具有强大的泛化能力,可以处理多个不同领域的问题。而训练数据、参数规模、计算量的“大”是大模型的一个必要而不充分条件,是为了涌现出强大通用能力所必要的Scaling Up。

行业大模型?

若是基于以上对大模型的认识,我们可以理解为什么行业大模型会受到人们的质疑。
因为,使用垂直领域数据所训练出来的行业大模型,大都在某种程度上牺牲了其在诸多领域上的通用性,换来在特定领域上的优异效果,也就不再符合大模型的定义了。
所以,行业大模型,更准确的说法或许是通用大模型在垂直领域的应用,也就是在通用大模型的基础上基于行业数据进行训练、微调,用于解决行业问题,从概念上讲已经一定程度不再属于大模型。
通过这种新的定义角度来看,就可以更好地理解行业大模型究竟是什么。
为了保持行文的一致性,以下继续采用行业大模型的称呼。

1.向量召回

向量召回(Vector Retrieval)是一种信息检索技术,通常应用于大规模文本或内容检索系统,以快速有效地检索相关的文档或内容。它基于向量空间模型(Vector Space Model)和相似性度量来实现检索,其中文档和查询都被表示为向量,并通过计算它们之间的相似度来找到最相关的文档。

以下是一个示例来说明向量召回的工作方式:

示例:新闻文章检索

假设你正在构建一个新闻文章检索系统,用户可以输入一个关键词或查询,系统将返回最相关的新闻文章。这是向量召回如何应用的一个例子:

建立文档向量:
首先,需要为每篇新闻文章构建一个文档向量。这可以通过将文章中的关键词或短语映射到一个高维向量空间中的位置来完成。这些向量通常被称为文档向量。
建立查询向量:
当用户输入一个查询时,该查询也被映射为一个向量,通常称为查询向量。这个查询向量包含了查询中的关键词或短语在向量空间中的位置。
计算相似度:
接下来,系统会计算查询向量与每个文档向量之间的相似度。常见的相似度度量包括余弦相似度(Cosine Similarity)。
召回:
系统会按相似度的降序排列文档向量,然后返回与查询向量相似度最高的文档,通常是前几篇。这些文档就是向量召回的结果。
例如,如果用户在搜索框中输入了查询 “技术新闻”,系统会将这个查询映射为一个查询向量,然后与存储在系统中的所有新闻文章的文档向量计算相似度。系统将返回与查询向量相似度最高的新闻文章,这些文章通常包括了与技术相关的新闻。
向量召回是一种高效的检索方法,尤其适用于处理大规模的文本或内容检索任务。它能够快速找到与查询相关的文档,以满足用户信息检索的需求。

2.什么是奖励模型

奖励模型:
奖励模型是强化学习中的一个关键概念。它代表了一个问题的目标或任务。在强化学习中,一个代理(agent)尝试通过与环境互动来学习最佳的行为策略。这个学习的过程是通过最大化获得的累积奖励来实现的。奖励模型定义了环境对代理行为的评估方式,给出了代理在不同状态下采取不同动作的反馈信号。奖励通常是一个数值,代理的目标是找到一种策略,最大化长期累积奖励。

假设我们正在考虑一个经典的强化学习问题:训练一个智能代理来玩一个迷宫游戏。在这个游戏中,代理会从起始位置开始,然后根据它的行动选择来移动,直到到达目标位置或者走入陷阱。

在这个例子中,奖励模型将是一个定义了在每个状态下采取不同行动的奖励信号。

起始状态:

奖励模型会为起始状态(比如迷宫的初始位置)分配一个初始奖励值,通常为0。
目标状态:

当代理到达目标位置时,奖励模型会给予一个正奖励,比如+10分,表示代理成功完成了任务。
陷阱:

如果代理走入了陷阱,奖励模型会给予一个负奖励,比如-5分,表示代理走入了一个不好的状态。
中间状态:

对于中间的状态,奖励模型会根据当前状态和采取的行动来分配奖励。例如,如果代理选择了向前移动,并且没有走入陷阱,奖励模型可能会给予一个小正奖励,比如+1分,以鼓励代理朝着目标前进。
奖励模型的目的是引导代理在每个状态下采取最佳行动,以最大化长期累积奖励。代理的目标是通过学习一个策略来选择动作,以使得在每个状态下的期望累积奖励最大化。

这只是一个简单的例子,实际上,奖励模型可能会更加复杂,包括连续的状态空间、大量的行动选择等等。不过,这个例子可以帮助你理解奖励模型是如何在强化学习中起作用的。

3.预训练和微调

深度学习中常用的两个阶段,用于训练神经网络模型,特别是在自然语言处理领域中非常流行。这两个阶段通常结合使用,以获得更好的模型性能。
预训练(Pretraining):
预训练是指在大规模的数据集上,使用一个深度神经网络模型(通常是一个较大的模型)进行初始训练。这个初始训练的目标通常是学习到数据的通用表示。在自然语言处理中,这意味着模型学习了大量文本数据的语言知识,包括词汇、语法、语义等。
在计算机视觉中,预训练可以包括对大量图像数据的特征学习。
预训练的模型通常是一个自编码器或一个Transformer架构,其中最著名的包括BERT、GPT(Generative Pre-trained Transformer)、ResNet等。这些模型在预训练阶段,通常使用大规模的无标签数据,如维基百科、互联网文本或图像,来学习通用的特征表示。

微调(Fine-tuning):
微调是在预训练模型的基础上,使用特定任务的有标签数据进行进一步训练的过程。在微调阶段,模型的权重被调整以适应特定任务,如文本分类、命名实体识别、图像分类等。微调的目标是将模型的通用知识与特定任务的知识结合起来,从而提高模型在该任务上的性能。

由于大模型的无监督预训练非常耗时(预训练太慢啦)、耗力(没有精力从头预训练)、耗钱(啥不需要钱啊)、耗资源(没有那么多显卡可用,能用的显卡配置也不好)。因此大模型的训练(对于我们非专业大模型工作者来说)只能是微调,现有的各种大模型训练基本上都指的是微调。
什么是微调呢?简单来说,就是在别人训练好的大模型之后,通过少部分数据再训一训,来适应自己领域的需求。那么问题来哩:再训一训,我也训不动啊,大模型的参数量真的太多了,那怎么办呢?最直观的想法就是:那我就不全量参数微调,只更新部分参数呗。这就衍生了指令微调的几种方法。

指令微调

IFT(Instruction Fine-Tuning):指令微调,指令是指用户传入的目的明确的输入文本,指令微调用以让模型学会遵循用户的指令。OpenAI叫做SFT(Supervised Fine-Tuning),是一样的意思。

除了指令微调以外,大模型还有一个绝佳的法宝—人类反馈强化学习(RLHF),听名字挺复杂的,简单来说,就是通过人工的标注来强化模型的能力,去修正模型的一些不当输出,让大模型的输出真的像是人在回答一样。具体的做法在第三节介绍。可惜的是,由于需要大量的人工标注的工作,还是需要人力、财力,大部分的场景都无法支持。因此,我们很难应用到人类反馈强化学习。
常用算法

  1. LORA的原理就是在模型的Linear层,的旁边,增加一个“旁支”,这个“旁支”的作用,就是代替原有的参数矩阵W进行训练。

  2. PERT全称Parameter-Efficient Fine-Tuning,旨在通过最小化微调参数的数量和计算复杂度,来提高预训练模型在新任务上的性能,从而缓解大型预训练模型的训练成本。

  3. Freeze 方法,即参数冻结,对原始模型部分参数进行冻结操作,仅训练部分参数,以达到在单卡或不进行 TP 或 PP 操作,就可以对大模型进行训练。在语言模型模型微调中,Freeze 微调方法仅微调 Transformer 后几层的全连接层参数,而冻结其它所有参数。优点:大量减少了大语言模型的微调参数,是一种参数高效的微调方法;由于只需微调高层特征,加快了模型的收敛,节约了微调的时间;最大程度地保留了大语言模型预训练所学习到的语言的 “共性”,可解释性较强。

人类反馈强化学习(RLHF)

论文:《Training language models to follow instructions with human feedback》InstructGPT是ChatGPT的前身,主要探究了用RLHF(Reinforcement Learning from Human Feedback)方法使大模型中对齐人类意图。
GPT等大型语言模型基于Prompt的zero shot的学习范式有一个很大的问题是,预训练的模型完成的任务是后继文本的预测,这和具体任务的要求有一些偏离,生成的结果也不一定符合人的意图。因此需要以某种形式fine-tune来对齐这一点。
在这里插入图片描述
方法是三步走:

  1. 使用人工给出的示范性数据监督训练策略模型(SFT微调模型)
  2. 使用人工排序的对比性数据训练奖赏模型(训练reward model)
  3. 通过强化学习(使用了奖赏模型)训练策略模型(强化学习)
    在这里插入图片描述
    预训练和微调区别?1、费用差距巨大。2、时间成本差异巨大。

推理

在机器学习中,模型的推理是指在训练完成后,将输入数据输入到模型中,以生成预测结果或执行特定任务。

NL TO SQL

将自然语言(NL)转换为SQL(Structured Query Language)是一项自然语言处理(NLP)任务,其中系统尝试从用户提供的自然语言问题或指令中生成相应的数据库查询语句。这个任务通常涉及到文本理解、语法分析、语义理解和数据库查询生成。

以下是一个简单的示例,将一个自然语言问题转化为SQL查询:

自然语言问题: “找出所有年龄小于30岁的学生的名字和课程名称。”

对应的SQL查询:

sql
SELECT Students.name, Courses.name
FROM Students
JOIN Enrollments ON Students.student_id = Enrollments.student_id
JOIN Courses ON Enrollments.course_id = Courses.course_id
WHERE Students.age < 30;
这个SQL查询使用了SQL语法来从数据库中检索所需的信息。它涉及到了以下几个步骤:

SELECT Students.name, Courses.name:这是选择要返回的列的部分,它要求返回学生的名字和他们所选课程的名称。

FROM Students:这是指定要从哪个表中检索数据,即"Students"表。

JOIN:这是连接不同表的方式,它连接了"Students"表、"Enrollments"表和"Courses"表。

ON:这是指定连接条件的部分,它告诉数据库如何将这些表连接在一起,通常基于共享的键(在这种情况下是学生ID和课程ID)。

WHERE Students.age < 30:这是一个筛选条件,它限制了只返回年龄小于30岁的学生的信息。

需要注意的是,NL to SQL任务是一个复杂的自然语言处理任务,需要强大的自然语言理解和数据库查询生成技术。实际的系统可能会涉及更复杂的查询,多表连接,聚合函数等。通常,这种任务需要训练大规模的模型来实现。
参考:https://developer.aliyun.com/article/1353018

基于文档的大模型

在这里插入图片描述

Temperature & Top-k & Top-p

较低的Temperature意味着较少的随机性;Temperature为 0 将始终产生相同的输出。执行具有“正确”答案的任务(如问题回答或总结)时,较低的Temperature(小于 1)更合适。如果模型开始自我重复,则表明Temperature过低。
Temperature意味着更多的随机性,这可以帮助模型给出更有创意的输出。如果模型开始偏离主题或给出无意义的输出,则表明Temperature过高。

“Top-k” 和 “Top-p” 是用于生成文本的自然语言处理模型中的两种不同采样技术,通常用于生成多个可能的下一个单词或标记。
Top-k 采样是一种从概率分布中选择前 k 个最有可能的单词或标记的策略。在生成文本时,模型计算每个可能的单词的概率,并选择概率最高的 k 个单词,然后从中随机选择一个作为下一个单词。这可以确保生成的文本具有较高的可预测性,因为只有概率最高的单词会被考虑。

示例:假设模型生成下一个单词的概率如下:单词 A(0.4)、单词 B(0.3)、单词 C(0.2)、单词 D(0.1)。如果 k=2,那么在Top-k采样中,模型会选择单词 A 和单词 B 中的一个。

Top-p 采样是一种从概率分布中选择一组累积概率达到给定概率阈值 p 的最高概率单词或标记的策略。这种方法可以确保生成的文本具有多样性,因为它不仅考虑了最可能的单词,还考虑了次可能的单词。

示例:假设模型生成下一个单词的概率如下:单词 A(0.4)、单词 B(0.3)、单词 C(0.2)、单词 D(0.1)。如果 p=0.7,那么在Top-p采样中,模型会选择单词 A、单词 B 和单词 C,因为它们的累积概率(0.4 + 0.3 + 0.2)达到了 0.7。

Chatglm模型部署

1.环境,_低配GPU卡( rtx-3090,24核CPU,24G显存,30G内存)
在这里插入图片描述

2.代码调用在这里插入图片描述

>>> from transformers import AutoTokenizer, AutoModel
>>> tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
>>> model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True, device='cuda')
>>> model = model.eval()
>>> response, history = model.chat(tokenizer, "你好", history=[])
>>> print(response)
你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
>>> response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
>>> print(response)
晚上睡不着可能会让你感到焦虑或不舒服,但以下是一些可以帮助你入睡的方法:

1. 制定规律的睡眠时间表:保持规律的睡眠时间表可以帮助你建立健康的睡眠习惯,使你更容易入睡。尽量在每天的相同时间上床,并在同一时间起床。
2. 创造一个舒适的睡眠环境:确保睡眠环境舒适,安静,黑暗且温度适宜。可以使用舒适的床上用品,并保持房间通风。
3. 放松身心:在睡前做些放松的活动,例如泡个热水澡,听些轻柔的音乐,阅读一些有趣的书籍等,有助于缓解紧张和焦虑,使你更容易入睡。
4. 避免饮用含有咖啡因的饮料:咖啡因是一种刺激性物质,会影响你的睡眠质量。尽量避免在睡前饮用含有咖啡因的饮料,例如咖啡,茶和可乐。
5. 避免在床上做与睡眠无关的事情:在床上做些与睡眠无关的事情,例如看电影,玩游戏或工作等,可能会干扰你的睡眠。
6. 尝试呼吸技巧:深呼吸是一种放松技巧,可以帮助你缓解紧张和焦虑,使你更容易入睡。试着慢慢吸气,保持几秒钟,然后缓慢呼气。
如果这些方法无法帮助你入睡,你可以考虑咨询医生或睡眠专家,寻求进一步的建议。

3.网页版 Demo
打开一个新的终端页面,输入命令 cd ChatGLM-6B 切换到目录 ChatGLM-6B,输入命令 python web_demo.py 运行 Gradio demo后按照提示打开
在这里插入图片描述在这里插入图片描述
4.命令行 Demo,运行python cli_demo.py
在这里插入图片描述

5API调用

from fastapi import FastAPI, Request
from transformers import AutoTokenizer, AutoModel
import uvicorn, json, datetime
import torch

DEVICE = "cuda"
DEVICE_ID = "0"
CUDA_DEVICE = f"{DEVICE}:{DEVICE_ID}" if DEVICE_ID else DEVICE


def torch_gc():
    if torch.cuda.is_available():
        with torch.cuda.device(CUDA_DEVICE):
            torch.cuda.empty_cache()
            torch.cuda.ipc_collect()


app = FastAPI()


@app.post("/")
async def create_item(request: Request):
    global model, tokenizer
    json_post_raw = await request.json()
    json_post = json.dumps(json_post_raw)
    json_post_list = json.loads(json_post)
    prompt = json_post_list.get('prompt')
    history = json_post_list.get('history')
    max_length = json_post_list.get('max_length')
    top_p = json_post_list.get('top_p')
    temperature = json_post_list.get('temperature')
    response, history = model.chat(tokenizer,
                                   prompt,
                                   history=history,
                                   max_length=max_length if max_length else 2048,
                                   top_p=top_p if top_p else 0.7,
                                   temperature=temperature if temperature else 0.95)
    now = datetime.datetime.now()
    time = now.strftime("%Y-%m-%d %H:%M:%S")
    answer = {
        "response": response,
        "history": history,
        "status": 200,
        "time": time
    }
    log = "[" + time + "] " + '", prompt:"' + prompt + '", response:"' + repr(response) + '"'
    print(log)
    torch_gc()
    return answer


if __name__ == '__main__':
    tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
    model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
    model.eval()
    uvicorn.run(app, host='0.0.0.0', port=8000, workers=1)

执行python api.py
在这里插入图片描述

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

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

相关文章

原生JavaScript实现的SPA单页应用(hash路由)

什么叫做SPA单页应用 单页Web应用 &#xff08;single page web application&#xff0c;SPA&#xff09; &#xff0c;就是只有一张Web页面的应用&#xff0c;是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。 单页应用的说法是在JavaScript和AJA…

超写实数字人小灿加入,助力火山语音全类型虚拟数字人应用创新

当发现更多AI科技作用于日常生活时&#xff0c;你是否想过竟然有一天会与AI数字人做同事&#xff1f;日前&#xff0c;火山语音团队重磅推出了一位神秘新成员——首个超写实数字员工小灿&#xff01;这位新同事不仅形象清新美丽&#xff0c;还有着很强的亲和力&#xff0c;大幅…

ardupilot开发 --- CAN BUS、DroneCAN 、UAVCAN 篇

1. CAN BUS、DroneCAN 、UAVCAN 区别 UAVCAN是一种轻量级协议&#xff0c;旨在通过CAN BUS 在航空航天和机器人应用中实现可靠通信。 UAVCAN网络是分散的对等网络&#xff0c;其中每个对等体&#xff08;节点&#xff09;具有唯一的数字标识符 - 节点ID&#xff0c;并且仅需要…

minio + linux + docker + spring boot实现文件上传与下载

minio docker spring boot实现文件上传与下载 1.在linux上安装并启动docker2.在docker中拉取minio并启动3.Spring Boot 整合 minio4.测试 minio 文件上传、下载及图片预览等功能 1.在linux上安装并启动docker 检查linux内核&#xff0c;必须是3.10以上 uname ‐r安装docker…

没有电脑也不用担心,在Android设备上也可以轻松使用ppt

PowerPoint是制作幻灯片的好工具&#xff0c;无论是工作、学校还是个人使用。但有时你无法使用电脑或笔记本电脑&#xff0c;你必须在旅途中做演示。 这就是PowerPoint for Android派上用场的地方。它允许你在移动设备上创建、编辑和呈现幻灯片。以下是要遵循的步骤&#xff1…

[每周一更]-(第69期):特殊及面试的GIT问题解析

整合代码使用过程的问题&#xff0c;以及面试遇到的细节&#xff0c;汇总一些常用命令的对比解释和对比&#xff1b; 1、fetch和pull区别 git fetch是将远程主机的最新内容拉到本地&#xff0c;用户在检查了以后决定是否合并到工作本机分支中。 git pull则是将远程主机的最新内…

unity button移动位置some values driven by canvas

1 可以在button父节点把限制取消勾选 2 在不动整个布局的情况下&#xff0c;只修改局部变量&#xff1a;忽略布局即可

Instagram引流技巧:如何充分利用社交媒体来增加独立站流量

在数字时代&#xff0c;社交媒体已成为推广产品、服务和内容的重要工具之一。Instagram&#xff0c;作为其中之一&#xff0c;以其视觉化特点和庞大的用户基础&#xff0c;为独立站和个人品牌提供了难得的机会。本文Nox聚星将和大家探讨如何充分利用Instagram&#xff0c;将其作…

【从瀑布模式到水母模式】ChatGPT如何赋能软件研发全流程

文章目录 &#x1f384;前言&#x1f354;本书概要&#x1f33a;内容简介&#x1f33a;作者简介&#x1f33a;专家推荐&#x1f6f8;读者对象&#x1f354;彩蛋 &#x1f384;前言 计算机技术的发展和互联网的普及&#xff0c;使信息处理和传输变得更加高效&#xff0c;极大地…

2核4G服务器 如何设计编码一款扛得住高并发高吞吐量的商品秒杀系统

题目 最近要参加一个秒杀商品系统比赛 【题目】设计并演示一款商品秒杀系统 【要求】设计并实现程序&#xff0c;模拟该商品秒杀系统的基本功能包括但不限于&#xff1a; 1.商品管理&#xff1a;每个商品都有唯一的ID、名称、库存数量和秒杀价格。 2.用户管理&#xff1a;每个…

MyBatis 基础用法详解

目录 什么是MyBatis 前置工作 创建MyBatis项目 MyBatis的使用 1.查询 1.1全查询 1.2传参查询 2.删除 3.修改 4.添加 什么是MyBatis MyBatis 是一款优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设…

使用Python实现一个简单的斗地主发牌

使用Python实现一个简单的斗地主发牌 1.源代码实现2.实现效果 1.源代码实现 import random# 定义扑克牌的花色和大小 suits [♠, ♥, ♣, ♦] ranks [2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A]# 初始化一副扑克牌 deck [suit rank for suit in suits for rank in ranks]# …

怎么用Python写一个浏览器集群框架

这是做什么用的 框架用途 在采集大量新闻网站时&#xff0c;不可避免的遇到动态加载的网站&#xff0c;这给配模版的人增加了很大难度。本来配静态网站只需要两个技能点&#xff1a;xpath和正则&#xff0c;如果是动态网站的还得抓包&#xff0c;遇到加密的还得js逆向。 所以…

ChatGPT如何赋能探究深度学习、神经网络与卷积神经网络

计算机技术的发展和互联网的普及&#xff0c;使信息处理和传输变得更加高效&#xff0c;极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术&#xff0c;也在不断地影响和改变着各个行业。 如今&#xff0c;我们正在见证人工智能技术…

【Overload游戏引擎细节分析】PBR材质Shader

PBR基于物理的渲染可以实现更加真实的效果&#xff0c;其Shader值得分析一下。但PBR需要较多的基础知识&#xff0c;不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染&#xff0c;其理论较多&#xff0c;需要的基础知识也较多&#xff0c;我在这就不再写一遍了&#…

如何构造强一致性系统?理解数据一致性里的2PC和TCC模式原理,以及如何做(有图)

背景 首先&#xff0c;读这篇文章的时候你应该先了解什么是事务、什么是分布式事务。 我这里举2个例子&#xff0c;典型场景有两个&#xff1a; 1、一个应用有两个数据库&#xff0c;一个数据库是订单&#xff0c;另一个数据库是积分&#xff0c;要求下订单的时候同时给用户积…

el-table添加固定高度height后高度自适应

0 效果 1 添加自定义指令 新建目录src/directive/el-table 在el-table目录下新建文件adaptive.js import { addResizeListener, removeResizeListener } from element-ui/src/utils/resize-event// 设置表格高度const doResize async(el, binding, vnode) > {// 获取表格…

Vben admin - 表格组件合并单元格

需求 最近在项目中有需求需要表格合并单元格&#xff0c;不但内容有合并的&#xff0c;操作列也需要合并&#xff0c;找遍vben官方例子&#xff0c;没有实现操作列合并的&#xff0c;只能硬着头皮实现&#xff0c;还好实现了&#xff0c;下面具体就是实现思路&#xff1b; 原…

再获Gartner认可!持安科技获评ZTNA领域代表供应商

近日&#xff0c;全球权威市场研究与咨询机构Gartner发布了《Hype Cycle for Security in China, 2023&#xff08;2023中国安全技术成熟度曲线&#xff09;》报告&#xff0c;对2023年的20个中国安全技术领域的现状与发展趋势进行了详细的分析与解读。 其中&#xff0c;持安科…

mac电脑视频处理推荐:达芬奇DaVinci Resolve Studio 18 中文最新

DaVinci Resolve Studio 18是一款专业的视频编辑、调色和后期制作软件&#xff0c;由Blackmagic Design开发。它被广泛应用于电影、电视和广告等行业&#xff0c;提供了全面的工具和功能&#xff0c;使用户能够进行高质量的影片制作和后期处理。 以下是DaVinci Resolve Studio…