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

【现代深度学习技术】深度学习计算 | GPU

在这里插入图片描述

【作者主页】Francek Chen
【专栏介绍】 ⌈ ⌈ PyTorch深度学习 ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重要的技术特征是具有自动提取特征的能力。神经网络算法、算力和数据是开展深度学习的三要素。深度学习在计算机视觉、自然语言处理、多模态数据分析、科学探索等领域都取得了很多成果。本专栏介绍基于PyTorch的深度学习算法实现。
【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/PyTorch_deep_learning。

文章目录

    • 一、计算设备
    • 二、张量与GPU
      • (一)存储在GPU上
      • (二)复制
      • (三)旁注
    • 三、神经网络与GPU
    • 小结


  我们回顾了过去20年计算能力的快速增长。简而言之,自2000年以来,GPU性能每十年增长1000倍。

  本节,我们将讨论如何利用这种计算性能进行研究。首先是如何使用单个GPU,然后是如何使用多个GPU和多个服务器(具有多个GPU)。

  我们先看看如何使用单个NVIDIA GPU进行计算。首先,确保至少安装了一个NVIDIA GPU。然后,下载NVIDIA驱动和CUDA并按照提示设置适当的路径。当这些准备工作完成,就可以使用nvidia-smi命令来查看显卡信息。

!nvidia-smi

在这里插入图片描述

  在PyTorch中,每个数组都有一个设备(device),我们通常将其称为环境(context)。默认情况下,所有变量和相关的计算都分配给CPU。有时环境可能是GPU。当我们跨多个服务器部署作业时,事情会变得更加棘手。通过智能地将数组分配给环境,我们可以最大限度地减少在设备之间传输数据的时间。例如,当在带有GPU的服务器上训练神经网络时,我们通常希望模型的参数在GPU上。

  要运行此部分中的程序,至少需要两个GPU。注意,对大多数桌面计算机来说,这可能是奢侈的,但在云中很容易获得。例如可以使用AWS EC2的多GPU实例。本专栏的其他章节大都不需要多个GPU,而本节只是为了展示数据如何在不同的设备之间传递。

一、计算设备

  我们可以指定用于存储和计算的设备,如CPU和GPU。默认情况下,张量是在内存中创建的,然后使用CPU计算它。

  在PyTorch中,CPU和GPU可以用torch.device('cpu')torch.device('cuda')表示。应该注意的是,cpu设备意味着所有物理CPU和内存,这意味着PyTorch的计算将尝试使用所有CPU核心。然而,gpu设备只代表一个卡和相应的显存。如果有多个GPU,我们使用torch.device(f'cuda:{i}')来表示第 i i i块GPU( i i i从0开始)。另外,cuda:0cuda是等价的。

import torch
from torch import nntorch.device('cpu'), torch.device('cuda'), torch.device('cuda:1')

在这里插入图片描述

  我们可以查询可用gpu的数量。

torch.cuda.device_count()
2

  现在我们定义了两个方便的函数,这两个函数允许我们在不存在所需所有GPU的情况下运行代码。

def try_gpu(i=0):  #@save"""如果存在,则返回gpu(i),否则返回cpu()"""if torch.cuda.device_count() >= i + 1:return torch.device(f'cuda:{i}')return torch.device('cpu')def try_all_gpus():  #@save"""返回所有可用的GPU,如果没有GPU,则返回[cpu(),]"""devices = [torch.device(f'cuda:{i}')for i in range(torch.cuda.device_count())]return devices if devices else [torch.device('cpu')]try_gpu(), try_gpu(10), try_all_gpus()

在这里插入图片描述

二、张量与GPU

  我们可以查询张量所在的设备。默认情况下,张量是在CPU上创建的。

x = torch.tensor([1, 2, 3])
x.device

在这里插入图片描述

  需要注意的是,无论何时我们要对多个项进行操作,它们都必须在同一个设备上。例如,如果我们对两个张量求和,我们需要确保两个张量都位于同一个设备上,否则框架将不知道在哪里存储结果,甚至不知道在哪里执行计算。

(一)存储在GPU上

  有几种方法可以在GPU上存储张量。例如,我们可以在创建张量时指定存储设备。接下来,我们在第一个gpu上创建张量变量X。在GPU上创建的张量只消耗这个GPU的显存。我们可以使用nvidia-smi命令查看显存使用情况。一般来说,我们需要确保不创建超过GPU显存限制的数据。

