DeepSpeed

在这里插入图片描述

文章目录

    • 一、关于 DeepSpeed
      • 1、DeepSpeed 是什么
      • 2、深度学习训练和推理的极致速度和规模
      • 3、DeepSpeed 的四大创新支柱
        • 1)DeepSpeed 训练
        • 2)DeepSpeed 推理
        • 3)DeepSpeed 压缩
        • 4)DeepSpeed4Science
      • 4、DeepSpeed 软件套件
        • DeepSpeed 库
        • 推理模型实现 (MII)
        • Azure 上的 DeepSpeed
      • 5、DeepSpeed Adoption
      • 6、构建管道状态
    • 二、安装
      • 要求
      • 贡献的硬件支持
      • PyPI
      • Windows
      • 特征
    • 三、编写 DeepSpeed 模型
      • 训练
      • 模型检查点
      • DeepSpeed 配置
    • 四、启动 DeepSpeed 训练
      • 资源配置(多节点)
      • 多节点环境变量
        • MPI 和 AzureML 兼容性
      • 资源配置(单节点)


一、关于 DeepSpeed

1、DeepSpeed 是什么

DeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective.

  • 官网:https://www.deepspeed.ai
    https://www.microsoft.com/en-us/research/project/deepspeed/
  • github : https://github.com/microsoft/DeepSpeed
  • 入门 : https://www.deepspeed.ai/getting-started/ 使用 DeepSpeed 的第一步
  • DeepSpeed JSON 配置 : https://www.deepspeed.ai/docs/config-json/
  • API文档 : https://deepspeed.readthedocs.io/en/latest/ 生成的 DeepSpeed API 文档
  • 教程 : https://www.deepspeed.ai/tutorials/
  • 博客 : https://www.deepspeed.ai/posts/

教程

  • Deepspeed大模型分布式框架精讲
    https://www.bilibili.com/video/BV1mc411y7jW/


2、深度学习训练和推理的极致速度和规模

DeepSpeed 支持世界上最强大的语言模型,例如MT-530B和BLOOM 。

它是一款易于使用的深度学习优化软件套件,可为训练和推理提供前所未有的规模和速度。借助 DeepSpeed,您可以:

  • 训练/推理 具有数十亿或数万亿参数的密集或稀疏模型
  • 实现出色的系统吞吐量 并 有效扩展到数千个 GPU
  • 在资源受限的 GPU 系统上进行 训练/推理
  • 实现前所未有的低延迟和高吞吐量的推理
  • 以低成本实现极限压缩,实现无与伦比的推理延迟和模型尺寸减小

3、DeepSpeed 的四大创新支柱


1)DeepSpeed 训练

DeepSpeed 提供了系统创新的融合,使大规模深度学习训练变得有效、高效,大大提高了易用性,并在可能的规模方面重新定义了深度学习训练格局。

ZeRO、3D-Parallelism、DeepSpeed-MoE、ZeRO-Infinity 等创新属于训练支柱。了解更多:DeepSpeed 训练


2)DeepSpeed 推理

DeepSpeed 汇集了张量、管道、专家和零并行等并行技术的创新,并将它们与高性能定制推理内核、通信优化和异构内存技术相结合,以前所未有的规模实现推理,同时实现无与伦比的延迟、吞吐量和性能。

降低成本。这种推理系统技术的系统组合属于推理支柱。了解更多:DeepSpeed-推理


3)DeepSpeed 压缩

为了进一步提高推理效率,DeepSpeed 为研究人员和从业人员提供易于使用且组合灵活的压缩技术 来压缩他们的模型,同时提供更快的速度、更小的模型大小并显着降低的压缩成本。

此外,ZeroQuant 和 XTC 等 SoTA 在压缩方面的创新也包含在压缩支柱下。了解更多:DeepSpeed 压缩


4)DeepSpeed4Science

