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

微调 LLaMA 2:定制大型语言模型的分步指南

微调 LLaMA 2:定制大型语言模型的分步指南

深入了解如何运用新技术在 Google Colab 平台上对 Llama-2 进行微调操作,从而有效克服内存与计算方面的限制,让开源大型语言模型变得更加易于获取和使用。自从 Meta 发布了 LLaMA 的首个版本后,一场旨在构建更为强大、能够与 GPT-3.5(ChatGPT)等模型相抗衡的大型语言模型(LLM)的竞赛便正式开启。开源社区迅速行动起来,不断发布性能愈发强大的模型。对于人工智能领域的爱好者而言,这段时间就如同圣诞节一般充满惊喜,新的技术进展接连不断地涌现。

然而,这些显著的进步也带来了一些不可忽视的弊端。一方面,大多数开源模型的使用许可存在诸多限制,这就意味着它们仅仅能够被应用于研究领域。另一方面,只有那些资金充裕的大型企业或专业的研究机构,才具备足够的实力对模型进行微调或训练操作。此外,部署和维护最前沿的大型模型所需的成本相当高昂。全新版本的 LLaMA 模型正是为了解决上述这些问题而诞生的。它提供了商业许可证,使得更多的组织都有机会使用该模型。而且,现在出现了一些新的方法,能够让用户在内存有限的消费级 GPU 上实现对模型的微调。

人工智能的民主化对于其实现广泛应用来说至关重要。通过打破进入的壁垒,即便是规模较小的公司,也能够依据自身的实际需求和预算,构建出符合自身特点的定制化模型。在本教程当中,我们将会深入探索 Llama-2 模型,并实际演示如何借助 Google Colab 平台,在新的数据集上对其进行微调。此外,我们还会介绍一些有助于降低内存占用量,并加快训练速度的新方法和微调技巧。

在这里插入图片描述

了解 Llama 2 和模型微调

Llama 2 是 Meta 公司推出的第二代开源大型语言模型(LLM)集合,并且附带了商业使用许可证。该模型旨在处理各类自然语言处理任务,其模型规模有所不同,参数数量从 70 亿到 700 亿不等。如果您想深入了解更多关于 LLaMA 模型的详细信息,欢迎阅读我们的文章《Meta AI LLaMA 简介:赋能 AI 创新》。Llama-2-Chat 模型针对对话场景进行了专门优化,其性能目前已经能够与 ChatGPT、PaLM 等备受关注的闭源模型相媲美。实际上,我们还可以通过在高质量的对话数据集上对该模型进行微调操作,进一步提升其性能表现。

机器学习领域中,微调指的是根据新的数据对预训练模型的权重和参数进行调整,以此来提高模型在特定任务上的表现的过程。这一过程需要在与当前任务相关的新数据集上对模型进行训练,同时更新模型的权重,使其更好地适应新的数据特征。若您希望了解更多关于微调的相关信息,欢迎阅读我们的《GPT 3.5 微调指南》。以往,由于显存(VRAM)和计算能力的限制,在消费级硬件设备上无法实现对大型语言模型(LLM)的微调操作。不过,在本教程里,我们将着力克服这些在内存和计算方面所面临的挑战,并使用免费版本的 Google Colab Notebook 来完成对我们模型的训练工作。

如何微调 Llama 2:分步指南

在本部分内容中,我们将一同学习在配备 T4 GPU 的环境下,对拥有 70 亿个参数的 Llama 2 模型进行微调操作所需要的全部步骤。您可以自由选择使用 Google Colab 或者 Kaggle 平台上提供的免费 GPU 资源。需要注意的是,相应的代码在这两个平台上均能够正常运行。

Google Colab 所配备的 T4 GPU 的显存(VRAM)存在一定限制,仅有 16GB。这一容量仅仅勉强能够存储 Llama 2-7b 模型的权重数据,这也就表明我们无法对其进行完整的微调操作,因此,我们必须采用诸如 LoRA 或者 QLoRA 这类参数高效的微调技术。

在接下来的操作中,我们将运用 QLoRA 技术,以 4 位精度对模型展开微调工作,并且对显存(VRAM)的使用进行优化。为了达成这一目标,我们会使用 Hugging Face 生态系统中的大型语言模型(LLM)库,具体包括:transformers、accelerate、peft、trl 以及 bitsandbytes。

