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

调试和优化大型深度学习模型 - 0 技术介绍

调试和优化大型深度学习模型 - 0 技术介绍

flyfish

LLaMA Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调。

FastChat

FastChat 是一个用于训练、部署和服务大型语言模型(LLM)聊天机器人的开放平台。

FastChat 提供了一个全面的平台,不仅可以让开发者训练和评估先进的聊天机器人模型,还可以让这些模型通过易于集成的服务接口对外提供服务。Chatbot Arena 则是一个基于 FastChat 平台的应用实例,允许用户直接体验和比较不同聊天机器人的性能。

FastChat 支持 Chatbot Arena(网址:https://chat.lmsys.org/),为超过70种大型语言模型处理了超过1000万次聊天请求。
Chatbot Arena 已经通过一对一的模型对决收集了超过50万个人工投票,以此编制了一个在线的大型语言模型Elo排名榜。

FastChat 的核心特性包括:
训练和评估最先进的模型(例如 Vicuna、MT-Bench)的代码。
一个分布式的多模型服务系统,配备有网页界面和与 OpenAI 兼容的 RESTful API。

DeepSpeed

DeepSpeed 是一个易于使用的深度学习优化软件套件,它支持大规模的深度学习训练和推理,使世界上最强大的语言模型(如 MT-530B 和 BLOOM)得以实现。DeepSpeed 的主要特点如下:

训练和推理大型模型:DeepSpeed 可以支持训练和推理拥有数十亿甚至数万亿参数的密集型或稀疏型模型。
高效的系统吞吐量和扩展能力:能够实现优秀的系统吞吐量,并能高效地扩展到数千个 GPU。
资源受限环境下的训练和推理:即使在资源受限的 GPU 系统上也能进行训练和推理。
低延迟和高吞吐量的推理:实现了前所未有的低延迟和高吞吐量的推理性能。
极致压缩:能够实现极高的模型压缩率,大幅度降低推理延迟和模型大小,同时成本较低。

DeepSpeed 的四大创新支柱包括:
DeepSpeed-Training:提供了多种系统创新,如 ZeRO、3D-Parallelism、DeepSpeed-MoE 和 ZeRO-Infinity 等,极大地提高了大规模深度学习训练的效果和效率。
DeepSpeed-Inference:结合了张量并行、管道并行、专家并行以及 ZeRO-并行等多种并行技术,并利用高性能自定义推理内核、通信优化和异构内存技术,实现了前所未有的大规模推理能力。
DeepSpeed-Compression:提供了易于使用且灵活的压缩技术,帮助研究人员和实践者在保证性能的同时压缩模型,实现更快的速度、更小的模型大小以及显著降低压缩成本。
DeepSpeed4Science:通过人工智能系统技术创新帮助科学家们解锁当今最大的科学难题。

DeepSpeed ZeRO

DeepSpeed ZeRO(Zero Redundancy Optimizer)是一种用于分布式训练的优化器,它的设计目的是减少训练大型模型所需的内存消耗。ZeRO 提供了三个阶段(Stages),每个阶段都会采用不同的策略来减少内存占用:

 ZeRO-1:只对优化器状态进行分片,这意味着每个节点只存储一部分优化器的状态,而不是整个状态。ZeRO-2:除了优化器状态之外,还包括梯度的分片,这样每个节点只需要存储它负责更新的一部分梯度。ZeRO-3:除了优化器状态和梯度外,还包括模型参数的分片,这意味着每个节点只需要存储一部分模型参数,这进一步降低了内存需求。

ZeRO 的主要优势在于它能够在不牺牲训练性能的情况下显著减少内存占用,这对于训练超大模型尤其重要。此外,DeepSpeed 还支持将优化器状态、梯度和模型参数从 GPU 显存移动到 CPU 内存或硬盘上,从而实现不同程度的显存节省。

FSDP (Fully Sharded Data Parallelism)

FSDP 是 Facebook 开发的一种数据并行训练技术,它被设计用于解决在分布式环境中训练大型模型时出现的问题。FSDP 通过将模型参数、梯度和优化器状态在多个工作节点之间进行分片来实现内存和计算资源的有效利用。

FSDP 的关键特点包括:

Parameter Sharding:FSDP 采用参数分片机制,意味着模型参数、梯度和优化器状态会在各个 GPU 之间分片存储,这样每个 GPU 只需要处理一部分数据。
Efficient Communication:FSDP 实现了高效的跨节点通信机制,以最小化分片状态之间的同步开销。
Simplicity:尽管 FSDP 提供了高级功能,但它仍然保持了数据并行训练的简单性,使得用户可以轻松地将其应用于现有的 PyTorch 代码中。

SFT 训练

SFT 训练通常指的是 Supervised Fine-Tuning,即监督微调。这是一种在深度学习模型上进行微调的技术,使用标注数据对预训练模型进行进一步的训练,以便在特定任务上表现更好。

SFT 训练的主要步骤:

1 预训练模型:
先在大规模的无标注数据集上进行预训练,使模型学习通用的语言表示或其他相关特征。
2 微调数据:
收集并标注与特定任务相关的数据集。这些数据通常是由人类标注的,包含输入和对应的目标输出。
3 监督微调:
将预训练模型加载进来,并使用标注数据对模型进行微调。通过最小化训练集上的损失(如交叉熵损失),模型会逐渐学习到如何在特定任务上进行预测。

典型应用场景:

文本分类:在预训练语言模型(如BERT、GPT等)的基础上,使用标注的文本分类数据进行微调。
问答系统:使用标注的问答对数据,对预训练模型进行微调,以提高模型在问答任务上的表现。
对话系统:在特定领域或风格的对话数据上对模型进行监督微调,以适应特定的对话场景。

集成方法(Integrated methods)

  1. 预训练(Pre-training)
    预训练是指在大规模的文本数据上训练模型,以使其学习到通用的语言表示。这通常是模型训练的第一步,目的是让模型具备基本的语言理解能力。在这之后,模型可以通过微调来适应特定任务。

  2. (多模态)指令监督微调((Multimodal) Supervised Fine-tuning)
    指令监督微调是指在特定任务上使用标注数据进一步训练模型。这种训练方式使模型在特定任务或数据集上表现更好。如果是多模态(multimodal),则涉及到处理不同类型的数据(如文本和图像)的监督微调。

  3. 奖励模型训练(Reward Modeling)
    奖励模型训练是一种强化学习方法,通过奖励信号来优化模型的行为。训练过程中,模型会根据奖励信号调整其输出,以提高其在特定任务上的表现。奖励模型通常用于生成任务,如对话生成。

  4. PPO 训练(Proximal Policy Optimization Training)
    PPO(Proximal Policy Optimization)是一种强化学习算法,用于优化策略网络。PPO通过限制策略更新的幅度,来确保训练过程的稳定性和高效性。它常用于优化生成模型的输出质量。

  5. DPO 训练(Direct Preference Optimization Training)
    DPO(Direct Preference Optimization)是一种通过直接优化模型输出的偏好来进行训练的方法。与传统的强化学习方法不同,DPO直接使用人类反馈或偏好来调整模型的生成结果。

  6. KTO 训练(Knowledge Transfer Optimization Training)
    KTO(Knowledge Transfer Optimization)涉及从一个任务或领域中转移知识到另一个任务或领域。这种方法通常用于提高模型在新任务上的性能,利用在先前任务中学到的知识。

  7. ORPO 训练(Online Reinforcement Policy Optimization Training)
    ORPO(Online Reinforcement Policy Optimization)是一种强化学习方法,通过在线优化策略来提高模型的性能。这种方法通常用于动态环境中的决策优化。

可扩展资源(Scalable resources)

  1. 16比特全参数微调(16-bit Full-Tuning)
    这种方法使用16位浮点数(FP16)进行全参数微调。与传统的32位浮点数(FP32)相比,16位浮点数可以显著减少内存使用和计算量,同时保持足够的数值精度。这种方法适用于需要在较大模型上进行训练但计算资源有限的情况。

  2. 冻结微调(Freeze-Tuning)
    冻结微调是指在微调过程中,冻结模型的某些层或参数,只对其余部分进行训练。这通常用于保留预训练模型的基础知识,同时对特定任务进行适应。冻结某些层可以减少计算资源需求和训练时间。

  3. LoRA 微调(LoRA Fine-Tuning)
    LoRA(Low-Rank Adaptation)是一种通过引入低秩矩阵来进行模型微调的方法。通过在模型的权重矩阵中添加低秩矩阵,LoRA可以在不显著增加计算成本的情况下,调整模型以适应特定任务。这种方法适用于大规模模型的高效微调。

  4. 基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调
    这些方法涉及使用低精度量化技术来进一步减少模型训练和推理的内存和计算需求。QLoRA(Quantized LoRA)结合了LoRA和量化技术,通过将模型的权重和/或激活值量化为低精度(如 2、3、4、5、6 或 8 比特)来实现。以下是这些量化技术的简要说明:
    AQLMAWQGPTQLLM.int8HQQEETQ :这些是不同的量化方法,用于将模型的参数和/或计算转换为更低的位数,从而减少模型的存储和计算需求。

量化方法

AQLM (Activation Quantization for Large Models)
AQLM 指的是针对大型模型的激活量化技术。尽管具体的细节不多,但从名称上看,它主要侧重于对模型的激活值进行量化。激活量化是量化技术的一个重要方面,因为它可以减少模型在推理过程中需要处理的数据量,进而降低内存带宽需求并加快推理速度。

AWQ (Activation-aware Weight Quantization)
AWQ 是一种基于激活值分布挑选显著权重进行量化的方法。它不需要依赖于反向传播或重建,可以很好地保持模型在不同领域的泛化能力,避免过拟合到校准集。AWQ 属于训练后量化(Post-Training Quantization, PTQ)大类,已经被广泛应用于多个推理框架中,如 TensorRT-LLM、FastChat、vLLM、HuggingFace TGI 和 LMDeploy,并且得到了工业界的主要厂商如 NVIDIA、Google、Amazon 和 Intel 的支持。

GPTQ (GPT Quantization)
GPTQ 是一种针对 GPT 类型模型的量化方法。它通常用于量化大型语言模型,以减少模型大小并提高推断效率。

LLM.int8
LLM.int8 可能是指将大型语言模型量化到 int8 精度级别的技术。int8 量化是一种常见的量化技术,它将模型的权重从 float32 或 float16 类型转换为 int8 类型,以减少模型大小并提高推理速度。这种技术通常适用于那些经过充分训练并且在量化后性能损失可接受的模型。

HQQ (High-Quality Quantization)
HQQ 可能是指一种高质量的量化技术,它旨在在保持模型性能的同时最大化量化的好处。具体细节未知,但可以推测 HQQ 致力于提供更好的量化效果,比如更高的精度保留或更低的计算资源消耗。

EETQ (Effective and Efficient Quantization)
EETQ 是一种有效且高效的量化技术。这个名字表明该技术旨在提供既高效又有效的模型量化方案,这意味着它可能在保持模型性能的同时,尽可能减少模型大小和计算资源的消耗。

先进算法(Advanced algorithms)

  1. GaLore
    GaLore 是一种优化算法,旨在改进梯度下降法的效率。它通过调整梯度的计算和更新方式来加速训练过程,并可能改善模型的收敛性。

  2. BDam
    BDam 是一种优化算法,可能是指一种改进的梯度优化方法。具体细节取决于具体的实现和论文,但通常这种方法涉及到对优化过程中的梯度和动量进行调整,以提高训练效果和速度。

  3. Adam-mini
    Adam-mini 是 Adam 优化器的一个变种,可能旨在减少计算资源的需求或调整优化算法的某些超参数,以适应不同的训练场景。Adam 优化器广泛用于深度学习,因为它结合了动量和自适应学习率的优点。

  4. DoRA
    DoRA(Dynamic Rank Adaptation)是一种优化算法,用于动态调整模型中参数的秩,以提高模型的训练效率和性能。DoRA 可能涉及到根据训练过程中的反馈来调整模型的结构或优化策略。

  5. LongLoRA
    LongLoRA 是 LoRA(Low-Rank Adaptation)的一个扩展版本,专注于处理长序列数据或任务。它通过改进低秩适应的方法来更好地处理长序列中的信息,从而提高模型在这些任务上的表现。

  6. LLaMA Pro
    LLAMA PRO: Progressive LLaMA with Block Expansion。
    代码 https://github.com/TencentARC/LLaMA-Pro
    人类通常可以在不损害旧技能的情况下习得新技能;然而,对于大型语言模型(LLM),情况却恰恰相反,例如从LLaMA到CodeLLaMA的转变。鉴于此,我们提出了一种新的后预训练方法,该方法通过扩展Transformer模块来更新LLM。我们仅使用新的语料库来微调这些扩展模块,从而高效且有效地提升模型的知识而不导致灾难性的遗忘。
    在本文中,我们在代码和数学领域进行了实验,得到了LLaMA Pro-8.3B,这是一种从LLaMA2-7B初始化得到的多功能基础模型,在一般任务、编程和数学方面表现出色。LLaMA Pro及其指令跟随版本(LLaMA Pro - Instruct)在各种基准测试中取得了先进的性能,证明了它们相对于现有LLaMA家族中的开放模型具有优越性,并展示了作为智能代理进行推理和处理多样化任务的巨大潜力。
    我们的发现为整合自然语言和编程语言提供了有价值的见解,为开发能够在多种环境中有效运行的高级语言代理奠定了坚实的基础

  7. Mixture-of-Depths
    Mixture-of-Depths 是一种模型架构策略,通过在网络的不同层级上使用不同的深度或宽度来提高模型的表示能力和计算效率。这种方法旨在结合不同深度网络的优点,以获得更好的性能。

  8. LoRA+
    LoRA+: Efficient Low Rank Adaptation of Large Models。
    我们展示了最初由Hu等人(2021)引入的低秩适应(LoRA)会导致宽度过大的模型(即嵌入维度较大)的次优微调。这是因为LoRA中的适配矩阵A和B使用相同的学率进行更新。通过对大规模宽度网络的缩放分析,我们表明使用相同的学率对A和B进行更新并不利于高效的特征学习。随后,我们展示可以通过简单地为LoRA适配矩阵A和B设置不同的学率(并选择合适的比例)来修正LoRA的这一不足之处。我们将这种改进后的算法称为LoRA+。
    在我们广泛的实验中,LoRA+在相同的计算成本下提高了性能(大约1-2%的提升)和微调速度(最多约2倍的速度提升)。

  9. LoftQ
    LoftQ 可能是一种结合了 LoRA 和量化技术的方法,用于在训练过程中使用低精度计算。LoftQ 旨在通过低精度表示减少计算需求,同时保持模型性能。

  10. PiSSA
    PiSSA(Policy Improvement with Supervised and Self-Adaptation)是一种强化学习方法,通过结合监督学习和自适应机制来改进策略优化。它可以提高模型在特定任务中的表现,并使训练过程更加稳定。

实用技巧(Practical tricks)

  1. FlashAttention-2
    FlashAttention-2 是一种优化的自注意力机制,旨在提高Transformer模型中自注意力操作的计算效率。它通过减少内存占用和计算复杂度,加速自注意力的计算,通常用于大规模模型的训练和推理中。

  2. Unsloth
    Unsloth 是一种用于加速训练的技术或工具,可能涉及优化计算图或减少计算冗余。具体的实现细节可能包括改进的数据并行策略或优化模型的计算流程,以提高训练速度和效率。

  3. RoPE 缩放(RoPE Scaling)
    RoPE(Rotary Position Embeddings)是一种位置编码技术,用于改进Transformer模型中的位置表示。RoPE 缩放指的是对RoPE位置编码进行调整或缩放,以优化模型在不同任务中的表现。通过这种方式,可以提高模型对长序列数据的处理能力。

  4. NEFTune
    NEFTune 是一种模型调优技术,可能涉及对模型进行特定的调整或优化,以改善其在实际应用中的性能。NEFTune 可能包括对训练过程中的超参数进行调整,或在特定任务上进行微调,以提高模型的效果。

  5. rsLoRA
    rsLoRA(Reduced-Size Low-Rank Adaptation)是 LoRA(Low-Rank Adaptation)的一个变种,旨在减少适应过程中使用的低秩矩阵的大小。rsLoRA 通过减少参数量和计算需求,提高微调效率,同时保持模型的适应性和性能。

相关文章:

调试和优化大型深度学习模型 - 0 技术介绍

调试和优化大型深度学习模型 - 0 技术介绍 flyfish LLaMA Factory LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上…...

华为S3700交换机配置VLAN的方法​

1.VLAN的详细介绍 VLAN(Virtual Local Area Network)即虚拟局域网,是一种将一个物理的局域网在逻辑上划分成多个广播域的技术。 1.1基本概念 1)作用: 隔离广播域:通过将网络划分为不同的 VLAN,广播帧只会在同一 VLAN 内传播,而不会扩散到其他 VLAN 中,从而有效…...

