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

【Kuiperinfer】笔记01 项目预览与环境配置

学习目标

  • 实现一个深度学习推理框架
  • 设计、编写一个计算图
  • 实现常见的算子,例如卷积、池化、全连接
  • 学会如何进行算子的优化加速
  • 使用自己的推理框架推理常见模型,检查结果是否能够和torch对齐

什么是推理框架?

推理框架用于对已经训练完成的模型进行加载,并根据模型文件中的网络结构和权重参数,对输入图像进行预测。

推理框架没有反向传播,因为推理过程中权重不需要更新。这也是和训练框架的最大的不同。

推理框架的运行流程可参照下图:

在这里插入图片描述

技术全景

KuiperInfer包括以下几个模块:

  1. Operator:计算图中的计算节点,包括:
    • 存储输入输出的张量,用于存放各层的输入输出
    • 节点的类型和名称,名称是唯一的,用于区分任意一个节点,例如Convolution
    • 节点的参数信息,例如卷积步长、卷积核大小
    • 节点的权重信息,例如weight, bias
  2. Graph:多个Operator串联得到的有向无环图,规定了节点的执行顺序
  3. Layer:运算的具体执行者,首先读入输入张量中的数据,然后对输入帐量进行计算,并将结果放入输出张量中
  4. Tensor:存放多维数据,方便在节点中传递,该结构同时也封装矩阵运算

在这里插入图片描述

环境配置

主要库:

  1. 数学计算:Armadillo,该库是Open Blas的封装
  2. 加速库:OpenMP
  3. 单元测试:Google Test
  4. 性能测试:Google Benchmark

第二次开课提供了docker镜像,更省事一些。

什么是Docker

为什么使用Docker

出现背景:不同的电脑的环境配置不同,导致在一个系统上运行正常的程序,在另一个系统上不能正常运行。

解决这个问题的一个方法是,构建和源系统一样的虚拟机,这种方法通常会占用大量内存来支持Guest OS。与之相对,Docker在这方面省略了大量内存占用。且Docker允许在不同的容器之间共享和重用数据空间,也方便在不同平台之间移植。

Docker是什么

Docker是用于自动化部署应用程序到轻量级的容器中的工具,使得应用可以在不同的运行环境中高效运行。

容器(container)是一种软件包,包含所有运行依赖。

在这里插入图片描述

Docker为每个软件都对应在容器中提供其依赖的框架(framework),使得不同框架的软件,甚至冲突框架的软件,可以在同一宿主机上运行,甚至可以进行数据共享。

Docker是如何工作的

  • Docker是安装在宿主机上的基础引擎,主要功能是build和运行容器
  • 使用client-server架构
  • Client和Server使用REST API交互
  • Client运行指令,指令通过REST API转译,发送到Server
  • Server检查Client请求,在操作系统上响应操作

在这里插入图片描述

Win环境下Docker环境配置

首先安装Docker,进入Docker官网,点击选择products中的Docker DeskTop下载并安装。注意安装后需要重启,记得提前关闭其他应用并保存。

打开Docker DestTop,我我这里出现卡starting的问题,推测可能是Hyper-V的原因,查阅Microsoft手册,首先尝试在powershell中启用Hyper-V

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

提示Microsoft-Hyper-V未知,说明没安装,尝试安装。将下面的文本存入一个cmd文件中,管理员身份运行,然后重启

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

再次启动Docker-DeskTop,这次没有卡住。

验证安装,命令行中输入:

docker run hello-world

出现以下文本,说明安装成功

Hello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

现在开始拉环境

  1. 拉取镜像

    docker pull registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale
    
  2. 克隆课程代码

    git clone https://github.com/zjhellofss/kuiperdatawhale.git
    
  3. 创建并运行容器

    x docker run -it -p 7860:22 registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale /bin/bash
    
  4. 使用ssh连接容器

    ssh -p 7860 me@127.0.0.1
    

    如果连不上的话可以在Docker DeskTop里面重启一下容器试试。

VS配置Docker