入门

我们将从安装所需的库开始

%%capture
%pip install accelerate peft bitsandbytes transformers trl

之后,我们将从这些库中加载必要的模块。

import os
import torch
from datasets import load_dataset
from transformers import (AutoModelForCausalLM,AutoTokenizer,BitsAndBytesConfig,TrainingArguments,pipeline,logging,
)
from peft import LoraConfig
from trl import SFTTrainer

模型配置

Meta 公司官方的 Llama-2 模型可以从 Hugging Face 平台获取,不过需要进行申请,并且在申请后通常得等待几天时间才能收到确认回复。为了避免这种等待的时间成本,将选择使用 NousResearch 的 Llama-2-7b-chat-hf 模型作为基础模型。该模型与原始的 Llama-2 模型在性能等方面是一致的,而且相对来说更容易获取到。

在这里插入图片描述

将使用名为mlabonne/guanaco-llama2-1k的较小数据集对的基础模型进行微调,并为微调后的模型写下名称。

# Model from Hugging Face hub
base_model = "NousResearch/Llama-2-7b-chat-hf"# New instruction dataset
guanaco_dataset = "mlabonne/guanaco-llama2-1k"# Fine-tuned model
new_model = "llama-2-7b-chat-guanaco"

在这里插入图片描述

加载数据集、模型和标记器

将从 Hugging Face 中心加载“guanaco-llama2-1k”数据集。该数据集包含 1000 个样本,已处理为符合 Llama 2 提示格式,并且是优秀的timdettmers/openassistant-guanaco数据集的子集。

dataset = load_dataset(guanaco_dataset, split="train")
dataset = load_dataset(guanaco_dataset, split="train")

位量化配置

QLoRA 实现的 4 位量化,能在消费级硬件上高效微调大型 LLM 模型,还能维持高性能。这极大提升了实际应用的可及性与可用性。

QLoRA 把预训练的语言模型量化为 4 位并冻结参数,接着往模型中添加少量可训练的低秩适配器层。

微调时,梯度会经冻结的 4 位量化模型反向传播至低秩适配器层。所以,整个预训练模型的梯度固定为 4 位,仅适配器层会更新。而且,4 位量化不会对模型性能造成影响。

在这里插入图片描述

可以阅读该论文以更好地理解它。在例子中,使用 BitsAndBytes 创建具有 NF4 类型配置的 4 位量化。

compute_dtype = getattr(torch, "float16")quant_config = BitsAndBytesConfig(load_in_4bit=True,bnb_4bit_quant_type="nf4",bnb_4bit_compute_dtype=compute_dtype,bnb_4bit_use_double_quant=False,
)

加载Llama 2模型

接下来,我们将从 Hugginface 加载标记器并设置padding_side为“正确”以修复 fp16 的问题

model = AutoModelForCausalLM.from_pretrained(base_model,quantization_config=quant_config,device_map={"": 0}
)
model.config.use_cache = False
model.config.pretraining_tp = 1

加载标记器

接下来,将从Hugginface加载标记器,并设置padding_side为“正确”,以修复fp16的问题。

tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"

PEFT参数

预训练语言模型 (PLM) 的传统微调需要更新模型的所有参数,这在计算方面成本高昂,并且需要大量的数据。

参数高效微调 (PEFT) 的运作方式是仅更新模型中影响力最大的一小部分参数,借此显著提升模型的效率。可以阅读 PEFT 官方文档来了解相关参数。

peft_params = LoraConfig(lora_alpha=16,lora_dropout=0.1,r=64,bias="none",task_type="CAUSAL_LM",
)

训练参数

以下是可用于优化训练过程的超参数列表:

  • output_dir:输出目录是存储模型预测和检查点的地方。
  • num_train_epochs:一个训练时期。
  • fp16/bf16:禁用 fp16/bf16 训练。
  • per_device_train_batch_size:每个 GPU 的训练批次大小。
  • per_device_eval_batch_size:用于评估的每个 GPU 的批次大小。
  • Gradient_accumulation_steps:这指的是更新过程中累积梯度所需的步数。
  • Gradient_checkpointing:启用梯度检查点。
  • max_grad_norm:梯度剪裁。
  • learning_rate:初始学习率。
  • weight_decay:权重衰减适用于除偏差/LayerNorm权重之外的所有层。
  • Optim:模型优化器(AdamW 优化器)。
  • lr_scheduler_type:学习率计划。
  • max_steps:训练步数。
  • warmup_ratio:线性预热的步骤比率。
  • group_by_length:这可以显著提高性能并加速训练过程。
  • save_steps:每 25 个更新步骤保存检查点。
  • logging_steps:每 25 个更新步骤记录一次。