秉承微软解决人类最紧迫挑战的使命,微软 DeepSpeed 团队响应这一机遇,推出了一项名为DeepSpeed4Science的新计划,旨在通过人工智能系统技术创新构建独特的能力,帮助领域专家解开当今最大的科学谜团。 了解更多信息:DeepSpeed4Science 网站和教程



4、DeepSpeed 软件套件


DeepSpeed 库

https://github.com/microsoft/DeepSpeed

DeepSpeed库实现并将 DeepSpeed 训练、推理和压缩支柱中的创新和技术打包到一个易于使用的开源存储库中。

它允许在单个训练、推理或压缩管道中轻松组合多个特征。

DeepSpeed 库被 DL 社区广泛采用,并已用于启用一些最强大的模型(请参阅DeepSpeed 采用)。


推理模型实现 (MII)

推理模型实现 (MII) 是一个开源存储库,通过减轻应用复杂系统优化技术本身的需要,使所有数据科学家都可以进行低延迟和高吞吐量的推理。

MII 开箱即用,支持数千种广泛使用的深度学习模型,并使用 DeepSpeed-Inference 进行优化,只需几行代码即可部署,同时与普通开源版本相比,延迟显着降低。


Azure 上的 DeepSpeed

DeepSpeed 用户多种多样,可以访问不同的环境。我们建议尝试 Azure 上的 DeepSpeed,因为这是最简单、最容易的方法。

在 Azure 上尝试 DeepSpeed 的推荐方法是通过 AzureML recipes。

作业提交和数据准备脚本已在此处提供。有关如何在 Azure 上使用 DeepSpeed 的更多详细信息,请遵循Azure 教程。



5、DeepSpeed Adoption

DeepSpeed 是 Microsoft 新的 大规模 AI 计划的重要组成部分,该计划旨在大规模实现下一代 AI 功能,您可以在此处找到更多信息。

DeepSpeed 已被用于训练许多不同的大型模型,下面列出了我们所知道的几个示例(如果您想包含您的模型,请提交 PR):

  • Megatron-Turing NLG (530B)
  • Jurassic-1 (178B)
  • BLOOM (176B)
  • GLM (130B)
  • xTrimoPGLM (100B)
  • YaLM (100B)
  • GPT-NeoX (20B)
  • AlexaTM (20B)
  • Turing NLG (17B)
  • METRO-LM (5.4B)

DeepSpeed 已与多种不同的流行开源深度学习框架集成,例如:

文档
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传Transformers with DeepSpeed
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传使用 DeepSpeed 加速
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传Lightning with DeepSpeed
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传MosaicML with DeepSpeed
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传Determined with DeepSpeed
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传MMEngine with DeepSpeed


6、构建管道状态

DescriptionStatus
NVIDIA外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
AMD外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
CPU外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
Intel Gaudi外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
Intel XPU外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
PyTorch Nightly外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
Integrations外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
Misc外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、安装

开始使用 DeepSpeed 的最快方法是通过 pip,这将安装最新版本的 DeepSpeed,该版本不依赖于特定的 PyTorch 或 CUDA 版本。

DeepSpeed 包含多个 C++/CUDA 扩展,我们通常将其称为 ops

默认情况下,所有这些 extensions/ops 都将使用 torch 的 JIT C++ 扩展加载器即时构建(JIT),该加载器依赖 ninja在运行时构建和动态链接它们。


要求

  • 在安装 DeepSpeed之前必须安装PyTorch 。
  • 为了获得完整的功能支持,我们建议使用 >= 1.9 的 PyTorch 版本,最好是最新的 PyTorch 稳定版本。
  • CUDA 或 ROCm 编译器,例如nvcc或hipcc,用于编译 C++/CUDA/HIP 扩展。
  • 下面列出了我们开发和测试的特定 GPU,这并不意味着您的 GPU 如果不属于此类别就无法工作,只是 DeepSpeed 在以下方面进行了最充分的测试:
    • NVIDIA:Pascal、Volta、Ampere 和 Hopper 架构
    • AMD:MI100 和 MI200