学懂C++(三十八):深入详解C++网络编程:套接字(Socket)开发技术

目录 一、概述与基础概念 1.1 套接字(Socket)概念 1.2 底层原理与网络协议 1.2.1 网络协议 1.2.2 套接字工作原理 二、C套接字编程核心技术 2.1 套接字编程的基本步骤 2.2 套接字编程详细实现 2.2.1 创建套接字 2.2.2 绑定地址 2.2.3 监听和接…...

SpringBoot-配置加载顺序

目录 前言 样例 内部配置加载顺序 ​ 样例 小结 前言 我之前写的配置文件,都是放在resources文件夹,根据当前目录下,优先级的高低,判断谁先被加载。但实际开发中,我们写的配置文件并不是,都放…...

第八周:机器学习笔记

第八周机器学习笔记 摘要Abstract机器学习1. 鱼和熊掌和可兼得的机器学习1.1 Deep network v.s. Fat network 2. 为什么用来验证集结果还是不好? Pytorch学习1. 卷积层代码实战2. 最大池化层代码实战3. 非线性激活层代码实战 总结 摘要 本周学习对李宏毅机器学习视…...

音乐怎么剪切掉一部分?5个方法,轻松学会音频分割!(2024全新)

音乐怎么剪切掉一部分?音频文件是娱乐和创作的重要基础。音频在我们日常生活中发挥着重要作用,从音乐播放列表到有趣的视频,它无处不在。无论是音乐爱好者还是内容创作者,我们常常需要对音频文件进行剪切和编辑。想象一下&#xf…...