training_params = TrainingArguments(output_dir="./results",num_train_epochs=1,per_device_train_batch_size=4,gradient_accumulation_steps=1,optim="paged_adamw_32bit",save_steps=25,logging_steps=25,learning_rate=2e-4,weight_decay=0.001,fp16=False,bf16=False,max_grad_norm=0.3,max_steps=-1,warmup_ratio=0.03,group_by_length=True,lr_scheduler_type="constant",report_to="tensorboard"
)

模型微调

监督微调 (SFT) 是强化学习(基于人类反馈)的关键步骤。HuggingFace 的 TRL 库提供了一个使用便捷的 API,仅需几行代码就能创建 SFT 模型,并在数据集上开展训练。它附带了一些工具,可用来通过强化学习训练语言模型,流程是先从监督微调起步,接着进行奖励建模,最后实施近端策略优化 (PPO)。

将为 SFT Trainer 提供模型、数据集、Lora 配置、标记器以及训练参数。

trainer = SFTTrainer(model=model,train_dataset=dataset,peft_config=peft_params,dataset_text_field="text",max_seq_length=None,tokenizer=tokenizer,args=training_params,packing=False,
)

将使用.train()新的数据集对 Llama 2 模型进行微调。该模型完成 1 个 epoch 需要一个半小时。

在这里插入图片描述

模型训练完成后,将保存模型采用器和分词器,也可以使用类似的 API 将模型上传到 Hugging Face。

trainer.model.save_pretrained(new_model)
trainer.tokenizer.save_pretrained(new_model)

在这里插入图片描述

评估

现在可以在 Tensorboard 的交互式会话中查看训练结果。

from tensorboard import notebook
log_dir = "results/runs"
notebook.start("--logdir {} --port 4000".format(log_dir))

在这里插入图片描述

为了测试我们微调的模型,将使用transformers文本生成管道并提出一些简单的问题,例如“列奥纳多达芬奇是谁?”。

logging.set_verbosity(logging.CRITICAL)prompt = "Who is Leonardo Da Vinci?"
pipe = pipeline(task="text-generation", model=model, tokenizer=tokenizer, max_length=200)
result = pipe(f"<s>[INST] {prompt} [/INST]")
print(result[0]['generated_text'])

输出:

正如我们所见,得到了惊人的结果。

<s>[INST] Who is Leonardo Da Vinci? [/INST] Leonardo da Vinci (1452-1519) was an Italian polymath, artist, inventor, and engineer.Da Vinci is widely considered one of the greatest painters of all time, and his works include the famous Mona Lisa. He was also an accomplished engineer, inventor, and anatomist, and his designs for machines and flight were centuries ahead of his time.Da Vinci was born in the town of Vinci, Italy, and he was the illegitimate son of a local notary. Despite his humble origins, he was able to study art and engineering in Florence, and he became a renowned artist and inventor.Da Vinci's work had a profound impact on the Renaissance, and his legacy continues to inspire artists, engineers, and inventors to this day. He

再问一个问题

prompt = "What is Datacamp Career track?"
result = pipe(f"<s>[INST] {prompt} [/INST]")
print(result[0]['generated_text'])

输出:

Guanaco 是一个高质量的数据集,过去曾用于微调最先进的 LLM。Hugging Face 上提供了完整的 Guanaco 数据集,它有潜力在各种自然语言任务上取得更优异的表现。

<s>[INST] What is Datacamp Career track? [/INST] DataCamp Career Track is a program that offers a comprehensive learning experience to help you build your skills and prepare for a career in data science.The program includes a range of courses, projects, and assessments that are designed to help you build your skills in data science. You will learn how to work with data, create visualizations, and build predictive models.In addition to the technical skills, you will also learn how to communicate your findings to stakeholders and how to work with a team to solve complex problems.The program is designed to be flexible, so you can learn at your own pace and on your own schedule. You will also have access to a community of learners and mentors who can provide support and guidance throughout the program.Overall, DataCamp Career Track is a great way to build your skills and prepare for a career in

