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日
    浏览(53)
  • Nginx 入门指南:从入门到放弃(不是!)从零开始掌握高性能 Web 服务器

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    1.4.4.1. InnoDB的二级索引在叶子节点中保存了记录的主键值,所以如果二级索引能够覆盖查询,则可以避免对主键索引的二次查询 7.1.5.1. 常见的类似错误通常是由于尝试使用rsync备份InnoDB导致的 7.3.3.1. 否则,对于范围查询、索引覆盖扫描等操作来说,速度可能会降低很多 7

    2024年02月08日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包