X = torch.ones(2, 3, device=try_gpu())
X

在这里插入图片描述

  假设我们至少有两个GPU,下面的代码将在第二个GPU上创建一个随机张量。

Y = torch.rand(2, 3, device=try_gpu(1))
Y

在这里插入图片描述

(二)复制

  如果我们要计算X + Y,我们需要决定在哪里执行这个操作。例如,如图1所示,我们可以将X传输到第二个GPU并在那里执行操作。不要简单地X加上Y,因为这会导致异常,运行时引擎不知道该怎么做:它在同一设备上找不到数据会导致失败。由于Y位于第二个GPU上,所以我们需要将X移到那里,然后才能执行相加运算。

在这里插入图片描述

图1 复制数据以在同一设备上执行操作

Z = X.cuda(1)
print(X)
print(Z)

在这里插入图片描述

  现在数据在同一个GPU上(ZY都在),我们可以将它们相加。

Y + Z

在这里插入图片描述

  假设变量Z已经存在于第二个GPU上。如果我们还是调用Z.cuda(1)会发生什么?它将返回Z,而不会复制并分配新内存。

Z.cuda(1) is Z

在这里插入图片描述

(三)旁注

  人们使用GPU来进行机器学习,因为单个GPU相对运行速度快。但是在设备(CPU、GPU和其他机器)之间传输数据比计算慢得多。这也使得并行化变得更加困难,因为我们必须等待数据被发送(或者接收),然后才能继续进行更多的操作。这就是为什么拷贝操作要格外小心。根据经验,多个小操作比一个大操作糟糕得多。此外,一次执行几个操作比代码中散布的许多单个操作要好得多。如果一个设备必须等待另一个设备才能执行其他操作,那么这样的操作可能会阻塞。这有点像排队订购咖啡,而不像通过电话预先订购:当客人到店的时候,咖啡已经准备好了。

  最后,当我们打印张量或将张量转换为NumPy格式时,如果数据不在内存中,框架会首先将其复制到内存中,这会导致额外的传输开销。更糟糕的是,它现在受制于全局解释器锁,使得一切都得等待Python完成。

三、神经网络与GPU

  类似地,神经网络模型可以指定设备。下面的代码将模型参数放在GPU上。

net = nn.Sequential(nn.Linear(3, 1))
net = net.to(device=try_gpu())

  在接下来的几章中,我们将看到更多关于如何在GPU上运行模型的例子,因为它们将变得更加计算密集。

  当输入为GPU上的张量时,模型将在同一GPU上计算结果。

net(X)

在这里插入图片描述

  让我们确认模型参数存储在同一个GPU上。

net[0].weight.data.device

在这里插入图片描述

  总之,只要所有的数据和参数都在同一个设备上,我们就可以有效地学习模型。在下面的章节中,我们将看到几个这样的例子。

小结

  • 我们可以指定用于存储和计算的设备,例如CPU或GPU。默认情况下,数据在主内存中创建,然后使用CPU进行计算。
  • 深度学习框架要求计算的所有输入数据都在同一设备上,无论是CPU还是GPU。
  • 不经意地移动数据可能会显著降低性能。一个典型的错误如下:计算GPU上每个小批量的损失,并在命令行中将其报告给用户(或将其记录在NumPy ndarray中)时,将触发全局解释器锁,从而使所有GPU阻塞。最好是为GPU内部的日志分配内存,并且只移动较大的日志。

相关文章:

【现代深度学习技术】深度学习计算 | GPU

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

基于斜坡单元的机器学习模型预测滑坡易发性,考虑条件因素的异质性

1、引用 Chang Z, Catani F, Huang F, et al. Landslide susceptibility prediction using slope unit-based machine learning models considering the heterogeneity of conditioning factors[J]. Journal of Rock Mechanics and Geotechnical Engineering, 2023…...

Node.js调用DeepSeek Api 实现本地智能聊天的简单应用

在人工智能快速发展的今天,如何快速构建一个智能对话应用成为了开发者们普遍关注的话题。本文将为大家介绍一个基于Node.js的命令行聊天应用,它通过调用硅基流动(SiliconFlow)的API接口,实现了与DeepSeek模型的智能对话…...

实战 - 编写一个最简单的 Hello World 内核模块

实战 - 编写一个最简单的 Hello World 内核模块 在嵌入式开发中,编写 Linux 内核模块是设备驱动开发的重要基础。内核模块可以帮助我们在不修改内核源码的情况下扩展内核功能。本篇博客将指导你如何编写并运行一个简单的 Hello World 内核模块,让你快速…...

