欢迎光临
我们一直在努力

AI部署001 - C++环境部署与服务器使用

AI部署001 – C++环境部署与服务器使用

1. 前言

​ 学习AI的必经路线之一,AI模型的部署,当我们训练完模型后,想要把模型部署到我们的系统中,一般就需要考虑这个环节了。

​ 对于常用的英伟达GPU,最常用的就是C++的TensorRT,因此这里也附上我自己的学习笔记。

本节内容

  • 服务器的选择
  • C++环境的部署

目录

文章目录

    • AI部署001 – C++环境部署与服务器使用
      • 1. 前言
      • 2. 服务器选择和使用
      • 3. VSCode本地与服务器配置
        • 3.1 VSCode安装
        • 3.2 本地VSCode配置
        • 3.3 SSH连接服务器
        • 3.4 配置远程服务器的VSCode环境
      • 4. Python使用
        • 4.1 确保python可以正常运行
        • 4.2 debug配置
        • 4.3 debug报错解决
      • 5. windows下配置C++
        • 5.1 安装mingw
        • 5.2 安装g++
        • 5.3 配置环境变量
        • 5.4 测试是否安装成功
      • 6. C++配置
        • 6.1 测试C++正常运行
        • 6.2 调试C++
      • 7. 总结

2. 服务器选择和使用

​ 这里采用的服务器是云服务器,平台选择的是:AutoDL,官网:https://www.autodl.com/home。

