EAIS實例成功綁定至ECS實例后,您需要遠程登錄該ECS實例,然后使用EAIS實例進行AI推理。本文為您介紹使用C++程序通過EAIS推理PyTorch模型的具體操作。
前提條件
已將EAIS實例綁定至ECS實例上。具體操作,請參見綁定ECS實例。
已綁定的ECS實例操作系統為Ubuntu、CentOS或Alibaba Cloud Linux。更換ECS實例操作系統的具體操作,請參見更換操作系統(系統盤)。
背景信息
EAIS支持您根據自身業務場景進行選擇不同的編程語言,來使用EAIS進行PyTorch模型推理,目前支持兩種方式分別為:
使用Python腳本推理PyTorch模型。具體操作,請參見使用EAIS推理PyTorch模型(Python)。
使用C++程序推理PyTorch模型。EAIS支持包含libtorch和CUDA(包含CUDA API和CUDA kernel)的C++程序調用。
本文介紹使用該方式進行推理的具體操作。如果您使用EAIS推理過程中遇到性能或者功能問題,請聯系EAIS技術支持為您提供定制化的優化方案。
與GPU實例(NVIDIA T4)相比,使用EAIS推理會明顯提升推理的性能。C++程序(依賴于libtorch)使用EAIS實例(eais.ei-a6.2xlarge規格)與使用GPU實例(NVIDIA T4)推理的性能對比數據如下表所示。
本文數據僅為示例,具體數據以您的實際推理結果為準。
您也可以參考eais-miniconda軟件包中提供的C++程序代碼,自行測試GPU實例(NVIDIA T4)推理的性能來與EAIS實例進行比較。
推理模型 | eais.ei-a6.2xlarge | GPU實例(NVIDIA T4) | EAIS比GPU實例(NVIDIA T4)提升的性能倍數 |
resnet50 | 2.20 ms | 6.24 ms | 2.84倍 |
bert-base | 5.38 ms | 8.32 ms | 1.55倍 |
使用限制
EAIS支持的軟件版本如下:
如果您的ECS實例操作系統為CentOS 7.9,則默認glibc和libstdc++軟件環境不滿足需求,需要您手動升級glibc和libstdc++版本。查看與升級軟件版本的具體操作,請參見相關操作。
軟件名稱 | 版本 |
glibc版本 | 不低于2.23 |
libstdc++版本 | 不低于3.4.25 |
操作步驟
使用EAIS部署推理程序
您可以在您的開發機器上開發并編譯好代碼,然后將編譯好的程序拷貝到ECS實例上運行,即可使用EAIS推理PyTorch模型。
遠程登錄ECS實例。
安裝eais-tool軟件包,然后查看EAIS實例的相關信息。
具體操作,請參見eais-tool。
安裝eais-cuda軟件包。
具體操作,請參見eais-cuda。
安裝eais-torch軟件包。
具體操作,請參見eais-torch。
部署應用程序。
將您在您自己的開發機器上編譯好的C++推理應用程序以及依賴的庫文件、PyTorch模型文件等拷貝至ECS實例上。
使用EAIS推理PyTorch模型。
假設您用于推理PyTorch模型C++程序名稱為my_program,且您運行您的C++程序的命令為如下所示:
export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_PATH ./my_program my_model.pt
如果您需要使用EAIS推理您的PyTorch模型,您可以執行如下任意一種命令運行您的C++程序:
命令一:
export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_PATH LD_PRELOAD=libtorcheais.so ./my_program my_model.pt
命令二:
export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_PATH export LD_PRELOAD=libtorcheais.so ./my_program my_model.pt
使用EAIS綁定的ECS實例編譯并運行推理程序
您可以在EAIS實例綁定的ECS實例上直接編寫代碼、編譯代碼并運行推理程序。
遠程登錄ECS實例。
安裝CUDA 11.X.X版本軟件包。
執行如下命令,下載并安裝CUDA軟件包。
說明本操作以安裝CUDA 11.7.0版本為例,具體命令以您實際安裝的CUDA版本為準。
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run sudo sh cuda_11.7.0_515.43.04_linux.run --silent --toolkit
執行如下命令,設置CUDA相關的環境變量。
export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
安裝eais-tool軟件包,然后查看EAIS實例的相關信息。
具體操作,請參見eais-tool。
安裝eais-cuda軟件包。
具體操作,請參見eais-cuda。
安裝eais-torch軟件包。
具體操作,請參見eais-torch。
開發模型推理代碼并完成編譯。
執行如下命令,下載包并解壓含有C++示例代碼的軟件包。
wget https://aiacc-inference-public.oss-cn-beijing.aliyuncs.com/eais/packages/eais-miniconda.zip unzip eais-miniconda.zip
開發模型推理代碼并進行編譯。
您可以根據實際情況參考軟件包中的示例代碼,開發需要的模型推理代碼。
C++示例代碼保存在eais-miniconda/eais/cpp/src目錄下。
如果您需要使用EAIS運行推理程序,則您無需修改任何代碼,執行下一步即可。
說明解壓后的示例代碼不依賴于EAIS產品,完全是基于libtorch+CUDA編寫的模型推理代碼,您可以直接使用,也可以在您自己的GPU實例上運行示例代碼。
使用EAIS推理PyTorch模型。
假設您用于推理PyTorch模型C++程序名稱為my_program,且您運行您的C++程序的命令為如下所示:
export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_PATH ./my_program my_model.pt
如果您需要使用EAIS推理您的PyTorch模型,您可以執行如下任意一種命令運行您的C++程序:
命令一:
export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_PATH LD_PRELOAD=libtorcheais.so ./my_program my_model.pt
命令二:
export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_PATH export LD_PRELOAD=libtorcheais.so ./my_program my_model.pt
相關操作
查看和升級glibc版本
遠程登錄ECS實例。
執行如下命令,查看glibc版本。
strings /lib64/libc.so.6 | grep GLIBC_
命令回顯如下,您只需要查看glibc最高的版本是否不低于2.23即可。
如果您的glibc版本低于2.23,則您需要執行如下命令,升級glibc版本。
mkdir glibc pushd glibc wget https://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz tar -xf glibc-2.23.tar.gz cd glibc-2.23/ mkdir build pushd build ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin make -j`nproc` sudo make DESTDIR=/tmp/stage install sudo make install popd popd sudo rm -rf glibc
查看和升級libstdc++版本
遠程登錄ECS實例。
執行如下命令,查看libstdc++版本。
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX_
命令回顯如下,您只需要查看libstdc++最高的版本是否不低于3.4.25即可。
如果您的libstdc++版本低于3.4.25,則您需要執行如下命令,升級libstdc++版本。
mkdir libstd pushd libstd wget http://ftp.de.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.3.0-6_amd64.deb ar -x libstdc++6_8.3.0-6_amd64.deb tar xf data.tar.xz rm /usr/lib64/libstdc++.so.6 cp usr/lib/x86_64-linux-gnu/* /usr/lib64/ popd sudo rm -rf libstd