洛谷 CF295D Greg and Caves

题目来源于:洛谷 题目本质:动态规划dp,枚举 解题思路:将整个洞分成两半,一半递增,一半递减。我们分别 DP 求值,最后合并。状态转移方程为:dpi,j​k2∑j​(j−k1)dpi−1,k​1。枚举极…...

【图像处理】在图像处理算法开发中,有哪些常见的主观评价指标和客观评价指标?

主观评价指标 在图像处理算法开发中,主观评价指标依赖于观察者的个人感受和判断,通常用于评估图像的视觉质量。以下是一些常见的主观评价指标: 平均意见分数 (Mean Opinion Score, MOS):通过收集多个评价者的评分并计算平均值来评…...

从零开始学cv-6:图像的灰度变换

文章目录 一,简介:二、图像的线性变换三、分段线性变换四,非线性变换4.1 对数变换4.2 Gamma变换 五,效果: 一,简介: 图像灰度变换涉及对图像中每个像素的灰度值执行数学运算,进而调整图像的视觉…...

使用Apache POI和POI-OOXML实现word模板文档自动填充功能

最近接到一个新的需求&#xff0c;用户创建好模板文件保存到模板库&#xff0c;然后使用在线文档编辑器打开模板时&#xff0c;将系统数据填充到模板文件并生成新的word文件&#xff0c;然后在线编辑&#xff0c;研究使用Apache POI和POI-OOXML实现了这个功能。 Maven依赖 <…...