这是Colab Notebook,其中包含代码和输出,可帮助您完成编码之旅。

结论

本教程提供了全面的指南,指导您如何使用 QLoRA、PEFT 和 SFT 等技术对 LLaMA 2 模型进行微调,以克服内存和计算能力的限制。通过利用 Hugging Face 库(例如transformers、accelerate、peft、trl和bitsandbytes),我们能够在消费级 GPU 上成功微调 7B 参数的 LLaMA 2 模型。

总的来说,本教程举例说明了最近的进展如何实现大型语言模型的民主化和可访问性,甚至允许业余爱好者利用有限的资源构建最先进的人工智能。

相关文章:

微调 LLaMA 2:定制大型语言模型的分步指南

微调 LLaMA 2&#xff1a;定制大型语言模型的分步指南 深入了解如何运用新技术在 Google Colab 平台上对 Llama-2 进行微调操作&#xff0c;从而有效克服内存与计算方面的限制&#xff0c;让开源大型语言模型变得更加易于获取和使用。自从 Meta 发布了 LLaMA 的首个版本后&…...

react-11使用vscode开发react相关扩展插件(相关的快捷生成)

1.快速搭建react组件模板 2.相关搭建命令 2.1 导入导出 前缀方法imp→import moduleName from moduleimn→import moduleimd→import { destructuredModule } from moduleime→import * as alias from moduleima→import { originalName as aliasName} from moduleexp→expo…...

人工智能数学基础(六):数理统计

数理统计是人工智能中数据处理和分析的核心工具&#xff0c;它通过收集、分析数据来推断总体特征和规律。本文将系统介绍数理统计的基本概念和方法&#xff0c;并结合 Python 实例&#xff0c;帮助读者更好地理解和应用这些知识。资源绑定附上完整资源供读者参考学习&#xff0…...

组网技术知识点

1.port-isloate enable命令用于实现两个接口之间的二层数据隔离&#xff0c;三层数据互通。 2.交换机最多支持4096个VLAN&#xff0c;编号为1-4094 3.display bfd session all&#xff1a;查看BFD会话状态是否UP 4.RJ45通过双绞线连接以太网&#xff1b; AUI端口&#xff1…...

常用电机类型及其特点对比

1. 直流电机 直流电机里边固定有环状永磁体&#xff0c;电流通过转子上的线圈产生安培力&#xff0c;当转子上的线圈与磁场平行时&#xff0c;再继续转受到的磁场方向将改变&#xff0c;因此此时转子末端的电刷跟转换片交替接触&#xff0c;从而线圈上的电流方向也改变&#x…...

SVTAV1源码-set_all_ref_frame_type

set_all_ref_frame_type函数的主要作用是为当前图像设置所有可能用到的参考帧类型&#xff0c;并将这些参考帧类型存储到一个数组中&#xff0c;同时记录总共有多少个参考帧类型&#xff0c;以下是该函数的各部分解释&#xff1a; 初始化和准备 MvReferenceFrame rf[2]; *tot_r…...

Can‘t create thread to handle bootstrap

MySQL在docker里面启动失败 关键性报错Cant create thread to handle bootstrap rootubuntu:/data# docker logs 6835ec900d8c 2025-04-30 23:29:4308:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.42-1.el9 started. 2025-04-30 23:29:4308:00 [Note] […...

用Power shell脚本批量发布rdl文件到SQL Server Reporting Service

本文用于介绍如何用Power shell脚本批量发布rdl文件到SQL Server Reporting Service. 用户可根据自己的需要创建类似Publish_All_SSRS.ps1的脚本。 目录 1. 目录结构 2. 创建Base_PublishSSRS.ps1 3. 创建Publish_All_SSRS.ps1 4.注意事项 1. 目录结构 目录结构&#xff…...

2025-03 机器人等级考试四级理论真题 4级