贡献的硬件支持

  • DeepSpeed 现在支持各种硬件加速器。
贡献者硬件加速器名称贡献者已验证上游验证
华为华为升腾NPU西北大学是的
英特尔英特尔® Gaudi® 2 人工智能加速器高压泵是的是的
英特尔英特尔® 至强® 处理器中央处理器是的是的
英特尔英特尔® 数据中心 GPU Max 系列xpu是的是的

PyPI

我们定期将版本推送到PyPI,并鼓励用户在大多数情况下从那里安装。

pip install deepspeed

安装后,您可以验证安装并通过 DeepSpeed 环境报告查看您的计算机与哪些扩展/操作兼容。

ds_report

如果您想预安装任何 DeepSpeed 扩展/操作(而不是 JIT 编译)或通过 PyPI 安装预编译操作,请参阅我们的高级安装说明。


Windows

DeepSpeed 部分支持 Windows 支持。在 Windows 上,您可以通过以下步骤构建轮子,目前仅支持推理模式。

  1. 安装pytorch,如pytorch 1.8 + cuda 11.1
  2. 安装Visual cpp构建工具,例如VS2019 C++ x64/x86构建工具
  3. 使用管理员权限启动 cmd 控制台以创建所需的符号链接文件夹
  4. 运行以在文件夹python setup.py bdist_wheel中构建轮子dist

特征

请查看DeepSpeed-Training、DeepSpeed-Inference和DeepSpeed- Compression页面,了解这三个支柱提供的全套功能。


三、编写 DeepSpeed 模型

翻译自:https://www.deepspeed.ai/getting-started/ (最后更新于 2024-05-14)

DeepSpeed 模型训练是使用 DeepSpeed 引擎完成的。
该引擎可以包装任何类型的任意模型torch.nn.module,并具有用于训练和检查模型的最小 API 集。请参阅教程以获取详细示例。


初始化 DeepSpeed 引擎:

model_engine, optimizer, _, _ = deepspeed.initialize(args=cmd_args,
                model=model, model_parameters=params)

deepspeed.initialize确保分布式数据并行 或 混合精度训练 所需的所有必要设置 都在幕后适当完成。
除了包装模型之外,DeepSpeed 还可以根据传递给 deepspeed.initialize 和 DeepSpeed 配置文件 的参数构建和管理训练优化器、数据加载器和学习率调度器。
请注意,DeepSpeed 在每个训练步骤中自动执行学习率计划。


如果您已经有分布式环境设置,则需要替换:

torch.distributed.init_process_group(...)

为:

deepspeed.init_distributed()

默认情况下是使用 NCCL 后端,DeepSpeed 已对其进行了全面测试,但您也可以覆盖默认值。

但如果您在 deepspeed.initialize() 之前不需要 分布式环境设置,则不必使用此功能,因为 DeepSpeed 会在其initialize 后自动初始化分布式环境。
无论如何,你需要删除 torch.distributed.init_process_group,如果您已经安装了它。


训练

DeepSpeed 引擎初始化后,就可以使用三个简单的 API 来训练模型,分别用于前向传播(可调用对象)、后向传播 ( backward) 和权重更新 ( step)。


for step, batch in enumerate(data_loader):
    #forward() method
    loss = model_engine(batch)

    #runs backpropagation
    model_engine.backward(loss)

    #weight update
    model_engine.step()

