PyTorch عبارة عن حزمة Python توفر ميزتين عاليتي المستوى:
يمكنك إعادة استخدام حزم Python المفضلة لديك مثل NumPy وSciPy وCython لتوسيع PyTorch عند الحاجة.
يمكن العثور على صحة الجذع (إشارات التكامل المستمر) على hud.pytorch.org.
تعلم أساسيات PyTorch
على المستوى التفصيلي، PyTorch عبارة عن مكتبة تتكون من المكونات التالية:
عنصر | وصف |
---|---|
الشعلة | مكتبة Tensor مثل NumPy، مع دعم قوي لوحدة معالجة الرسومات |
torch.autograd | مكتبة تفاضل تلقائية قائمة على الشريط تدعم جميع عمليات Tensor القابلة للتمييز في الشعلة |
torch.jit | مكدس تجميع (TorchScript) لإنشاء نماذج قابلة للتسلسل والتحسين من كود PyTorch |
torch.nn | مكتبة شبكات عصبية مدمجة بعمق مع برنامج autograd مصمم لتحقيق أقصى قدر من المرونة |
torch.multiprocessing | معالجة بايثون المتعددة، ولكن مع مشاركة الذاكرة السحرية لموترات الشعلة عبر العمليات. مفيد لتحميل البيانات وتدريب Hogwild |
torch.utils | DataLoader ووظائف المرافق الأخرى للراحة |
عادة، يتم استخدام PyTorch إما على النحو التالي:
مزيد من التفصيل:
إذا كنت تستخدم NumPy، فقد استخدمت Tensors (المعروف أيضًا باسم ndarray).
يوفر PyTorch Tensors يمكن أن يعيش إما على وحدة المعالجة المركزية أو وحدة معالجة الرسومات ويسرع العمليات الحسابية بمقدار كبير.
نحن نقدم مجموعة واسعة من إجراءات الموتر لتسريع وملاءمة احتياجاتك الحسابية العلمية مثل التقطيع والفهرسة والعمليات الرياضية والجبر الخطي والتخفيضات. وهم سريعون!
لدى PyTorch طريقة فريدة لبناء الشبكات العصبية: استخدام جهاز تسجيل وإعادة تشغيله.
تتمتع معظم أطر العمل مثل TensorFlow وTheano وCaffe وCNTK برؤية ثابتة للعالم. يتعين على المرء بناء شبكة عصبية وإعادة استخدام نفس البنية مرارا وتكرارا. إن تغيير الطريقة التي تتصرف بها الشبكة يعني أنه يتعين على المرء أن يبدأ من الصفر.
مع PyTorch، نستخدم تقنية تسمى التمايز التلقائي للوضع العكسي، والتي تسمح لك بتغيير الطريقة التي تتصرف بها شبكتك بشكل تعسفي بدون أي تأخير أو حمل. يأتي إلهامنا من العديد من الأوراق البحثية حول هذا الموضوع، بالإضافة إلى الأعمال الحالية والسابقة مثل torch-autograd، وautograd، وChainer، وما إلى ذلك.
على الرغم من أن هذه التقنية ليست فريدة من نوعها بالنسبة لـ PyTorch، إلا أنها واحدة من أسرع تطبيقاتها حتى الآن. يمكنك الحصول على أفضل سرعة ومرونة لأبحاثك المجنونة.
PyTorch ليس رابطًا لـ Python في إطار عمل C++ متآلف. لقد تم تصميمه ليتم دمجه بعمق في لغة بايثون. يمكنك استخدامه بشكل طبيعي كما لو كنت تستخدم NumPy / SciPy / scikit-learn وما إلى ذلك. يمكنك كتابة طبقات الشبكة العصبية الجديدة الخاصة بك في Python نفسها، باستخدام مكتباتك المفضلة واستخدام حزم مثل Cython و Numba. هدفنا هو عدم إعادة اختراع العجلة عند الاقتضاء.
تم تصميم PyTorch ليكون بديهيًا وخطيًا في التفكير وسهل الاستخدام. عند تنفيذ سطر من التعليمات البرمجية، يتم تنفيذه. لا توجد رؤية غير متزامنة للعالم. عند الدخول إلى مصحح الأخطاء أو تلقي رسائل خطأ وتتبعات المكدس، يكون فهمها أمرًا مباشرًا. يشير تتبع المكدس إلى المكان الذي تم فيه تحديد التعليمات البرمجية الخاصة بك بالضبط. نأمل ألا تقضي ساعات أبدًا في تصحيح أخطاء التعليمات البرمجية الخاصة بك بسبب آثار المكدس السيئة أو محركات التنفيذ غير المتزامنة وغير الشفافة.
يحتوي PyTorch على الحد الأدنى من الحمل الإطاري. نقوم بدمج مكتبات التسريع مثل Intel MKL وNVIDIA (cuDNN, NCCL) لزيادة السرعة إلى أقصى حد. في جوهره، أصبحت وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات Tensor والواجهات الخلفية للشبكة العصبية ناضجة وتم اختبارها لسنوات.
ومن ثم، فإن PyTorch سريع جدًا – سواء كنت تقوم بتشغيل شبكات عصبية صغيرة أو كبيرة.
يعد استخدام الذاكرة في PyTorch فعالاً للغاية مقارنةً بـ Torch أو بعض البدائل. لقد قمنا بكتابة مخصصات ذاكرة مخصصة لوحدة معالجة الرسومات للتأكد من أن نماذج التعلم العميق الخاصة بك تتمتع بأقصى قدر من كفاءة الذاكرة. يمكّنك هذا من تدريب نماذج تعلم عميقة أكبر من ذي قبل.
تم تصميم كتابة وحدات الشبكة العصبية الجديدة، أو التفاعل مع Tensor API الخاص بـ PyTorch، لتكون واضحة ومع الحد الأدنى من التجريد.
يمكنك كتابة طبقات شبكة عصبية جديدة في Python باستخدام torch API أو مكتباتك المفضلة المستندة إلى NumPy مثل SciPy.
إذا كنت ترغب في كتابة طبقاتك بلغة C/C++، فإننا نوفر لك واجهة برمجة تطبيقات ملحقة ملائمة تتسم بالكفاءة وبأقل قدر ممكن من المعايير. لا يلزم كتابة رمز المجمع. يمكنك مشاهدة البرنامج التعليمي هنا ومثال هنا.
توجد أوامر لتثبيت الثنائيات عبر Conda أو عجلات النقطة على موقعنا على الويب: https://pytorch.org/get-started/locally/
يتم توفير عجلات Python لـ NVIDIA’s Jetson Nano وJetson TX1/TX2 وJetson Xavier NX/AGX وJetson AGX Orin هنا ويتم نشر حاوية L4T هنا
وهي تتطلب JetPack 4.2 وما فوق، ويقوم @dusty-nv و@ptrblck بصيانتها.
إذا كنت تقوم بالتثبيت من المصدر، فستحتاج إلى:
* يستخدم PyTorch CI أدوات Visual C++ BuildTools، والتي تأتي مع إصدارات Visual Studio Enterprise أو Professional أو Community. يمكنك أيضًا تثبيت أدوات الإنشاء من https://visualstudio.microsoft.com/visual-cpp-build-tools/. لا تأتي أدوات الإنشاء مع Visual Studio Code افتراضيًا.
* نوصي بشدة بتثبيت بيئة Anaconda. سوف تحصل على مكتبة BLAS (MKL) عالية الجودة وستحصل على إصدارات تبعية يمكن التحكم فيها بغض النظر عن توزيعة Linux الخاصة بك.
يظهر أدناه مثال لإعداد البيئة:
$ source < CONDA_INSTALL_DIR > /bin/activate
$ conda create -y -n < CONDA_NAME >
$ conda activate < CONDA_NAME >
$ source < CONDA_INSTALL_DIR > S cripts a ctivate.bat
$ conda create -y -n < CONDA_NAME >
$ conda activate < CONDA_NAME >
$ call " C:Program FilesMicrosoft Visual StudioCommunityVCAuxiliaryBuildvcvarsall.bat " x64
إذا كنت تريد الترجمة بدعم CUDA، فحدد إصدارًا مدعومًا من CUDA من مصفوفة الدعم الخاصة بنا، ثم قم بتثبيت ما يلي:
ملاحظة: يمكنك الرجوع إلى مصفوفة دعم cuDNN لإصدارات cuDNN مع مختلف برامج تشغيل CUDA وCUDA وأجهزة NVIDIA المدعومة.
إذا كنت تريد تعطيل دعم CUDA، قم بتصدير متغير البيئة USE_CUDA=0
. يمكن العثور على متغيرات بيئة أخرى قد تكون مفيدة في setup.py
.
إذا كنت تقوم بالتصميم لمنصات Jetson من NVIDIA (Jetson Nano، TX1، TX2، AGX Xavier)، تتوفر تعليمات تثبيت PyTorch لـ Jetson Nano هنا
إذا كنت ترغب في الترجمة بدعم من ROCm، فقم بتثبيت
افتراضيًا، يتوقع نظام الإنشاء تثبيت ROCm في /opt/rocm
. إذا تم تثبيت ROCm في دليل مختلف، فيجب تعيين متغير البيئة ROCM_PATH
إلى دليل تثبيت ROCm. يكتشف نظام البناء تلقائيًا بنية AMD GPU. اختياريًا، يمكن تعيين بنية AMD GPU بشكل صريح باستخدام بنية AMD GPU المتغيرة للبيئة PYTORCH_ROCM_ARCH
إذا كنت تريد تعطيل دعم ROCm، قم بتصدير متغير البيئة USE_ROCM=0
. يمكن العثور على متغيرات بيئة أخرى قد تكون مفيدة في setup.py
.
إذا كنت تريد الترجمة بدعم Intel GPU، فاتبع هذه
إذا كنت تريد تعطيل دعم Intel GPU، فقم بتصدير متغير البيئة USE_XPU=0
. يمكن العثور على متغيرات بيئة أخرى قد تكون مفيدة في setup.py
.
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive
شائع
conda install cmake ninja
# Run this command on native Windows
conda install rust
# Run this command from the PyTorch directory after cloning the source code using the “Get the PyTorch Source“ section below
pip install -r requirements.txt
على لينكس
pip install mkl-static mkl-include
# CUDA only: Add LAPACK support for the GPU if needed
conda install -c pytorch magma-cuda121 # or the magma-cuda* that matches your CUDA version from https://anaconda.org/pytorch/repo
# (optional) If using torch.compile with inductor/triton, install the matching version of triton
# Run from the pytorch directory after cloning
# For Intel GPU support, please explicitly `export USE_XPU=1` before running command.
make triton
على ماك
# Add this package on intel x86 processor machines only
pip install mkl-static mkl-include
# Add these packages if torch.distributed is needed
conda install pkg-config libuv
على ويندوز
pip install mkl-static mkl-include
# Add these packages if torch.distributed is needed.
# Distributed package support on Windows is a prototype feature and is subject to changes.
conda install -c conda-forge libuv=1.39
على لينكس
إذا كنت ترغب في ترجمة PyTorch مع تمكين C++ ABI الجديد، فقم أولاً بتشغيل هذا الأمر:
export _GLIBCXX_USE_CXX11_ABI=1
يرجى ملاحظة أنه بدءًا من PyTorch 2.5، فإن إصدار PyTorch مع XPU يدعم كلاً من واجهات برمجة تطبيقات C++ الجديدة والقديمة. في السابق، كانت وحدة XPU تدعم فقط C++ ABI الجديد. إذا كنت تريد التجميع باستخدام دعم Intel GPU، فيرجى اتباع دعم Intel GPU.
إذا كنت تقوم بالتجميع لـ AMD ROCm، فقم أولاً بتشغيل هذا الأمر:
# Only run this if you're compiling for ROCm
python tools/amd_build/build_amd.py
قم بتثبيت باي تورش
export CMAKE_PREFIX_PATH= " ${CONDA_PREFIX :- ' $(dirname $(which conda))/../ ' } : ${CMAKE_PREFIX_PATH} "
python setup.py develop
على ماك
python3 setup.py develop
على ويندوز
إذا كنت تريد إنشاء كود بايثون قديم، فيرجى الرجوع إلى البناء على الكود القديم وCUDA
يبني وحدة المعالجة المركزية فقط
في هذا الوضع، سيتم تشغيل حسابات PyTorch على وحدة المعالجة المركزية لديك، وليس على وحدة معالجة الرسومات الخاصة بك
python setup.py develop
ملاحظة حول OpenMP: تطبيق OpenMP المطلوب هو Intel OpenMP (iomp). لكي تتمكن من الارتباط بـ iomp، ستحتاج إلى تنزيل المكتبة يدويًا وإعداد بيئة البناء عن طريق تعديل CMAKE_INCLUDE_PATH
و LIB
. التعليمات الواردة هنا هي مثال لإعداد كل من MKL وIntel OpenMP. بدون هذه التكوينات لـ CMake، سيتم استخدام وقت تشغيل Microsoft Visual C OpenMP (vcomp).
بناء على أساس CUDA
في هذا الوضع، ستستفيد حسابات PyTorch من وحدة معالجة الرسومات الخاصة بك عبر CUDA لمعالجة الأرقام بشكل أسرع
هناك حاجة إلى NVTX لبناء Pytorch باستخدام CUDA. NVTX هو جزء من توزيع CUDA، حيث يطلق عليه "Nsight Compute". لتثبيته على CUDA المثبت بالفعل، قم بتشغيل تثبيت CUDA مرة أخرى وحدد مربع الاختيار المقابل. تأكد من تثبيت CUDA مع Nsight Compute بعد Visual Studio.
حاليًا، يتم دعم VS 2017/2019 وNinja كمولد CMake. إذا تم اكتشاف ninja.exe
في PATH
، فسيتم استخدام Ninja كمولد افتراضي، وإلا فسيتم استخدام VS 2017 / 2019.
إذا تم تحديد Ninja باعتباره المولد، فسيتم تحديد أحدث MSVC باعتباره سلسلة الأدوات الأساسية.
غالبًا ما تكون هناك حاجة إلى مكتبات إضافية مثل Magma وoneDNN والمعروفة أيضًا باسم MKLDNN أو DNNL وSccache. يرجى الرجوع إلى مساعد التثبيت لتثبيتها.
يمكنك الرجوع إلى البرنامج النصي build_pytorch.bat للتعرف على بعض تكوينات متغيرات البيئة الأخرى
cmd
:: Set the environment variables after you have downloaded and unzipped the mkl package,
:: else CMake would throw an error as `Could NOT find OpenMP`.
set CMAKE_INCLUDE_PATH = {Your directory}mklinclude
set LIB = {Your directory}mkllib; %LIB%
:: Read the content in the previous section carefully before you proceed.
:: [Optional] If you want to override the underlying toolset used by Ninja and Visual Studio with CUDA, please run the following script block.
:: "Visual Studio 2019 Developer Command Prompt" will be run automatically.
:: Make sure you have CMake >= 3.12 before you do this when you use the Visual Studio generator.
set CMAKE_GENERATOR_TOOLSET_VERSION = 14.27
set DISTUTILS_USE_SDK = 1
for /f " usebackq tokens=* " %i in (`"% ProgramFiles(x86) %Microsoft Visual StudioInstallervswhere.exe" -version [15^,17^) -products * -latest -property installationPath`) do call "% iVCAuxiliaryBuildvcvarsall.bat " x64 -vcvars_ver= %CMAKE_GENERATOR_TOOLSET_VERSION%
:: [Optional] If you want to override the CUDA host compiler
set CUDAHOSTCXX = C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.27.29110binHostX64x64cl.exe
python setup.py develop
يمكنك ضبط تكوين متغيرات cmake اختياريًا (بدون البناء أولاً)، عن طريق القيام بما يلي. على سبيل المثال، يمكن إجراء ضبط الدلائل المكتشفة مسبقًا لـ CuDNN أو BLAS من خلال هذه الخطوة.
على لينكس
export CMAKE_PREFIX_PATH= " ${CONDA_PREFIX :- ' $(dirname $(which conda))/../ ' } : ${CMAKE_PREFIX_PATH} "
python setup.py build --cmake-only
ccmake build # or cmake-gui build
على ماك
export CMAKE_PREFIX_PATH= " ${CONDA_PREFIX :- ' $(dirname $(which conda))/../ ' } : ${CMAKE_PREFIX_PATH} "
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py build --cmake-only
ccmake build # or cmake-gui build
يمكنك أيضًا سحب صورة عامل إرساء مُصممة مسبقًا من Docker Hub وتشغيلها باستخدام docker v19.03+
docker run --gpus all --rm -ti --ipc=host pytorch/pytorch:latest
يرجى ملاحظة أن PyTorch يستخدم الذاكرة المشتركة لمشاركة البيانات بين العمليات، لذلك إذا تم استخدام معالجة الشعلة المتعددة (على سبيل المثال، لمحملات البيانات متعددة الخيوط)، فإن حجم مقطع الذاكرة المشتركة الافتراضي الذي تعمل به الحاوية ليس كافيًا، ويجب عليك زيادة حجم الذاكرة المشتركة إما من خلال --ipc=host
أو خيارات سطر الأوامر --shm-size
nvidia-docker run
.
ملاحظة: يجب أن يتم إنشاؤه باستخدام إصدار عامل الإرساء> 18.06
يتم توفير Dockerfile
لإنشاء الصور بدعم CUDA 11.1 وcuDNN v8. يمكنك تمرير PYTHON_VERSION=xy
make متغير لتحديد إصدار Python الذي سيتم استخدامه بواسطة Miniconda، أو تركه بدون ضبط لاستخدام الإصدار الافتراضي.
make -f docker.Makefile
# images are tagged as docker.io/${your_docker_username}/pytorch
يمكنك أيضًا تمرير متغير البيئة CMAKE_VARS="..."
لتحديد متغيرات CMake الإضافية لتمريرها إلى CMake أثناء الإنشاء. راجع setup.py للحصول على قائمة المتغيرات المتاحة.
make -f docker.Makefile
لإنشاء وثائق بتنسيقات مختلفة، ستحتاج إلى Sphinx وموضوع readthedocs.
cd docs/
pip install -r requirements.txt
يمكنك بعد ذلك إنشاء الوثائق عن طريق تشغيل make
من المجلد docs/
. قم بتشغيل make
للحصول على قائمة بجميع تنسيقات الإخراج المتاحة.
إذا حصلت على خطأ katex، قم بتشغيل npm install katex
. إذا استمرت المشكلة، فحاول npm install -g katex
ملاحظة: إذا قمت بتثبيت
nodejs
باستخدام مدير حزم مختلف (على سبيل المثال،conda
) فمن المحتمل أن يقومnpm
بتثبيت إصدارkatex
غير متوافق مع إصدارnodejs
الخاص بك وسوف تفشل عمليات إنشاء doc. مجموعة من الإصدارات المعروفة للعمل هي[email protected]
و[email protected]
. لتثبيت الأخير باستخدامnpm
يمكنك تشغيلnpm install -g [email protected]
يمكن العثور على تعليمات التثبيت والثنائيات الخاصة بإصدارات PyTorch السابقة على موقعنا الإلكتروني.
ثلاث مؤشرات للبدء:
عادةً ما يكون لدى PyTorch ثلاثة إصدارات ثانوية سنويًا. يرجى إعلامنا إذا واجهت خطأً عن طريق تقديم مشكلة.
نحن نقدر كل المساهمات. إذا كنت تخطط للمساهمة في إصلاحات الأخطاء، فيرجى القيام بذلك دون مزيد من المناقشة.
إذا كنت تخطط للمساهمة بميزات جديدة أو وظائف مساعدة أو ملحقات للمركز الأساسي، فيرجى أولاً فتح مشكلة ومناقشة الميزة معنا. قد يؤدي إرسال العلاقات العامة دون مناقشة إلى رفض العلاقات العامة لأننا قد نأخذ الجوهر في اتجاه مختلف عما قد تكون على علم به.
لمعرفة المزيد حول المساهمة في Pytorch، يرجى الاطلاع على صفحة المساهمة الخاصة بنا. لمزيد من المعلومات حول إصدارات PyTorch، راجع صفحة الإصدار.
PyTorch هو مشروع موجه نحو المجتمع ويساهم فيه العديد من المهندسين والباحثين المهرة.
تتم صيانة PyTorch حاليًا بواسطة Soumith Chintala وGregory Chanan وDmytro Dzhulgakov وEdward Yang وNikita Shulga مع مساهمات كبيرة تأتي من مئات الأفراد الموهوبين بأشكال ووسائل مختلفة. هناك قائمة غير شاملة ولكنها متزايدة يجب أن نذكرها: تريفور كيلين، ساسانك تشيلامكورثي، سيرجي زاجورويكو، آدم ليرر، فرانسيسكو ماسا، أليخان تيجاني، لوكا أنتيجا، ألبان ديسميزون، أندرياس كوبف، جيمس برادبري، زيمينج لين، يواندونغ تيان، غيوم لامبل، مارات دخان، نتاليا جيملشين، كريستيان ساروفين، مارتن رايسون، إدوارد يانغ، زاكاري ديفيتو.
ملحوظة: هذا المشروع لا علاقة له بـ Hughperkins/pytorch الذي يحمل نفس الاسم. يعد هيو مساهمًا قيمًا في مجتمع Torch وقد ساعد في العديد من الأشياء في Torch وPyTorch.
يتمتع PyTorch بترخيص على غرار BSD، كما هو موجود في ملف الترخيص.