1 2025年蛇年春晚&#xff0c;节目《秧BOT》机器人舞蹈表演节目点燃了全国观众的热情&#xff0c;请问参加节目表演的机器人是由哪家公司研发&#xff1f;&#xff08; &#xff09; A.大疆 B.华为 C.优必选 D.宇树科技 【参考答…...

12.SpringDoc OpenAPI 功能介绍(用于生成API接口文档)

12.SpringDoc OpenAPI 功能介绍(用于生成API接口文档) SpringDoc OpenAPI 是一个基于 OpenAPI 3.0/3.1 规范的工具&#xff0c;用于为 Spring Boot 应用生成 API 文档。它是 springfox&#xff08;Swagger 2.x&#xff09;的现代替代方案&#xff0c;完全支持 Spring Boot 3.x…...

Java 实用时间工具类:DateUtils 与 DurationFormatUtils

前言 在 Java 项目中&#xff0c;处理日期时间相关的操作极为常见。Apache Commons Lang 提供了两个非常实用的时间工具类&#xff1a;DateUtils 和 DurationFormatUtils&#xff0c;它们分别负责简化日期处理和格式化时间间隔&#xff0c;帮助开发者更高效地进行时间操作。 一…...

Unity3D仿星露谷物语开发40之割草动画

1、目标 当Player选择Scythe后&#xff0c;鼠标悬浮在草上&#xff0c;会显示绿色光标。鼠标左击&#xff0c;会触发割草的动画。 2、优化Settings.cs脚本 添加以下两行代码&#xff1a; // Reaping&#xff08;收割&#xff09; public const int maxCollidersToTestPerRe…...

量化交易之数学与统计学基础2.4——线性代数与矩阵运算 | 矩阵分解

量化交易之数学与统计学基础2.4——线性代数与矩阵运算 | 矩阵分解 第二部分&#xff1a;线性代数与矩阵运算 第4节&#xff1a;矩阵分解&#xff1a;奇异值分解&#xff08;SVD&#xff09;在数据压缩和风险分解的应用 一、奇异值分解&#xff08;SVD&#xff09;基础&#xf…...

ES使用之查询方式

文章目录 ES中的数据查询返回字段含义track_total_hits 精准匹配(term)单值匹配多值匹配 全文检索(match)range查询高级查询布尔查询 ES中的数据查询 返回字段含义 track_total_hits track_total_hits是 Elasticsearch 中用于 ‌控制匹配文档总数统计行为‌ 的关键参数。就算…...

力扣-数组-41缺失的第一个正数

思路 关键有两点 原地哈希 把1-len的数分别映射到下标为0 - len-1的地方中 交换后&#xff0c;接着查看下标i被交换过来的数&#xff0c;直到他到了该到的位置或者超出范围 使用while&#xff0c;把不满足映射关系的点一直交换&#xff0c;直到下标指向的位置符合要求 代…...

Nginx — http、server、location模块下配置相同策略优先级问题

一、配置优先级简述 在 Nginx 中&#xff0c;http、server、location 模块下配置相同策略时是存在优先级的&#xff0c;一般遵循 “范围越小&#xff0c;优先级越高” 的原则&#xff0c;下面为你详细介绍&#xff1a; 1. 配置继承关系 http 块&#xff1a;作为全局配置块&…...

管家婆易指开单如何设置零售开单

一&#xff0c;零售设置 1&#xff0c;登录管理员账号-基本信息--职员信息-新建职员及其属于哪个门店。 2&#xff0c;系统维护-系统管理-用户配置-系统配置-切换为“触摸屏模式或者普通零售模式” 3&#xff0c;用户及权限设置-给该员工开通零售及开单等相关的权限 4&#xff…...

深入浅出循环神经网络(RNN):原理、应用与实战

1、引言 在深度学习领域&#xff0c;循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一种专门用于处理**序列数据**的神经网络架构。与传统的前馈神经网络不同&#xff0c;RNN 具有**记忆能力**&#xff0c;能够捕捉数据中的时间依赖性&#xff0c;广泛应…...

【Java】打印运行环境中某个类引用的jar版本路径

背景 正式环境出现jar版本不匹配问题&#xff0c;不知道正式环境用的哪个jar版本。通过一下可以打印出类调用的jar // 获取 POIFSFileSystem 类的加载器并打印其来源路径 ClassLoader classloaderPOIFS org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoade…...