先补一点自己不熟悉的知识:

  1. CMake. CMake是一个跨平台build system,用于在不同平台上创建build。
  2. Visual Studio with CMake. VS内嵌了CMake,可以创建CMake的项目,会自动检测CMakeLists.txt文件,并生成必要的项目文件。
  3. VS使用Docker,调试 > 选项 > 跨平台 > 连接管理器 > 添加。Win平台本机启动的docker主机名为127.0.0.1,端口、用户名和密码按照自己设置的填入即可。在跨平台 > 开发容器中,设置用于运行容器的主机为127.0.0.1

因为这个docker是Linux的,所以需要在VS installer中,安装用于Linux的C++开发组件,参考:https://devblogs.microsoft.com/cppblog/build-c-applications-in-a-linux-docker-container-with-visual-studio/。

不装这个的话,即使能够连接到docker,也不能设置调试主机为docker容器。

  1. 设置调试主机为docker容器

  2. 配置新的debuger

    在这里插入图片描述

  3. 尝试生成,出现新的错误:无法创建目录,mkdir 退出代码: 1,推测是用户权限问题。

    定位,在docker容器中,打开终端管理,su me登录me账户,尝试在./root/home/me文件夹下创建文件,报Permission denied,说明me用户没有足够权限。

    切root账户,在根目录下,chown -R me home,一定要给home的权限,否则还是不能mkdir

  4. cmake没找到ninja,在debug高级配置中,改用Unix Makefiles,镜像里是没装Ninja的,且这个CMakefile.txt也不支持Ninja,如果不小心用Ninja生成过一次,那改Unix Makefiles也还会报错,需要重新clone

  5. 编译完成后,就可以直接run了;course 1跑Google Test会提示FAILED,是因为axby.cpp中有三个函数需要自己实现。

整理一下使用VS配置环境的关键问题:

  1. 用户权限要给到home文件夹,确保在docker控制台,使用me用户(或者自己创建的用户)能够在home路径下创建文件
  2. 在选项 > 跨平台 > 开发容器中,连接配置好的远程容器,如果容器是Linux环境,则需要先安装Linux组件;设置调试主机为该容器,在管理配置中设置新的CMake配置,修改配置中的主机为该容器,修改generator为UNIX Makefiles。

编写单元测试

使用GoogleTest编写单元测试,测试armadillo的计算接口。接口可参考armadillo的手册。

test/test1.cpp中,包含了对加减乘和点积运算的接口,作业要求实现axby.cpp中的接口。

查手册找算子,对照实现即可。

  1. 实现 y = w × x + b y = w \times x + b y=w×x+b

    void Axby(const arma::fmat &x, const arma::fmat &w, const arma::fmat &b,arma::fmat &y) {y = w * x + b;// 把代码写这里 完成y = w * x + b的运算
    }
    
  2. 实现 y = e − x y = e^{-x} y=ex

    void EPowerMinus(const arma::fmat &x, arma::fmat &y) {// 把代码写这里 完成y = e^{-x}的运算arma::fmat E(224, 224, arma::fill::value(arma::datum::e));y = pow(E, -x);
    }
    
  3. 实现 Y = a × x + y Y = a \times x + y Y=a×x+y

    void Axpy(const arma::fmat &x, arma::fmat &Y, float a, float y) {// 编写Y = a * x + yY = a * x + y;
    }
    

编译运行,PASSED。

参考

  • 【Kuiperinfer】:https://github.com/zjhellofss/kuiperdatawhale
  • 作者B站主页:https://space.bilibili.com/1822828582?spm_id_from=333.337.search-card.all.click
  • 【What Is Docker】:https://www.youtube.com/watch?v=rOTqprHv1YE
  • 【Armadillo Docs】:https://arma.sourceforge.net/docs.html

相关文章:

【Kuiperinfer】笔记01 项目预览与环境配置

学习目标 实现一个深度学习推理框架设计、编写一个计算图实现常见的算子,例如卷积、池化、全连接学会如何进行算子的优化加速使用自己的推理框架推理常见模型,检查结果是否能够和torch对齐 什么是推理框架? 推理框架用于对已经训练完成的模…...

都2024了,你还在使用websocket实现实时消息推送吗?

前言 在日常的开发中,我们经常能碰见服务端需要主动推送给客户端数据的业务场景,比如数据大屏的实时数据,比如消息中心的未读消息,比如聊天功能等等。 本文主要介绍SSE的使用场景和如何使用SSE。 服务端向客户端推送数据的实现…...

javaScript实现客户端直连华为云OBS实现文件上传、断点续传、断网重传