面向对象程序设计-实验七

6-1 计算捐款总量 这里需要设计一个捐款人类Donator及一个相关函数getMaxName( )&#xff0c;Donator类中包含捐款人的姓名及其捐款额 代码清单&#xff1a; #include <iostream> using namespace std; class Donator { private: string name; float money; //单位&…...

JVM组成

JVM是什么&#xff1f; JVM&#xff08;Java Virtual Machine&#xff09;&#xff1a;Java程序的运行环境(java二进制字节码的运行环境) 好处&#xff1a; 1.一次编写&#xff0c;到处运行 Java代码是如何做到一次编写&#xff0c;到处运行&#xff1f; 计算机的最底层是计…...

java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException

Java8升级到17之后, 启动报错, :LocalValidatorFactoryBean]: Factory method defaultValidator threw exception; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException 报错原因:这个错误通常是由于缺少 javax.xml.bind 相关的依赖引起…...

Electron 实现自定义系统托盘菜单

效果如下&#xff1a; 其实实现自定义托盘菜单的本质上&#xff0c;就是开一个新窗口&#xff0c;下面直接给出核心代码。 // 加载窗口 const loadWindow (example, path) > {if (is.dev && process.env[ELECTRON_RENDERER_URL]) {example.loadURL(process.env[EL…...

HCIA-路由器相关知识和面试问题

二、 路由器 2.1 关于路由器的知识 2.1.1 什么是路由器 路由器是一种网络层互联设备&#xff0c;主要用于连接多个逻辑上分开的网络&#xff0c;实现不同网络之间的数据路由和通信。它能根据网络层地址&#xff08;如 IP 地址&#xff09;来转发数据包&#xff0c;在网络中起…...

2.【BUUCTF】bestphp‘s revenge

进入题目页面如下 进行代码审计 <?php // 1. 高亮显示当前PHP文件的源代码&#xff0c;方便开发者查看代码内容&#xff0c;在生产环境中不应使用此函数&#xff0c;可能会导致代码泄露。 highlight_file(__FILE__);// 2. 定义变量 $b &#xff0c;其值为字符串 implode &…...

wx060基于springboot+vue+uniapp的宿舍报修系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…...

使用 meshgrid函数绘制网格点坐标的原理与代码实现

使用 meshgrid 绘制网格点坐标的原理与代码实现 在 MATLAB 中&#xff0c;meshgrid 是一个常用函数&#xff0c;用于生成二维平面网格点的坐标矩阵。本文将详细介绍如何利用 meshgrid 函数生成的矩阵绘制网格点的坐标&#xff0c;并给出具体的代码实现和原理解析。 实现思路 …...

快速上手Vim的使用

Vim Linux编辑器-vim使用命令行模式下所有选项都可以带数字底行模式可视块模式&#xff08;ctrlV进入&#xff09; Linux编辑器-vim使用 Vim有多种模式的编辑器。能帮助我们很快的进行代码的编辑&#xff0c;甚至完成很多其他事情。 默认情况下我们打开vim在命令模式下&#x…...

HCIA项目实践---ACL访问控制列表相关知识和配置过程

十 ACL访问控制列表 1 策略的概念 在网络连通之后&#xff0c; 把所有为了追求控制而实现的技术都叫策略 2 访问控制 在路由器流量流入或者流出的接口上&#xff0c;匹配流量&#xff0c;执行相应的动作。&#xff08;流量流入或者流出的接口并不是一个固定的概念而是一个相对的…...

机器学习核心算法解析

机器学习核心算法解析 机器学习是人工智能的核心技术之一&#xff0c;它通过从数据中学习模式并做出预测或决策。本文将深入解析机器学习的核心算法&#xff0c;包括监督学习、无监督学习和强化学习&#xff0c;并通过具体案例和代码示例帮助读者理解这些算法的实际应用。 1. …...

Oracle 12c 并发统计信息收集功能:技术解析与实践指南

一、功能背景与核心价值 在Oracle数据库的早期版本中&#xff0c;统计信息收集&#xff08;如通过DBMS_STATS包&#xff09;是串行执行的&#xff0c;即一次仅处理一个表或分区。对于大规模数据库或数据仓库环境&#xff0c;这种串行模式可能导致统计信息收集耗时过长&#xf…...

Android Studio:EditText常见4种监听方式