在底层,DeepSpeed 使用预定义的学习率调度程序以混合精度自动执行分布式数据并行训练所需的必要操作:

  • 梯度平均:在分布式数据并行训练中,backward 确保在train_batch_size 训练后,在数据并行过程中 对梯度进行平均。
  • 损失缩放:在 FP16/混合精度训练中,DeepSpeed 引擎自动处理损失缩放以避免梯度中的精度损失。
  • 学习率调度程序:当使用 DeepSpeed 的学习率调度程序(在文件中指定ds_config.json)时,DeepSpeedstep()在每个训练步骤(model_engine.step()执行时)调用调度程序的方法。不使用 DeepSpeed 的学习率调度程序时:
    • 如果计划应该在每个训练步骤执行,则用户可以 在初始化 DeepSpeed 引擎时将计划程序传递给 deepspeed.initialize ,并让 DeepSpeed 管理它以进行更新或保存/恢复。
    • 如果计划应该以任何其他间隔(例如,训练时期)执行,则用户不应在初始化期间将计划程序传递给 DeepSpeed,并且必须显式管理它。

模型检查点

保存和加载训练状态是通过 DeepSpeed 中的save_checkpointload_checkpoint API 处理的,采用两个参数来唯一标识检查点:

  • ckpt_dir:保存检查点的目录。
  • ckpt_id:唯一标识目录中检查点的标识符。

在下面的代码片段中,我们使用损失值作为检查点标识符。


# load checkpoint
_, client_sd = model_engine.load_checkpoint(args.load_dir, args.ckpt_id)
step = client_sd['step']

# advance data loader to ckpt step
dataloader_to_step(data_loader, step + 1)

for step, batch in enumerate(data_loader):

    #forward() method
    loss = model_engine(batch)

    #runs backpropagation
    model_engine.backward(loss)

    #weight update
    model_engine.step()

    #save checkpoint
    if step % args.save_interval:
        client_sd['step'] = step
        ckpt_id = loss.item()
        model_engine.save_checkpoint(args.save_dir, ckpt_id, client_sd = client_sd)

DeepSpeed 可以自动保存和恢复模型、优化器和学习率调度器状态,同时向用户隐藏这些详细信息。
但是,用户可能希望保存给定模型训练所独有的附加数据。为了支持这些项目,
save_checkpoint 接受客户端状态字典client_sd进行保存。
这些项目可以load_checkpoint作为返回参数来检索。
在上面的示例中,该step值存储为client_sd.

重要提示:所有进程都必须调用此方法,而不仅仅是排名为 0 的进程。
这是因为每个进程都需要保存其主权重和调度程序+优化器状态。
如果仅针对排名为 0 的进程调用此方法,则该方法将挂起等待与其他进程同步。


DeepSpeed 配置

可以使用应指定为 .json 的配置 JSON 文件来启用、禁用或配置 DeepSpeed 功能args.deepspeed_config
下面显示了示例配置文件。有关完整的功能集,请参阅API 文档。


{
  "train_batch_size": 8,
  "gradient_accumulation_steps": 1,
  "optimizer": {
    "type": "Adam",
    "params": {
      "lr": 0.00015
    }
  },
  "fp16": {
    "enabled": true
  },
  "zero_optimization": true
}

四、启动 DeepSpeed 训练

deepspeedDeepSpeed 安装启动分布式训练的入口点。我们通过以下假设来说明 DeepSpeed 的示例用法:

  1. 您已经将 DeepSpeed 集成到您的模型中
  2. client_entry.py是您模型的入口脚本
  3. client argsargparse命令行参数
  4. ds_config.json是 DeepSpeed 的配置文件

资源配置(多节点)

DeepSpeed 使用与OpenMPI和Horovod兼容的主机文件配置多节点计算资源 。

主机文件是主机名(或 SSH 别名)(可通过无密码 SSH 访问的计算机)和插槽计数(指定系统上可用的 GPU 数量)的列表。例如,


worker-1 slots=4
worker-2 slots=4

指定名为worker-1worker-2的两台机器各有四个GPU用于训练。

主机文件是使用--hostfile命令行选项指定的。如果未指定主机文件,DeepSpeed 将搜索/job/hostfile.如果未指定或未找到主机文件,DeepSpeed 会查询本地计算机上的 GPU 数量以发现可用的本地插槽数量。