​ 介绍一下,如何使用:

  • 地区可以任意选择,然后选择GPU型号和GPU数量,这里由于是新手尝试C++,所以都选择最差的即可,比如10系列的GPU或者20系列的GPU:
  • 在这里插入图片描述

  • 比如,我这里选择北京地区 – 20系列的GPU,数量为1
  • 然后,点击“1卡可租”的按钮,进入租赁协议
  • 我们选择基础镜像即可,可以看到基础镜像也包好了必备的miniconda、深度学习框架等等,另外,我们也可以定制,比如选择pytorch1.8版本的Ubuntu系统:
  • 在这里插入图片描述

  • 然后点击创建并开机即可(记得账号内得有余额才行)

  • 然后你就可以看到登录系统的SSH指令和密码

  • 在这里插入图片描述

    ​ 因为前期我们都用不到GPU,因此可以选择无卡模式启动,这样更省钱,一小时只要一毛钱:

    在这里插入图片描述

    3. VSCode本地与服务器配置

    3.1 VSCode安装

    ​ 这一部直接跳过,在自己电脑安装VSCode非常简单,如果不知道如何安装,可以在CSDN论坛百度搜索,非常详细。

    3.2 本地VSCode配置

    ​ 需要配置三个:

    • Python
    • C++
    • SSH

    ​ 打开VSCode,找到拓展插件部分,直接搜索python、C++、SSH,然后安装即可,以SSH安装为例子: 在这里插入图片描述

    ​ 安装完毕后,建议重启下软件即可。

    ​ 然后通过已安装那里,检测自己是否安装完成:

    在这里插入图片描述

    3.3 SSH连接服务器

    ​ 在VSCode左下角找到远程连接,点击:

    在这里插入图片描述

    ​ 然后在弹出的窗口,输入我们服务器给我们的ssh指令,回车:

    在这里插入图片描述

    ​ 然后,在新弹出的窗口,输入我们的密码:

    在这里插入图片描述

    ​ 即可连接成功,如下所示:

    在这里插入图片描述

    3.4 配置远程服务器的VSCode环境

    ​ 上面我们只部署了本地VSCode的环境,这里我们需要重新走一遍上面的流程,进行部署。

    ​ 首先,你可以点开拓展,查看的确没有安装C++之类的:

    在这里插入图片描述

    ​ 因此,我们需要相同配置服务器,不过这里我们只安装:

    • Python
    • C++

    ​ 流程和上面一样,非常简单。

    4. Python使用

    4.1 确保python可以正常运行

    ​ 通过VSCode的可视化界面,选择Linux中的一个文件夹,然后在里面创建一个demo.py的测试文件,如下:

    在这里插入图片描述

    ​ 因为服务器自带conda,我们可以创建一个新的虚拟环境,然后运行我们的代码:

    conda create –name test
    conda activate test
    python demo.py

    ​ 不会使用conda的可以看我主页的anaconda的使用教程,很基础。

    ​ 结果如下:

    在这里插入图片描述

    ​ 如果遇到报错:IMPORTANT: You may need to close and restart your shell after running ‘conda init’.

    ​ 使用下面指令解决:(因为没有正确退出环境)

    source activate
    conda deactivate

    4.2 debug配置

    ​ 点击左侧的运行和调试:

    在这里插入图片描述

    ​ VSCode调试代码,需要创建一个.json文件,不过不用担心,点击这个,然后勾选python File,即可自动创建这个json文件,如果不感兴趣,里面的相关参数可以不用研究,如果感兴趣,直接百度相关参数即可:

    在这里插入图片描述

    ​ 然后,就可以正常调试了,给程序打上断点,然后启用调试即可,如下:

    在这里插入图片描述

    4.3 debug报错解决

    ​ 我遇到的错误是,说python版本过低,此时,可以如下操作:

  • 在vscode下按下键盘:ctrl + shift + p
  • 然后输入:Python: Select Interpreter
  • 重新选择一个python解释器,建议选择python3.9以上的版本
  • 这个时候在尝试debug就成功了,如下图演示:
  • 在这里插入图片描述

    5. windows下配置C++

    5.1 安装mingw

    ​ 下载地址:https://sourceforge.net/projects/mingw/。

    ​ 这是一个包管理器,安装非常容易,这个非常小,可以直接默认安装:

    ​ 安装完成后,弹出下面的界面说明安装成功:

    在这里插入图片描述

    5.2 安装g++

    ​ 在上面的界面中,找到mingw32-gcc-g++、等安装完成后,再打开这个软件,安装一下mingw32-gdb.bin,注意Class是bin的(后面调试需要它):

    在这里插入图片描述

    ​ 然后,点击左上角的Installation菜单中的Apply changes选项,然后管理器将开始在线安装或更新被选中的组件。

    ​ 等待安装完成即可

    5.3 配置环境变量

    ​ 找到环境变量,可以是系统变量,也可以是用户变量,都可以:

    ​ 把我们刚刚MinGW的路径加入其中,如果是默认的话,就在C盘:

    在这里插入图片描述

    5.4 测试是否安装成功

    ​ 打开cmd,输入g++ -v或者gcc -v,如果显示下图说明成功安装:

    在这里插入图片描述

    6. C++配置

    6.1 测试C++正常运行

    ​ 先创建一个C++文件,比如demo.cpp,写下下面代码:

    #include <iostream>
    using namespace std;

    int main(){

    // 计算 1+2+3+4+5
    int sum {0};
    for (int i {0}; i < 5; i++)
    sum += i;
    // 输出结果
    cout << sum << endl;
    return 0;

    }

    ​ C++是编译型语言,需要先编译,然后执行编译后的文件:

    g++ demo.cpp o demo
    # 执行cpp,输出到demo,注意我这是在Ubuntu系统下的,因此g++编译器已经有了
    ./demo
    # 运行demo,返回结果

    在这里插入图片描述

    6.2 调试C++

    ​ 我们前面不是已经配置了python嘛,它会在目录中生成一个.vscode/launch.json的文件,这个就是配置文件,我们打开它,然后点击右下角的”添加配置“,选择C++即可:

    在这里插入图片描述

    ​ 默认生成的配置文件,并不能直接使用,我们需要自己配置,最主要的是输入程序名字:

    ​ 这里我建议大家直接拷贝我整理好的,可以直接使用的调试文件:

    使用方法

  • 新建一个名为.vscode的文件夹
  • 在其下创建三个json文件,分别名为:
    • launch.json

    {
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
    {
    "name": "(gdb) 启动",
    "type": "cppdbg",
    "request": "launch",
    "program": "${workspaceFolder}/release/${fileBasenameNoExtension}", // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀
    "args": [],
    "stopAtEntry": false,
    "cwd": "${fileDirname}", // 文件所在的文件夹路径
    "environment": [],
    "externalConsole": false,
    "MIMode": "gdb",
    "setupCommands": [
    {
    "description": "为 gdb 启用整齐打印",
    "text": "-enable-pretty-printing",
    "ignoreFailures": true
    },
    {
    "description": "将反汇编风格设置为 Intel",
    "text": "-gdb-set disassembly-flavor intel",
    "ignoreFailures": true
    }
    ],
    "preLaunchTask": "C/C++: g++ 生成活动文件" // tasks.json的label
    },
    {
    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "${file}", // 当前文件
    // "program": "demo.py", // 指定文件
    "console": "integratedTerminal",
    "justMyCode": true // false表示可以进入第三方库(如Pytorch)里进行调试
    }
    ]
    }

    • settings.json

    {
    "files.associations": {
    "iostream": "cpp",
    "ostream": "cpp",
    "array": "cpp",
    "atomic": "cpp",
    "*.tcc": "cpp",
    "cctype": "cpp",
    "clocale": "cpp",
    "cmath": "cpp",
    "cstdarg": "cpp",
    "cstddef": "cpp",
    "cstdint": "cpp",
    "cstdio": "cpp",
    "cstdlib": "cpp",
    "cwchar": "cpp",
    "cwctype": "cpp",
    "deque": "cpp",
    "unordered_map": "cpp",
    "vector": "cpp",
    "exception": "cpp",
    "algorithm": "cpp",
    "functional": "cpp",
    "iterator": "cpp",
    "memory": "cpp",
    "memory_resource": "cpp",
    "numeric": "cpp",
    "optional": "cpp",
    "random": "cpp",
    "string": "cpp",
    "string_view": "cpp",
    "system_error": "cpp",
    "tuple": "cpp",
    "type_traits": "cpp",
    "utility": "cpp",
    "fstream": "cpp",
    "initializer_list": "cpp",
    "iosfwd": "cpp",
    "istream": "cpp",
    "limits": "cpp",
    "new": "cpp",
    "sstream": "cpp",
    "stdexcept": "cpp",
    "streambuf": "cpp",
    "typeinfo": "cpp",
    "bit": "cpp"
    }
    }

    • tasks.json

    {
    "version": "2.0.0",
    "tasks": [
    {
    "type": "cppbuild",
    "label": "C/C++: g++ 生成活动文件",
    "command": "C:/MinGW/bin/g++", // g++的路径
    "args": [
    "-fdiagnostics-color=always", // 颜色
    "-g", // 调试信息
    "-Wall", // 开启所有警告
    "-std=c++14", // c++14标准
    "${file}", // 文件本身,仅适用于演示,无法同时编译所有文件
    // "${fileDirname}/*.cpp", // 文件所在的文件夹路径下所有cpp文件
    "-o", // 输出
    "${workspaceFolder}/release/${fileBasenameNoExtension}" // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀
    ],
    "options": {
    "cwd": "${fileDirname}" // 文件所在的文件夹路径
    },
    "problemMatcher": [
    "$gcc"
    ],
    "group": {
    "kind": "build",
    "isDefault": true
    },
    "detail": "编译器: C:/MinGW/bin/g++"
    }
    ]
    }

    ​ 完成后,就可以对代码进行调试,它会把自动生成exe文件在一个名为releases的文件夹下,如下:

    在这里插入图片描述

    7. 总结

    ​ 本节主要学习了C++的环境部署,因为C++一般都在Ubuntu上开发,因此还学习了远程服务器的选择与使用,还有vscode如何调试代码、如何远程连接Ubuntu等内容。

    ​ 下一节的内容:速通C++基础知识。

    赞(0)
    未经允许不得转载:171主机测评 » AI部署001 - C++环境部署与服务器使用
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址