作者 | 吴梓洋 背 景 在 2018 年底,vivo AI 研究院为了解决统一的高性能训练环境、大规模的分布式训练、计算资源的高效利用调度等痛点,着手建设 AI 计算平台。 本文是 vivo AI 计算平台技术演进系列文章之一,着重分享了平台在 Kubernetes 上遇到的疑难杂症和解决方法。 完整的编译命令是在 k8s 项目的根路径下执行: . 相关文章: 《Kube-batch 在 vivo AI 计算平台的应用》 https://www.infoq.cn/article/PH7xwdf-qAUE3yTADsrV 《从 VETH 到 Kubernetes 研究院计算平台组的资深工程师,也是 kube-batch, tf-operator 等项目的 contributor,关注 K8s、容器等云原生技术。
作者 | 刘东阳 审校 | 赵钰莹 2018 年底,vivo AI 研究院为了解决统一高性能训练环境、大规模分布式训练、计算资源的高效利用调度等痛点,着手建设 AI 计算平台。 经过四年多的持续迭代,平台建设和落地取得了很大进展,成为 vivo AI 领域的核心基础平台。 本文是 vivo AI 计算平台实战 系列文章之一,主要分享了平台在资源配额管理方面的实践。 K8s 乐观锁实现原理 K8s 乐观锁的实现,有两个前提: · 一是 K8s 资源对象的 resourceVersion 是基于 etcd 的 revision,revision 的值是全局单调递增的, 作者介绍: 刘东阳,vivo AI 研究院计算平台组的资深工程师,曾就职于金蝶、蚂蚁金服等公司;关注 K8s、容器等云原生技术。 点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!
Java 8 Stream简介 从Java 8 开始,我们可以使用Stream接口以及lambda表达式进行“流式计算”。它可以让我们对集合的操作更加简洁、更加可读、更加高效。 class StreamDemo { public static void main(String[] args) { Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 3 main: 3 + 3 = 6 main: 6 + 4 = 10 main: 10 + 5 = 15 main: 15 + 6 = 21 main: 21 + 7 = 28 main: 28 + 8 但Java8提供了并行式的流式计算,大大简化了我们的代码量,使得我们只需要写很少很简单的代码就可以利用计算机底层的多核资源。 ---- 参考资料:《Java 8 Stream并行计算原理》
1.串行计算的模拟运行时间(time=532) 2.CompleteFuture并行计算(time=231) 3.Callable并行计算 (time=208) Java8 多线程及并行计算demo * https://www.cnblogs.com/oktokeep/p/16639417.html 需求背景:比如一个大的对象(userInfo),包含3个部分的集合等数据的计算,查询等。 可以启动3个多线程来并行计算。最后计算完毕之后,组装对象,并行计算完毕。 1.串行计算的模拟运行时间 package com.example.core.mydemo.bean; import com.example.core.mydemo.json2.GsonUtils; java.util.concurrent.Executors; /** * userInfo={"username":"刘德华","sex":"男","age":30},time=231 * * Java8
Java 8 LocalDateTime 计算天数差 背景: 我最近写一个东西,前端突然提了一个需求,说需要统计最近七天的销售额,然后甩给我一张图,让我去实现接口。
文章目录 边缘计算:数据处理的新时代 应用领域 挑战与机遇 量子计算:超越传统计算的新范式 量子比特 应用前景 挑战与机遇 人工智能:云计算的动力 云中的AI 应用领域 挑战与机遇 结语 欢迎来到云计算技术应用专栏 ~云计算未来展望:边缘计算、量子计算与AI ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒 ✨博客主页:IT·陈寒的博客 该系列文章专栏:云计算技术应用 其他专栏:Java学习路线 Java面试技巧 人工智能:云计算的动力 人工智能(AI)一直是云计算的重要驱动力,它将继续引领云计算的未来。AI技术已经在图像识别、自然语言处理、语音识别和推荐系统等领域取得了巨大成功。 云中的AI 云计算提供了强大的计算能力和大规模数据存储,这对于训练和部署AI模型至关重要。云提供商如亚马逊、微软和谷歌都提供了AI服务,开发者可以轻松地在云上构建和部署AI应用程序。 此外,AI模型的训练和部署也需要大量的计算资源,这为云提供商提供了商机。 云计算将继续推动AI的发展,而AI也将进一步推动云计算的创新。这两者之间的相互作用将塑造未来技术的面貌。
以下在计算NDVI的过程中使用的是反射率,不以原始的像元DN值作为计算方式,实际使用过程中也可以增加大气校正,该过程比较适用于进行批处理计算的基础模板和附件。裁剪处理并未附带。。。 map_info=map_info end function cal_apr,data,gain,bias,se result=(gain*data+bias)/(sin(se)) return,result;计算表观反射率
到目前为止,最重要的好处是可以对这些集合执行操作流水线,能够自动利用计算机上的多个内核。 在Java 7之前,并行处理数据集合非常麻烦。 第一,你得明确地把包含数据的数据结构分成若干子部分。 这意味着,在这个iterate 特定情况下归纳进程不是像我们刚才描述的并行计算那样进行的;整张数字列表在归纳过程开始时没有准备好,因而无法有效地把流拆分为小块来并行处理。 这… 终于,我们得到了一个比顺序执行更快的并行归纳,因为这一次归纳操作可以像刚才并行计算的那个流程图那样执行了。这也表明,使用正确的数据结构然后使其并行工作能够保证最佳的性能。
上一篇文章简单了解计算机中常用几种微分方式。本文将深入介绍 AI 框架离不开的核心功能:自动微分。 前向梯度累积会指定从内到外的链式法则遍历路径,即先计算 dw_1/dx ,再计算 dw_2/dw_1 ,最后计算 dy/dw_2 。即,前向模式是在计算图前向传播的同时计算微分。 前向模式 Foward Mode 前向模式从计算图的起点开始,沿着计算图边的方向依次向前计算,最终到达计算图的终点。它根据自变量的值计算出计算图中每个节点的值以及其导数值,并保留中间结果。 反向模式的缺点: 需要额外的数据结构记录正向过程的计算操作,用于反向使用; 带来了大量内存占用,为了减少内存操作,需要 AI 框架进行各种优化,也带来了额外限制和副作用。 因此,目前大部分 AI 框架都会优先采用反向模式,但是也有例如 MindSpore 等 AI 框架同事支持正反向的实现模式。
在前面的文章曾经提到过,目前主流的 AI 框架都选择使用计算图来抽象神经网络计算表达,通过通用的数据结构(张量)来理解、表达和执行神经网络模型,通过计算图可以把 AI 系统化的问题形象地表示出来。 最后简单地学习 PyTorch 如何表达计算图。AI 系统化问题遇到的挑战在真正的 AI 工程化过程中,我们会遇到诸多问题。 因此派生出了目前主流的 AI 框架都选择使用计算图来抽象神经网络计算。计算图的定义我们会经常遇到有些 AI 框架把统一的图描述称为数据流图,有些称为计算图,这里可以统称为计算图。 x_mat = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]图中对标量、向量、矩阵进行形象化表示:张量张量(tensor)理论是数学的一个分支学科,在力学中有重要应用。 tensor([[4.5000, 4.5000]])tensor([[4.5000]])<torch.autograd.function.MyReLUBackward object at 0x1205a46c8>
于 AI 框架而言,所开发的算子是网络模型中涉及到的计算函数。 AI 编译器优化的目的在于通过对算子进行最佳调度,使得算子在特定硬件上的运行时间达到最优水平。这种优化涉及到对算子调度空间的全面搜索和分析,以确定最适合当前硬件架构的最佳调度方案。 Reorder(交换)、Split(拆分)、Fuse(融合)、Tile(平铺)、Vector(向量化)、展开(Unrolling)、并行(Parallelizing)等,以 Halide 思想为指导的 AI t >(y, x) = static_cast<uint8_t>( (in.at<uint8_t >(y, x-1) + in.at<uint8_t >(y, x) (blurx.at<uint8_t >(y-1, x) + blurx.at<uint8_t >(y, x) + blurx.at<uint8_t >(y+1, x)) / 3); //计算}根据调度的要素
多核 CPU 算力计算 假设有一个四核 CPU,每个核心的时钟频率为 3.0 GHz,每个时钟周期可以执行 8 次浮点运算。 核心数:4 时钟频率:3.0 GHz = 3.0 × 10^9 Hz 每个时钟周期的浮点运算次数:8 FLOP/cycle 算力计算: \text{算力 (FLOPS)} = 4 \times 3.0 超级计算机算力计算 假设有一个超级计算机,有 10000 个 CPU,每个 CPU 有 8 个核心,每个核心的时钟频率为 2.5 GHz,每个时钟周期可以执行 16 次浮点运算。 {单个 CPU 的算力 (FLOPS)} = 8 \times 2.5 \times 10^9 \times 16 = 320 \times 10^9 = 320 \text{ GFLOPS} 整个超级计算机的算力 图片 训练 AI 大模型的变化趋势 这张图展示了训练 AI 大模型所需时间随模型参数数量的变化趋势,纵轴表示训练时间,单位从“天”(Days)到“周”(Weeks)再到“月”(Months);横轴表示模型参数的数量
作者 | Sergio De Simone 译者 | 平川 策划 | 赵钰莹 在 Ably 博客最近的一篇文章中,Alex Diaconu 回顾了分布式计算的 8 大谬误,并提供了一些应对建议 在 Ably 博客最近的一篇文章中,Alex Diaconu 回顾了分布式计算的 8 大谬误,并提供了一些应对建议。 这 8 大谬误是关于分布式计算的一组假设,这些假设可能会导致软件开发的失败:网络是可靠的;延迟为 0;带宽是无限的;网络是安全的;拓扑结构是不变的;只有一名管理员;传输成本为 0;网络是同构的。 InfoQ:关于分布式计算的谬误,自从最初提出以来,已经过去了近三十年,但现在它们仍然很有意义。在 Ably,它们的作用是什么? 计算机科学专业的学生都会学习这些问题及其现状。 当然,重要的是要知道,这些谬误是长久存在的技术挑战,而不要把它们想成是可以轻松躲开的陷阱。
ChronoUnit类可用于在单个时间单位内测量一段时间,例如天数或秒。 以下是使用between()方法来查找两个日期之间的区别的示例。
今天说一说u8u3_u8计算后会变为u16,希望能够帮助大家进步!!! 阴码+逐列 式+顺向+C51 格式 void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode) { u8 temp ,t1,t; u16 y0=y; u8 csize=(size/8+((size%8)? 从第一列开始向下 每取 8 个点作为一个字节,如果最后不足 8 个点就补满 8 位。取模顺序是从 高到低,即第一个点作为最高位。 纵观函数的结构可以看出,在许可长度范围内,函数循环计算一个temp量,从最后一句 OLED_ShowChar(x+(size2/2)*t,y,temp+‘0’); 可以看到,这个temp实际上是待显示位数字
CPU vs GPU █ GPU与AI计算 大家都知道,现在的AI计算,都在抢购GPU。英伟达也因此赚得盆满钵满。为什么会这样呢? 原因很简单,因为AI计算和图形计算一样,也包含了大量的高强度并行计算任务。 深度学习是目前最主流的人工智能算法。从过程来看,包括训练(training)和推理(inference)两个环节。 NVIDIA HGX A100 8 GPU 组件 不过,在推理环节,GPU的市场份额占比并没有那么高。具体原因我们后面会讲。 将GPU应用于图形之外的计算,最早源于2003年。 目前,他们市值高达1.22万亿美元(英特尔的近6倍),是名副其实的“AI无冕之王”。 那么,AI时代的计算,是不是GPU一家通吃呢?我们经常听说的FPGA和ASIC,好像也是不错的计算芯片。 7、《AIGC算力全景与趋势报告》,量子位; 8、百度百科、维基百科。
量子计算 + AI:科幻照进现实?说到量子计算,很多人第一反应可能是:“这玩意儿离我们还远着呢吧?” 确实,量子计算现在还处于早期发展阶段,但如果你是个AI开发者,或者对计算加速有需求,那你真的应该关注它。量子计算可能成为未来AI训练和推理的“加速器”,帮助我们在海量数据中找到最优解。 今天,我就来带大家初探量子计算如何加速AI算法,不仅讲理论,还动手写点代码,让大家感受一下量子的魅力!为什么AI需要更快的计算能力?在AI领域,尤其是深度学习模型,训练时间是一个大问题。 量子计算利用量子纠缠和叠加,可以在一次计算中同时处理多个状态的数据。这就意味着,量子计算可能在某些AI任务上实现指数级加速!量子计算如何加速AI?1. 实战演示:用量子计算优化AI训练我们来用量子计算模拟一个简单的AI优化任务,看看它能否比传统方法更快收敛。
CPU(中央处理器)是计算机的核心组件,其性能对计算机系统的整体性能有着重要影响。CPU 计算时延是指从指令发出到完成整个指令操作所需的时间。 理解 CPU 的计算时延对于优化计算性能和设计高效的计算系统至关重要。在本文中我们将要探讨 CPU 的计算时延组成和影响时延产生的因素,并深入讨论 CPU 计算的时延产生。 CPU 计算时延 下面将介绍 CPU 计算延时的组成和影响计算时延的相关因素。 这些传播延迟就是 CPU 的时钟周期,也是 CPU 计算的时延。 计算速度因素 计算速度由多个因素决定,包括内存时延、缓存命中率、计算操作效率和数据写回速度。 直到数据加载完成,CPU 无法进行后续的计算操作。 计算过程的阻滞 高内存时延显著延缓了整个计算过程的启动。
本节重点 AI 服务化是指将原本只能本地运行的 AI 能力转化为可远程调用的接口服务,使更多人能够便捷地访问 AI 能力。 通过本节学习,你将掌握如何将 AI 智能体转变为可供他人调用的服务 具体内容包括: AI 应用接口开发 AI 智能体接口开发 在开始之前,先给大家提个醒,Spring AI 版本更新飞快,有些代码的写法随时可能失效 一、AI 应用接口开发 我们平时开发的大多数接口都是同步接口,也就是等后端处理完再返回。 所以上述代码中我们使用 content 方法,只返回 AI 输出的文本信息。 2、开发同步接口 在 controller 包下新建 AiController,将所有的接口都写在这个文件内。 点击接口旁边的绿豆就能自动生成测试代码: 二、AI 智能体接口开发 由于智能体执行过程通常包含多个步骤,执行时间较长,使用同步方法会导致用户体验不佳。
在 AI 框架发展的最近一个阶段,技术上主要以计算图来描述神经网络。 这两种选择,随着神经网络算法研究和应用的更进一步发展,使得 AI 框架在技术实现方案的巨大差异。 复杂的模型结构需要 AI 框架能够对模型算子的执行依赖关系、梯度计算以及训练参数进行快速高效的分析,便于优化模型结构、制定调度执行策略以及实现自动化梯度计算,从而提高 AI 框架训练的效率。 综上所述,目前主流的 AI 框架都选择使用计算图来抽象神经网络计算表达,通过通用的数据结构(张量)来理解、表达和执行神经网络模型,通过计算图可以把 AI 系统化的问题形象地表示出来。 在基于计算图的 AI 框架中,这五个阶段统一表示为由基本算子构成的计算图,算子是数据流图中的一个节点,由后端进行高效实现。