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

部署 DeepSpeed以推理 defog/sqlcoder-70b-alpha 模型

部署 DeepSpeed 以推理 defog/sqlcoder-70b-alpha 这样的 70B 模型是一个复杂的过程,涉及多个关键步骤。下面是详细的步骤,涵盖了从模型加载、内存优化到加速推理的全过程。

1. 准备环境

确保你的环境配置正确,以便能够顺利部署 defog/sqlcoder-70b-alpha 模型。

系统要求:
  • CUDA 版本:确保安装的 CUDA 版本支持你正在使用的 GPU(例如 A100 或 H100,通常需要 CUDA 11.x 或更高版本)。
  • NVIDIA GPU 驱动:确保你的 GPU 驱动版本兼容 CUDA。
  • Python 环境:建议使用虚拟环境或 Conda 环境来管理 Python 依赖。
# 创建并激活一个虚拟环境
python3 -m venv deepspeed_env
source deepspeed_env/bin/activate
安装 DeepSpeed 和所需依赖:
pip install deepspeed
pip install torch
pip install transformers
安装 NVIDIA 工具包:

如果你打算使用 TensorRT 和量化推理,你需要安装 NVIDIA TensorRT

# 安装 TensorRT 和相关库
pip install nvidia-pyindex
pip install nvidia-tensorrt

2. 下载 defog/sqlcoder-70b-alpha 模型

你需要从模型存储库或相关网站下载 defog/sqlcoder-70b-alpha 模型权重文件。如果模型在 Hugging Face 或其他平台提供下载,使用以下命令:

git lfs install
git clone https://huggingface.co/defog/sqlcoder-70b-alpha

3. 配置 DeepSpeed

DeepSpeed 提供了多种优化模式,如 ZeRO 优化(ZeRO Stage 1, 2, 3)和 混合精度推理(FP16)。在部署大模型时,我们将结合这些技术进行优化。

配置文件:deepspeed_config.json

创建一个 DeepSpeed 配置文件,用于指定优化和并行化策略。以下是一个针对大模型推理的典型配置:

{"train_batch_size": 1,"steps_per_print": 1,"gradient_accumulation_steps": 1,"zero_optimization": {"stage": 2,"offload_param": true,"offload_optimizer": false,"offload_activations": true,"overlap_comm": true},"fp16": {"enabled": true,"loss_scale": 0,"initial_scale_power": 16,"fp16_opt_level": "O2"},"activation_checkpointing": {"checkpoint_interval": 1,"offload_activations": true},"wall_clock_breakdown": true,"optimizer": {"type": "Adam","params": {"lr": 1e-5}},"multi_gpu": true
}
  • Zero Optimization:选择 Stage 2 优化,允许将模型参数卸载到 CPU 内存,以减少 GPU 显存占用。
  • FP16:启用混合精度推理来加速计算,减少显存使用。
  • 激活检查点:减少 GPU 显存消耗,通过将中间激活值卸载到 CPU 来节省内存。
  • 多卡支持:确保多 GPU 模式开启以支持模型并行。

4. 加载模型和 DeepSpeed 配置

你需要在代码中加载 defog/sqlcoder-70b-alpha 模型,并将 DeepSpeed 配置应用到模型上。

以下是一个 Python 示例,展示如何加载模型并使用 DeepSpeed 启动推理:

import deepspeed
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer# 1. 加载模型和分词器
model_name = "defog/sqlcoder-70b-alpha"  # 模型路径或 HuggingFace 仓库
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)# 2. 配置 DeepSpeed
deepspeed_config = "deepspeed_config.json"  # 你的 DeepSpeed 配置文件# 3. 使用 DeepSpeed 初始化模型
model = deepspeed.init_inference(model, config_params=deepspeed_config)# 4. 推理示例
inputs = tokenizer("SELECT * FROM users WHERE id = 1;", return_tensors="pt")
inputs = {key: value.cuda() for key, value in inputs.items()}  # 将输入迁移到 GPUwith torch.no_grad():outputs = model.generate(inputs["input_ids"], max_length=100)# 解码输出
output_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(output_text)

