Model 复现系列(一)OpenVLA
这个系列用来记录一些开源模型在本地部署或测试时遇到的一些坑以及解决方案。
系列第一篇文章给了 OpenVLA
,该模型是具身智能与VLA领域的必读模型之一,虽然现在有很多模型号称超越了它,但作为行业的基石仍然有非常高的地位。
- 项目链接:https://github.com/openvla/openvla
1. 拉取仓库
$ git clone git@github.com:openvla/openvla.git
2. 创建conda虚拟环境
$ conda create -n openvla python=3.10 -y
$ conda activate openvla
$ conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia -y$ cd openvla
$ pip install -e .
如果你需要进行训练或者微调还需要安装 Flash Attention 2
:
【Note】:Flash Attention 2
是需要硬件支持的,必须是Nvidia 30系列及其以上的显卡才可以;
$ pip install packaging ninja
$ ninja --version; echo $? # Verify Ninja --> should return exit code "0"
$ pip install "flash-attn==2.5.5" --no-build-isolation
3. 轻量接口测试
在官方仓库中提供了一份轻量级接口测试的脚本,需要首先安装以下依赖,如果你的 torch
和torchvision
版本已经达到要求了就可以跳过这两个包:
timm==0.9.10
tokenizers==0.19.1
torch>=2.2.0
torchvision>=0.16.0
transformers==4.40.1
想要运行这个脚本需要提前准备一下 huggingface 上的 openvla/openvla-7b
模型,建议离线下载好后再进行后续步骤:
- huggingface 模型仓库:https://huggingface.co/openvla/openvla-7b;
- 离线下载模型教程:smolagents学习笔记系列(二)Agents - Guided tour 中
Local Transformers Model
部分;
或者使用 git lfs 拉取仓库,但有时候容易中断导致拉取失败,安装 git lfs:
(openvla) $ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
(openvla) $ sudo apt-get install git-lfs
(openvla) $ git lfs install
成功安装后使用下面的命令直接拉取:
(openvla) $ git lfs clong git@hf.co:openvla/openvla-7b
假设下载好后的文件结构如下:
(openvla) $ tree -L 2
.
├── models
│ └── openvla-7b # 存放模型的位置,大约 15 GB
├── openvla
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── experiments
│ ├── openvla.egg-info
│ ├── prismatic
│ ├── pyproject.toml
│ ├── requirements-min.txt
│ ├── scripts
│ └── vla-scripts
原始 README 文件中有一些关于机器人动作、图像获取的代码没有填充进去,但可以用这个脚本测试一下上面的准备工作是否做到位,创建一个文件 light-demo.py
并编写以下内容:
from transformers import AutoModelForVision2Seq, AutoProcessor
from PIL import Image
import torch
import numpy as np# 加载离线模型和处理器
model_path = '../models/openvla-7b' # 离线模型文件夹路径processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
vla = AutoModelForVision2Seq.from_pretrained(model_path,attn_implementation="flash_attention_2",torch_dtype=torch.bfloat16,low_cpu_mem_usage=True,trust_remote_code=True
).to("cuda:0")print('-' * 50)# 直接使用噪声图像作为模型的输入
noise = torch.randn((3, 224, 224), dtype=torch.float32) # 假设输入尺寸为 224x224
noise_image = Image.fromarray((noise.numpy().transpose(1, 2, 0) * 255).astype(np.uint8))# 格式化提示语
prompt = "In: What action should the robot take to {<INSTRUCTION>}?\nOut:"# 预测动作
inputs = processor(prompt, noise_image).to("cuda:0", dtype=torch.bfloat16)
action = vla.predict_action(**inputs, unnorm_key="bridge_orig", do_sample=False)# 打印输出
print("Predicted Action:", action)
运行结果如下所示就说明前期的准备工作完成了:
(openvla) $ python light-demo.pyLoading checkpoint shards: 0%| | 0/3 [00:00<?, ?it/s]
--------------------------------------------------
Predicted Action: [ 0.00180428 -0.00657556 -0.00621723 0.01135582 -0.00212033 -0.0065139 0.99607843]
4 Fine-Tuning via LoRA
官方仓库在 Fine-Tuning via LoRA 部分直接给了完整 124 GB
数据的微调方式,但通常情况下我们是需要筛选出适合自身任务的 Task 然后再去微调,这样就犯不着将上面完整的数据集下载下来,我这里给出一个方法用于下载该数据集中一部分内容然后进行微调。
4.1 下载数据集
官方仓库中给出的 BridgeData V2
链接 打开后只能下载完整的 zip数据包,但这个数据集本质上是UC Berkeley 的,因此可以通过他们原始链接下载散装数据集。
- 官方仓库给出的 124 GB 数据集: https://rail-berkeley.github.io/bridgedata/;
- 散装数据集:https://rail.eecs.berkeley.edu/datasets/bridge_release/data/tfds/bridge_dataset/1.0.0/;
打开散装链接后可以看到下面的界面:
网页文件最下方可以以下内容:
这里根据你的需求选择下载 dataset_info.json
、一个训练集、一个验证集,我这里以下面两个数据包为例:
- bridge_dataset-train.tfrecord-00000-of-01024 训练集 130MB;
- bridge_dataset-val.tfrecord-00000-of-00128 验证集 133MB;
- dataset_info.json 数据集描述文件 17KB;
【Note】:如果你想要下载更多的包也可以,但需要在后面修改 dataset_info.json
文件时有些差异。
下载好数据后需要创建两个层级文件夹bridge_orig
和1.0.0
存放结构如下:
【Note】:你也可以按照自己的意愿来构建文件目录,但这样的话就需要你修改更多的源码,这里提供的是修改地方最少的方案。
(openvla) $ tree -L 2
|-- bridge_orig # 创建的文件层级一
| -- 1.0.0 # 创建的文件层级二
| |-- action_proprio_stats_7d6a416829d818b733e7342f225f3c522a8265a5224e0175f2ab28e26a932ff1.json
| |-- bridge_dataset-train.tfrecord-00000-of-00001 # 修改后的训练集名
| |-- bridge_dataset-val.tfrecord-00000-of-00001 # 修改后的验证集名
| |-- dataset_info.json
| `-- features.json
...
4.2 修改数据描述文件 dataset_info.json
这一步比较麻烦,因为需要找到 splits
字段中 shardLengths
与你数据序号对应的索引并保留,我写了一个脚本用来自动生成这部分内容,脚本写的比较简陋凑合着用吧:
import re
import os, json, gc
import argparse
import os
import sysdef get_all_files(directory):"""递归获取目录下所有文件路径"""file_list = []for root, dirs, files in os.walk(directory):for file in files:full_path = os.path.join(root, file)file_list.append(full_path)return file_listdef json_comment_parser(file_path):"""读取含注释的 JSON 文件并转换为字典支持处理以下注释类型:- 单行注释 // comment- 块注释 /* comment */"""# 定义注释正则表达式comment_pattern = r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"'with open(file_path, 'r', encoding='utf-8') as f:content = ''.join(f.readlines())# 分步处理注释def replace_comment(match):s = match.group(0)return '' if s.startswith(('//', '/*')) else s# 使用正则表达式过滤注释cleaned = re.sub(comment_pattern, replace_comment, content, flags=re.MULTILINE|re.DOTALL)# 删除多余逗号(JSON 严格模式校验)cleaned = re.sub(r',\s*(?=[}\]])', '', cleaned)return json.loads(cleaned)def extract_tfrecord_number(filename):"""从文件名中提取 tfrecord 编号:param filename: 符合 bridge_dataset-train.tfrecord-00000-of-01024 格式的字符串:return: 提取的整型数字 (如 00000 → 0)"""pattern = r"tfrecord-(\d+)-of" # 捕获 tfrecord- 和 -of 之间的数字match = re.search(pattern, filename)if not match:raise ValueError(f"文件名格式不符合要求: {filename}")return int(match.group(1)) # 自动去除前导零def extract_aviable_indexs(original_list, indexs_list):"""从list中保留有效的index元素Args:origin_list (list): _description_indexs_list (list): _description_"""sorted_indices = sorted(indexs_list)original_list[:] = [original_list[i] for i in sorted_indices if 0 <= i < len(original_list)and i not in sorted_indices[:sorted_indices.index(i)] # 去重]return original_listdef main():parser = argparse.ArgumentParser(description="处理命令行参数示例")parser.add_argument('--path', type=str, help='数据集文件夹路径')parser.add_argument('--info_file', type=str, help='dataset_info.json 文件路径')args = parser.parse_args()# 验证路径有效性if not os.path.exists(args.path):print(f"错误:路径 '{args.path}' 不存在", file=sys.stderr)sys.exit(1)if not os.path.isdir(args.path):print(f"错误:'{args.path}' 不是目录", file=sys.stderr)sys.exit(1)if not os.path.exists(args.info_file):print(f"错误:'{args.info_file}' 配置文件不存在", file=sys.stderr)sys.exit(1)# 获取并输出文件列表train_file_list = [] # 训练集文件列表train_file_indexs = []val_file_list = [] # 测试集文件列表val_file_indexs = []try:files = get_all_files(args.path)for idx, file in enumerate(files, 1):if 'train' in file:train_file_list.append(file)elif 'val' in file:val_file_list.append(file)else:continueexcept Exception as e:print(f"扫描过程中发生错误:{str(e)}", file=sys.stderr)gc.collect()sys.exit(1)# 打印训练集与验证集print(f"训练集文件共 [{len(train_file_list)}], 如下:")for i in range(len(train_file_list)):filename = train_file_list[i]train_file_indexs.append(extract_tfrecord_number(filename))print(f"\t[{i+1}/{len(train_file_list)}]: {filename} | index={extract_tfrecord_number(filename)}")print(f"验证集文件共 [{len(val_file_list)}], 如下:")for i in range(len(val_file_list)):filename = val_file_list[i]val_file_indexs.append(extract_tfrecord_number(filename))print(f"\t[{i+1}/{len(val_file_list)}]: {filename} | index={extract_tfrecord_number(filename)}")# 读取 dataset_info.json 配置文件try:dataset_info = json_comment_parser(args.info_file)print(f"配置文件 {args.info_file} 加载成功")except Exception as e:print(f"错误:'{args.info_file}' 配置文件不加载失败", file=sys.stderr)sys.exit(1)extract_aviable_indexs(dataset_info["splits"][0]["shardLengths"], train_file_indexs)extract_aviable_indexs(dataset_info["splits"][1]["shardLengths"], val_file_indexs)# 写文件try:save_file_name = "./dataset_info_new.json"with open(save_file_name, 'w', encoding='utf-8') as f:json.dump(dataset_info, f, ensure_ascii=False, indent=4) # print(f"文件保存成功 {save_file_name}")except Exception as e:print(f"写本地文件失败 {e}")if __name__ == "__main__":main()
使用下面的命令运行脚本:
(openvla) $ python demo.py --path=./bridge_orig/1.0.0 --info=./bridge_orig/1.0.0/dataset_info.json训练集文件共 [1], 如下:[1/1]: ./bridge_orig/1.0.0/bridge_dataset-train.tfrecord-00000-of-01024 | index=0
验证集文件共 [1], 如下:[1/1]: ./bridge_orig/1.0.0/bridge_dataset-val.tfrecord-00000-of-00128 | index=0
配置文件 ./bridge_orig/1.0.0/dataset_info.json 加载成功
文件保存成功 ./dataset_info_new.json
在确认生成的文件 split
字段中数量对得上后将其替换掉 ./bridge_orig/1.0.0/dataset_info.json
文件并修改文件名为 dataset_info.json
。
4.3 执行微调命令
在修改对微调命令前首先确认当前文件结构如下所示:
(openvla) $ tree -L 2
.
|-- datasets # 保存数据的根文件夹
| |-- bridge_orig
|-- models # 保存模型的文件夹
| |-- openvla-7b
|-- openvla
| |-- LICENSE
| |-- Makefile
| |-- README.md
| |-- experiments
| |-- light-demo.ipynb
| |-- openvla.egg-info
| |-- prismatic
| |-- pyproject.toml
| |-- requirements-min.txt
| |-- scripts
| |-- vla-scripts
...
进行修改以适配
(openvla) $ cd openvla
(openvla) $ torchrun --standalone --nnodes 1 --nproc-per-node 2 vla-scripts/finetune.py \--vla_path "../models/openvla-7b" \--data_root_dir "../datasets" \--dataset_name "bridge_orig" \--run_root_dir "../models/fineture-checkpoint" \--adapter_tmp_dir "../models/tempory_save" \--lora_rank 32 \--batch_size 1 \--grad_accumulation_steps 1 \--learning_rate 5e-4 \--image_aug False \--shuffle_buffer_size 1 \--wandb_project "ft_vla" \--wandb_entity "ft_vla_en" \--save_steps 5
运行结果如下则表示正常:
5. Fully Fine-Tuning OpenVLA
如果你不想以LoRA的方式对模型进行微调,也可以以全量的方式微调。还是需要对官方的微调指令进行修改。为了全量方式微调,需要使用不同的checkpoint。
- openvla/openvla-7b-prismatic:https://huggingface.co/openvla/openvla-7b-prismatic
【Note】:模型太大了,等我把模型上传到服务器后再来补全。
相关文章:
Model 复现系列(一)OpenVLA
这个系列用来记录一些开源模型在本地部署或测试时遇到的一些坑以及解决方案。 系列第一篇文章给了 OpenVLA,该模型是具身智能与VLA领域的必读模型之一,虽然现在有很多模型号称超越了它,但作为行业的基石仍然有非常高的地位。 项目链接&…...
Web3:Ubuntu系统 使用Docker-compose方式部署blockscout浏览器配置版本-v5.2.3-beta+charts图表
最近同事告诉我说要重新部署一套blockscout浏览器,我一想,之前有部署流程文档-《Web3:使用Docker-compose方式部署blockscout浏览器+charts图表》,这不手拿把掐吗。 但还是出现了一些问题,之前服务器系统是centos,现在是Ubuntu系统,而且之前docker镜像也没那么难获取,于…...
ECharts-柱状图
柱状图样式设置 Ⅰ、柱条样式 柱条的样式可以通过 series.itemStyle 设置,包括: 柱条的颜色(color);柱条的描边颜色(borderColor)、宽度(borderWidth)、样式ÿ…...
理解UDP协议
在计算机网络中,UDP(用户数据报协议)常被称为“轻量级”传输协议。它不像TCP那样追求可靠传输,而是以简洁高效的设计满足特定场景的需求。本文将带你深入UDP的核心特性、技术细节及其实际应用。 UDP的协议设计 UDP协议的核心…...
Web 技术与 Nginx 网站环境部署
这里写目录标题 一. Web基础域名和DNS域名的概念域名的结构域名结构类型 Hosts文件Hosts文件的作用修改Hosts文件 DNS域名注册 网页与HTML网页概述HTML概述HTML基本标签HTML语法规则HTML文件结构 网站和主页Web1.0 与 Web2.0 静态网页与动态网页静态网页动态网页动态网页语言 H…...
分布式天线系统 (DAS, Distributed Antenna System)
1. 概述 分布式天线系统(DAS) 是一种通过多个分散的天线节点来增强无线信号覆盖和容量的网络架构。它主要用于解决大型建筑、地下设施、体育场馆等场景中的信号盲区或容量不足问题。 2. 主要组成 DAS系统通常包括以下关键组件: 信号源&…...
hexo博客搭建使用
搭建 Hexo 演示主题为:Keep 使用 文章 创建新文章 ➜ zymore-blog-keep git:(main) ✗ hexo new "告别H5嵌入!uniApp小程序文件下载与分享完整解决方案" INFO Validating config INFO Created: ~/Desktop/HelloWorld/zymore-blog-k…...
Git上传项目到GitHub
Git上传项目到GitHub 下载Git客户端配置Git设置GitHub上传本地项目到Github 下载Git客户端 网址:Git Windows客户端。选择Standalone Installer(单独安装程序),并点击64bit Git for Windows Setup(64位Git for Windows安装程序)进行下载。然后一路默认选…...
隨筆20250519 Async+ThreadPoolTaskExecutor⾃定义线程池进阶实战
1.ThreadPoolTaskExecutor线程池 有哪⼏个重要参数, 什么时候会创建线程 1.核心綫程數 查看核心綫程數目是否已經滿,未滿 創建一條綫程 執行任務,已滿負責執行第二部 2.阻塞隊列 查看阻塞隊列是否已經滿,未滿將任務加入阻塞隊列&…...
YoloV8改进策略:卷积篇|风车卷积|即插即用
文章目录 论文信息论文翻译摘要引言相关研究红外搜索与跟踪检测和分割网络红外搜索与跟踪数据集的损失函数红外搜索与跟踪数据集方法风车形卷积(PConv)基于尺度的动态损失SIRST - UAVB数据集实验实验设置与其他方法的比较多模型上的消融实验结论致谢代码改进方法测试结果总结…...
HGDB中如何为表增加自增主键
文章目录 环境文档用途详细信息 环境 系统平台:N/A 版本:4.5 文档用途 本文主要介绍在瀚高数据库中如何为表增加新主键,便于业务改造和查询。 实现原理:通过添加序列自增字段和唯一约束实现。 详细信息 可以根据数字类型来设…...
升级mysql (rpm安装)
#备份以防万一 备份配置文件: /etc/my.cnf.d/server.cnf 备份数据: mysqldump -u your_username -p --all-databases > all_databases.sql #停止 systemctl stop mysql #卸载旧版 yum remove mariadb #安装新版( 通过yum安装报错,死活安装不了,只能rpm安装) 下载地址…...
ALTER COLLATION使用场景
ALTER COLLATION 是 SQL 中用于修改字符集排序规则(Collation)的操作。排序规则定义了字符数据的比较和排序方式,包括字母顺序、大小写敏感性、重音符号处理等。ALTER COLLATION 的使用场景主要集中在需要调整数据库或表的字符集排序规则时。…...
Python实例题:Python 实现简易 Shell
目录 Python实例题 题目 代码实现 功能说明 基本命令执行: 内置命令: 环境变量: 管道: 重定向: 信号处理: 使用方法 注意事项 Python实例题 题目 Python 实现简易 Shell 代码实现 import o…...
大中型病险水库大坝除险加固监测实施方案
一、方案背景 我国80%以上的水库修建于20世纪50至70年代,经过几十年的运行,大部分水库已超过设计使用年限,功能老化现象较严重,出现病险具有一定的客观性。受超标洪水、强烈地震等自然灾害影响,水库一旦遭遇突发暴雨洪…...
[长城杯 2024]anote
题解前的小吐槽:终于还是狠下心复现了一下长城杯的这个赛题,第一次觉得汇编比函数看的方便,不过这题好写是好写的[心虚](还是看了一些大佬的wp) [长城杯 2024]anote(堆溢出C) [长城杯 2024]anote 1.准备 motalymotaly-VMware-Virtual-Platform:~$ fi…...
verify_ssl 与 Token 验证的区别详解
verify_ssl 与 Token 验证的区别详解 在开发或调用 API 接口时,我们经常会遇到两个看似相关但实际上作用完全不同的安全参数: 传输层的 verify_ssl应用层的 Authorization(最常见是 Bearer Token) 虽然它们都与“安全”有关&am…...
Python集合
一、Python集合概述 Python集合(set)是一种无序、可变且不包含重复元素的数据结构。集合在Python中通过哈希表实现,这使得它在成员检测和去重操作中具有极高的效率。 集合与列表、元组的主要区别: 无序性:元素没有固定顺序 唯一性&#x…...
容器化-K8s-镜像仓库使用和应用
一、K8s 镜像仓库使用 1、启动镜像仓库 cd/usr/local/harbor ./install.sh2、配置镜像仓库地址 在 master 节点和 slaver 节点上,需要配置 Docker 的镜像仓库地址,以便能够访问本地的镜像仓库。编辑 Docker 的配置文件 vi /etc/docker/daemon.json(如果不存在则创建),添…...
解决报错 Flask-SQLAlchemy TypeError: ‘float‘ object is not callable
Flask-SQLAlchemy TypeError: ‘float’ object is not callable Flask-SQLAlchemy 与 Python 版本兼容性问题解决方案 日期:2025 年 5 月 19 日 分类:后端开发、Python、Flask 标签:Flask-SQLAlchemy, Python 版本兼容,错误修复…...
k8s节点维护的细节
k8s节点维护的细节 Kubernetes(k8s)节点维护是保障集群稳定运行的重要工作,涉及节点升级、故障排查、资源优化等多个方面。维护步骤和操作命令: 一、节点维护前的准备工作 1. 查看集群状态 kubectl get nodes # 查看所有节点状…...
基于STM32的光照测量报警Proteus仿真设计+程序设计+设计报告+讲解视频
基于STM32的光照测量报警仿真设计 1.**主要功能****2.仿真设计****3.程序设计****4.设计报告****5.下载链接** 基于STM32的光照测量报警仿真设计 (Proteus仿真程序设计设计报告讲解视频) 仿真图Proteus 8.9 程序编译器:keil 5 编程语言:C语…...
Docker 运维管理
Docker 运维管理 一、Swarm集群管理1.1 Swarm的核心概念1.1.1 集群1.1.2 节点1.1.3 服务和任务1.1.4 负载均衡 1.2 Swarm安装准备工作创建集群添加工作节点到集群发布服务到集群扩展一个或多个服务从集群中删除服务ssh免密登录 二、Docker Compose与 Swarm 一起使用 Compose 三…...
五分钟本地部署大模型
前提:个人PC机,配置:CPU:i5-13600KF 显卡:RTX3080 内存:32GB 1.安装ollama 访问https://ollama.com/,点击下载,完成后傻瓜式安装即可; 2.修改环境变量 默认大模型下载在C盘&…...
RSA(公钥加密算法)
RSA(Rivest-Shamir-Adleman)是一种常见的公钥加密算法,广泛应用于安全通信中。它是由三位计算机科学家Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出的,是一种基于数论问题的加密算法。 一、RSA的基本原理 RSA是基于大数…...
Go语言测试用例的执行与分析
在软件开发过程中,测试用例是确保代码质量的关键环节。Go语言作为一种现代的编程语言,它内置了强大的测试框架,可以帮助开发者轻松编写和执行测试用例。本文将介绍如何在 Go 语言中编写、执行测试用例,并对测试结果进行分析。 ## …...
动态规划-LCR 089.打家劫舍-力扣(LeetCode)
一、题目解析 结合示例1,我们能得知对于小偷而言不能连续偷相连的房间,且需要保证偷窃的金额最高。 二、算法解析 1.状态表示 我们想知道到最后一个房子时所偷窃的最高金额,所以dp[i]表示在i位置时,所偷到的最大价值。 但我们…...
leetcode hot100:解题思路大全
因为某大厂的算法没有撕出来,怒而整理该贴。只有少数题目有AC代码,大部分只会有思路或者伪代码。 技巧 只出现一次的数字 题目 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出…...
2022年下半年信息系统项目管理师——综合知识真题及答案(4)
2022年下半年信息系统项目管理师 ——综合知识真题及答案(4) 零、时光宝盒 (https://blog.csdn.net/weixin_69553582 逆境清醒) 双向奔赴的善意 网上看到的视频。 家里开包子店的男孩冒雨放学,路口的交警叔叔担心孩…...
大语言模型(LLM)本身是无状态的,怎么固化记忆
大语言模型(LLM)本身是无状态的,无法直接“记住”历史对话或用户特定信息 大语言模型(LLM)本身是无状态的,无法直接“记住”历史对话或用户特定信息,但可以通过架构改进、外部记忆整合、训练方法优化等方案实现上下文记忆能力。 一、模型内部记忆增强:让LLM“记住”…...
ISO 26262-5 硬件详细设计
7 Hardware detailed design 硬件详细设计个人理解包含各种理论计算和分析 为了避免常见的设计缺陷, 应运用相关的经验总结。 在硬件详细设计时, 应考虑安全相关硬件元器件失效的非功能性原因, 如果适用, 可包括以下的影响因素&…...
C# NX二次开发-求体、面的最小包容圆柱
NX自带ufun函数里有求体、面的最小包容方块。(UF_MODL_ask_bounding_box、UF_MODL_ask_bounding_box_aligned、UF_MODL_ask_bounding_box_aligned),但没有求最小包容圆柱。但有很多时候需要求最小包容圆柱。比如零件开圆棒料。这时需要通过一些方法来计算出最小包容圆柱。 …...
vue2.0 组件之间的数据共享
个人简介 👨💻个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…...
11.4/Q1,GBD数据库最新文章解读
文章题目:Global, regional, and national burden of neglected tropical diseases and malaria in the general population, 1990-2021: Systematic analysis of the global burden of disease study 2021 DOI:10.1016/j.jare.2025.04.004 中文标题&…...
【愚公系列】《Manus极简入门》048-自然探险之旅:“户外活动规划师”
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
生命科学温控物流:现状、驱动因素与发展趋势深度洞察
在生命科学产业蓬勃发展的当下,生命科学温控物流作为保障药品、疫苗等温度敏感产品安全运输的关键环节,正受到越来越多的关注。根据QYResearch报告出版商调研统计,2031年全球生命科学温控物流市场销售额预计将达到3563.3亿元,年复…...
2025-2030年制造业数字化转型发展趋势展望
随着科技的飞速发展,数字化转型已成为制造业提升竞争力、实现高质量发展的核心路径。从2025年到2030年,这一趋势将进一步深化,新技术、新模式和新生态将为制造业注入强劲动力。作为小编,今天带大家一起来看看未来五年制造业数字化…...
OSD原理以及模块的讲解
一.原理讲解 1.OSD的概念: OSD(on-screen-display)中文名称是屏幕菜单调节显示方式,它的作用是对屏幕显示器做各种工作指标,包括:色彩、几何图形等进行调整,从而使得整个显示器得到最佳的状。 最常见的OSD调试就是在…...
SQL注入——Sqlmap工具使用
一、Sqlmap介绍 Sqlmap 是一个使用python语言开发的开源的渗透测试工具,可以用来进行自动化检测,利用 SQL 注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,…...
如何有效提高海外社媒矩阵曝光率,避免封号风险?
在全球社交媒体营销的过程中,海外矩阵社媒的运营已经成为一个不可或缺的策略。通过建立多个社媒账号,可以有效地扩展市场覆盖、提高品牌曝光率,但与此同时,账号之间的关联问题也需要引起足够重视。过度的关联可能导致社媒平台对账…...
B树与B+树全面解析
B树与B树全面解析 前言一、B 树的基本概念与结构特性1.1 B 树的定义1.2 B 树的结构特性1.3 B 树的节点结构示例 二、B 树的基本操作2.1 查找操作2.2 插入操作2.3 删除操作 三、B 树的基本概念与结构特性3.1 B 树的定义3.2 B 树的结构特性3.3 B 树的节点结构示例 四、B 树与…...
代码随想录60期day41
完全背包 #include<iostream> #include<vector>int main() {int n,bagWeight;int w,v;cin>>n>>bagWeight;vector<int>weight(n);vector<int>value(n);for(int i 0;i <n;i){cin>>weight[i]>>value[i];}vector<vecotr&l…...
语言幻觉测试用例及相关策略总结
文章目录 语言幻觉测试用例及相关策略总结如何判断内容是否存在语言幻觉? 一、语言幻觉测试用例类型1.1 事实性错误测试用例 1:时效性强的事实用例 2:跨领域常识用例 3:动态变化的规则 **1.2 逻辑矛盾测试**用例 1:同一…...
云原生攻防1(基础介绍)
什么是云原生 云原生是一套技术体系和方法论。 云:表示应用程序位于云中 原生:表示应用程序从设计之初就考虑到云的环境,原生为云而设计,在云上以最佳状态运行。 CNCF(Cloud Native Compute Foundation) 是 Linux 基金会旗下的一个组织,主要作用是在推动以容器为中心的…...
云原生环境下的事件驱动架构:理念、优势与落地实践
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:从服务调用到事件流动的转变 随着云原生技术的兴起,软件架构正经历一场深刻变革。传统以请求响应为主的服务通信方式,在高度动态、分布式的云原生环境下暴露出诸多挑战:强同步耦合、高延迟链路…...
InternLM 论文分类微调实践(XTuner 版)
1.环境安装 我创建开发机选择镜像为Cuda12.2-conda,选择GPU为100%A100的资源配置 Conda 管理环境 conda create -n xtuner_101 python3.10 -y conda activate xtuner_101 pip install torch2.4.0cu121 torchvision torchaudio --extra-index-url https://downloa…...
kotlin Flow的技术范畴
Flow 是 Kotlin 中的技术,准确地说,它是 Kotlin 协程(Kotlin Coroutines)库的一部分,属于 Kotlin 的 异步编程范畴。 ✅ Flow 的归属与背景: 所属技术:Kotlin(由 JetBrains 开发&am…...
PyTorch图像建模(图像识别、分割和分类案例)
文章目录 图像分类技术:改变生活的智能之眼图形识别技术图像识别过程图像预处理图像特征提取 图像分割技术练习案例:图像分类项目源码地址实现代码(简化版)训练结果(简化版)实现代码(优化版&…...
系统安全应用
文章目录 一.账号安全控制1.基本安全措施①系统账号清理②密码安全控制 2.用户切换与提权①su命令用法②PAM认证 3.sudo命令-提升执行权限①在配置文件/etc/sudoers中添加授权 二.系统引导和登录控制1.开关机安全控制①调整bios引导设置②限制更改grub引导参数 三.弱口令检测.端…...
day53—二分法—搜索旋转排序数组(LeetCode-81)
题目描述 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k1], ..., nu…...