【效率提升】Vibe Coding时代如何正确使用输入法:自定义短语实现Prompt快捷输入

AI时代的效率神器&#xff1a;用搜狗拼音自定义短语实现Prompt快捷输入 在日益依赖AI工具的今天&#xff0c;我们经常需要输入各种复杂的prompt来指导AI完成特定任务。有些同学完全忽视了这一层工作的意义&#xff0c;实际上不同质量的prompt对模型的表现影响是巨大的。&#…...

C# 类的基本概念(从类的内部访问成员和从类的外部访问成员)

本章内容&#xff1a; 类的概述 程序和类&#xff1a;一个简单的示例 声明类 类成员 创建变量和类的实例 为数据分配内存 实例成员 访问修饰符 从类的内部访问成员 从类的外部访问成员 综合应用 从类的内部访问成员 如前所述&#xff0c;类的成员仅用其他类成员的名称就可以访…...

端到端观测分析:从前端负载均衡到后端服务

前言 我们在做系统运维保障的时候&#xff0c;关注从前端负载均衡到后端服务的流量情况是很有必要的&#xff0c;可以了解每个后端服务实例接收的流量大小&#xff0c;这有助于确定资源分配是否合理&#xff0c;能够帮助找出后端服务中的性能瓶颈。同时&#xff0c;当系统出现…...

Axure疑难杂症:全局变量跨页面赋值、中继器交互(玩转全局变量)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:全局变量高级交互 主要内容:数据跨页面传递、赋值、中继器交互 应用场景:页面间值的传递、赋值 案例展示:…...

css 数字从0开始增加的动画效果

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在有些时候比如在做C端项目的时候&#xff0c;页面一般需要一些炫酷效果&#xff0c;比如数字会从小值自动加到数据返回的值 css 数字从0开始增加的动画效果 分析&#xff1a; 提示&#xff1a;这里填…...

【MongoDB篇】MongoDB的索引操作!

目录 引言第一节&#xff1a;天生的“索引小能手”——_id 索引 &#x1f194;第二节&#xff1a;自己动手&#xff0c;丰衣足食——创建索引 &#x1f511;&#x1f6e0;️第三节&#xff1a;索引的“类型”——因“材”施“索”&#xff01;&#x1f333;&#x1f511;第四节…...

写劳动节前的 跨系统 文件传输

功能说明&#xff1a; 协议隐身&#xff1a;流量伪装为HTTPS图片传输 动态混淆&#xff1a;每个数据包添加随机填充 军用级擦除&#xff1a;临时文件三次覆写清除 抗分析&#xff1a;随机传输时间间隔和端口跳跃 隐蔽通道&#xff1a;ALTSHIFTC触发隐藏控制台 网络架构建…...

腾讯元宝桌面客户端:基于Tauri的开源技术解析

2025年3月,腾讯元宝宣布上线电脑客户端版本,支持Windows和macOS系统。作为腾讯旗下的AI助手产品,腾讯元宝桌面端采用了Tauri而非传统的Electron作为其跨平台开发框架,这一技术选择体现了腾讯对应用性能、安全性和用户体验的重视。本文将依据腾讯元宝桌面客户端的用户规则中…...

重塑驾乘体验!哈曼Ready系列引爆「人车交互革命」

AI定义汽车趋势下&#xff0c;AI加速赋能整车辅助驾驶、智能座舱、智能底盘等各域。 以智能座舱为例&#xff0c;AI大模型的快速应用与迭代&#xff0c;推动智能座舱加速迈入“多模交互”阶段&#xff0c;融合视觉、听觉、触觉等感知技术&#xff0c;智能座舱向着终极形态演进…...

第二章-科学计算库NumPy

第二章-科学计算库NumPy Numpy 作为高性能科学计算和数据分析的基础包,是其他重要数据分析工具的基础, 掌握 NumPy 的功能及其用法, 将有助于后续其他数据分析工具的学习. 2.1 认识 NumPy 数组对象 NumPy 中最重要的一个特点就是其 N 维数组对象, 即 ndarray(别名 array) 对象…...

3.2goweb框架GORM