【HarmonyOS NEXT星河版开发学习】综合测试案例-各平台评论部分

目录 前言 功能展示 整体页面布局 最新和最热 写评论 点赞功能 界面构建 初始数据的准备 列表项部分的渲染 底部区域 index部分 知识点概述 List组件 List组件简介 ListItem组件详解 ListItemGroup组件介绍 ForEach循环渲染 列表分割线设置 列表排列方向设…...

垂直行业数字化表现抢眼 亚信科技全年利润展望乐观

大数据产业创新服务媒体 ——聚焦数据 改变商业 2024年8月14日&#xff0c;亚信科技控股有限公司&#xff08;股票代码&#xff1a;01675.HK&#xff09;公布了公司截至2024年6月30日的中期业绩。 财报数据显示&#xff0c;2024年上半年&#xff0c;亚信科技的营业收入为人民币…...

EmguCV学习笔记 VB.Net 4.1 颜色变换

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 教程VB.net版本请访问&#xff1a;EmguCV学习笔记 VB.Net 目录-CSDN博客 教程C#版本请访问&#xff1a;EmguCV学习笔记 C# 目录-CSD…...

【MySQL进阶之路】表结构的操作

目录 创建表 查看表 查看数据库有哪些表 查看表结构 查看表的详细信息 修改表 表的重命名 添加一列 修改某一列的属性 删除某一列 对列进行重命名 删除表 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 【MySQL进阶之路】MySQL基础——从零认识MySQL-CSDN博客 创…...

