1.前言和介绍

这篇具有很好参考价值的文章主要介绍了1.前言和介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

从零学习算法部署-TensorRT篇

杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记

本次主要是对课程的内容和所需环境做一个简要的介绍

课程大纲可看下面的思维导图

1.前言和介绍,tensorRT从零起步高性能部署,模型部署,tensorRT,CUDA,高性能

1. 说在前面

本课程以 TensorRT 和 PyTorch 为主,不涉及模型的训练,例如蒸馏、剪枝,仅以工程角度考虑,如何导出模型、让模型尽可能高性能以及如何上线交付多线程

部署的优化思想、导出方式、解决问题流程,可借鉴到其它算法场景,例如3399、安卓等等

算法部署,学什么? 精简的 CUDA 编程 => TensorRT基础 => 项目实战

精简的 CUDA 编程

  • 只求够用,能写 图像预处理、后处理、理解索引计算,就够够的了,高性能的基础

TensorRT基础

  • 如何编译模型、推理模型,onnx 如何控制,插件怎么写,解析器怎么配。深入理解 TensorRT 这个东西

项目实战

  • 拿真实的项目,实际操作并在 tensorRT 上以高性能推理起来。学习拿到项目如何分析,问题如何解决

本课程开发了自动环境配置的 python 包,解决环境配置困扰。

允许零基础学员更友好的学习教程,并进行实验,力求更好的学习效率

同时还提供了约 52 个学习案例代码,从浅到深,逐步递进学习

课程内容

  • 介绍(学习方式和工具)
  • CUDA精简课程(Driver和Runtime)
  • TensorRT基础(分类器、检测器、插件、onnx)
  • TensorRT集成,项目实战(目标检测、人脸识别、姿态识别等)

课程需要什么

  • Linux 系列 Ubuntu 系统,并配置有 NVIDIA 显卡和显卡驱动程序(大于450)
  • 可以执行 pip 进行安装
  • 以上非必要,如果有,则体验最佳,学习效率最高

2. 介绍

学习所需基础环境

  1. 语言,以 C++ 和 Python 为主
  2. C++ 的编译,以 Makefile 为主(可自动配置环境,无需懂)
  3. IDE,用 Visual Studio Code
  4. 操作系统,通常可以(Windows 本机 + Ubuntu 服务器,用 ssh 连接)或者(Ubuntu 本机),运行环境必须是 linux
  5. 显卡,NVIDIA 的显卡,并安装有 450 以上的显卡驱动为佳
  6. Python 方面,anaconda 并配置有 Python3.6/3.7/3.8/3.9 任意一个,同时安装 PyTorch1.8 及以上

学习工具

  1. 环境配置一直是该系列课程最艰难的事情
  2. 本课程提供自动环境配置/代码下载工具,trtpy,依赖于python环境的一个包
  3. 提供的案例代码可立即运行,环境自动配置、数据自动下载

3. 拓展:vscode

关于 vscode 以及 ssh 的相关内容介绍这里就不多讲了,这里更多的是来记录下自己不懂的地方

更多内容可参考 SSH和VScode远程开发

3.1 文件传输

下载

scp -P 端口号 -r 用户名@服务器IP或域名:/远程文件的路径 /本地目标路径

-P 是服务器的端口,而 -r 在传文件夹的时候一定要开启

例如:

scp -P 9091 -r root@10.16.100.48:/datav/shared/a.tar.gz C:\Users\Q\Desktop

上传

scp -P 端口号 本地文件路径 用户名@服务器IP或域名:/目标路径

例如:

scp -P 9091 C:\Users\Q\Desktop\hello.cpp root@10.16.100.48:/datav/shared/

3.2 高效调试配置

3.2.1 配置launch.json
{
    "version": "0.2.0",
    "configurations": [
        // python debug
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            // "program": "main.py",
            "console": "integratedTerminal",
            "justMyCode": true  // false 的话 你可以进入一些库的源码里面进行调试,比如说进入pytorch的一部分源码
        },
        // c++ debug
        {
            "name": "C++ file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/workspace/pro",  // 你要调试的文件,这里指的是cpp最终生成的可执行文件
            "args": [],
            "environment": [{"name": "LD_LIBRAYRY_PATH", "value": "$(LD_LIBRAYRY_PATH):/mypath/to/lib"}],
            // 相当于直接 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mypath/to/lib/
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/workspace",  // c++在运行过程时会在这里寻找依赖和其他文件(比如说 图片)
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                {
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build"  // 在运行launch之前先运行task.json里的东西
        }
    ]
}

详细参考:https://code.visualstudio.com/docs/editor/debugging

3.2.2 配置tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "make pro -j6"
        }
    ]
}

每次运行 launch 之前都会运行 tasks(这里的指令是编译一遍)

3.2.3 配置settings.json

在 .vscode/setting.json 中配置 “*.cu”: “cuda-cpp” 可以实现对 cuda 的语法解析