写在前面:在做这个调研时我遇到的需求是前端直接对接华为云平台实现文件上传功能。上传视频文件通常十几个G、客户工作环境网络较差KB/s,且保证上传是稳定的,支持网络异常断点重试、文件断开支持二次拖入自动重传等。综合考虑使用的华为云的分…...

微信小程序:实现微信小程序应用首页开发 (本地生活首页)

文章目录 小程序应用页面开发1、创建项目并配置项目目录结构配置导航栏效果三、配置 tabBar 效果四、轮播图实现4.1 创建轮播图数据容器4.2 定义一个请求轮播图数据的接口4.3 页面加载调用 数据请求接口 五、九宫格实现5.1 获取九宫格数据5.2 结构和样式的完善六、图片布局实现…...

【JavaScript】原型链和继承

文章目录 1. 原型链的概念原型原型链 2. 构建原型链构造函数与原型实例与原型链 3. 继承的实现原型链继承原型链的问题 4. 继承的最佳实践构造函数继承(经典继承)组合继承 5. ES6中的类和继承6. 总结 在 JavaScript 中,原型链和继承是构建对象…...

(二)【Jmeter】专栏实战项目靶场drupal部署

该专栏后续实战示例,都以该篇部署的项目展开操作。 前置条件 参考“(一)【Jmeter】JDK及Jmeter的安装部署及简单配置” 安装部署Jmeter,从文章最后下载“Postman、Rancher.ova、VirtualBox-7.0.12-159484-Win.exe、Xshell-7.0.01…...

使用 ChatGPT系统学习一门知识的技巧

如何使用 ChatGPT 高效学习一门知识?我探索到一种比较高效的方式:首先让 ChatGPT 给你一个学习提纲,然后以此把提纲内容逐个发给 ChatGPT,进行详情学习。 下面以“学习八木天线”工作原理为例说明。 以八木天线为切入点&#xff0…...

IDEA-常用插件

1、Mybatis Log Free 当我们使用mybatis log在控制台输出sql 内容,输出内容将语句与参数分开打印,还需要手动将参数替换到指定位置。 使用对应插件后,自动将输出内容组装成完整的可直接执行的SQL 在插件市场 查看对应名称,并安装。…...

揭秘:一行代码搞定.Net API高并发的烦恼

高并发下的接口请求重复提交问题 在.Net开发中,我们经常遇到用户疯狂点击同一按钮,或者服务响应慢时重复发送请求,导致数据重复添加或混乱。这不仅浪费资源,更会得到错误的业务结果。如何高效解决这一普遍问题呢? 常规…...

SpringBoot的 8 个优点

目录 1、简化配置 2、快速开发 3、微服务支持 4、内嵌服务器 5、健康监测 6、热部署 7、自动化管理 8、社区支持和生态系统 SpringBoot 是一个基于 Spring 框架的快速开发框架,它通过提供一系列的自动配置、约定优于配置、快速集成等功能,简化了…...

Spark中多分区写文件前可以不排序么

背景 Spark 3.5.0 目前 Spark中的实现中,对于多分区的写入默认会先排序,这是没必要的。可以设置spark.sql.maxConcurrentOutputFileWriters 为大于0来避免排序。 分析 这部分主要分为三个部分: 一个是V1Writes规则的重改; 另一个是FileFormatWriter中…...

突破编程_C++_面试(变量与常量)

面试题 1 : C 中的变量存储类别有哪些,并简要描述它们的特点? 在C中,变量的存储类别决定了变量的生命周期和可见性。以下是C中的几种变量存储类别及其特点: 自动存储期 也称为局部存储类别。这类变量在函数或代码块…...

k8s的一些关键信息(归类摘抄,非提炼)

零:举例说明 当用户提交一个 Deployment 对象到 Kubernetes 集群时,控制平面的 API Server 接收到该请求,并将其转发给 Controller Manager。Controller Manager 中的 Deployment Controller 监听到该请求,并根据用户定义的配置信…...

海外媒体发稿:8个提升影响力的日韩地区媒体发稿推广策略-华媒舍

在今天的数字化时代,媒体发稿推广成为企业和个人增加影响力的重要方式。特别是在日韩地区,这个拥有庞大媒体市场和活跃社交媒体用户的地区,正确的推广策略将对影响力的提升起到关键作用。我们将介绍8个提升影响力的日韩地区媒体发稿推广策略。…...

