يجعل هذا المستودع من الممكن استخدام واجهة برمجة تطبيقات TensorFlow C ++ من مجلدات رمز مصدر TensorFlow ودون استخدام نظام بناء البازل.
يحتوي هذا المستودع على مشروعين CMAKE. يقوم مشروع TensorFlow_CC بتنزيل وإنشاء وتثبيت واجهة برمجة تطبيقات TensorFlow C ++ في نظام التشغيل ويوضح مشروع المثال استخدامه البسيط.
إذا كنت ترغب في البدء في استخدام هذا المشروع على الفور ، جلب صورة مبنية على Docker Hub!
تشغيل الصورة على وحدة المعالجة المركزية:
docker run -it floopcz/tensorflow_cc:ubuntu /bin/bashإذا كنت ترغب أيضًا في استخدام GPU NVIDIA الخاص بك ، فقم بتثبيت NVIDIA DOCKER وتشغيله:
docker run --gpus all -it floopcz/tensorflow_cc:ubuntu-cuda /bin/bashقائمة الصور المتاحة:
| اسم الصورة | وصف |
|---|---|
floopcz/tensorflow_cc:ubuntu | بناء Ubuntu من tensorflow_cc |
floopcz/tensorflow_cc:ubuntu-cuda | Ubuntu Build of tensorflow_cc + nvidia cuda |
floopcz/tensorflow_cc:archlinux | Build Linux Arch of tensorflow_cc |
floopcz/tensorflow_cc:archlinux-cuda | Build Linux Arch of tensorflow_cc + nvidia cuda |
لبناء إحدى الصور بنفسك ، على سبيل ubuntu ، قم بتشغيل:
docker build -t floopcz/tensorflow_cc:ubuntu -f Dockerfiles/ubuntu . تثبيت متطلبات المستودع:
sudo apt-get install cmake curl g++-7 git python3-dev python3-numpy sudo wget
قم بإعداد Python 3 ليكون Python الافتراضي:
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
من أجل بناء Tensorflow نفسه ، يتطلب إجراء البناء أيضًا Bazel:
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
sudo mv bazel.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt-get update && sudo apt-get install bazel
إذا كنت بحاجة إلى دعم GPU على Ubuntu ، فيرجى أيضًا تثبيت Nvidia CUDA Toolkit (> = 11.1) ، حزمة Nvidia ، Cudnn ، و cuda-command-line-tools . سيتم اكتشاف إجراء الإنشاء تلقائيًا CUDA إذا تم تثبيته في /opt/cuda أو /usr/local/cuda .
sudo pacman -S base-devel bazel cmake git python python-numpy wget
لدعم GPU على القوس ، قم أيضًا بتثبيت ما يلي:
sudo pacman -S cuda cudnn nvidia
تحذير: تفشل الإصدارات الأحدث من TensorFlow في بعض الأحيان في البناء مع أحدث إصدار من Bazel. قد ترغب في تثبيت إصدار أقدم من Bazel (على سبيل المثال ، 5.1.1).
تحذير: إذا كان برنامجك يستخدم Protobuf وتواجه الارتباط أو المشكلات الأخرى ، فيمكنك تجربة -DINSTALL_PROTOBUF=ON ONTERS لتثبيت إصدار protobuf يطابق الإصدار المجمل مع TensorFlow. تم تصميم Dockerfiles لدينا بالفعل مع الإصدار الصحيح من Protobuf ، لذلك قد ترغب في تجربة برنامجك في Dockerfile أولاً.
git clone https://github.com/FloopCZ/tensorflow_cc.git
cd tensorflow_cc
cd tensorflow_cc
mkdir build && cd build
cmake ..
make
sudo make install
sudo ldconfig
تحذير: يتم تمكين التحسينات لتوليد وحدة المعالجة المركزية Intel >=haswell افتراضيًا. إذا كان لديك معالج أقدم من جيل haswell ، فقد ترغب في تشغيل export CC_OPT_FLAGS="-march=native" قبل الإنشاء. يوفر هذا الأمر أفضل التحسينات الممكنة لتوليد وحدة المعالجة المركزية الحالية ، ولكنه قد يتسبب في عدم توافق المكتبة المبنية مع الأجيال الأكبر سناً.
تحذير: في بيئات الذاكرة المنخفضة أو العديد من CPU ، يمكن لجدولة Bazel تفوت تقديرات استهلاك الموارد وقد يتم إنهاء البناء من قبل القاتل خارج الذاكرة. إذا كانت هذه هي حالتك ، ففكر في إضافة معلمات حد الموارد إلى CMake ، على سبيل المثال ، cmake -DLOCAL_RAM_RESOURCES=2048 -DLOCAL_CPU_RESOURCES=4 ..
# cleanup bazel build directory
rm -rf ~/.cache
# remove the build folder
cd .. && rm -rf build
// example.cpp
# include < tensorflow/core/platform/env.h >
# include < tensorflow/core/public/session.h >
# include < iostream >
using namespace std ;
using namespace tensorflow ;
int main ()
{
Session* session;
Status status = NewSession ( SessionOptions (), &session);
if (!status. ok ()) {
cout << status. ToString () << " n " ;
return 1 ;
}
cout << " Session successfully created. n " ;
} # CMakeLists.txt
find_package (TensorflowCC REQUIRED)
add_executable (example example.cpp)
# Link the Tensorflow library.
target_link_libraries (example TensorflowCC::TensorflowCC)
# You may also link cuda if it is available.
# find_package(CUDA)
# if(CUDA_FOUND)
# target_link_libraries(example ${CUDA_LIBRARIES})
# endif() mkdir build && cd build
cmake .. && make
./example
إذا كنت لا تزال غير متأكد ، فاستشر Dockerfiles لـ Ubuntu و Arch Linux.