1. 文本变化监听&#xff08;TextWatcher&#xff09; TextWatcher 主要用于监听 EditText 里的文本变化&#xff0c;它有三个方法&#xff1a; beforeTextChanged&#xff08;文本变化前&#xff09;onTextChanged&#xff08;文本正在变化时&#xff09;afterTextChanged&a…...

【第2章:神经网络基础与实现——2.3 多层感知机(MLP)的构建与调优技巧】

在当今科技飞速发展的时代,人工智能早已不是一个陌生的词汇,它已经渗透到我们生活的方方面面,从智能语音助手到自动驾驶汽车,从图像识别到自然语言处理。而支撑这一切的核心技术之一,就是神经网络。作为机器学习领域的璀璨明星,神经网络已经在众多任务中取得了令人瞩目的…...

C++ 网络编程

1. socket Socket 是一种用于网络通信的编程接口&#xff0c;它提供了一种类似于文件描述符的接口&#xff0c;允许不同计算机之间的进程进行通信。Socket 可以工作在多种协议上&#xff0c;最常用的是 TCP/IP 和 UDP/IP 协议 1.1 UDP 1.1.1 概念 UDP&#xff08;用户数据报协…...

SQL-leetcode—1683. 无效的推文

1683. 无效的推文 表&#xff1a;Tweets ----------------------- | Column Name | Type | ----------------------- | tweet_id | int | | content | varchar | ----------------------- 在 SQL 中&#xff0c;tweet_id 是这个表的主键。 content 只包含美式键盘上的字符&am…...

vue前端可视化大屏页面适配方案

参考了其他博主的代码&#xff0c;但发现会有滚动条&#xff0c;并且居中的位置不太对&#xff0c;所以改了一下css&#xff0c;修复了这些问题&#xff0c;直接上代码 <template> <div class"ScaleBoxA"><divclass"ScaleBox"ref"Sca…...

mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案

用的是【Mars3d】官网的uniapp的仓库&#xff0c;安卓没有问题&#xff0c;但是ios的不行 相关链接 mars3d-uni-app: uni-app技术栈下的Mars3D项目模板 解决方案&#xff1a;感觉所有图片请求全被拦截了 uniapp的ios内核不允许跨域&#xff0c;需要先把瓦片下载后转base64&…...

Dockfile语法

目录 dockerfile的作用 1. 构建 Docker 映像 2. 提高开发和运维效率 3. 版本控制 4. 提供可移植性和灵活性 使用示例 总结 dockerfile应该放的位置 为什么放在根目录&#xff1f; 例外情况 调用构建 dockerfile的基本结构和常用指令 基本结构和常用指令 示例 Dock…...

Nginx负载均衡

一。Nginx负载均衡的算法以及过程 二。nginx四层负载均衡的配置&#xff08;四层&#xff09; 1.vi /etc/nginx/conf.d/lb.conf 比较常见&#xff1a;weight&#xff1a;设置权重&#xff0c;backup&#xff1a;当其他主机全部用不了&#xff0c;这个作为备份 2.systemctl r…...

【C】初阶数据结构5 -- 栈

前面学习了两种最基本的数据结构 -- 顺序表和链表&#xff0c;接下来就可以基于这两种数据结构来实现其他数据结构了。其实&#xff0c;其他的数据结构的物理结构要么是数组&#xff0c;要么就是链表&#xff0c;所以学好顺序表和链表是学好其他数据结构的基础。接下里&#xf…...

Linux查找占用的端口,并杀死进程的简单方法

在Linux系统管理中&#xff0c;识别并管理占用特定端口的进程是一项常见且重要的任务。以下是优化过的步骤指南&#xff0c;帮助您高效地完成这一操作&#xff0c;同时提供了一个简洁的命令参考表。 Linux下识别并终止占用端口的进程 1. 探寻端口占用者 使用 lsof命令 lsof…...

为什么Pytorch中实例化模型会直接调用forward方法?

在 PyTorch 中&#xff0c;为何定义一个继承自 nn.Module 的自定义类并实现 forward 方法后&#xff0c;直接调用模型实例时&#xff0c;便会自动调用其 forward 方法&#xff1f;例如使用 output model(x) 这种形式。 因为自定义的神经网络类所继承的 nn.Module 类对 __call_…...

easyexcel快速使用

1.easyexcel EasyExcel是一个基于ava的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel 即通过java完成对excel的读写操作&#xff0c; 上传下载 2.easyexcel写操作 把java类中的对象写入到excel表格中 步骤 1.引入依赖 <depen…...