5. 优化推理性能

  • Tensor Parallelism:对于 70B 这种超大模型,通常会选择 模型并行(Tensor Parallelism)。如果你在多个 GPU 上运行模型,可以通过 deepspeed 配置实现模型的并行化。

    在 DeepSpeed 中,启用 Tensor Parallelism 让每个 GPU 只运行模型的某个部分,减少显存占用并提高计算速度。

    示例配置:

    {"tensor_parallel_degree": 8
    }
    
  • 激活卸载:启用激活卸载(offload_activations)将中间激活卸载到 CPU 内存,进一步减少 GPU 显存的使用。

6. 量化推理(Optional)

为了进一步减少显存使用并加速推理,你可以将模型量化为 INT8。这可以通过 TensorRTDeepSpeed 配合 INT8 实现。

  • 使用 DeepSpeed 进行 INT8 量化

    "fp16": {"enabled": true
    },
    "int8": {"enabled": true
    }
    
  • 使用 TensorRT 加速推理。对于 NVIDIA GPU,转换为 TensorRT 引擎并进行推理,能显著提升性能。

7. 推理结果监控与优化

推理时,记得监控 GPU 显存使用量计算吞吐量延迟,以确保推理过程高效无瓶颈。你可以通过 nvidia-sminvidia-smi dmon 等工具监控 GPU 状态。

8. 优化建议

  • 批处理大小(Batch Size):根据 GPU 显存和推理需求调整批处理大小。虽然 70B 模型需要在多 GPU 环境下运行,但批量处理可以加速推理。
  • 流式推理(Streaming Inference):在推理过程中,可以采用流式推理方法,以便实现更低的延迟,特别是在实时应用中。

总结:

部署 DeepSpeed 来推理 defog/sqlcoder-70b-alpha 模型的核心步骤包括:

  1. 环境准备:安装 DeepSpeed 和相关依赖。
  2. DeepSpeed 配置:设置 deepspeed_config.json 文件,启用 ZeRO 优化、混合精度(FP16)、激活卸载等。
  3. 加载模型并应用 DeepSpeed:加载模型并使用 DeepSpeed 进行推理初始化。
  4. 优化推理性能:使用模型并行、Tensor Parallelism 和激活卸载来优化显存和计算效率。
  5. 量化推理:使用 INT8 量化推理进一步提高性能(可选)。
  6. 监控推理过程:实时监控 GPU 状态并调整参数以优化性能。

通过这些步骤,你可以成功部署和优化 defog/sqlcoder-70b-alpha 模型,确保推理过程高效且低延迟。

相关文章:

部署 DeepSpeed以推理 defog/sqlcoder-70b-alpha 模型

部署 DeepSpeed 以推理 defog/sqlcoder-70b-alpha 这样的 70B 模型是一个复杂的过程,涉及多个关键步骤。下面是详细的步骤,涵盖了从模型加载、内存优化到加速推理的全过程。 1. 准备环境 确保你的环境配置正确,以便能够顺利部署 defog/sqlc…...

node.js基础学习-http模块-创建HTTP服务器、客户端(一)

http模块式Node.js内置的模块,用于创建和管理HTTP服务器。Node.js使用JavaScript实现,因此性能更好。 使用http模块创建服务器,我们建议使用commonjs模块规范,因为很多第三方的组件都使用了这种规范。当然es6写法也支持。 下面就是…...

Cobalt Strike 4.8 用户指南-第十一节 C2扩展

