PyTorch adalah paket Python yang menyediakan dua fitur tingkat tinggi:
Anda dapat menggunakan kembali paket Python favorit Anda seperti NumPy, SciPy, dan Cython untuk memperluas PyTorch bila diperlukan.
Kesehatan trunk kami (sinyal Integrasi Berkelanjutan) dapat ditemukan di hud.pytorch.org.
Pelajari dasar-dasar PyTorch
Pada tingkat granular, PyTorch adalah perpustakaan yang terdiri dari komponen-komponen berikut:
Komponen | Keterangan |
---|---|
obor | Pustaka Tensor seperti NumPy, dengan dukungan GPU yang kuat |
obor.autograd | Pustaka diferensiasi otomatis berbasis pita yang mendukung semua operasi Tensor yang dapat dibedakan di torch |
obor.jit | Tumpukan kompilasi (TorchScript) untuk membuat model yang dapat diserialkan dan dioptimalkan dari kode PyTorch |
obor.nn | Pustaka jaringan saraf terintegrasi secara mendalam dengan autograd yang dirancang untuk fleksibilitas maksimum |
obor.multiprosesing | Multiprosesing Python, tetapi dengan berbagi memori ajaib dari Tensor obor di seluruh proses. Berguna untuk memuat data dan pelatihan Hogwild |
torch.utils | DataLoader dan fungsi utilitas lainnya untuk kenyamanan |
Biasanya, PyTorch digunakan sebagai:
Menguraikan Lebih Lanjut:
Jika Anda menggunakan NumPy, maka Anda telah menggunakan Tensor (alias ndarray).
PyTorch menyediakan Tensor yang dapat hidup di CPU atau GPU dan mempercepat komputasi secara signifikan.
Kami menyediakan berbagai macam rutinitas tensor untuk mempercepat dan memenuhi kebutuhan komputasi ilmiah Anda seperti pemotongan, pengindeksan, operasi matematika, aljabar linier, reduksi. Dan mereka cepat!
PyTorch memiliki cara unik dalam membangun jaringan saraf: menggunakan dan memutar ulang tape recorder.
Sebagian besar framework seperti TensorFlow, Theano, Caffe, dan CNTK memiliki pandangan statis terhadap dunia. Kita harus membangun jaringan saraf dan menggunakan kembali struktur yang sama berulang kali. Mengubah cara jaringan berperilaku berarti kita harus memulai dari awal.
Dengan PyTorch, kami menggunakan teknik yang disebut diferensiasi otomatis mode terbalik, yang memungkinkan Anda mengubah perilaku jaringan Anda secara sewenang-wenang tanpa lag atau overhead. Inspirasi kami berasal dari beberapa makalah penelitian tentang topik ini, serta karya saat ini dan masa lalu seperti torch-autograd, autograd, Chainer, dll.
Meskipun teknik ini tidak unik untuk PyTorch, ini adalah salah satu implementasi tercepat hingga saat ini. Anda mendapatkan kecepatan dan fleksibilitas terbaik untuk penelitian gila Anda.
PyTorch bukanlah Python yang mengikat kerangka kerja C++ monolitik. Itu dibangun untuk diintegrasikan secara mendalam ke dalam Python. Anda dapat menggunakannya secara alami seperti Anda menggunakan NumPy / SciPy / scikit-learn dll. Anda dapat menulis lapisan jaringan saraf baru Anda dengan Python sendiri, menggunakan perpustakaan favorit Anda dan menggunakan paket seperti Cython dan Numba. Tujuan kami adalah untuk tidak menemukan kembali roda jika diperlukan.
PyTorch dirancang agar intuitif, pemikiran linier, dan mudah digunakan. Saat Anda mengeksekusi sebaris kode, itu akan dieksekusi. Tidak ada pandangan dunia yang tidak sinkron. Saat Anda masuk ke debugger atau menerima pesan kesalahan dan pelacakan tumpukan, memahaminya sangatlah mudah. Pelacakan tumpukan menunjuk ke tempat kode Anda ditentukan. Kami harap Anda tidak perlu menghabiskan waktu berjam-jam untuk men-debug kode Anda karena jejak tumpukan yang buruk atau mesin eksekusi yang tidak sinkron dan buram.
PyTorch memiliki overhead kerangka kerja yang minimal. Kami mengintegrasikan perpustakaan akselerasi seperti Intel MKL dan NVIDIA (cuDNN, NCCL) untuk memaksimalkan kecepatan. Pada intinya, Tensor CPU dan GPU serta backend jaringan sarafnya sudah matang dan telah diuji selama bertahun-tahun.
Oleh karena itu, PyTorch cukup cepat — baik Anda menjalankan jaringan neural kecil atau besar.
Penggunaan memori di PyTorch sangat efisien dibandingkan dengan Torch atau beberapa alternatifnya. Kami telah menulis pengalokasi memori khusus untuk GPU guna memastikan model pembelajaran mendalam Anda memiliki efisiensi memori maksimal. Hal ini memungkinkan Anda untuk melatih model pembelajaran mendalam yang lebih besar dari sebelumnya.
Menulis modul jaringan saraf baru, atau berinteraksi dengan Tensor API PyTorch dirancang agar mudah dan dengan abstraksi minimal.
Anda dapat menulis lapisan jaringan saraf baru dengan Python menggunakan API obor atau perpustakaan berbasis NumPy favorit Anda seperti SciPy.
Jika Anda ingin menulis lapisan Anda dalam C/C++, kami menyediakan API ekstensi praktis yang efisien dan dengan boilerplate minimal. Tidak ada kode pembungkus yang perlu ditulis. Anda dapat melihat tutorialnya di sini dan contohnya di sini.
Perintah untuk menginstal binari melalui Conda atau pip wheel ada di situs web kami: https://pytorch.org/get-started/locally/
Roda python untuk NVIDIA Jetson Nano, Jetson TX1/TX2, Jetson Xavier NX/AGX, dan Jetson AGX Orin disediakan di sini dan wadah L4T dipublikasikan di sini
Mereka memerlukan JetPack 4.2 dan yang lebih baru, dan @dusty-nv serta @ptrblck memeliharanya.
Jika Anda menginstal dari sumber, Anda memerlukan:
* PyTorch CI menggunakan Visual C++ BuildTools, yang disertakan dengan Visual Studio Enterprise, Professional, atau Community Editions. Anda juga dapat menginstal alat pembangunan dari https://visualstudio.microsoft.com/visual-cpp-build-tools/. Alat pembangunan tidak dilengkapi dengan Visual Studio Code secara default.
* Kami sangat menyarankan untuk menginstal lingkungan Anaconda. Anda akan mendapatkan perpustakaan BLAS (MKL) berkualitas tinggi dan Anda mendapatkan versi ketergantungan yang terkontrol terlepas dari distro Linux Anda.
Contoh pengaturan lingkungan ditunjukkan di bawah ini:
$ 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
Jika Anda ingin mengkompilasi dengan dukungan CUDA, pilih versi CUDA yang didukung dari matriks dukungan kami, lalu instal yang berikut ini:
Catatan: Anda dapat merujuk ke Matriks Dukungan cuDNN untuk versi cuDNN dengan berbagai CUDA, driver CUDA, dan perangkat keras NVIDIA yang didukung
Jika Anda ingin menonaktifkan dukungan CUDA, ekspor variabel lingkungan USE_CUDA=0
. Variabel lingkungan lain yang berpotensi berguna dapat ditemukan di setup.py
.
Jika Anda membuat platform Jetson NVIDIA (Jetson Nano, TX1, TX2, AGX Xavier), Petunjuk untuk menginstal PyTorch untuk Jetson Nano tersedia di sini
Jika Anda ingin mengkompilasi dengan dukungan ROCm, instal
Secara default, sistem build mengharapkan ROCm dipasang di /opt/rocm
. Jika ROCm diinstal di direktori berbeda, variabel lingkungan ROCM_PATH
harus disetel ke direktori instalasi ROCm. Sistem build secara otomatis mendeteksi arsitektur GPU AMD. Secara opsional, arsitektur GPU AMD dapat diatur secara eksplisit dengan variabel lingkungan PYTORCH_ROCM_ARCH
arsitektur GPU AMD
Jika Anda ingin menonaktifkan dukungan ROCm, ekspor variabel lingkungan USE_ROCM=0
. Variabel lingkungan lain yang berpotensi berguna dapat ditemukan di setup.py
.
Jika Anda ingin mengkompilasi dengan dukungan GPU Intel, ikuti ini
Jika Anda ingin menonaktifkan dukungan GPU Intel, ekspor variabel lingkungan USE_XPU=0
. Variabel lingkungan lain yang berpotensi berguna dapat ditemukan di 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
Umum
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
Di Linux
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
Di MacOS
# 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
Di Windows
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
Di Linux
Jika Anda ingin mengkompilasi PyTorch dengan C++ ABI baru yang diaktifkan, jalankan perintah ini terlebih dahulu:
export _GLIBCXX_USE_CXX11_ABI=1
Harap dicatat bahwa mulai dari PyTorch 2.5, build PyTorch dengan XPU mendukung C++ ABI baru dan lama. Sebelumnya, XPU hanya mendukung C++ ABI baru. Jika Anda ingin mengkompilasi dengan dukungan GPU Intel, silakan ikuti Dukungan GPU Intel.
Jika Anda mengkompilasi untuk AMD ROCm, jalankan perintah ini terlebih dahulu:
# Only run this if you're compiling for ROCm
python tools/amd_build/build_amd.py
Instal PyTorch
export CMAKE_PREFIX_PATH= " ${CONDA_PREFIX :- ' $(dirname $(which conda))/../ ' } : ${CMAKE_PREFIX_PATH} "
python setup.py develop
Di macOS
python3 setup.py develop
Di Windows
Jika Anda ingin membuat kode python lama, lihat Membangun kode lama dan CUDA
Pembuatan khusus CPU
Dalam mode ini, komputasi PyTorch akan berjalan di CPU Anda, bukan GPU Anda
python setup.py develop
Catatan tentang OpenMP: Implementasi OpenMP yang diinginkan adalah Intel OpenMP (iomp). Untuk menautkan ke iomp, Anda perlu mengunduh perpustakaan secara manual dan mengatur lingkungan bangunan dengan mengubah CMAKE_INCLUDE_PATH
dan LIB
. Instruksi di sini adalah contoh untuk menyiapkan MKL dan Intel OpenMP. Tanpa konfigurasi ini untuk CMake, runtime Microsoft Visual C OpenMP (vcomp) akan digunakan.
Bangunan berbasis CUDA
Dalam mode ini, komputasi PyTorch akan memanfaatkan GPU Anda melalui CUDA untuk penghitungan angka yang lebih cepat
NVTX diperlukan untuk membangun Pytorch dengan CUDA. NVTX adalah bagian dari distributif CUDA, yang disebut "Nsight Compute". Untuk menginstalnya ke CUDA yang sudah terinstal, jalankan instalasi CUDA sekali lagi dan centang kotak yang sesuai. Pastikan CUDA dengan Nsight Compute diinstal setelah Visual Studio.
Saat ini, VS 2017/2019, dan Ninja didukung sebagai generator CMake. Jika ninja.exe
terdeteksi di PATH
, maka Ninja akan digunakan sebagai generator default, jika tidak maka akan menggunakan VS 2017/2019.
Jika Ninja dipilih sebagai generator, MSVC terbaru akan dipilih sebagai rantai alat yang mendasarinya.
Library tambahan seperti Magma, oneDNN alias MKLDNN atau DNNL, dan Sccache seringkali dibutuhkan. Silakan merujuk ke pembantu instalasi untuk menginstalnya.
Anda dapat merujuk ke skrip build_pytorch.bat untuk beberapa konfigurasi variabel lingkungan lainnya
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
Anda dapat menyesuaikan konfigurasi variabel cmake secara opsional (tanpa membangun terlebih dahulu), dengan melakukan hal berikut. Misalnya, penyesuaian direktori yang telah terdeteksi sebelumnya untuk CuDNN atau BLAS dapat dilakukan dengan langkah seperti itu.
Di Linux
export CMAKE_PREFIX_PATH= " ${CONDA_PREFIX :- ' $(dirname $(which conda))/../ ' } : ${CMAKE_PREFIX_PATH} "
python setup.py build --cmake-only
ccmake build # or cmake-gui build
Di macOS
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
Anda juga dapat menarik image buruh pelabuhan yang sudah dibuat sebelumnya dari Docker Hub dan menjalankannya dengan buruh pelabuhan v19.03+
docker run --gpus all --rm -ti --ipc=host pytorch/pytorch:latest
Harap dicatat bahwa PyTorch menggunakan memori bersama untuk berbagi data antar proses, jadi jika multiproses obor digunakan (misalnya untuk pemuat data multithread), ukuran segmen memori bersama default yang dijalankan oleh kontainer tidak cukup, dan Anda harus meningkatkan ukuran memori bersama dengan --ipc=host
atau --shm-size
opsi baris perintah untuk nvidia-docker run
.
CATATAN: Harus dibangun dengan versi buruh pelabuhan > 18.06
Dockerfile
disediakan untuk membuat image dengan dukungan CUDA 11.1 dan cuDNN v8. Anda dapat meneruskan variabel make PYTHON_VERSION=xy
untuk menentukan versi Python mana yang akan digunakan oleh Miniconda, atau membiarkannya tidak disetel untuk menggunakan default.
make -f docker.Makefile
# images are tagged as docker.io/${your_docker_username}/pytorch
Anda juga dapat meneruskan variabel lingkungan CMAKE_VARS="..."
untuk menentukan variabel CMake tambahan yang akan diteruskan ke CMake selama pembangunan. Lihat setup.py untuk daftar variabel yang tersedia.
make -f docker.Makefile
Untuk membuat dokumentasi dalam berbagai format, Anda memerlukan Sphinx dan tema readthedocs.
cd docs/
pip install -r requirements.txt
Anda kemudian dapat membuat dokumentasi dengan menjalankan make
dari folder docs/
. Jalankan make
untuk mendapatkan daftar semua format output yang tersedia.
Jika Anda mendapatkan kesalahan katex, jalankan npm install katex
. Jika masih berlanjut, coba npm install -g katex
Catatan: jika Anda menginstal
nodejs
dengan manajer paket yang berbeda (misalnyaconda
) makanpm
mungkin akan menginstal versikatex
yang tidak kompatibel dengan versinodejs
Anda dan pembuatan dokumen akan gagal. Kombinasi versi yang diketahui berfungsi adalah[email protected]
dan[email protected]
. Untuk menginstal yang terakhir dengannpm
Anda dapat menjalankannpm install -g [email protected]
Petunjuk instalasi dan binari untuk versi PyTorch sebelumnya dapat ditemukan di situs web kami.
Tiga petunjuk untuk membantu Anda memulai:
Biasanya, PyTorch memiliki tiga rilis kecil dalam setahun. Harap beri tahu kami jika Anda menemukan bug dengan mengajukan masalah.
Kami menghargai semua kontribusi. Jika Anda berencana untuk berkontribusi kembali pada perbaikan bug, silakan lakukan tanpa diskusi lebih lanjut.
Jika Anda berencana untuk menyumbangkan fitur baru, fungsi utilitas, atau ekstensi ke inti, harap buka masalah terlebih dahulu dan diskusikan fitur tersebut dengan kami. Mengirimkan PR tanpa diskusi mungkin akan mengakibatkan PR ditolak karena kami mungkin membawa inti ke arah yang berbeda dari yang mungkin Anda sadari.
Untuk mempelajari lebih lanjut tentang memberikan kontribusi pada Pytorch, silakan lihat halaman Kontribusi kami. Untuk informasi selengkapnya tentang rilis PyTorch, lihat halaman Rilis.
PyTorch adalah proyek berbasis komunitas dengan beberapa insinyur dan peneliti terampil yang berkontribusi di dalamnya.
PyTorch saat ini dikelola oleh Soumith Chintala, Gregory Chanan, Dmytro Dzhulgakov, Edward Yang, dan Nikita Shulga dengan kontribusi besar yang datang dari ratusan individu berbakat dalam berbagai bentuk dan sarana. Daftar yang tidak lengkap namun terus bertambah perlu disebutkan: Trevor Killeen, Sasank Chilamkurthy, Sergey Zagoruyko, Adam Lerer, Francisco Massa, Alykhan Tejani, Luca Antiga, Alban Desmaison, Andreas Koepf, James Bradbury, Zeming Lin, Yuandong Tian, Guillaume Lample, Marat Dukhan, Natalia Gimelshein, Christian Sarofeen, Martin Raison, Edward Yang, Zachary Devito.
Catatan: Proyek ini tidak terkait dengan Hughperkins/pytorch dengan nama yang sama. Hugh adalah kontributor berharga bagi komunitas Torch dan telah membantu banyak hal Torch dan PyTorch.
PyTorch memiliki lisensi bergaya BSD, seperti yang ditemukan di file LICENSE.