DeepSeek的出现会对百度有多大影响?

当DeepSeek与ChatGPT等大模型接管搜索入口&#xff0c;我们正见证百年一遇的信息革命。 01 传统搜索已死&#xff1f;AI助手正在重写游戏规则&#xff01; 当DeepSeek与ChatGPT等大模型接管搜索入口&#xff0c;我们正见证百年一遇的信息革命。 就像汽车淘汰马车、触屏终结按键…...

生成格雷码

以下是Verilog实现格雷码的两种常见方法&#xff1a; 1. 二进制转格雷码&#xff08;组合逻辑实现&#xff09; module binary_to_gray #(parameter N 4 // 默认4位位宽 )(input [N-1:0] binary, // 二进制输入output [N-1:0] gray // 格雷码输出 );assign gray binary…...

【STM32】BootLoader和IAP详解

文章目录 0 前言1 基本概念2 BootLoader3 主程序相关配置4 相关理论&#xff1a;芯片启动与中断响应5 特殊情况&#xff1a;Cortex-M0内核的芯片 0 前言 最近在研究一个RT-Thread的项目&#xff0c;遇到很多之前没咋遇见过的STM32相关的知识&#xff0c;想着顺带也整体过一遍。…...

Threadlocal的实现原理

文章目录 ThreadLocal与Thread关系分析Threadlocal 不支持继承性lnheritableThreadLocal 类 ThreadLocal与Thread关系分析 由该图可知&#xff0c; Thread 类中有一个 threadLocals 和一个 inheritableThreadLocals &#xff0c; 它们 都是 ThreadLocalMap 类型 的变量 &#x…...

【Elasticsearch】多字段查询方式汇总

在 Elasticsearch 中&#xff0c;实现多字段查询的常见方式有以下几种&#xff0c;每种方式适用于不同的场景&#xff1a; --- ### 1. **multi_match 查询** - **用途**&#xff1a;在多个字段中执行同一查询&#xff0c;支持多种匹配策略。 - **关键参数**&#xff1a…...

Unity使用反射进行Protobuf(CS/SC)协议,json格式

protobuf生成的协议,有挺多协议的.利用反射生成dto进行伪协议的响应 和 发送请求 应用场景: 请求(CS)_后端先写完了,前端还搞完时,可使用此请求,可自测 响应(SC)_可自行构建一个响应,对数据进行测试 // 请求 使用物品 CS message ReqUseItem{optional Opcodes MessageID1[def…...

MySQL和SQL server的区别

在当今数据驱动的世界里&#xff0c;数据库技术的选择对于企业和个人开发者来说至关重要。MySQL 和 SQL Server 是两个广泛使用的数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;它们各自拥有独特的优势和适用场景。本文将深入探讨这两个数据库系统之间的区别&#xf…...

SpringMVC请求执行流程源码解析

文章目录 0.SpringMVC九大内置组件1.processRequest方法1.请求先到service方法2.然后不管是get还是post都会跳转到processRequest方法统一处理 2.doService方法3.doDispatch方法1.代码2.checkMultipart 4.核心流程 0.SpringMVC九大内置组件 1.processRequest方法 1.请求先到se…...

LabVIEW与小众设备集成

在LabVIEW开发中&#xff0c;当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求&#xff0c;而厂家虽然提供了配套软件&#xff0c;但由于系统中还需要控制其他设备且不能使用厂商的软件时&#xff0c;必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中&#xff0…...

docker-compose暴露端口,但其他主机无法访问问题。

问题描述&#xff1a;docker-compose暴露端口&#xff0c;但其他主机无法访问问题。 排障思路&#xff1a; 执行命令&#xff1a;ss -antlp | grep 80&#xff0c;发现端口正常监听0.0.0.0:80&#xff08;ps&#xff1a;如果是127.0.0.1:80则只能本机访问同区域网段服务器执行…...

【MySQL】 基本查询(上)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;【MySQL】 基本查询(上) 发布时间&#xff1a;2025.2.14 隶属专栏&#xff1a;MySQL CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; 目录 Create基…...

python 爬虫教程 0 基础入门 一份较为全面的爬虫python学习方向

文章目录 前言一、Python 爬虫简介二、环境搭建1. 下载 Python2. 安装 Python3. 安装必要的库 三、一个简单的爬虫示例四、应对网站反爬机制五、深入学习方向 前言 以下是一份较为全面的 Python 爬虫教程&#xff0c;涵盖基础知识、环境搭建、简单示例、反爬应对及深入学习方向…...