3分钟搞定PDF转PPT!你一定要知道的3款转换神器!

在数字办公成为主流的当下&#xff0c;我们每天会收到各类基于数字化方式存储的办公文档&#xff0c;如PDF、PPT、Word、Excel文档等。 日常处理这些文档时&#xff0c;经常需要在不同格式的文档之间进行切换和转换&#xff0c;其中将PDF转换为PPT就是一个非常高频的需求&…...

【EasyExcel】导出excel-设置动态表头并导出数据

需求背景&#xff1a; 导出excel的设置某些表头动态导出(可以根据筛选条件或一些属性的数据量)&#xff0c;方便导出后用户查看想看的信息。 一、技术选型&#xff1a; easyExcel的原生数据处理 二、方案设计&#xff1a; 根据EasyExcel支持的表头List<List<String>…...

深入探索 Elasticsearch 8:新特性与核心原理剖析(上)

深入探索 Elasticsearch 8&#xff1a;新特性与核心原理剖析 目录 一、引言 &#xff08;二&#xff09;版本 8 的重要意义 二、Elasticsearch 8 的新特性 三、Elasticsearch 的核心原理 一、引言 &#xff08;一&#xff09;Elasticsearch 简介 在大数据处理和搜索领域…...

瑜伽馆预约小程序,在线预约,提高商业价值