11.1、概述 Beacon 的 HTTP 指标由 Malleable Command and Control (Malleable C2) 配置文件控制。Malleable C2 配置文件是一个简单的程序,它指定如何转换数据并将其存储在事务中。转换和存储数据的同一程序(向后解释&#xff0…...

STM32 使用ARM Compiler V6 编译裸机 LWIP协议栈报错的解决方法

在lwip 的cc.h 中使用以下宏定义,来兼容 V5 和 V6编译器 #if defined (__ARMCC_VERSION) && (__ARMCC_VERSION > 6010050) /* ARM Compiler V6 */ #define __CC_ARM /* when use v6 compiler define this */ #endifV6编译的速度确实比V5块了好多倍。 …...

K8S简介、使用教程

以下是关于 Kubernetes(通常缩写为 K8S)的简介和使用教程: 一、Kubernetes 简介 定义与作用 Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由谷歌开发,后捐赠给云原生计算基…...

Scala—Map用法详解

Scala—Map用法详解 在 Scala 中,Map 是一种键值对的集合,其中每个键都是唯一的。Scala 提供了两种类型的 Map:不可变 Map 和可变 Map。 1. 不可变集合(Map) 不可变 Map 是默认的 Map 实现,位于 scala.co…...

2024御网杯信息安全大赛个人赛wp(misc方向)

目录 一.信息安全大赛的通知二、编码转换1. 第一部分2. 第二部分3. 第三部分 三、1.txt四、buletooth 题目附件以及工具链接: 通过网盘分享的文件:御网杯附件 链接: https://pan.baidu.com/s/1LNA6Xz6eZodSV0Io9jGSZg 提取码: jay1 –来自百度网盘超级会…...

DeepSpeed 配置文件(DeepSpeed Configuration Files)详解:中英文解释

中文版 本文详细介绍 DeepSpeed 配置文件,结合 4 卡 3090 的实际使用场景,重点解释各个参数的含义,并提供应对爆显存的方案。 DeepSpeed 配置文件详解:从基础到实战 DeepSpeed 是用于加速大规模分布式训练的重要工具&#xff0c…...

AI 助力开发新篇章:云开发 Copilot 深度体验与技术解析

本文 一、引言:技术浪潮中的个人视角1.1 AI 和低代码的崛起1.2 为什么选择云开发 Copilot? 二、云开发 Copilot 的核心功能解析2.1 自然语言驱动的低代码开发2.1.1 自然语言输入示例2.1.2 代码生成的模块化支持 2.2 实时预览与调整2.2.1 实时预览窗口功能…...

QTableWidget使用代理绘制分行显示

在这里插入代码片# 创建主窗口类: 使用 QTableWidget 作为核心控件。 设置表头及行列信息。 自定义代理: 继承 QStyledItemDelegate,实现代理模式。 重写 paint 和 sizeHint 方法,支持多行文本绘制。 设置行高以适应多行显示。 …...

Linux系统之fuser命令的基本使用

Linux系统之fuser命令的基本使用 一、fuser命令介绍二、fuser命令使用帮助2.1 help帮助信息2.1 基本语法①通用选项②文件/设备相关选项③网络相关选项④进程操作选项⑤其他选项 三、fuser命令的基本使用3.1 查找挂载点的进程3.2 查看指定设备进程信息3.3 查找监听特定端口的进…...

解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题

解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题 一、错误原因分析二、解决方法方法一:使用`dos2unix`工具方法二:使用`sed`命令方法三:使用`tr`命令方法四:在文本编辑器中转换方法五:在Windows系统中使用适当的工具三、预防措施四、总结在使…...

【时时三省】(C语言基础)结构体的声明

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 数组是一组相同类型的元素的集合 结构体也是一些值的集合,结构的每…...

群聊前选择患者功能的实现

和普通群聊不同,开启一个图文会话聊天,必须先选择患者、团队、医生。 原来是集成到腾讯IM当中,现在需要单独写一个页面 原来的代码在这里: const handleShow () > {uni.navigateTo({url: /pageB/active-home/active-home})}…...

目标检测,图像分割,超分辨率重建

目标检测和图像分割 目标检测和图像分割是计算机视觉中的两个不同任务,它们的输出形式也有所不同。下面我将分别介绍这两个任务的输出。图像分割又可以分为:语义分割、实例分割、全景分割。 语义分割(Semantic Segmentation)&…...

关于 EKS Bottlerocket AMI 版本与 Karpenter 配置的说明

问题1: Bottlerocket AMI 版本问题 之前,后端团队发现在使用 Bottlerocket v1.26.2 AMI 版本时,存在某些问题。经过 Bottlerocket 团队调查,此行为是罕见的 race condition 导致的结果。 我们在环境中重现了此状况,并且关注到由于 kubelet device manager 的启动时间晚于 NVI…...

安全设备-日志审计-网络路由配置

1 网络设置 菜单项‘网络’‘网络设置’子项。进入网卡列表展示页面。点击操作列‘编辑’图标,可编辑对应网卡信息。 图11-1 网卡信息 设备接口的 GE0/1 接口IP:192.168.0.1子网掩码:255.255.255.0 图11-2 配置网卡 1 IP地址2 子网掩码3 主机DNS4 备份DNS 2 通…...

Linux服务器生成SSH 密钥对与 GitLab 仓库进行交互

目录 生成 SSH 密钥对 将公钥添加到 GitLab 测试 SSH 连接 生成 SSH 密钥对 在执行脚本的机器上打开终端,执行以下命令(假设使用默认的 RSA 算法,一路回车使用默认设置即可,也可以根据需要指定其他算法和参数)&…...

react 的路由功能

1. 安装依赖 pnpm add react-router-dom 2. 基本的路由设置(BrowserRouter) 在 main.tsx 入口文件中使用BrowserRouter组件来包裹整个应用。它会监听浏览器的 URL 变化。 import { StrictMode } from "react";import { createRoot } from …...

vscode python code runner执行乱码

打开vscode code runner插件配置,如图所示: 然后在setting.json修改运行python的默认命令: 将原来 替换成 "python":"set PYTHONIOENCODINGutf8 && python", 参考:Vscode——python环境输出中文乱…...

Element UI 打包探索【3】

目录 第九个命令 node build/bin/gen-cssfile gulp build --gulpfile packages/theme-chalk/gulpfile.js cp-cli packages/theme-chalk/lib lib/theme-chalk 至此,dist命令完成。 解释why Element UI 打包探索【1】里面的why Element UI 打包探索【2】里面…...

windows使用docker安装centos7

参考文章:docker容器安装CentOS7.9 需要指出来的步骤 2.5 安装常用工具及ssh服务 由于centos7不维护,需要更换镜像源才能正常使用yum install命令安装 更换镜像源文章:CentOS 7配置yum镜像源 2.9Xshell远程连接docke_centos7.9 文章没有指…...

写一个流程,前面的圆点和线,第一个圆上面没有线,最后一个圆下面没有线

上图 最近写类似于这种的还挺多的&#xff0c;记录一下css方法 遍历列表之后 <div class"item" v-for"(item,index) in recordList"> 加这样一个盒子 <div class"timeline"> <div class"line1" v-if"index ! 0&…...

Javascript Insights: Visualizing Var, Let, And Const In 2024

11/2024 出版 MP4 |视频&#xff1a;h264&#xff0c; 19201080 |音频&#xff1a;AAC&#xff0c;44.1 KHz 语言&#xff1a;英语 |大小&#xff1a; 2.96 GB |时长&#xff1a; 5 小时 34 分钟 为所有认真的 JavaScript 开发人员可视化与 VAR、LET、CONST 和 EXECUTON CONTE…...

【工具】AI 工具集整理推荐

ai工具集 我私人使用了一段时间&#xff0c;效果不错&#xff0c;有很多AI工具&#xff0c;可以提升工作的效率。...

如何通过终端连接无线网

1 先连接对方服务器 ssh root192.168.3.219 # root是用户名字 192.168.3.219是对方的ip地址2 开启 WiFi&#xff1a;输入sudo nmcli r wifi on&#xff0c;开启系统的无线网络功能 sudo nmcli r wifi on3 扫描附近的 WiFi 热点&#xff1a;执行sudo nmcli dev wifi&#x…...

elasticsearch报错fully-formed single-node cluster with cluster UUID

1.问题描述 k8s集群内部署的es中间件起不来&#xff0c;查看日志发现如下警告&#xff0c;节点发现功能开启&#xff0c;但是目前我是单节点服务&#xff0c;所以尝试编辑sts将节点发现功能去掉或者在部署时将你的sts的yaml文件和chart文件修改重新部署以去掉该功能 {"t…...

前端 vue3 + element-plus + ts 对话框示例

【父组件】&#xff1a;SampleInput.vue&#xff0c;局部代码片段 引入子组件 ApplyItemChooseDialog.vue&#xff0c;定义变量&#xff0c;用于渲染和显示标识 <script>片段代码 import ApplyItemChooseDialog from "/views/accept/ApplyItemChooseDialog.vue&q…...

南京移动“智慧+关怀”服务体系助力老年群体生活安全有保障

在数字化浪潮汹涌澎湃的当下&#xff0c;江苏移动南京分公司秉持“人民邮电为人民”的服务理念&#xff0c;推出一系列创新服务举措&#xff0c;为社区老年群体提供贴心、便捷的数字服务&#xff0c;让老人在享受科技发展成果的同时&#xff0c;感受到社会的温暖与关怀。 贴心…...

Elasticsearch 安全特性讲解与使用

Elasticsearch安全特性讲解与使用指南 1. Elasticsearch概览1.1 简介1.2 应用场景1.3 核心特性2. Elasticsearch安全特性2.1 安全性的重要性2.2 权限控制用户身份验证角色管理访问控制列表(ACL)2.3 数据加密数据传输加密数据静态加密2.4 审计日志2.5 IP筛选2.6 案例分析案例背景…...

第12章 手写Spring MVC

第十二章 手写Spring MVC 12.1 基本结构搭建 12.1.1 创建Maven模块 12.1.2 引入Servlet依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XM…...

C#基础31-35

31.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入student数组中。找出成绩最低的学生记录(假定最低成绩的记录是唯一的)并输出。 32.在键盘上任意输入一个字符串,该字符串全部由英文字母组成,把字符串中的最后一个字符的ASCII值右移4位后加最后第二个字符的ASCII…...

GPT相关的学术库——收藏更新自用

GOT-OCR2.0 General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model https://github.com/Ucas-HaoranWei/GOT-OCR2.0/tree/main ChatPaper 工具名称工具作用是否在线&#xff1f;在线预览备注ChatPaper通过ChatGPT实现对论文进行总结&#xff0c;帮助科研人进…...

速度革命:esbuild如何改变前端构建游戏 (1)

什么是 esbuild&#xff1f; esbuild 是一款基于 Go 语言开发的 JavaScript 构建打包工具&#xff0c;以其卓越的性能著称。相比传统的构建工具&#xff08;如 Webpack&#xff09;&#xff0c;esbuild 在打包速度上有着显著的优势&#xff0c;能够将打包速度提升 10 到 100 倍…...

AR商业化的“AI转身”

AI会不会是AR厂商良药&#xff1f; 作者|周立青 编辑|杨舟 11月&#xff0c;国内“AR四小龙”之一的Rokid举办了新品发布会&#xff0c;在发布会的同步直播间&#xff0c;出现了一条不合时宜的“什么时候发去年的工资”的评论。 “公司确实没有给我们发2023年的十三薪和年终…...

Python 中的装饰器是什么?

装饰器是Python中一种非常强大的功能&#xff0c;它允许你在不修改原始函数代码的前提下&#xff0c;增加额外的功能或改变函数的行为。 装饰器本质上是一个接受函数作为参数的函数&#xff0c;并返回一个新的函数。 通过装饰器&#xff0c;我们可以轻松地实现诸如日志记录、…...

jupyter notebook的 markdown相关技巧

目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点&#xff1a;一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果&#xff1a;加粗&#xff0c;斜体&#x…...

oracle 创建只可以查询权限用户+sqldeveloper如何看到对应表

声明 申明部分是从其他csdn用户哪里复制的&#xff0c;只是自己操作后发现无法达到我最后的预期&#xff0c;所以关闭忘记是看的那篇了&#xff0c;如果有侵权请见谅&#xff0c;联系我删除谢谢。 好了&#xff0c;故事的开始是我最近删投产表了。没错职业黑点&#xff0c;清…...

化工行业 FMEA 与安全生产的关系

【大家好&#xff0c;我是唐Sun&#xff0c;唐Sun的唐&#xff0c;唐Sun的Sun。】 在化工行业这个充满复杂性和潜在危险的领域中&#xff0c;确保安全生产是至关重要的目标。失效模式及影响分析&#xff08;FMEA&#xff09;作为一种有效的风险管理工具&#xff0c;在保障化工行…...

前端node.js

一.什么是node.js 官网解释:Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。 二.初步使用node.js 需要区分开的是node.js和javascript互通的只有console和定时器两个API. 三.Buffer Buffer 是一个类似于数组的 对象&#xff0c;用于表示固定长度的字节序列。Buffer…...

深度学习:GPT-2的MindSpore实践

GPT-2简介 GPT-2是一个由OpenAI于2019年提出的自回归语言模型。与GPT-1相比&#xff0c;仍基于Transformer Decoder架构&#xff0c;但是做出了一定改进。 模型规格上&#xff1a; GPT-1有117M参数&#xff0c;为下游微调任务提供预训练模型。 GPT-2显著增加了模型规模&…...

Java线程池详解:从基础到实践

Java线程池详解&#xff1a;从基础到实践 在现代多线程编程中&#xff0c;线程池是一个非常重要的工具。它能帮助开发者更高效地管理线程资源&#xff0c;避免频繁创建和销毁线程导致的性能损耗&#xff0c;并提供更灵活的任务调度机制。本文将详细讲解线程池相关知识&#xf…...

A*(A-star)算法

概述 A*&#xff08;A-star&#xff09;算法是一种在图中寻找从初始节点到目标节点最短路径的启发式搜索算法。它结合了Dijkstra算法的确保性&#xff08;保证找到一条最短路径&#xff09;和贪心算法的高效性&#xff08;快速找到目标&#xff09;。A*算法通过评估函数f(n) …...

计算机类大厂实习春招秋招开发算法面试问答练习题

计算机类大厂实习春招秋招开发算法面试问答练习题 下面有十个非常重要且常问,面试者却注意不到的问题,我们一个个来看,一个个来学。 线程创建到删除过程中,底层是怎么实现的 1.线程创建 线程创建是线程生命周期的起点。在操作系统中,线程可以通过多种方式创建,但无论哪…...

C++ 11重点总结1

智能指针 智能指针: C11引入了四种智能指针: auto_ptr(已弃用)、unique_ptr、shared_ptr和weak_ptr。智能指针可以更有效地管理堆内存,并避免常见的内存泄漏问题。 shared_ptr: 自定义删除器。 shared_ptr使用引用计数来管理它指向的对象的生命周期。多个shared_ptr实例可以指向…...

Java异常

目录 一、异常的层次结构 1.1、Throwable 1.2、Error&#xff08;错误&#xff09; 1.3、Exception&#xff08;异常&#xff09; 运行时异常 非运行时异常 &#xff08;编译异常&#xff09; 1.4、可查的异常&#xff08;checked exceptions&#xff09;和不可查的异常…...

《热带气象学报》

《热带气象学报》创刊于1984年&#xff0c;前身为《热带气象》&#xff0c;1993年更名为《热带气象学报》&#xff0c;是广东省气象局主管&#xff0c;中国气象局广州热带海洋气象研究所主办的中文学术期刊。 本刊坚持“热带气象”的办刊特色&#xff0c;主要刊登&#xff1a;…...

解决docker不加载 /etc/docker/daemon.json文件的问题

文章目录 问题起源解决方案问题反思 问题起源 如题&#xff0c;最近在ubuntu24.04-LTS-server安装docker时&#xff0c;安装成功后设置源来设置镜像。 设置完成功拉取镜像&#xff0c;我就关机下次使用。 但是当我重启发现呢&#xff0c;镜像都不在了&#xff0c;但是由于网络…...

数据结构(初阶7)---七大排序法(堆排序,快速排序,归并排序,希尔排序,冒泡排序,选择排序,插入排序)(详解)

排序 1.插入排序2.希尔排序3.冒泡排序4.选择排序(双头排序优化版)5.堆排序6.快速排序1). 双指针法2).前后指针法3).非递归法 7.归并排序1).递归版本(递归的回退就是归并)2).非递归版本(迭代版本) 计算机执行的最多的操作之一就有排序&#xff0c;排序是一项极其重要的技能 接下…...

题解 洛谷 Luogu P1182 数列分段 Section II 二分答案 C/C++

题目传送门&#xff1a; P1182 数列分段 Section II - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P1182思路&#xff1a; 二分答案&#xff0c;每次以区间 [l, r] 中点 m 为每段和的阈值 判断在此前提下&#xff0c;划分段数是否不大于 M 是就记录答案…...