总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证

总结&#xff1a;使用JDK原生HttpsURLConnection&#xff0c;封装HttpsUtil工具类&#xff0c;加载自定义证书验证&#xff0c;忽略ssl证书验证 一HttpsUtil工具类二SSLUtil工具类 一HttpsUtil工具类 package com.example.util;import javax.net.ssl.HttpsURLConnection; impo…...

你认为如何理解“约定大于配置”?

SpringBoot的“约定大于配置”&#xff08;Convention Over Configuration&#xff09;是一种核心理念&#xff0c;旨在简化开发过程&#xff0c;减少开发人员在配置上的繁琐工作。以下是对其含义的详细介绍&#xff1a; 一、定义与目的 定义&#xff1a;约定优于配置&#x…...

Linux 基础IO——重定向和缓冲区

目录 一、重定向 1、重定向的本质 2、使用 dup2 系统调用 &#xff08;1&#xff09;输出重定向 &#xff08;2&#xff09;追加重定向 (3) 输入重定向 ​ 二、缓冲区 1.理解缓冲区 2.缓冲区刷新问题 3.为什么要有缓冲区&#xff1f; 4.这个缓冲区在哪里&#xff…...

基于若依开发的工程项目管系统开源免费,用于工程项目投标、进度及成本管理的OA 办公开源系统,非常出色!

一、简介 今天给大家推荐一个基于 RuoYi-Flowable-Plus 框架二次开发的开源工程项目管理系统&#xff0c;专为工程项目的投标管理、项目进度控制、成本管理以及 OA 办公需求设计。 该项目结合了 Spring Boot、Mybatis、Vue 和 ElementUI 等技术栈&#xff0c;提供了丰富的功能…...

华为云之CodeArts IDE的使用体验

一、CodeArts IDE介绍 1.1 CodeArts IDE简介 CodeArts IDE定位华为云开发者桌面&#xff0c;是利用华为自研IDE内核技术&#xff0c;面向华为云开发者提供的智能化可扩展桌面集成开发环境&#xff08;IDE&#xff09;&#xff0c;结合华为云行业和产业开发套件&#xff0c;实现…...

DeepSeek-VL2 环境配置与使用指南

DeepSeek-VL2 环境配置与使用指南 DeepSeek-VL2 是由 DeepSeek 公司开发的一种高性能视觉-语言模型&#xff08;VLM&#xff09;。它是 DeepSeek 系列多模态模型中的一个版本&#xff0c;专注于提升图像和文本之间的交互能力。 本文将详细介绍如何配置 DeepSeek-VL2 的运行环…...

超纯水设备的智能化控制系统为用户带来安全简便的操作体验

随着信息技术的发展&#xff0c;智能化已经成为工业装备的重要发展方向之一。超纯水设备在这方面也走在了前列&#xff0c;配备了高性能的PLC控制系统及人机交互界面&#xff0c;实现了全方位的智能监控和自动化操作。本文将重点介绍该设备的智能化控制系统&#xff0c;探讨它如…...

若依系统环境搭建记录

开源若依系统网上资料也很全的&#xff0c;本篇博文记录下自己搭建环境过程中遇到的一些问题。 配置Maven和编辑器选择 我懒得配置Eclipse了&#xff0c;直接用vscode作为编辑器&#xff0c;后面构建运行都用命令行。 配置数据库连接 按照mysql5.7按网上教程即可&#xff1…...

基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南

基于Docker-compose的禅道部署实践&#xff1a;自建MySQL与Redis集成及故障排查指南 禅道镜像版本&#xff1a;easysoft/zentao:21.4 Redis版本&#xff1a;redis:6.2.0 Mysql版本&#xff1a;mysql:8.0.35 文章目录 **基于Docker-compose的禅道部署实践&#xff1a;自建MySQL与…...

为AI聊天工具添加一个知识系统 之102 详细设计之43 自性三藏 之3 祖传代码

本文要点 法宝和三藏 总括如下&#xff1a; 三藏[经/律/论] 法宝&#xff1a;法阵/法轮/法力&#xff08;三“件” 证件 / 表件 / 物件 &#xff0c;分别对应三藏&#xff1a;论藏/律藏/经藏 --反序&#xff09;。“法宝”演示了 发轮轮转的法阵中物件具有的法力。 这里的“…...