面试官:能不能给 Promise 增加取消功能和进度通知功能... 我:???

扯皮 这段时间闲着没事就去翻翻红宝书,已经看到 Promise 篇了,今天又让我翻到两个陌生的知识点。 因为 Promise 业务场景太多了自我感觉掌握的也比较透彻,之前也跟着 Promise A 的规范手写过完整的 Promise,所以这部分内容基本上…...

详解MySQL增删查改

众所周知&#xff0c;MySQL是非常重要的数据库语言&#xff0c;下面我们来回顾一下mysql的增删查改吧 MySQL创建数据库&#xff1a; CREATE DATABASE 数据库名;MySQL删除数据库&#xff1a; DROP DATABASE <database_name>; --直接删除&#xff0c;不检查是否存在 DROP…...

Mysql开启bin-log日志

目录 一、安装配置 二、mysqlbinlog命令 一、安装配置 yum -y install mariadb mariadb-server#安装mysql数据库#默认配置文件/etc/my.cnfvim /etc/my.cnflog-binmariadb-bin #开启二进制日志 systemctl restart mariadb#会在/car/lib/mysql/产生二进制日志文件&#xff0…...

Java:性能优化细节01-10

Java&#xff1a;性能优化细节01-10 在Java程序开发过程中&#xff0c;性能优化是一个重要的考虑因素。常见的误解是将性能问题归咎于Java语言本身&#xff0c;然而实际上&#xff0c;性能瓶颈更多地源于程序设计和代码实现方式的不当。因此&#xff0c;培养良好的编码习惯不仅…...

CVE-2022-24652 漏洞复现

CVE-2022-24652 开题 后台管理是thinkphp的&#xff0c;但是工具没检测出漏洞。 登陆后界面如下&#xff0c;上传头像功能值得引起注意 这其实就是CVE-2022-24652&#xff0c;危险类型文件的不加限制上传&#xff0c;是文件上传漏洞。漏洞路由/user/upload/upload 参考文章&a…...

LeetCode、338. 比特位计数【简单,位运算】

文章目录 前言LeetCode、338. 比特位计数【中等&#xff0c;位运算】题目链接与分类思路位运算移位处理前缀思想实现 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java…...

借助Aspose.BarCode条码控件,C# 中的文本转 QR 码生成器

二维码用于在较小的空间内存储大量数据。它们易于使用&#xff0c;可以通过智能手机或其他设备扫描来打开网站、观看视频或访问其他编码信息。在这篇博文中&#xff0c;我们将学习如何使用 C# 以编程方式生成基于文本的 QR 码。我们将提供分步指南和代码片段&#xff0c;帮助您…...

vue打包优化,webpack的8大配置方案

vue-cli 生成的项目通常集成Webpack &#xff0c;在打包的时候&#xff0c;需要webpack来做一些事情。这里我们希望它可以压缩代码体积&#xff0c;提高运行效率。 文章目录 &#xff08;1&#xff09;代码压缩&#xff1a;&#xff08;2&#xff09;图片压缩&#xff1a;&…...

B端系统从0到1:有几步,其中需求分析要做啥?

一款B系统从无到有都经历了啥&#xff0c;而其中的需求分析又要做什么&#xff1f;贝格前端工场给老铁们做一下分析&#xff0c;文章写作不易&#xff0c;如果咱们有界面设计和前端开发需求&#xff0c;别忘了私信我呦&#xff0c;开始了。 一、B端系统从0到1都有哪些要走的步骤…...

django中查询优化

在Django中&#xff0c;查询优化是一个重要的主题&#xff0c;因为不正确的查询可能会导致性能问题&#xff0c;尤其是在处理大量数据时。以下是一些在Django中进行查询优化的建议&#xff1a; 一&#xff1a;使用select_related和prefetch_related: select_related用于优化一…...

【JavaScript】输入输出语法

目录 一、输出语法 二、输入语法 一、输出语法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>D…...

多模态基础--- word Embedding

1 word Embedding 原始的单词编码方式&#xff1a; one-hot&#xff0c;维度太大&#xff0c;不同单词之间相互独立&#xff0c;没有远近关系区分。 wordclass&#xff0c;将同一类单词编码在一起&#xff0c;此时丢失了类别和类别间的相关信息&#xff0c;比如class1和class3…...