以下命令在 中指定的所有可用节点和 GPU 上启动 PyTorch 训练作业myhostfile

deepspeed --hostfile=myhostfile <client_entry.py> <client args> \
  --deepspeed --deepspeed_config ds_config.json

或者,DeepSpeed 允许您将模型的分布式训练限制为可用节点和 GPU 的子集。此功能通过两个命令行参数启用:--num_nodes--num_gpus。例如,可以使用以下命令将分布式训练限制为仅使用两个节点:


deepspeed --num_nodes=2 \
	<client_entry.py> <client args> \
	--deepspeed --deepspeed_config ds_config.json

--include您可以使用和 --exclude 标志来包含或排除特定资源。

例如,要使用节点 worker-2上 除 GPU 0 之外的所有可用资源以及 worker-3 上的GPU 0和1 :

deepspeed --exclude="worker-2:0@worker-3:0,1" \
	<client_entry.py> <client args> \
	--deepspeed --deepspeed_config ds_config.json

同样,您只能在 worker-2 上使用GPU 0和1 :

deepspeed --include="worker-2:0,1" \
	<client_entry.py> <client args> \
	--deepspeed --deepspeed_config ds_config.json

多节点环境变量

当跨多个节点进行训练时,我们发现支持传播用户定义的环境变量很有用。

默认情况下,DeepSpeed 将传播设置的所有 NCCL 和 PYTHON 相关环境变量。

如果您想传播其他变量,您可以在名为的点文件中指定它们,.deepspeed_env该文件包含换行符分隔的条目列表 VAR=VAL

DeepSpeed 启动器将查找您正在执行的本地路径以及您的主目录 ( ~/)。

如果您想用自己的文件或路径和名称覆盖该文件的默认名称,则可以使用环境变量DS_ENV_FILE.如果您要启动多个需要不同变量的作业,这非常有用。

作为一个具体示例,某些集群需要在训练之前设置特殊的 NCCL 变量。用户可以简单地将这些变量添加到 .deepspeed_env其主目录中的文件中,如下所示:


NCCL_IB_DISABLE=1
NCCL_SOCKET_IFNAME=eth0

然后,DeepSpeed 将确保在训练作业中的每个节点上启动每个进程时设置这些环境变量。


MPI 和 AzureML 兼容性

如上所述,DeepSpeed 提供了自己的并行启动器来帮助启动多节点/多 GPU 训练作业。如果您更愿意使用 MPI(例如 mpirun)启动训练作业,我们会为此提供支持。应该注意的是,DeepSpeed 仍将使用 torch 分布式 NCCL 后端,而不是MPI 后端。

要使用 mpirun + DeepSpeed 或 AzureML(使用 mpirun 作为启动器后端)启动训练作业,您只需安装 mpi4py python 包。 DeepSpeed 将使用它来发现 MPI 环境并将必要的状态(例如,世界大小、等级)传递到火炬分布式后端。

如果您使用模型并行性、管道并行性,或者在调用之前需要 torch.distributed 调用,deepspeed.initialize(..)我们会通过额外的 DeepSpeed API 调用提供相同的 MPI 支持。将您的初始 torch.distributed.init_process_group(..)呼叫替换为:


deepspeed.init_distributed()

资源配置(单节点)

如果我们仅在单个节点(具有一个或多个 GPU)上运行,则 DeepSpeed不需要如上所述的主机文件。如果未检测到或未传入主机文件,则 DeepSpeed 将查询本地计算机上的 GPU 数量,以发现可用插槽的数量。和--include参数 --exclude正常工作,但用户应指定“localhost”作为主机名。

另请注意,CUDA_VISIBLE_DEVICES不能与 DeepSpeed 一起使用来控制应使用哪些设备。例如,要仅使用当前节点的 gpu1,请执行以下操作:


deepspeed --include localhost:1 ...