随着大众生活质量的提高&#xff0c;对休闲运动的关注逐渐加大&#xff0c;瑜伽作为一种身心放松、改善体态的运动&#xff0c;深受女性用户的喜爱。目前&#xff0c;各大瑜伽馆开始结合数字化&#xff0c;建立了新型的线上小程序&#xff0c;帮助大众快速预约体验瑜伽&#xf…...

Python--数据类型转换

在Python中&#xff0c;数据类型的转换是一个常见的操作&#xff0c;涉及将一种数据类型转换为另一种数据类型。Python提供了多种内置函数用于执行这种转换&#xff0c;如 int()、str()、float()、list()、tuple()、set()、dict() 等。下面详细讨论Python的基本数据类型及它们之…...

域控ntdsutil修改架构、域命名、PDC、RID、结构主机

#笔记记录# FSMO盒修改 1、提示访问特权不够&#xff0c;不能执行该操作&#xff0c;0x2098 清除缓存账号密码并修改新架构管理员账号密码即可。 背景&#xff1a;更替架构主机、域命名主机 C:\Windows\system32>ntdsutil ntdsutil: roles fsmo maintenance: ?? …...

解决 Swift 6 全局变量不能满足并发安全(concurrency-safe)读写的问题

概述 WWDC 24 终于在 Swift 十岁生日发布了全新的 Swift 6。这不仅意味着 Swift 进入了全新的“大”版本时代&#xff0c;而且 Swift 编译器终于做到了并发代码执行的“绝对安全”。 不过&#xff0c;从 Swift 5 一步迈入“新时代”的小伙伴们可能对新的并发检查有些许“水土不…...

迈入退休生活,全职开发ue独立游戏上架steam

决定退休了。算了算睡后收入&#xff0c;也可以达到每月一万一&#xff0c;正好可以养家糊口。 既然退休了&#xff0c;那就做些想做的事情&#xff0c;别人养花养草&#xff0c;而我打算开发独立游戏上架steam。 一&#xff0c;盘点下目前的技术体系。 1&#xff0c;图形学底…...

什么是光伏气象站——仁科测控

【仁科测控&#xff0c;品质保障】光伏气象站&#xff0c;‌这一专门为光伏发电系统设计的监测设备&#xff0c;‌其核心能力在于精确且实时地捕捉那些对光伏发电效率产生关键影响的气象因素。‌这些数据不仅为评估光伏电站的发电性能提供了重要依据&#xff0c;‌更是优化运维…...

webshell免杀--免杀入门

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要整理webshell免杀的一些基础思路 入门级&#xff0c;不是很深入&#xff0c;主要是整理相关概念 免杀对象 1.各类杀毒软件 类似360&#xff0c;火绒等&#xff0c;查杀己方webshell的软件。 2.各类流量…...

Linux---02---系统目录及文件基本操作命令

课程回顾 操作系统 虚拟机安装 本章重点 Linux系统目录结构 常用命令 熟练区分Linux下各层目录的作用 熟练掌握Linux的常用命令&#xff08;文件命令、时间命令等&#xff09; 一、Linux系统目录结构 1.1 目录结构 /&#xff1a; 根目录&#xff0c;一般根目录下只存放…...

CSP-J/S第一轮初赛模拟赛试题

本模拟试题为本人自创&#xff0c;由于发布在 LG 所以就直接放入链接。 非经允许&#xff0c;不得转载。 本套模拟题只供大家练习使用&#xff0c;不保证难度与真实 CSP-J/S 完全符合。 本模拟赛为专业CSP类型的模拟赛&#xff0c;不存在错题、超出知识的题目。 CSP-J/S 20…...

LangGPT结构化提示词

LangGPT是Language For GPT-like LLMs的简称&#xff0c;中文名为结构化提示词&#xff0c;LangGPT是一个帮助你编写高质量提示词的工具&#xff0c;理论基础是我们提出的一套模块化、标准化的提斯提编写方法论——结构化提示词。我们希望揭开提示工程的神秘面纱&#xff0c;为…...