Mysql 日志

0 引言 MySQL日志主要分为4类&#xff0c;使用这些日志文件&#xff0c;可以查看MySQL内部发生的事情。这4类日志分别是&#xff1a; ● 错误日志&#xff1a;记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。 ● 查询日志&#xff1a;记录建立的客户端连接和执行的…...

【开源】SpringBoot框架开发服装店库存管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 服装档案模块2.4 服装入库模块2.5 服装出库模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 服装档案表3.2.3 服装入库表3.2.4 服装出库表 四、系统展示五、核心代码5.…...

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

背景 基于前面搭建的3节点 Kubernetes 集群&#xff0c;今天我们使用 Registry2 搭建私有镜像仓库&#xff0c;这在镜像安全性以及离线环境下运维等方面具有重要意义。 Note: 由于是测试环境&#xff0c;以下创建了一个 local-storage 的 StorageClass &#xff0c;并使用本地…...

标准IO 2月4日学习笔记

IO输入输出&#xff0c;操作对象是文件 Linux文件类型: b block 块设备文件 按块扫描设备信息的文件 存储设备 c character 字符设备文件 按字符扫描设备信息的文件 d direct…...

如何在1Panel上偷渡HTTP/3

本文 首发于 Anyeの小站&#xff0c;转载请取得作者同意。 前言 简介 HTTP/3 的基础即谷歌多年探索的基于 UDP 的 QUIC 协议。与 TCP 相比&#xff0c;使用 UDP 可以提供更大的灵活性&#xff0c;并且可以使 QUIC 完全于用户空间中实现——对协议实现的更新不像 TCP 那样需要绑…...

Qt实用技巧:QCustomPlot做北斗GPS显示绝对位置运动轨迹和相对位置运动轨迹图的时,使图按照输入点顺序连曲线

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/136131310 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…...

116 C++ 可变参数函数,initializer_list (初始化列表), 省略号形参

一 可变参数函数 有时候我们传递的参数是不固定的。 这种能接受非固定个数参数的函数就是可变参数函数 怎么实现呢&#xff1f;就要用到 initializer_list 标准库类型 该类型能够使用的前提条件是&#xff1a;所有的实参类型相同。 二&#xff0c;initializer_list(初始化列…...

强国有我社会实践公益活动在合肥市庐阳区开展

2月18日是开工第一天&#xff0c;阳光灿烂、春光明媚。合肥市四十五中2022级星辰&#xff08;5&#xff09;班部分同学在监护人的陪伴下来到庐阳区双岗街道万小店社区残疾人工作站&#xff0c;和工作站兄弟姐妹们共同开展“强国复兴有我”社会实践公益活动。合肥市庐阳区为民社…...

Nginx 正向代理、反向代理

文章目录 前言1. 正向代理1.1 概念1.2 逻辑图1.3 使用场景 2. 反向代理2.1 概念2.2 逻辑图2.3 使用场景 前言 正向代理主要是用来解决访问限制问题&#xff1b;反向代理则是提供负载均衡、安全防护等作用 1. 正向代理 1.1 概念 正向代理是一个位于客户端和目标服务器之间的代理…...

软考学习--计算机组成原理与体系结构

计算机组成原理与体系结构 数据的表示 进制转换 R 进制转换为 10 进制–按权展开法 10进制转换为2进制 原码 反码 补码 移码 原码 &#xff1a;数字的二进制表示反码 &#xff1a; 正数的反码等于原码&#xff0c;负数的反码等于原码取反补码&#xff1a; 正数的补码等…...

fish终端下conda activate失败

【问题】fish终端下激活conda环境报错&#xff1a; >> conda activate base CondaError: Run conda init before conda activate ## 然而运行 conda init fish 仍旧无法解决【解决】 参考&#xff1a;https://github.com/conda/conda/issues/11079 方法一&#xf…...

FPGA之移位寄存器

SLICEM中的LUT可以配置为32位移位寄存器,而无需使用slice中可用的触发器。以这种方式使用,每个LUT 可以将串 行数据延迟 1 到 32 个时钟周期。移入D &#xff08;DI1 LUT 引脚&#xff09;和移出 Q31&#xff08;MC31 LUT 引脚&#xff09;线路将LUT级联&#xff0c;以形成更大…...