2024-05-15(三)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/630003.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

公共命名空间和RHP

概述 RHP的全称是&#xff1a;the little Robot that Helped me Program&#xff0c;帮我编程序的小机器人。 RHP必然存在&#xff0c;C语言的宏、C的模板&#xff0c;都是RHP&#xff1b;更复杂的例子&#xff0c;是lex和yacc&#xff0c;它们是制作程序的程序&#xff0c;也…

UE5C++ FString做为参数取值时报错error:C4840

问题描述 用来取FString类型的变量时报错&#xff1a; 问题解决 点击错误位置&#xff0c;跳转到代码&#xff1a; void AMyDelegateActor::TwoParamDelegateFunc(int32 param1, FString param2) {UE_LOG(LogTemp, Warning, TEXT("Two Param1:%d Param2:%s"), param…

Linux基本工具的使用

什么是工具&#xff1f; 在Linux中&#xff0c;工具的本质也是指令&#xff0c;只是因为这些指令与我们的开发的关系不是很大&#xff0c;所以就被称为工具 1 软件包管理器yum 在我们的Windows上如果想要安装软件&#xff0c;第一件事就是要先下载软件安装包&#xff0c;然后…

VUE之旅—day2

文章目录 Vue生命周期和生命周期的四个阶段created应用—新闻列表渲染mounted应用—进入页面搜索框就获得焦点账单统计&#xff08;Echarts可视化图表渲染&#xff09; Vue生命周期和生命周期的四个阶段 思考&#xff1a; 什么时候可以发送初始化渲染请求&#xff1f;&#xff…

Spring 各版本发布时间与区别

版本版本特性Spring Framework 1.01. 所有代码都在一个项目中 2. 支持核心功能IoC、AOP 3. 内置支持Hibernate、iBatis等第三方框架 4. 对第三方技术简单封装。如&#xff1a;JDBC、Mail、事务等 5. 只支持XML配置方式。6.主要通过 XML 配置文件来管理对象和依赖关系&#xff0…

首次曝光!我喂了半年主食冻干,喵状态真滴顶~

科学养猫理念的推广&#xff0c;使得主食冻干喂养越来越受到养猫者的欢迎。主食冻干不仅符合猫咪的自然饮食习惯&#xff0c;还能提供丰富的营养&#xff0c;有助于保持猫咪的口腔和消化系统健康。我家喂了半年主食冻干&#xff0c;猫咪的状态是真的不一样了&#xff01; 然而…

P9748 [CSP-J 2023] 小苹果 / P7071 [CSP-J2020] 优秀的拆分:做题笔记

目录 P9748 [CSP-J 2023] 小苹果 思路 代码 P7071 [CSP-J2020] 优秀的拆分 思路 代码 P9748 [CSP-J 2023] 小苹果 P9748 [CSP-J 2023] 小苹果 思路 先写几个看看规律 题意我们能看出来是三个三个一组的&#xff0c;然后每次取走的都是三个里面的第一个。我们应该很容易…

23.HashMap的put方法流程

一、put方法的流程图 二、put方法的执行步骤 首先&#xff0c;根据key值计算哈希值。然后判断table数组是否为空或者数组长度是否为0&#xff0c;是的话则要扩容&#xff0c;resize&#xff08;&#xff09;。接着&#xff0c;根据哈希值计算数组下标。如果这个下标位置为空&a…

Linux平台和Windows平台互传文件

rz和sz的出发对象都是从Linux出发的&#xff0c;例如sz发送&#xff08;Send&#xff09;从Linux->发送到Windows。 rz 从Windows文件发送到Linux中 先创立一个新文本文件 之后将hello Windows输入到该文本文件中 在显示器上显示里面是否有hello Windows内容 sz发送Lin…