如何为个人网站更换ssl证书

关键步骤 1&#xff0c;确认服务器类型并下载对应证书&#xff08;这个超级简单&#xff0c;阿里云现在可以下3月免费的&#xff09;&#xff1b; 2&#xff0c;本文以nginx服务为例&#xff0c;主打的就是一个简单且快速让你搞清楚实操流程&#xff1b; linux命令 ps-ef|gr…...

RabbitMQ-消息队列延迟队列一

1、安装rabbitmq 怎么安装rabbitmq请查看之前课程&#xff0c;如果已经安装&#xff0c;请略过此步。 2、创建vendor文件夹或是直接采用PHP框架 mkdir vendor 3、进入文件 cd vendor 4、安装php扩展 composer require php-amqplib/php-amqplib 5、进入上级创建dead文件…...

JavaScript中普通对象和Map对象的区别

在JavaScript中&#xff0c;普通对象&#xff08;{}&#xff09;和 Map 对象都是用于存储键值对的数据结构&#xff0c;但是他们有一些区别。 1. 键的类型 普通对象&#xff1a; 对象的键必须是字符串或 Symbol 类型。其他类型的值&#xff08;如数字、布尔值、对象等&#x…...

Liunx搭建Rustdesk远程桌面服务

1、环境准备 Linux&#xff1a;centos7.9 rustdesk server安装包 很多新服务器并没有 wget 和unzip 可以通过yum自行安装下&#xff0c;如果系统中有wget但不能使用&#xff0c;直接卸载重装即可。 yum install wget wget --no-check-certificate https://github.com/rust…...

antv X6--实现节点旁添加多个text标签

前言&#xff1a;接本专栏上篇文章&#xff0c;实现一个新需求&#xff0c;如有不懂的可先去看新手教程 需求描述&#xff1a;如何在节点旁添加多个标签&#xff0c;如下图所示&#xff1a; 实现该需求目前我只想到两种方法&#xff1a; 方法一&#xff1a;使用换行符将不同的…...

JAVA--多线程

Java中的多线程是指在同一个Java虚拟机&#xff08;JVM&#xff09;中并发执行多个线程的能力。线程是程序执行的最小单元&#xff0c;Java提供了丰富的API来创建和管理线程。以下是Java中实现多线程的一些关键概念和方法&#xff1a; Thread 类&#xff1a;Java提供了Thread类…...

ADB-DROM

# 读硬件信息 adb shell "cat /sys/block/mmcblk0/device/name" # MT6767/MT6768/MT6769/MT6762/MT6765/MT6761... # 频率档位 # 固定频率 adb shell "echo 0 > /sys/devices/platform/10012000.dvfsrc/helio-dvfsrc/dvfsrc_force_vcore_dvfs_opp" # …...

mysql 之 explain

1. 查看表的创建字段以及索引情况 show create table user_recommend; 2. 创建索引的原则&#xff1a;列的值比较离散 像性别字段&#xff0c;只有男&#xff0c;女 或者其他&#xff1b;expose字段&#xff0c;只有1分发&#xff0c;0不可分发。就不适宜在这种字段上添加索引…...

CentOS迁移案例 | 保障轨道交通安全、发挥基础设施效能,麒麟信安操作系统支撑某市轨道交通畅行无忧

为缓解城市交通拥堵难题&#xff0c;某市轨道交通公司计划新建一条贯穿城市关键区域、沿路设立20座站点的轨道交通线路&#xff0c;并基于麒麟信安操作系统构建轨道交通信号系统。 轨道交通信号系统是列车核心控制系统&#xff0c;负责列车运行的自动化控制&#xff0c;及对整…...

获取操作系统的信息(Go语言)

在 Go 语言中&#xff0c;你可以使用 runtime 和 os 包来查看操作系统的信息。以下是一些常见的操作系统信息获取方法&#xff1a; 1. 获取操作系统类型和架构信息 Go 的 runtime 包提供了基本的操作系统和架构信息&#xff1a; package mainimport ("fmt""r…...

【论文阅读】HuatuoGPT-II, One-stage Training for Medical Adaption of LLMs

总体概要 本文深入探讨了一款专为医疗领域设计的大规模语言模型——HuatuoGPT-II的创新、性能与应用。HuatuoGPT-II采用统一的单阶段训练流程&#xff0c;将传统的继续预训练和监督微调整合&#xff0c;有效解决了医疗数据的异质性问题&#xff0c;包括语言、体裁和格式差异&a…...