GORM 是 Go 语言中功能强大的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;支持 MySQL、PostgreSQL、SQLite、SQL Server 等主流数据库。以下是 GORM 的核心概念和用法详解&#xff1a; ​​一、基础入门​​ 1. 安装 go get -u gorm.io/gorm go get -u gorm.io…...

KUKA机器人不同的用户权限详细介绍

对于KUKA机器人&#xff0c;主菜单里有一个“用户组”的登录&#xff0c;不同的用户组对应不同的权限。 一、KUKA示教器正常开机后显示以下界面&#xff0c;对于8.5及以上的系统&#xff0c;增加了快捷登录用户组的符号 &#xff0c;直接点击即可打开。在 smartHMI 上&…...

AI对IT行业的重塑:挑战与机遇并存的技术革命

一、必要性&#xff1a;AI成为IT行业的基础设施 在云计算、大数据和物联网构成的数字生态中&#xff0c;AI技术已成为IT行业的"水电煤"。以微软Azure为例&#xff0c;其AI云服务支撑着全球超过85%的《财富》500强企业&#xff0c;通过机器学习模型自动优化服务器集群…...

利用IEEE异常机制优化Fortran浮点数计算

利用IEEE异常机制优化Fortran浮点数计算 在Fortran程序中&#xff0c;IEEE浮点异常机制可以帮助你检测和优化浮点数计算&#xff0c;提高数值稳定性和程序健壮性。以下是几种利用IEEE异常机制优化浮点数计算的方法&#xff1a; 1. 启用和检测IEEE异常 现代Fortran&#xff0…...

构建网页版IPFS去中心化网盘

前言&#xff1a;我把它命名为无限网盘 Unlimited network disks&#xff08;ULND&#xff09;&#xff0c;可以实现简单的去中心化存储&#xff0c;其实实现起来并不难&#xff0c;还是依靠强大的IPFS&#xff0c;跟着我一步一步做就可以了。 第一步&#xff1a;准备开发环境…...

【solidity基础】一文说清楚合约函数的大小事

在 Solidity 里,函数是合约的关键构成部分,用于执行特定任务或操作的代码块,可以包含逻辑、访问状态变量、进行计算,并且可以接受参数和返回值。 但是solidity 的函数与其他语言不太一样,经常会有同学搞混,这里开一篇文章完整介绍一下 solidity 函数的用法。 1. 函数定…...

用Python构建自动驾驶传感器融合算法:从理论到实践

用Python构建自动驾驶传感器融合算法:从理论到实践 随着自动驾驶技术的飞速发展,传感器在自动驾驶系统中的作用愈发重要。传感器不仅是车辆感知外部环境的“眼睛”,它们提供的信息也是自动驾驶决策系统的基础。然而,单一传感器的感知能力是有限的。为了提升自动驾驶系统的…...

PLC与工业电脑:有什么区别?

随着工业部门的快速发展&#xff0c;自动化已经从奢侈品转变为绝对必需品。世界各地的工业越来越多地采用工业自动化来提高效率、提高精度并最大限度地减少停机时间。这场自动化革命的核心是两项关键技术&#xff1a;可编程逻辑控制器&#xff08;PLC&#xff09;和电脑&#x…...

机器学习:在虚拟环境中使用 Jupyter Lab

机器学习&#xff1a;在虚拟环境中使用 Jupyter Lab 第一步&#xff1a;激活虚拟环境 打开终端&#xff08;CMD/PowerShell&#xff09;并执行&#xff1a; $cmd #激活虚拟环境 $conda activate D:\conda_envs\mll_env 激活后&#xff0c;终端提示符前会显示环境名称&…...

Arduino项目实战与编程技术详解

一、智能避障小车:超声波传感器与PWM电机控制 1.1 硬件需求与工作原理 智能避障小车的核心在于超声波传感器与电机驱动模块的协同工作。超声波传感器(HC-SR04)通过发射高频声波并接收回波来测量距离,而L298N电机驱动模块则负责控制两个直流电机的转向与速度。 1.1.1 超声…...

AI数字人:人类身份与意识的终极思考(10/10)

文章摘要&#xff1a;AI数字人技术正在引发从"像素复刻"到"意识投射"的范式革命&#xff0c;多模态交互、神经辐射场等技术突破推动数字人从工具属性迈向虚拟主体。其发展伴随身份认同危机、伦理困境&#xff0c;促使人类重新思考自我认知与"人之为人…...