【SpringBoot】SpringBoot整合jasypt进行重要数据加密

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 &#x1f4d5;jasypt简介 &#x1f525;SpringBoot使用jasypt &#x1f4c2;创建我需要的数据库文件 &#x1f4d5;引入依赖 &#x1f513;配置数据库文件&#xff08;先不进行加密&#xff09; &#x1f319;创…

暴利 选品大课:选品决定成败,教你多种大爆款选品方法(12节课)

课程目录 001.第一讲:选品决定成败.mp4 002.第二讲:选品也有生辰八字,mp4 003.第三讲:高热度选品底层逻辑,mp4 004,第四讲:高动销选品底层逻辑,mp4 005,第五讲:高点击选品底层逻辑,mp4 006.第六讲:高转化选品底层逻辑.mp4 007.第七讲:低付费选品底层逻辑.mp4 008,第八讲…

kubernetes多master集群架构

一、完成master02节点的初始化操作 master02环境准备&#xff0c;详细过程参考上一期博客环境准备 #添加主机映射 vim /etc/hosts 192.168.88.3 master01 192.168.88.8 master02 192.168.88.4 node01 192.168.88.5 node021、准备master02节点需要的文件 从 master01 节点上拷…

USB-OTG:1、OTG原理介绍

目录 &#x1f345;点击这里查看所有博文 随着自己工作的进行&#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是&#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了&#xff0c;只有经常会用到的东西才有可能真正记…

2024042002-计算机网络 - 应用层

计算机网络 - 应用层 计算机网络 - 应用层 域名系统文件传送协议动态主机配置协议远程登录协议电子邮件协议 1. SMTP2. POP33. IMAP 常用端口Web 页面请求过程 1. DHCP 配置主机信息2. ARP 解析 MAC 地址3. DNS 解析域名4. HTTP 请求页面 域名系统 DNS 是一个分布式数据库&…

GPT-4o 炸裂发布!你竟然还没用上?(附详细教程)

今天AI界的爆炸新闻非chatgpt-4o莫属&#xff0c;从早上到现在随处可见的文章推送&#xff0c;视频推送。 大家或多或少都有耳闻了&#xff0c;今天主要讲一讲我们普通人到底怎么用&#xff1f;如果不氪金行不行&#xff1f;我就想体验一下可不可以&#xff1f;带着问题往下看 …

应用层之 HTTP 协议

HTTP 协议 HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的 应用层协议。所谓 "超文本" 的含义, 就是传输的内容不仅仅是文本(比如 html, css 这个就是文本), 还可以是一些 其他的资源, 比如图片, 视频, 音频等二进制的数据。浏览器获取到网页&#…

618洗地机如何选?洗地机哪个牌子好?洗地机详解

快节奏的生活方式使得清洁工作成为许多人难以应付的任务。不过&#xff0c;洗地机的出现为这个问题提供了完美的解决方案。洗地机以其强劲的吸力和高效的清洁功能&#xff0c;能够快速清理地面的污渍和灰尘&#xff0c;极大地提升了清洁效率。不仅如此&#xff0c;洗地机的操作…

C语言/数据结构——栈的实现

一.前言 今天我们讲解新的领域——栈。 二.正文 1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其允许在固定的一段进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#…

详解绝对路径和相对路径的区别

绝对路径和相对路径是用于描述文件或目录在文件系统中位置的两种不同方式。 绝对路径&#xff08;Absolute Path&#xff09;是从文件系统的根目录开始的完整路径&#xff0c;可以唯一地确定一个文件或目录的位置。在不同的操作系统中&#xff0c;根目录的表示方式可能略有不同…

浅析扩散模型与图像生成【应用篇】(二十五)——Plug-and-Play

25. Plug-and-Play: Diffusion Features for Text-Driven Image-to-Image Translation 该文提出一种文本驱动的图像转换方法&#xff0c;输入一张图像和一个目标文本描述&#xff0c;按照文本描述对输入图像进行转换&#xff0c;得到目标图像。图像转换任务其实本质上属于图像编…