Excel表列序号

题目 给定一个Excel表格中的列名称&#xff0c;返回其相应的列序号。 例如&#xff0c; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1: 输入: "A" 输出: 1示例 2: 输入: "AB" 输出: 28示例 3: 输入: "ZY&…...

IOS 03 纯代码封装自定义View控件

本节将通过纯代码进行封装自定义View控件&#xff0c;以常用的设置页的item为例&#xff0c;实现UI效果如下&#xff1a; 1、创建SettingView继承自UIView import UIKitclass SettingView: UIView {} 2、重写 init() 和 required init?(coder: NSCoder) 方法 纯代码创建Set…...

比较结构加法及其逆运算

在行列可自由变换的平面上有等式 13&#xff08;3a11&#xff09;2*4a14a22*4a32*4a44*4a122*4a14 3a11在平面上可能得到6个不同的4点结构&#xff0c;这6个结构的比例为2&#xff1a;1&#xff1a;2&#xff1a;2&#xff1a;4&#xff1a;2. 现在从右向左算&#xff0c;计…...

44.【C语言】指针(重难点)(G)

目录 19.字符指针变量 *定义 *简单说明 *如果是字符串 *像数组一样指定访问常量字符串的字符 *练习 20.数组指针变量 *定义 *格式 *例子 问题1 问题2 *利用指针打印 21.二维数组传参的本质 *回顾 往期推荐 19.字符指针变量 *定义 指向字符的指针变量&#xff0c;用于存储字符…...

746. 使用最小花费爬楼梯-dp3

. - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/min-cost-climbing-stairs/description/从左向右填dp表 class Solutio…...

MPU6050详细介绍

一、MPU6050介绍 MPU6050是由三个陀螺仪和三个加速度传感器组成的6轴运动处理组件 内部主要结构&#xff1a;陀螺仪、加速度计、数字运动处理器DMP&#xff08;Digital Motion Processor&#xff09; MPU6050有两个IIC接口&#xff0c;第一IIC接口可作为主接口给单片机传输数…...

【分享】Excel的3个隐藏功能

我们在制作Excel表格的时候&#xff0c;有时候会包含一些敏感信息&#xff0c;为了确保这些数据的安全性&#xff0c;Excel提供了隐藏功能来保护工作表&#xff0c;下面小编分享3个Excel常用的隐藏功能&#xff0c;一起来看看如何设置吧&#xff01; 功能一&#xff1a;隐藏部分…...

Linux中的chown指令

chown&#xff08;change owner&#xff09;命令在 Linux 和其他类 Unix 系统中用于更改文件或目录的用户和/或组所有权。 基本用法 chown [选项] 用户名[:组名] 文件或目录 参数说明 用户名&#xff1a;指定新的文件或目录的所有者 组名&#xff1a;可选&#xff0c;指定新…...

UCOSIII内存管理机制详解

目录 前言 1. 内存管理概述 2. 内存区域&#xff08;存储区&#xff09;和内存块 3. 存储区控制块&#xff08;OS_MEM&#xff09; 4. 内存管理函数 5. 内存碎片问题 6. 注意事项 7.代码实现 7.1创建内存区域 7.2申请内存 7.3释放内存 前言 UCOSIII&#xff08;即Mi…...

Android12 显示框架之Transaction----client端

目录&#xff1a;Android显示终极宝典 在前面的章节中&#xff0c;应用通过createSurface()在surfaceflinger中创建了一层layer&#xff0c;紧接着要做的事情就是对这个layer设置一些属性&#xff08;或者叫状态&#xff09;&#xff0c;常设置的属性有位置、大小、z-order等等…...

在Windows上使用FRP搭建内网穿透:

FRP服务器端配置&#xff08;公网服务器&#xff09; 下载FRP&#xff1a; 访问FRP的GitHub发布页面&#xff1a;https://github.com/fatedier/frp/releases下载对应系统架构的frp_<version>_linux_amd64.tar.gz&#xff08;如果你的服务器是Linux系统&#xff09;或者f…...

TypeError: Cannot read properties of undefined (reading ‘scrollIntoView‘)(已解决)

问题复现&#xff1a;眨眼睛使用vitevue3实现跳转dom功能时使用了scrollIntoView方法&#xff0c;在打包上传以后使用该功能报错 小友可能会陷入误区&#xff0c;以为是函数方法有问题&#xff0c;毕竟在开发时是没有问题的&#xff0c; 而实际上呢问题出在获取节点失败了 在这…...