Android Compose Material3 ModalNavigationDrawer 抽屉的使用(处理了一些坑)

Android Compose Material3 ModalNavigationDrawer 抽屉的使用&#xff08;处理了一些坑&#xff09; val drawerState rememberDrawerState(initialValue DrawerValue.Closed) val scope rememberCoroutineScope()ModalNavigationDrawer(drawerState drawerState,drawerC…...

golang select两个channel性能稳定,三个channel时性能会发生抖动,为什么?

golang select两个channel性能稳定&#xff0c;三个channel时性能会发生抖动&#xff0c;为什么&#xff1f; 答题思路 select —> 让 Goroutine同时等待多个 Channel 可读或者可写 —> Goroutine —> 调度器调度 —> 资源竞争 —> 不稳定、抖动 在 Go 中&#…...

VSCODE上使用python_Django

接上篇 https://blog.csdn.net/weixin_44741835/article/details/136135996?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22136135996%22%2C%22source%22%3A%22weixin_44741835%22%7D VSCODE官网&#xff1a; Editing Python …...

探索IDE的世界:什么是IDE?以及适合新手的IDE推荐

引言 在编程的世界里&#xff0c;集成开发环境&#xff08;IDE&#xff09;是我们日常工作的重要工具。无论是初学者还是经验丰富的开发者&#xff0c;一个好的IDE都能极大地提高我们的编程效率。那么&#xff0c;什么是IDE呢&#xff1f;对于新手来说&#xff0c;又应该选择哪…...

DoRA(权重分解低秩适应):一种新颖的模型微调方法

来自&#xff1a;小互 DoRA&#xff08;权重分解低秩适应&#xff09;&#xff1a;一种新颖的模型微调方法 DoRA在LoRA的基础上进一步发展&#xff0c;通过将预训练权重分解为“幅度”和“方向”两个部分进行微调。 这种权重分解方法允许DoRA更精细地控制模型的学习过程&…...

centos7.9 搭建k8s

K3s -轻量级Kubernetes K3s 是轻量级的 Kubernetes。K3s 易于安装&#xff0c;仅需要 Kubernetes 内存的一半&#xff0c;所有组件都在一个小于 100 MB 的二进制文件中。 为什么叫 K3s? 我们希望安装的 Kubernetes 只占用一半的内存。Kubernetes 是一个 10 个字母的单词&am…...

使用vite创建项目

NPM npm create vitelatest Yarn yarn create vite PNPM pnpm create vite Bun bunx create-vite 安装sass npm add -D sass 安装less npm add -D less vite官方中文文档&#xff1a;Vite | 下一代的前端工具链 (vitejs.dev)...

EXTI外部中断

&#xff1f; 难点&#xff1a;中断向量表、看门狗、NVIC的优先级位&#xff1f;EXTI框图&#xff1f; ------------------------ 中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;--->例如&#xff1a;…...

小肥柴慢慢手写数据结构(C篇)(5-4 中场小结)

小肥柴慢慢学习数据结构笔记&#xff08;C篇&#xff09;&#xff08;5-4 中场小结&#xff09; 目录5-14 再看数据结构的基础问题5-15 接下来关于Tree你还需要学习和了解的内容参考文献和资料 目录 5-14 再看数据结构的基础问题 假设前面讨论的所有内容大家都已经自己编码实…...

flutter 功能

flutter功能 带缓存的tab切换功能 使用PageController进行对应tab的widget缓存 late PageController _keepActiveVC;///当前使用的视图索引late int _index;late PageController _keepActiveVC;/// 所有视图final List<Widget> _bodys [];overridevoid initState() {…...

Sql Server 存储过程

一、创建存储过程 USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[存储过程名称] Script Date: 2024/2/19 9:47:49 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- -- Author: <Author,,Name> -- Create date: <Create Dat…...

二.重新回炉Spring Framework:Spring Framework主要组件概览

1.写在前面的话 这里主要简单说一下Spring Framework的几个核心组件的总体情况。为了比较直观&#xff0c;这里使用了ClassPathXmlApplicationContext的类图来进行说明。它基本上包含了 IoC 体系中大部分的核心类和接口。类图如下图所示&#xff1a; 2.Resource 组件体系 R…...