{
    "files.associations": {
        "*.cpp": "cpp",
        "*.cu": "cuda-cpp",
        "deque": "cpp",
        "string": "cpp",
        "vector": "cpp",
        "*.tcc": "cpp",
        "__hash_table": "cpp",
        "__split_buffer": "cpp",
        "__tree": "cpp",
        "array": "cpp",
        "bitset": "cpp",
        "initializer_list": "cpp",
        "iterator": "cpp",
        "map": "cpp",
        "queue": "cpp",
        "random": "cpp",
        "set": "cpp",
        "stack": "cpp",
        "string_view": "cpp",
        "unordered_map": "cpp",
        "utility": "cpp",
        "__atomic": "cpp",
        "__functional_base": "cpp",
        "__functional_base_03": "cpp",
        "__tuple": "cpp",
        "algorithm": "cpp",
        "chrono": "cpp",
        "type_traits": "cpp",
        "filesystem": "cpp",
        "functional": "cpp",
        "limits": "cpp",
        "memory": "cpp",
        "ratio": "cpp",
        "tuple": "cpp",
        "istream": "cpp",
        "ostream": "cpp",
        "future": "cpp",
        "system_error": "cpp",
        "__config": "cpp",
        "__nullptr": "cpp"
    }
}
3.2.4 配置c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/datav/software/anaconda3/lib/python3.9/site-packages/trtpy/trt8cuda112cudnn8/include/**"
            ],  // 让 intelliSense engine(语法提示,自动补全) 能够找到所有需要的头文件
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu11",
            "cppStandard": "gnu++11",
            "intelliSenseMode": "linux-gcc-x64" // ** 指的是递归查询,除了当前目录,多少级目录都往下找
        }
    ],
    "version": 4
}

详细参考:https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference文章来源地址https://www.toymoban.com/news/detail-533944.html

到了这里,关于1.前言和介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生 | 从零开始,Minio 高性能分布式对象存储快速入手指南

    [ 点击 👉 关注「 全栈工程师修炼指南」公众号 ] 希望各位看友多多支持【关注、点赞、评论、收藏、投币】,助力每一个梦想。 【 WeiyiGeek Blog\\\'s - 花开堪折直须折,莫待无花空折枝  】 作者主页: 【 https://weiyigeek.top 】 博客地址: 【 https://blog.weiyigeek.top 】 作者答疑学习交

    2024年02月08日
    浏览(58)
  • Nginx 入门指南:从入门到放弃(不是!)从零开始掌握高性能 Web 服务器

    Nginx 可以构建高性能、可靠的 Web 服务器。本文将带你了解 Nginx 的基本概念、安装方法以及常见配置,让你快速上手并搭建自己的 Web 服务器。 随着互联网的发展,构建稳定、高性能的 Web 服务器成为了许多开发者的重要需求。而在众多的服务器软件中, Nginx 以其出色的性能

    2024年04月15日
    浏览(61)
  • 高性能API网关Kong介绍

    本文:高性能、API网关、Kong、微服务 ​​​​​​​         API网关是随着微服务(Microservice)概念兴起的一种架构模式。原本一个庞大的单体应用(All in one)业务系统被拆分成许多微服务(Microservice)系统进行独立的维护和部署,服务拆分带来的变化是API的规

    2024年02月03日
    浏览(44)
  • 高性能软件负载OpenResty介绍和安装

    OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项 当请求进入Nginx后先READ REQUEST HEADERS 读取头部 然后再分配由哪个指令操作 Identity 寻找匹配哪个Location* Apply Rate Limits 是否要对该请求限制 Preform Authertication 权限验

    2024年02月08日
    浏览(59)
  • 高性能的全文检索库Apache Lucene 介绍

            Apache Lucene 是一个高性能的全文检索库,由 Apache Software Foundation 维护。Lucene 提供了丰富的 API,用于实现快速、准确的全文搜索。本文将详细介绍 Apache Lucene 的技术特点、应用场景和优势。         Apache Lucene 的历史和发展         Apache Lucene 起源于 1999 年

    2024年03月27日
    浏览(53)
  • 高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍

    更多技术交流、求职机会,欢迎关注 字节跳动数据平台微信公众号,回复【1】进入官方交流群 物化视图是指将视图的计算结果存储在数据库中的一种技术。当用户执行查询时,数据库会直接从已经预计算好的结果中获取数据,而不需要重新计算视图。具体来说,物化视图是

    2023年04月27日
    浏览(44)
  • 瑞芯微第二代8nm高性能AIOT平台 RK3576 详细介绍

    RK3576瑞芯微第二代8nm高性能AIOT平台,它集成了独立的6TOPS(Tera Operations Per Second,每秒万亿次操作)NPU(神经网络处理单元),用于处理人工智能相关的任务。此外,RK3576还支持UFS(Universal Flash Storage,通用闪存存储)存储,提供了高效的数据存储和读取能力。 RK3567-Rockchip-

    2024年04月10日
    浏览(68)
  • 《高性能MySQL》——创建高性能的索引(笔记)

    索引(在MySQL中也叫做“键(key)”) 是存储引擎用于快速找到记录的一种数据结构。 索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。 在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但当数据量逐渐增大时

    2024年02月07日
    浏览(115)
  • 【Linux高性能服务器编程】——高性能服务器框架

      hello !大家好呀! 欢迎大家来到我的Linux高性能服务器编程系列之高性能服务器框架介绍,在这篇文章中, 你将会学习到高效的创建自己的高性能服务器,并且我会给出源码进行剖析,以及手绘UML图来帮助大家来理解,希望能让大家更能了解网络编程技术!!! 希望这篇

    2024年04月25日
    浏览(61)
  • 读高性能MySQL(第4版)笔记08_创建高性能索引(上)

    2.4.2.1. 按照索引列中的数据大小顺序存储的 2.4.3.1. 键前缀查找只适用于根据最左前缀的查找 2.4.4.1. 在查询某些条件的数据时,存储引擎不再需要进行全表扫描 2.4.4.2. 通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包