作者 | JerryYin777 编辑 | 自动驾驶之心
原文链接:https://www.zhihu.com/question/26570985/answer/3465784970
点击下方卡片,关注“自动驾驶之心”公众号
戳我-> 领取自动驾驶近15个方向学习路线
本文只做学术分享,如有侵权,联系删文
Preface
去年给实验室学弟学妹写的入门指南,内容儿童友好型,from scratch层级的指南,也总结了我自己的学习经验,当然部分内容也偏向LLM这边(毕竟确实很有用嘛),写作时间是2023年9月,可能和现在有一定时间上的间隔,还望海涵。(另:感谢CUMT的叶同学,推荐了很多有用的资料和资源)
如果让我现在推荐一个项目,我会建议去看Karpathy的llm.c,写得巨好:https://github.com/karpathy/llm.c
CUDA入门
WHY CUDA?
GPU 底层的硬件设计导致它特别擅长于执行逻辑简单但是并行程度极高的计算任务,而 CUDA 的主要目的是“向显卡提交一个又一个任务,每一个任务都形如“给定一个函数,与调用它的参数,请在显卡上运行这个函数”。
关于CPU和GPU的工作原理,Nvidia给出了一个比较生动的例子:
NVIDIA现场形象展示CPU和GPU工作原理上的区别:https://www.bilibili.com/video/BV1ry4y1y7KZ/?
How to Start CUDA Learning?
知乎找到的一个官方学习路线,同样也可以参考:https://zhuanlan.zhihu.com/p/273607744
首先,至少要有一块GPU,以及配置相应的CUDA环境(安装CUDA-Toolkit等)
Configure Software Environment
教程:https://zhuanlan.zhihu.com/p/432092988
推荐OS:任意Linux系统(推荐Ubuntu)
推荐IDE:VSCode(Remote SSH)/Clion(Jetbrain配置CUDA环境便捷)
推荐CUDA版本:11.x(12.x有点问题)
推荐GPU:实验室的V100/Titan/P100
配好后,验证是否已经安装好,只需建立hello_world.cu执行下面的例程:
// hello_world.cu
// CUDA: Hello,World
#include <stdio.h>
__global__ void hello_world(void)
{
printf("GPU: Hello world!\\n");
}
int main(int argc, char** argv)
{
printf("CPU: Hello world!\\n");
hello_world<<<1, 10>>>();
cudaDeviceReset(); // 如果没有这一行,无法从GPU输出 "hello world"
return 0;
}
nvcc hello_world.cu -o hello_world
./hello_world
//Output:
// CPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
// GPU: Hello world!
How to Understand CUDA?
如何理解包括Block、Thread、wrap等概念和操作
推荐的相关资料:
谭升的博客:https://face2ai.com/program-blog/#GPU编程(CUDA)
我见过的最好的中文入门CUDA教程
相关代码:https://github.com/Tony-Tan/CUDA_FreshmanCUDA - From Correctness to Performance:https://wiki.lcpu.dev/zh/hpc/from-scratch/cuda
尝试在纠错中理解CUDA相关概念和注意事项
相关代码:https://github.com/interestingLSY/CUDA-From-Correctness-To-Performance-CodeXiao's CUDA Optimization Guide:https://github.com/XiaoSong9905/CUDA-Optimization-Guide
同样是一份不错的中文入门CUDA教程,更偏向优化方面高性能并行编程与优化:https://github.com/parallel101/course
尝试理解并行计算的本质,和写CUDA本身无关但能够明白并行化思维
相关视频:https://space.bilibili.com/263032155Efficient Distributed GPU Programming for Exascale, an SC/ISC Tutorial
尝试理解如何利用MPI在单机多卡/多机多卡实现GPU Programming,世界最顶级超算会议ISC23/SC23教程
相关代码:https://github.com/FZJ-JSC/tutorial-multi-gpu/tree/main
推荐的书籍:
Programming Massively Parallel Processors(好像链接失效了,如果有需要可以问我要):https://github.com/h3ct0rjs/HighPerformanceComputing/blob/master/BookRef/Programming Massively Parallel Processors.pdf
How to Understand CUDA in a Real Project
在项目中尝试理解CUDA的用处,目前来说,它最热门的用处是大模型的训练、推理以及CG方向的渲染,当然它也可以迁移到图计算、图卷积神经网络(GCN)方面
LightSeq:A High Performance Library for Sequence Processing and Generation
字节跳动开源的生成模型推理加速引擎,BERT、GPT、VAE等等全都支持,速度很快
代码地址:https://github.com/bytedance/lightseqFasterTransformer:Transformer related optimization, including BERT, GPT
英伟达开源的Transformer推理加速引擎
代码地址:https://github.com/NVIDIA/FasterTransformerFlash-LLM: Enabling Cost-Effective and Highly-Efficient Large Generative Model Inference with Unstructured Sparsity
当前推理的SOTA,达摩院9月的最新研究
代码地址:https://github.com/AlibabaResearch/flash-llmHierarchicalKV:A part of NVIDIA Merlin and provides hierarchical key-value storage to meet RecSys requirements
将键值特征嵌入存储在GPU的高带宽内存和主机内存中,还可以用作通用键值存储
代码地址:https://github.com/NVIDIA-Merlin/HierarchicalKVGPTQ inference TVM kernel
TVM推理,能完整理解一个小模型的训练、推理,亮点是用了TVM(深度学习模型编译框架)编译,这是一个未来的好方向
代码地址:https://github.com/LeiWang1999/AutoGPTQ.tvm3D Gaussian Splatting for Real-Time Radiance Field Rendering(CG方向)
代码地址:https://github.com/graphdeco-inria/gaussian-splattingInstant Neural Graphics Primitives with a Multiresolution Hash Encoding(CG方向)
代码地址:https://github.com/NVlabs/instant-ngp
课程推荐
课程推荐:CS344: Intro to Parallel Programming:https://developer.nvidia.com/udacity-cs344-intro-parallel-programming
『自动驾驶之心知识星球』欢迎加入交流!重磅,自动驾驶之心科研论文辅导来啦,申博、CCF系列、SCI、EI、毕业论文、比赛辅导等多个方向,欢迎联系我们!

① 全网独家视频课程
端到端自动驾驶、仿真测试、自动驾驶C++、BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、CUDA与TensorRT模型部署、大模型与自动驾驶、NeRF、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)

② 国内首个自动驾驶学习社区
国内外最大最专业,近4000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(端到端自动驾驶、世界模型、仿真闭环、2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

④【自动驾驶之心】全平台矩阵

2204

被折叠的 条评论
为什么被折叠?



