logo
  • 首页
  • 产品中心
  • 解决方案
  • 技术专栏
  • 关于我们
  • 首页
  • 产品中心
  • 解决方案
  • 技术专栏
  • 关于我们
  • 大语言模型训练和推理对各个硬件性能的基本要求,及硬件研发常用的诊断、分析测试工具简介

    很多工程师对于大语言模型(如ChatGPT)训练和推理过程中硬件性能,如CPU, GPU, NVMe SSD(或者存储系统)以及网络的到底需要具备什么样的要求,以及这些硬件设备厂家在开发和测试中需要用到哪些底层测试、诊断和分析工具感兴趣,今天我们就来简单谈一下这方面的内容。1.硬件性能要求a) GPU:高计算能力:需要大量的CUDA核心和高时钟速度大容量显存:通常需要数十GB(如40G, 80G)的HBM3/HBM3e内存高内存带宽:以支持快速数据访问b) CPU:高核心数:用于数据预处理和任务调度高时钟速度:处理串行任务大容量内存:支持数据缓存和中间结果存储c) NVMe SSD或网络存储:高读写速度:快速加载和存储大量训练数据大容量:存储庞大的训练数据集和模型检查点低延迟:减少I/O等待时间d) 网络(对于分布式训练):高带宽:支持节点间快速数据传输低延迟:减少通信开销2.底层诊断和分析工具设备厂商在开发和测试硬件时可能会使用以下工具:a) GPU相关(以NVIDIA为例,其它GPU卡类似):NVIDIA Visual Profiler (nvvp):分析GPU性能瓶颈NVIDIA Nsight Systems:系统级性能分析NVIDIA CUDA-memcheck:检测内存错误NVIDIA DCGM (Data Center GPU Manager):监控GPU健康状态和性能第三方工具,如SerialTek公司PCIe 协 议分析仪用于问题诊断;Quarch公司模拟主板故障的工具主动给GPU导入异常和故障;模拟主板给GPU供电不稳的工具;以及实时监控功耗的工具等等b) CPU相关:Intel VTune Profiler:分析CPU性能和热点perf:Linux性能分析工具Valgrind:内存调试和性能分析第三方工具,如SerialTek公司PCIe协议分析仪用于问题诊断;Quarch模拟主板故障的工具主动给CPU导入异常和故障;实时监控功耗的工具;以及Saniffer公司的CPU压力工具等等c) 存储相关:fio (Flexible I/O Tester):测试存储系统性能iostat:监控I/O性能blktrace:跟踪块设备I/O第三方工具,如SerialTek公司PCIe/NVMe协议分析仪用于问题诊断;SanBlaze对于SSD进行协议、性能、功能、可靠性测试的专业研发测试设备;Quarch模拟热插拔和故障注入的工具主动给SSD导入异常和故障;电压拉偏工具;以及实时监控功耗的工具等等d) 网络相关:iperf:测试网络带宽netperf:网络性能基准测试tcpdump:网络数据包分析第三方工具,如Saniffer公司的100GE协议分析仪用于问题诊断;Quarch模拟网络链路不稳、链路注入故障,call pull线缆插拔,多路径测试测试工具等等e) 系统级工具:htop:实时系统监控nmon:系统性能监控sysstat:系统性能数据收集f) 专用工具:MLPerf:机器学习性能基准测试套件CUDA Toolkit:包含各种CUDA开发和分析工具3.其它特殊考虑a) 热管理:使用Fluke这类热成像相机和温度传感器监控硬件温度压力测试工具来评估散热系统效能b) 功耗分析:使用精密功率计测量不同负载下的功耗NVIDIA SMI (nvidia-smi):监控GPU功耗第三方工具,Quarch实时监控和回溯分析功耗(电压、电流、功耗)以及sideband边带信号,以及可以实时对于GPU进行上、下电的工具等等c) 可靠性测试:长时间运行稳定性测试模拟各种故障情况的容错性测试第三方的各种主动注入故障的工具Quarch,如针对CPU, GPU, SSD和网络的工具d) 互操作性测试:测试不同硬件组件之间的兼容性SerialTek公司PCIe总线分析工具e) 大规模集群测试:开发模拟大规模训练负载的工具分布式系统监控和调试工具在开发和测试过程中,硬件厂商通常会结合使用这些工具,并可能开发自己的专有工具来进行更深入的硬件级分析。他们还会与软件开发者(如深度学习框架的开发团队)合作,以确保硬件能够充分支持最新的软件技术。此外,由于大语言模型的快速发展,硬件厂商可能需要不断调整他们的测试和开发策略,以适应新的模型架构和训练方法带来的挑战。我们后面的文章将针对大模型训练和推理过程中CPU,GPU和SSD的碰到的各种问题场景,通过列举一些常见的场景,来简单看一下SerialTek PCIe分析仪日常可以协助解决哪些类型的问题。如果你有其任何关于PCIe5&6.0, CXL, NVMe, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2024-07-05 10:00:00
  • 通俗易懂地讲解ChatGPT的训练过程终止的条件(4)

    我们前面几期介绍了ChatGPT的分层架构,架构之间的交互,CUDA以及兼容CUDA的GPU可能面临的威胁。我们经常听说要部署一台插了8个H100 GPU的服务器价值要280~300万人民币,很多大型互联网厂商动辄囤货10~20万台这种服务器用于大语言模型的训练,为什么需要这么多?我们本文来看一下一个简化的ChatGPT的训练过程一般需要花费多少时间?这和训练的数据量大小以及要求有关吗?这个要求怎么衡量?最终训练完成后得到一个什么文件?是一个模型文件吗?1) 训练过程各层交互及相关说明我们还是从分层的角度来尝试逐层解释ChatGPT在训练过程中与各个层级的交互:应用层: 在应用层,研究人员使用高级编程语言(如Python)编写训练脚本,定义模型架构、损失函数、优化器等。这些脚本通常基于深度学习框架(如PyTorch或TensorFlow)。PyTorch/TensorFlow层: 这些深度学习框架提供了高级API,用于定义神经网络结构、数据加载、训练循环等。它们将高级指令转换为底层计算图和张量操作。CUDA框架: PyTorch和TensorFlow通过CUDA(Compute Unified Device Architecture)与NVIDIA GPU通信。CUDA提供了并行计算的编程模型和指令集,允许框架在GPU上高效执行张量运算。GPU: GPU接收CUDA指令并执行大规模并行计算。它的众多计算核心非常适合处理神经网络中的矩阵乘法等操作。HBM(高带宽内存): HBM是GPU上的高速内存,用于存储模型参数和中间计算结果。高带宽确保GPU能快速访问数据。NVMe SSD: 用于存储训练数据集。NVMe SSD提供高速I/O,确保数据能快速加载到系统内存中。CPU: CPU主要负责数据预处理、调度任务给GPU、以及一些不适合GPU的串行计算。它还管理系统内存和存储设备。训练过程中的数据流:训练数据从NVMe SSD加载到系统内存。CPU进行数据预处理。预处理后的数据通过PCIe总线传输到GPU的HBM。GPU执行前向传播和反向传播计算。计算结果用于更新存储在HBM中的模型参数。定期将更新后的模型参数保存到系统存储中。关于训练时间: 训练时间确实与数据量大小和模型复杂度密切相关。对于像ChatGPT这样的大型语言模型,训练可能需要数周甚至数月时间。影响训练时间的因素包括:数据集大小: 更大的数据集通常需要更长的训练时间。模型复杂度: 参数数量越多,训练时间越长。硬件性能: 更强的GPU和更快的存储系统可以加速训练。分布式训练: 使用多GPU或多机集群可以显著减少训练时间。训练要求的衡量:计算能力: 通过FLOPS(每秒浮点运算次数)衡量。内存带宽: 以GB/s为单位,影响数据传输速度。存储性能: 通过IOPS(每秒输入/输出操作数)和吞吐量衡量。网络性能: 在分布式训练中很重要,通过带宽和延迟衡量。训练完成后得到的文件: 训练完成后,通常会得到一个或多个模型文件。这些文件包含:模型架构: 网络结构的定义。模型参数: 训练后的权重和偏置。优化器状态: 如果需要继续训练。配置信息: 训练时使用的超参数等。文件格式可能因框架而异,例如PyTorch使用.pt或.pth格式,TensorFlow使用.h5或SavedModel格式。这些文件可以被加载用于推理或进一步微调。需要注意的是,像ChatGPT这样的大型语言模型可能会产生非常大的模型文件,可能需要特殊的处理和存储方案。训练终止的条件那么,如何判断一个训练过程结束了?训练程序达到一个什么状态就自动停止训练,工程师需要事先设立一个什么条件吗?训练结束时候有什么提示吗?还是需要工程师不停地查询状态才可以。上述训练过程的结束条件确实是机器学习工程中的关键部分。结束条件:工程师通常会预先设定一些结束条件。主要的结束条件包括:a) 固定轮数(Epochs):预先设定训练轮数,如100轮。b) 性能指标:当验证集上的性能达到某个阈值时停止。c) 早停(Early Stopping):当验证集性能连续多轮不再提升时停止。d) 时间限制:设定最长训练时间。e) 梯度变化:当梯度变化很小时停止。f) 损失值:当损失函数值低于某个阈值时停止。自动停止:训练程序通常会自动检查这些条件,一旦满足就会停止训练。不需要工程师持续手动查询状态。训练过程监控:虽然不需要持续手动查询,但工程师通常会使用工具来监控训练过程:a) 日志文件:程序会定期记录训练状态。b) TensorBoard等可视化工具:实时显示训练指标。c) 回调函数(Callbacks):在训练的特定阶段执行自定义操作。结束提示:当训练结束时,程序通常会:a) 在控制台输出结束信息。b) 记录最终状态到日志文件。c) 保存最终模型。d) 可能发送邮件或其他通知给工程师。人工干预:尽管有自动机制,工程师可能会:a) 定期检查训练进度。b) 根据中间结果决定是否提前停止或继续训练。c) 调整超参数并重启训练。大型模型的特殊考虑:对于ChatGPT这样的大型模型:a) 训练可能持续数周或数月。b) 可能使用更复杂的停止策略,如基于多个指标的综合评估。c) 可能有阶段性停止点,允许检查和调整。持续评估:某些情况下,可能没有明确的"结束":a) 在线学习:模型不断从新数据学习。b) 大型项目:可能有多个训练阶段,每个阶段有不同的目标。总的来说,训练结束通常是自动化的,基于预设条件。但工程师会保持监督,以确保训练按预期进行,并在必要时进行干预。对于复杂的项目,"训练结束"可能是一个相对的概念,更像是达到了某个里程碑。鉴于训练过程可能涉及时间比较长,所以底层基础设施的硬件在较长的时间内需要保持可靠、稳定地运行,后面的一些文章我们就来探讨一下,业内公司如何通过免费、开源、商业软件和各种测试工具,来主动和被动地分析底层硬件的各种问题,从而为上层应用的运行提供一个相对高可用的环境。如果你有其任何关于PCIe5&6.0, CXL, NVMe, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2024-07-04 10:00:00
  • 通俗易懂地讲解ChatGPT底层依赖的CUDA架构和兼容CUDA的国产GPU可能面临的威胁(3)

    首先,我们来简单回顾一下ChatGPT的工作原理及其依赖的底层架构,然后谈一下CUDA架构,最后谈一下兼容CUDA的国产GPU可能面临的威胁。1)ChatGPT的工作原理及其依赖的底层架构1. 工作原理ChatGPT是一个基于生成式预训练变换器(Generative Pre-trained Transformer, GPT)的语言模型。其工作原理主要包括以下几个阶段:预训练:模型在大规模文本数据上进行无监督学习,学习语言结构和知识。这一阶段不需要特定的标签数据。微调:在特定任务或领域的数据上进行有监督学习,使模型在特定任务上表现更好。推理:用户输入文本,模型根据训练中学到的知识生成合适的回复。2. 依赖的底层架构软件框架深度学习框架(TensorFlow/PyTorch):用于定义和训练神经网络模型。这些框架提供了丰富的工具和库,简化了模型构建和训练的过程。TensorFlow:由Google开发的深度学习框架,广泛用于研究和生产环境。PyTorch:由Facebook AI Research开发,因其易用性和灵活性在研究领域广受欢迎。硬件架构GPU(图形处理单元):主要用于加速深度学习计算。GPU擅长并行处理大量数据,是训练大型模型的关键。NVIDIA GPU:如Tesla V100、A100等,常用于深度学习任务。CUDA:NVIDIA的并行计算平台,允许开发者利用GPU进行高效计算。高带宽内存(HBM):集成在GPU上的高速内存,提供高带宽支持GPU进行快速数据访问和处理。NVSwitch:用于多GPU系统中的高速互连,确保GPU之间的数据传输高效,减少通信瓶颈。NVMe SSD:用于存储训练数据集和模型检查点的高性能固态硬盘。提供高吞吐量和低延迟,确保数据加载和存储效率。简言之,ChatGPT通过深度学习框架(如TensorFlow或PyTorch)在GPU上进行大规模训练,依赖CUDA加速计算。高带宽内存(HBM)和NVSwitch支持快速数据访问和GPU间通信,而NVMe SSD则用于存储大量训练数据和模型检查点。这些软件和硬件层次共同支持了ChatGPT的高效工作。2)CUDA架构以及和GPU, CPU的关系CUDA是什么?CUDA(Compute Unified Device Architecture)是NVIDIA开发的一种并行计算平台和编程模型,允许开发者利用NVIDIA GPU进行高效的计算。它提供了一组扩展C/C++的编程语言和API,使开发者能够编写代码在GPU上执行复杂的计算任务。CUDA包含哪些内容?当你安装CUDA时,它通常包括以下几个主要组件:CUDA Toolkit:包含编译器、库、开发工具、示例代码等。CUDA Driver:用于让操作系统和GPU进行通信。CUDA Runtime:提供运行时库支持CUDA应用程序执行。CUDA Libraries:一些常用的库,例如cuBLAS(线性代数)、cuFFT(快速傅里叶变换)、cuDNN(深度神经网络)。CUDA和GPU卡的关系CUDA是一个软件平台,提供了访问和控制NVIDIA GPU硬件的能力。具体来说,CUDA允许开发者编写代码来利用GPU的并行计算能力,从而加速计算密集型任务。GPU的工作原理GPU(图形处理单元)擅长处理大量并行任务,这使得它在图形渲染和计算密集型任务(如科学计算、深度学习)中非常高效。CUDA通过提供一个高层次的编程接口,使开发者能够编写代码来充分利用GPU的并行处理能力。CPU和GPU之间的关系任务分发:初始化CUDA环境:在程序开始时,CPU会初始化CUDA环境,准备与GPU进行通信。内存管理:CPU负责将数据从主内存传输到GPU内存。在CUDA程序中,这通常通过API函数(如cudaMalloc和cudaMemcpy)完成。内核调用:定义内核函数:开发者在CUDA程序中定义内核函数(kernel),这些函数将在GPU上并行执行。例如:cpp 代码__global__ void add(int *a, int *b, int *c) {int index = threadIdx.x;c[index] = a[index] + b[index];}启动内核:CPU通过调用内核函数并指定执行配置(如线程数和块数)来启动GPU上的并行计算。例如:cpp 代码        add<<<1, N>>>(dev_a, dev_b, dev_c);同步和结果获取:内核执行完成后,CPU可以将结果从GPU内存复制回主内存,并进行进一步处理。具体例子例子1:向量加法cpp 代码#include <cuda_runtime.h>#include <iostream>__global__ void add(int *a, int *b, int *c, int n) {int index = threadIdx.x;if (index < n) {c[index] = a[index] + b[index];}}int main() {const int N = 10;int h_a[N], h_b[N], h_c[N];int *d_a, *d_b, *d_c;// 初始化主机数据for (int i = 0; i < N; ++i) {h_a[i] = i;h_b[i] = i * i;}// 分配设备内存cudaMalloc((void**)&d_a, N * sizeof(int));cudaMalloc((void**)&d_b, N * sizeof(int));cudaMalloc((void**)&d_c, N * sizeof(int));// 将数据从主机复制到设备cudaMemcpy(d_a, h_a, N * sizeof(int), cudaMemcpyHostToDevice);cudaMemcpy(d_b, h_b, N * sizeof(int), cudaMemcpyHostToDevice);// 启动内核add<<<1, N>>>(d_a, d_b, d_c, N);// 将结果从设备复制回主机cudaMemcpy(h_c, d_c, N * sizeof(int), cudaMemcpyDeviceToHost);// 打印结果for (int i = 0; i < N; ++i) {std::cout << h_c[i] << " ";}std::cout << std::endl;// 释放设备内存cudaFree(d_a);cudaFree(d_b);cudaFree(d_c);return 0;}例子2:矩阵乘法cpp 代码#include <cuda_runtime.h>#include <iostream>__global__ void matMul(float *A, float *B, float *C, int N) {int row = blockIdx.y * blockDim.y + threadIdx.y;int col = blockIdx.x * blockDim.x + threadIdx.x;if (row < N && col < N) {float sum = 0.0f;for (int k = 0; k < N; ++k) {sum += A[row * N + k] * B[k * N + col];}C[row * N + col] = sum;}}int main() {const int N = 2;float h_A[N*N], h_B[N*N], h_C[N*N];float *d_A, *d_B, *d_C;// 初始化主机数据for (int i = 0; i < N * N; ++i) {h_A[i] = static_cast<float>(i);h_B[i] = static_cast<float>(i + 1);}// 分配设备内存cudaMalloc((void**)&d_A, N * N * sizeof(float));cudaMalloc((void**)&d_B, N * N * sizeof(float));cudaMalloc((void**)&d_C, N * N * sizeof(float));// 将数据从主机复制到设备cudaMemcpy(d_A, h_A, N * N * sizeof(float), cudaMemcpyHostToDevice);cudaMemcpy(d_B, h_B, N * N * sizeof(float), cudaMemcpyHostToDevice);// 启动内核dim3 threadsPerBlock(N, N);dim3 blocksPerGrid(1, 1);matMul<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_B, d_C, N);// 将结果从设备复制回主机cudaMemcpy(h_C, d_C, N * N * sizeof(float), cudaMemcpyDeviceToHost);// 打印结果for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {std::cout << h_C[i * N + j] << " ";}std::cout << std::endl;}// 释放设备内存cudaFree(d_A);cudaFree(d_B);cudaFree(d_C);return 0;}CUDA是NVIDIA提供的并行计算平台和编程模型,通过其API和工具,开发者可以高效地在NVIDIA GPU上执行复杂计算任务。CUDA平台包括驱动程序、开发工具包、运行时库和各种优化库。在实际应用中,CPU负责初始化CUDA环境、管理内存和启动内核函数,而GPU则负责执行并行计算任务。这种协作极大地提升了计算密集型任务的性能。3)国产GPU面临CUDA架构被禁用的风险分析因为各种各样的原因,如果NVIDIA不再容忍其他厂家的GPU卡兼容CUDA,从而使其GPU成为市场上唯一支持CUDA架构的产品,他们可能会采用以下几种途径:    1. 硬件检查:设备识别:在CUDA驱动程序和库中加入硬件识别代码,只允许特定的NVIDIA GPU型号运行CUDA程序。如果检测到非NVIDIA GPU,则拒绝运行。硬件特征检测:通过检查特定的硬件特征或ID,确保只有NVIDIA GPU具备运行CUDA所需的特定特征或指令集。    2. 驱动程序限制:驱动程序绑定:将CUDA的关键功能深度集成到NVIDIA的专有驱动程序中,使其无法在其他驱动程序上运行。即使其他厂商实现了与CUDA接口兼容的驱动,也无法调用到真正的CUDA核心功能。签名验证:通过加密签名技术,确保CUDA驱动程序和库只能在经过验证的NVIDIA硬件上运行。3. 软件许可证和认证:许可证约束:在CUDA软件安装和使用过程中加入严格的许可证协议,明确规定只能在NVIDIA硬件上使用,并对违反协议的行为进行法律追究。认证流程:引入硬件认证流程,要求所有使用CUDA的设备必须通过NVIDIA的认证,这样可以从软件层面控制CUDA的硬件兼容性。4. API和接口控制:私有API:将一些关键的CUDA API和功能设为私有,仅在NVIDIA官方支持的硬件上公开这些接口。API变更:不断更新和修改CUDA      API,使得其他厂商难以持续兼容最新的CUDA版本。通过频繁的API更新和功能增强,保持技术领先,并增加兼容难度。5. 法律和专利保护:专利技术:利用专利保护CUDA的核心技术,防止其他厂商实现类似的兼容技术。通过专利诉讼阻止其他厂商的兼容努力。法律手段:通过合同和法律协议限制其他厂商使用或模拟CUDA技术。这些手段可以有效地确保CUDA在未来只支持NVIDIA自家的GPU,从而保护其技术和市场份额。同时,NVIDIA还可以通过不断创新和改进CUDA技术,保持在高性能计算和深度学习领域的领先地位。如果你有其任何关于PCIe5&6.0, CXL, NVMe, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2024-07-03 10:00:00
  • 通俗易懂地讲解ChatGPT执行过程在分层架构之间的调用和交互分析(2)

    ChatGPT 从应用层,PyTorch/TensorFlow, 到CUDA框架,GPU, HBM, NVMe SSD,本文将简单讲一下从提交一个问题到ChatGPT,到它“吐出来”所有的答案,上面的每个层次都怎么交互的?包括和CPU的交互。接昨天的《通俗易懂地讲解ChatGPT的训练和推理过程的分层软/硬件架构(1)》ChatGPT的分层架构,从用户提交问题到ChatGPT生成回答的整个过程,涉及从应用层到硬件层的各个环节。1.应用层当用户提交一个问题时,首先由应用层的接口(如网页或API)接收。这一层负责:用户认证请求格式化与后端服务器通信2.服务器后端后端接收到请求后,会进行以下处理:请求验证和解析准备模型输入(包括添加系统提示、格式化用户输入等) 调用深度学习框架(如PyTorch或TensorFlow)3.PyTorch/TensorFlow层这一层是高级深度学习框架,负责:加载预训练的ChatGPT模型将输入数据转换为模型可理解的格式调用底层CUDA操作4.CUDA框架CUDA是NVIDIA开发的并行计算平台和编程模型,它:将PyTorch/TensorFlow的高级操作转换为GPU可执行的底层指令优化数据在CPU和GPU之间的传输管理GPU内存分配5.GPU (图形处理器)GPU是执行实际计算的硬件:并行处理大量数据执行矩阵乘法等核心操作与HBM高带宽内存交互6.HBM (高带宽内存)HBM是与GPU紧密集成的高速内存:存储模型参数和中间计算结果提供高带宽、低延迟的数据访问减少GPU与主内存之间的数据传输7.CPU (中央处理器)CPU在整个过程中起到协调作用:管理整体计算流程处理不适合GPU的串行任务协调数据在各个组件间的传输8.NVMe SSD (固态硬盘)NVMe SSD主要用于:存储模型权重和配置文件在需要时快速加载模型到内存缓存中间结果(如果内存不足)交互过程:用户提交问题后,应用层将请求发送到服务器后端。后端准备输入数据,调用PyTorch/TensorFlow框架。PyTorch/TensorFlow加载模型(可能从NVMe SSD读取),并通过CUDA框架将计算任务分配给GPU。GPU从HBM读取模型参数和输入数据,执行大规模并行计算。计算过程中,GPU与HBM频繁交互,存取中间结果。CPU协调整个过程,管理GPU任务队列,处理I/O操作。如果需要,NVMe SSD可能被用来存储中间结果或加载额外数据。GPU完成计算后,结果通过CUDA框架返回到PyTorch/TensorFlow。PyTorch/TensorFlow处理输出,返回给后端服务器。后端服务器格式化响应,通过应用层接口返回给用户。这个过程是高度并行和优化的,多个GPU可能同时工作,CPU不断调度任务,以确保高效生成响应。整个系统的性能取决于各个组件的协调工作,特别是GPU的并行处理能力和内存带宽。今天,许多开发者从 OpenAI 那收到了一份警告信,显示2024/7/9日起OpenAI 将全面封锁中国 API 接入:您好, 据我们的数据监测,贵组织正从 OpenAl 当前未支持的区域产生 API 访问流量。您可以在官网查阅我们所支持的国家与地区名单。请注意,自 7 月 9 日起,我们将对不在此支持名单上的区域实施 API 访问限制措施。为了确保持续使用 OpenAl 的各项服务,请在被支持的区域内登录访问。 如有疑问,欢迎访问我们的帮助中心寻求解答。 谢谢, OpenAl 团队这封信犹如平静湖面投入一块巨石,激起层层波澜。在此前,OpenAI 虽然严格限制了网页端聊天机器人的区域访问权限,但事实上对 API 服务却采取了“睁一只眼闭一只眼”的态度。如今,封禁力度加大,今年七月起,包括中国大陆和中国香港在内的非支持国家和地区的开发者及企业都无法再访问 API 服务,OpenAI 真的要开始严格管控了。有些国产GPU卡宣称支持兼容CUDA架构,可以比较方便地使用PyTorch/TensorFlow进行大模型训练和推理,目前其实也面临着被Nvidia掐断的风险,下面的文章我们将介绍一下CUDA架构和Nvidia有哪些途径可以掐断对于非Nvidia GPU的支持。如果你有其任何关于PCIe5&6.0, CXL, NVMe, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2024-07-02 10:00:00
  • 通俗易懂地讲解ChatGPT的训练和推理过程的分层软/硬件架构(1)

    下面几期我们将针对LLM大语言模型(以ChatGPT为例)通俗易懂地讲解一下它的分层架构,从上层应用一直到底层硬件组成,同时也会谈一下有哪些诊断、分析、测试工具可以协助这些底层硬件厂商快速进行问题分析和测试。ChatGPT的分层架构1. 应用层:用户与ChatGPT互动用户界面:用户通过各种应用(如网页、手机应用、聊天机器人等)与ChatGPT互动。API:应用通过API(应用程序接口)向ChatGPT发送请求,并接收回复。API是开发者与底层模型交互的桥梁。2. 高级框架:TensorFlow/PyTorch深度学习框架:ChatGPT使用TensorFlow或PyTorch等高级深度学习框架进行开发。它们提供了构建、训练和部署神经网络模型的工具和接口。模型构建:在这些框架中,模型(如GPT-3)由多个层(如嵌入层、注意力层、前馈层等)构成。训练循环:框架负责训练过程中的前向传播、反向传播和参数更新。3. 底层加速:CUDACUDA:NVIDIA开发的并行计算平台和编程模型,用于加速深度学习计算。TensorFlow/PyTorch使用CUDA将计算任务分派到GPU。并行计算:利用CUDA,深度学习框架可以在数千个GPU核心上并行执行计算,大幅提高训练速度。4. 硬件加速:GPUGPU(图形处理单元):用于处理大量并行计算任务。深度学习训练需要大量矩阵乘法运算,GPU的并行处理能力使其比CPU更高效。训练过程:GPU执行前向传播和反向传播的计算,更新模型参数。大量数据在GPU的显存(如HBM)中存储和处理。5. GPU互连:NVSwitchNVSwitch:用于在多个GPU之间实现高速数据传输。训练大型模型时,通常需要多块GPU协同工作。数据传输:NVSwitch提供GPU之间的高速互连,使数据在多GPU系统中高效传输,减少通信瓶颈。6. 高带宽存储:HBMHBM(高带宽内存):集成在GPU上的高速内存,用于存储和快速访问大量训练数据和模型参数。数据存取:HBM提供极高的带宽,使得GPU可以快速访问和处理数据,提升训练效率。7. 存储系统:NVMe SSDNVMe SSD:高性能固态硬盘,用于存储训练数据集和模型检查点。数据加载:训练过程中,数据从NVMe SSD加载到GPU的HBM中进行处理。高吞吐量和低延迟的存储设备确保数据加载不会成为瓶颈。训练详细过程    1. 数据预处理:数据从NVMe SSD中读取,进行清洗、标注和分批。数据加载器将数据批次传递给深度学习框架。2. 前向传播:数据输入模型,经过嵌入层和多个注意力层处理。GPU通过CUDA并行执行计算,使用HBM进行高速数据存取。3. 损失计算:模型输出与真实标签对比,计算损失函数。损失值用于指导反向传播。4. 反向传播和参数更新:通过反向传播计算梯度。使用优化算法(如Adam)更新模型参数。参数更新在GPU上进行,通过NVSwitch实现多GPU间参数同步。5. 模型存储:定期将模型检查点保存到NVMe SSD,确保训练过程中数据的安全和可恢复性。小结用户通过应用与ChatGPT交互,API调用模型进行推理。高级框架(TensorFlow/PyTorch)负责模型的构建和训练。CUDA用于加速计算,将任务分派到GPU。GPU利用并行计算能力执行前向传播和反向传播。NVSwitch实现多GPU间高速互连。HBM提供高带宽内存支持,提升数据处理效率。NVMe SSD用于存储和快速加载数据和模型检查点。通过这些层次分明的技术和硬件支持,ChatGPT得以实现高效的训练和推理过程,提供强大的自然语言处理能力。下面是上述各个层次的一个框图供快速参考。如果你有其任何关于PCIe5&6.0, CXL, NVMe, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
    2024-07-01 10:00:00
  • 国产高端企业级Gen5 SSD和消费类Gen5 M.2 SSD的接收端信号对比

    本次视频是比较两块不同类型的PCIe Gen5 SSD在完全一样的环境中的信号表现,尽管两块盘都没有掉速,都是Gen5 x4,但是接收端信号表现一目了然。具体细节参考最下面的视频讲解。 测试环境:知名internet厂商开发的基于其PCIe Gen5 ARM CPU的服务器,在服务器背面有若干PCIe Gen5 U.2背板插槽。 待测试SSD:1)由该internet厂商自研的Gen5 eSSD controller封装的高性能U.2 SSD。2)Gigabyte 10000系列Gen5 M.2 SSD,然后经过SerialCables Gen5 M.2/U.2 adapter转接成U.2 SSD。上述两块盘依次接入服务器的U.2 插槽。我们下面的截图采用SerialTek PCIe Gen5 U.2 analyzer串接在Gen5 U.2链路中间(槽和SSD盘之间)。 说明:     1.     下午为Gen5 U.2 SSD加电初始化的LTSSM图。图中,黑色的部分表示有大量的LTSSM状态变化。        2.     下图为将黑色的部分放大后看到的情况。我们看到实际上上有大量的RECOVERY。     3.     下面是随机放大某一个RECOVERY,我们发现是SSD认为CPU过来的信号有问题,从而主动发起RECOVERY。我们经过分析,发现几乎所有的RECOVERY都是由于SSD发起。     4.   下面是我们把Gen5 M.2 gigabyte SSD经过SerialCables Gen5 M.2/U.2 passive adapter转接的U.2 SSD替换前面一张标准的Gen5 U.2 SSD后,看到的LTSSM展示,我们发现在大概85秒钟的时间范围内基本只出现零星的大概11次RECOVERY。这个说明,即便在转接有信号损耗的情况下,Gen5 M.2 SSD的receiver接收端信号也非常好,基本没有认为从CPU过来的信号有问题,所以只有零星的recovery请求发出。  
    2024-06-28 10:00:00
  • 国产100GE DPU碰到的问题分析

    该案例分析简单来讲是由于DPU发出2个MRd 请求命令给CPU,CPU均回复Completer Abort,然后导致recovery发生,导致掉卡。当然具体原因需要看一下为什么CPU会abort该请求,例如是否是MRd的地址范围超越界限了?等等。      
    2024-06-27 10:00:00
  • 1
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
    • 电话:(021)5080-7071; 131-2785-6862

      在这里输入描述
    • www.saniffer.cn

      在这里输入描述
    • 邮箱:sales@saniffer.com

      在这里输入描述
    • 地址:上海市浦东新区秋月路26号矽岸国际1号楼

      在这里输入描述

    关注微信公众号

    上海森弗信息技术有限公司 备案号:沪ICP备2024076352号-1

    版权所有 © 上海森弗信息技术有限公司 技术支持:竹子建站