【单例模式】简介

目录 概念理解使用场景优缺点实现方式 概念理解 单例模式要保证一个类在整个系统运行期间&#xff0c;无论创建多少次该类的对象&#xff0c;始终只会有一个实例存在。就像操作系统中的任务管理器&#xff0c;无论何时何地调用它&#xff0c;都是同一个任务管理器在工作&#…...

安凯微以创新之芯,赋能万物智能互联新时代

在全球半导体产业步入深度调整期的当下&#xff0c;安凯微用一份“技术浓度”远超“财务数字”的年报&#xff0c;向市场传递出其作为物联网智能硬件核心SoC芯片领军者的战略定力。面对行业短期波动&#xff0c;公司选择以技术纵深突破与生态价值重构为锚点&#xff0c;在逆势中…...

TIME_WAIT状态+UDP概念及模拟实现服务器和客户端收发数据

目录 一、TIME_WAIT状态存在的原因 二、TIME_WAIT状态存在的意义 三、TIME_WAIT状态的作用 四、UDP的基本概念 4.1 概念 4.2 特点 五、模拟实现UDP服务器和客户端收发数据 5.1 服务器udpser 5.2 客户端udpcil 一、TIME_WAIT状态存在的原因 1.可靠的终止TCP连接。 2.…...

高并发内存池(五):性能测试与性能优化

前言 在前几期的实现中&#xff0c;我们完成了tcmalloc基础的内存管理功能&#xff0c;但还存在两个关键问题&#xff1a; 未处理超过256KB的大内存申请。 前期测试覆盖不足&#xff0c;导致多线程场景下隐藏了一些bug。 本文将修复这些问题&#xff0c;并实现三个目标&…...

景联文科技牵头起草的《信息技术 可扩展的生物特征识别数据交换格式 第4部分:指纹图像数据》国家标准正式发布

2025年3月28日&#xff0c;由景联文科技作为第一起草单位主导编制的国家标准GB/T 45284.4-2025 《信息技术 可扩展的生物特征识别数据交换格式 第4部分&#xff1a;指纹图像数据》正式获批发布&#xff0c;将于2025年10月1日开始实施。该标准的制定标志着我国生物特征识别领域标…...

完美解决 mobile-ffmpeg Not overwriting - exiting

在使用ffmpeg库 &#xff0c;有pcm转换到 aac的过程中报错 mobile-ffmpeg Not overwriting - exiting终于在网上翻到&#xff0c;在output 输出文件的地方加 -y, 重复覆盖的意思&#xff0c;完美解决。...

4:QT联合HALCON编程—机器人二次程序抓取开发(九点标定)

判断文件是否存在 //判断文件在不在 int HandEyeCalib::AnsysFileExists(QString FileAddr) {QFile File1(FileAddr);if(!File1.exists()){QMessageBox::warning(this,QString::fromLocal8Bit("提示"),FileAddrQString::fromLocal8Bit("文件不存在"));retu…...

C语言之操作符

目录 1. 操作符的分类 2. 移位操作符 2.1 左移操作符 << 2.2 右移操作符 >> 3. 位操作符 3.1 按位与 & 3.2 按位或 | 3.3 按位异或 ^ 3.4 按位取反 ~ 3.5 例题 3.5.1 按位异或 ^ 拓展公式 3.5.2 不能创建临时变量&#xff08;第三个变量&#xff…...

【优选算法 | 前缀和】前缀和算法:高效解决区间求和问题的关键

算法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;双指针滑动窗口二分查找 在本篇文章中&#xff0c;我们将深入解析前缀和算法的原理。从基础概念到实际应用&#xff0c;带你了解如何通过前缀和高效解决数组求和、区间查询等问题。无论你是刚接触算法的新手&am…...

『深夜_MySQL』详解数据库 探索数据库是如何存储的

1. 数据库基础 1.1 什么是数据库 存储数据用文件就可以了&#xff0c;那为什么还要弄个数据库&#xff1f; 一般的文件缺失提供了数据的存储功能&#xff0c;但是文件并没有提供非常好的数据管理能力&#xff08;用户角度&#xff0c;内容方面&#xff09; 文件保存数据有以…...