- update to 2.3.1 with following summarized highlights:

* from 2.0.x:
    - torch.compile is the main API for PyTorch 2.0, which wraps your model and
      returns a compiled model. It is a fully additive (and optional) feature
      and hence 2.0 is 100% backward compatible by definition
    - Accelerated Transformers introduce high-performance support for training
      and inference using a custom kernel architecture for scaled dot product
      attention (SPDA). The API is integrated with torch.compile() and model
      developers may also use the scaled dot product attention kernels directly
      by calling the new scaled_dot_product_attention() operato
  * from 2.1.x:
    - automatic dynamic shape support in torch.compile,
      torch.distributed.checkpoint for saving/loading distributed training jobs
      on multiple ranks in parallel, and torch.compile support for the NumPy
      API.
    - In addition, this release offers numerous performance improvements (e.g.
      CPU inductor improvements, AVX512 support, scaled-dot-product-attention
      support) as well as a prototype release of torch.export, a sound
      full-graph capture mechanism, and torch.export-based quantization.
  * from 2.2.x:
    - 2x performance improvements to scaled_dot_product_attention via
      FlashAttention-v2 integration, as well as AOTInductor, a new
      ahead-of-time compilation and deployment tool built for non-python
      server-side deployments.
  * from 2.3.x:
    - support for user-defined Triton kernels in torch.compile, allowing for
      users to migrate their own Triton kernels from eager without
      experiencing performance complications or graph breaks. As well, Tensor
      Parallelism improves the experience for training Large Language Models
      using native PyTorch functions, which has been validated on training

OBS-URL: https://build.opensuse.org/package/show/science:machinelearning/python-torch?expand=0&rev=32
This commit is contained in:
2024-07-19 12:15:19 +00:00
committed by Git OBS Bridge
parent 73b1680af3
commit 9c8ce17a59
37 changed files with 307 additions and 253 deletions

View File

@@ -17,8 +17,6 @@
%define srcname pytorch
%define skip_python2 1
%define skip_python36 1
%define pname torch
%global flavor @BUILD_FLAVOR@%{nil}
@@ -31,24 +29,55 @@
%bcond_without cuda
%define cudaver 10-2
%endif
%define gloo_version 6f7095f6e9860ce4fd682a7894042e6eba0996f1
%define cpuinfo_version 5916273f79a21551890fd3d56fc5375a78d1598d
%define sleef_version e0a003ee838b75d11763aa9c3ef17bf71a725bff
%define pybind11_version 8de7772cc72daca8e947b79b83fea46214931604
%define onnx_version 54c38e6eaf557b844e70cebc00f39ced3321e9ad
%define pthreadpool_version a134dd5d4cee80cce15db81a72e7f929d71dd413
%define FXdiv_version b408327ac2a15ec3e43352421954f5b1967701d1
%define psimd_version 072586a71b55b7f8c584153d223e95687148a900
%define FP16_version 4dfe081cf6bcd15db339cf2680b9281b8451eeb3
%define gemmlowp_version 3fb5c176c17c765a3492cd2f0321b0dab712f350
%define foxi_version bd6feb6d0d3fc903df42b4feb82a602a5fcb1fd5
%define QNNPACK_version 7d2a4e9931a82adc3814275b6219a03e24e36b4c
%define XNNPACK_version 55d53a4e7079d38e90acd75dd9e4f9e781d2da35
%define cub_version d106ddb991a56c3df1b6d51b2409e36ba8181ce4
%define fmt_version cd4af11efc9c622896a3e4cb599fa28668ca3d05
Name: python-torch
Version: 1.9.0
%bcond_with mpi
%if "%{flavor}" == "openmpi4"
%bcond_without mpi
%bcond_without openmpi4
%global mpi_flavor openmpi
%define mpi_ext 4
%endif
%if "%{flavor}" == "vulkan"
%bcond_without vulkan
%global pkg_suffix -vulkan
%endif
%if %{with mpi}
%global pkg_suffix %{?mpi_flavor:-%{mpi_flavor}%{?mpi_ext}}
%define pkg_prefix %{_libdir}/mpi/gcc/%{mpi_flavor}%{?mpi_ext}
%define pkg_bindir %{pkg_prefix}/bin/
%define pkg_libdir %{pkg_prefix}/%{_lib}/
%define pkg_incdir %{pkg_prefix}/include/
%define pkg_datadir %{pkg_prefix}/share/
%define pkg_sysconfdir %{pkg_prefix}/etc/
%define pkg_skeldir %{pkg_prefix}/etc/skel/
%define package_name %{pname}%{?pkg_suffix}
%endif
%define FP16_version 4dfe081
%define FXdiv_version b408327
%define QNNPACK_version 7d2a4e9
%define XNNPACK_version fcbf55a
%define cpuinfo_version d6860c4
%define flatbuffers 01834de
%define foxi_version c278588
%define fmt_version e69e5f9
%define gemmlowp_version 3fb5c
%define gloo_version 5354032
%define kineto 3f30237
%define libnop 910b558
%define onnx_version 990217f
%define pocketfft 9d3ab05
%define psimd_version 072586a
%define pthreadpool_version 4fe0e1e
%define pybind11_version 3e9dfa2
%define sleef_version e0a003e
%define tensorpipe 52791a2
Name: python-torch%{?pkg_suffix}
Version: 2.3.1
Release: 0
Summary: Deep learning framework aka pytorch/Caffe2
License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT AND Zlib AND BSL-1.0
@@ -82,14 +111,23 @@ Source21: https://github.com/houseroad/foxi/archive/%{foxi_version}.tar.gz
Source22: https://github.com/pytorch/QNNPACK/archive/%{QNNPACK_version}.tar.gz#/QNNPACK-%{QNNPACK_version}.tar.gz
# License23: BSD-3-Clause
Source23: https://github.com/google/XNNPACK/archive/%{XNNPACK_version}.tar.gz#/XNNPACK-%{XNNPACK_version}.tar.gz
# License24: BSD-3-Clause
Source24: https://github.com/NVlabs/cub/archive/%{cub_version}.tar.gz#/cub-%{cub_version}.tar.gz
# License 25: MIT
Source25: https://github.com/fmtlib/fmt/archive/%{fmt_version}.tar.gz#/fmt-%{fmt_version}.tar.gz
# License 26: BSD-3-Clause
Source26: https://github.com/mreineck/pocketfft/archive/%{pocketfft}.tar.gz#/pocketfft-%{pocketfft}.tar.gz
# License 27: BSD-3-Clause
Source27: https://github.com/pytorch/kineto/archive/%{kineto}.tar.gz#/kineto-%{kineto}.tar.gz
# License 28: Apache-2.0
Source28: https://github.com/google/flatbuffers/archive/%{flatbuffers}.tar.gz#/flatbuffers-%{flatbuffers}.tar.gz
# License 29: BSD-3-Clause
Source29: https://github.com/pytorch/tensorpipe/archive/%{tensorpipe}.tar.gz#/tensorpipe-%{tensorpipe}.tar.gz
# License 30: Apache-2.0
Source30: https://github.com/google/libnop/archive/%{libnop}.tar.gz#/libnop-%{libnop}.tar.gz
Patch1: skip-third-party-check.patch
Patch2: fix-setup.patch
Patch1: pytorch-rm-some-gitmodules.patch
Patch2: skip-third-party-check.patch
# Patch3: fix-call-of-onnxInitGraph.patch #Make the build to fail on Leap/SLE
# A python call to cmake fails with a return code of 1 on this arch, disable it for now.
# and 32-bit arm is not supported
ExcludeArch: %ix86 %{arm}
@@ -98,13 +136,13 @@ BuildRequires: %{python_module Gloo}
%ifarch x86_64
BuildRequires: %{python_module PeachPy}
%endif
BuildRequires: %{python_module py-cpuinfo}
BuildRequires: %{python_module PyYAML}
BuildRequires: %{python_module devel}
BuildRequires: %{python_module future}
BuildRequires: %{python_module hypothesis}
BuildRequires: %{python_module leveldb}
BuildRequires: %{python_module numpy-devel}
BuildRequires: %{python_module opcodes}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module protobuf}
BuildRequires: %{python_module psutil}
BuildRequires: %{python_module setuptools}
@@ -122,23 +160,18 @@ BuildRequires: gcc8-c++
BuildRequires: cmake >= 3.5
BuildRequires: eigen3-devel
BuildRequires: fdupes
%ifarch x86_64
%if 0%{?suse_version} > 1500
# Use GCC10 until fixed - https://github.com/google/XNNPACK/issues/1550
BuildRequires: gcc10
BuildRequires: gcc10-c++
%endif
%endif
BuildRequires: gcc-c++
BuildRequires: glog-devel
BuildRequires: gtest
BuildRequires: leveldb-devel
BuildRequires: libnuma-devel
BuildRequires: libuv-devel
BuildRequires: libopenblas_pthreads-devel
BuildRequires: lmdb-devel
BuildRequires: ninja
BuildRequires: openblas-devel
BuildRequires: openssl-devel
BuildRequires: opencv-devel
BuildRequires: protobuf-c
BuildRequires: protobuf-devel
BuildRequires: python-rpm-macros
@@ -157,11 +190,18 @@ BuildRequires: gcc7-c++
BuildRequires: libcudnn7-devel
BuildRequires: libnccl-devel
%endif
Requires: python-future
Requires: python-leveldb
%if %{with openmpi4}
BuildRequires: openmpi4-devel
%endif
%if %{with vulkan}
BuildRequires: shaderc
BuildRequires: vulkan-devel
BuildRequires: VulkanMemoryAllocator-devel
%endif
Requires: python-numpy
Requires: python-protobuf
Requires: python-six
Requires: python-typing_extensions
Provides: python-caffe2 = %version
Provides: python-pytorch = %version
@@ -191,7 +231,7 @@ Although the Python interface is more polished and the primary focus of
development, PyTorch also has a C++ frontend. This package contains the header
to access the C/C++ interface.
%package -n pytorch-converters
%package converters
Summary: Converters for onnx and caffe2
Group: Development/Languages/Python
BuildArch: noarch
@@ -200,34 +240,37 @@ Requires: python3-onnx
Requires: python3-pip
Requires: python3-pname
%description -n pytorch-converters
%description converters
Converter from caffe2 to onnx and from caffe2 to onnx formated files.
%package -n pytorch-examples
%package examples
Summary: Examples which can be used for testing
Group: Development/Languages/Python
BuildArch: noarch
Recommends: python3-lmdb
Recommends: python3-networkx
%description -n pytorch-examples
%description examples
This example files can be used to start an own pytorch/caffe2 project.
%package -n libtorch
%package -n libtorch%{?pkg_suffix}
Summary: Library which used by %{name}
Group: Development/Libraries/Python
%description -n libtorch
%description -n libtorch%{?pkg_suffix}
Library which is used by %{name}
%prep
%define make_depend_src() test -e $(basename %1| sed 's/-.*//') && rmdir %{?2}%{!?2:$(basename %1| sed 's/-.*//')}; tar xzf %1; mv $(basename %1 | sed 's/\.tar\.gz//' ) %{?2}%{!?2:$(basename %1| sed 's/-.*//')}
%define make_depend_src() test -e $(basename %1| sed 's/-.*//') && rmdir %{?2}%{!?2:$(basename %1| sed 's/-.*//')}; tar xzf %1; mv $(basename %{1} | sed 's/\.tar\.gz//' )* %{?2}%{!?2:$(basename %1| sed 's/-.*//')}
%define make_depend_src_uppercase() rmdir -p $(basename %1| sed 's/-.*//'| tr '[:upper:]' '[:lower:]'); tar xzf %1; mv $(basename %1 | cut -f 1 -d '.' ) $(basename %1| sed 's/-.*//'| tr '[:upper:]' '[:lower:]')
%setup -q -n %{srcname}-%{version}
%autosetup -p1 -n %{srcname}-%{version}
cp %{S:1} releases.html
%autopatch -p 1
%if %{with vulkan}
sed -i '/-Werror=return-type/d' CMakeLists.txt
%endif
cd third_party
rmdir python-peachpy/
rmdir eigen/
%make_depend_src %{SOURCE10}
%make_depend_src %{SOURCE12}
%make_depend_src %{SOURCE13}
@@ -241,8 +284,15 @@ rmdir python-peachpy/
%make_depend_src %{SOURCE21}
%make_depend_src %{SOURCE22}
%make_depend_src %{SOURCE23}
%make_depend_src %{SOURCE24}
%make_depend_src %{SOURCE25}
%make_depend_src %{SOURCE26}
%make_depend_src %{SOURCE27}
%make_depend_src %{SOURCE28}
%make_depend_src %{SOURCE29}
# getting the vendoring of the vendored source working, this is
# insanity at the next level. My onlu exuse is that libnop is header only
rmdir tensorpipe/third_party/libnop
%make_depend_src %{SOURCE30} tensorpipe/third_party/libnop
%build
%define buildvars \
@@ -261,12 +311,6 @@ rmdir python-peachpy/
export CXX=g++-7 \
%endif \
%else \
%ifarch x86_64 \
%if 0%{?suse_version} > 1500 \
export CC=gcc-10 \
export CXX=g++-10 \
%endif \
%endif \
%if 0%{?suse_version} <= 1500 \
%ifarch aarch64 \
export CC=gcc-8 \
@@ -277,24 +321,39 @@ rmdir python-peachpy/
export USE_CUDNN=OFF \
%endif \
export USE_KINETO=OFF \
export USE_DISTRIBUTED=OFF \
export USE_TEST=OFF \
export USE_LEVELDB=ON \
export USE_LMDB=ON \
export USE_FBGEMM=OFF \
export USE_SYSTEM_BENCHMARK=ON \
export USE_SYSTEM_EIGEN_INSTALL=ON \
export USE_OPENCV=ON \
export USE_TBB=OFF \
export USE_MKLDNN=OFF \
export USE_KINETO=OFF \
export USE_DISTRIBUTED=ON \
export TP_BUILD_LIBUV=OFF \
export USE_NCCL=OFF \
%if %{with mpi} \
export USE_MPI=ON \
export MPIEXEC_EXECUTABLE="%{pkg_bindir}/mpiexec" \
%else \
export USE_GLOO=ON \
%endif \
export BLAS=OpenBLAS \
export BUILD_CUSTOM_PROTOBUF=OFF \
export BUILD_TEST=OFF \
export MAX_JOBS=%{?jobs} \
%if %{with vulkan} \
export USE_VULKAN=ON \
export CXXFLAGS="-I /usr/ -Wno-error=return-type" \
%endif \
%buildvars
%python_build
%install
%buildvars
%python_install
%python_install -q
%python_expand %fdupes %{buildroot}%{$python_sitearch}
@@ -312,46 +371,47 @@ install -m 644 -D %{buildroot}%{python_sitearch}/torch/lib/* %{buildroot}/%{_lib
#%check
#export LD_LIBRARY_PATH=%{buildroot}/%{_libdir}
#%%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} $python test/run_test.py
%python_clone -a %{buildroot}%{_bindir}/torchrun
%python_clone -a %{buildroot}%{_bindir}/convert-caffe2-to-onnx
%python_clone -a %{buildroot}%{_bindir}/convert-onnx-to-caffe2
%post -n libtorch -p /sbin/ldconfig
%postun -n libtorch -p /sbin/ldconfig
%post -n libtorch%{?pkg_suffix} -p /sbin/ldconfig
%postun -n libtorch%{?pkg_suffix} -p /sbin/ldconfig
%files %{python_files}
%defattr(-,root,root)
%doc README.md NOTICE releases.html
%license LICENSE
%{python_sitearch}/torch/
%{python_sitearch}/caffe2/
%{python_sitearch}/torch-*.egg-info/
# excluding nearly all headersm except THNN.h and THCUNN.h as they
# are read in by the python init
%{python_sitearch}/torch*
%{python_sitearch}/torchgen/
%{python_sitearch}/functorch/
%exclude %{python_sitearch}/torch/share
%exclude %{python_sitearch}/torch/include/TH
%exclude %{python_sitearch}/torch/include/c10
%exclude %{python_sitearch}/torch/include/ATen
%exclude %{python_sitearch}/torch/include/pybind11
%exclude %{python_sitearch}/torch/include/caffe2
%exclude %{python_sitearch}/torch/include/torch/csrc
%exclude %{python_sitearch}/torch/include/torch/*.h
%exclude %{python_sitearch}/torch/include
%exclude %{python_sitearch}/torch/_inductor/codegen
%exclude %{python_sitearch}/torch/utils/benchmark/utils/
%exclude %{python_sitearch}/torchgen/packaged/ATen/templates
%exclude %{python_sitearch}/torchgen/packaged/autograd/templates
%python_alternative %{_bindir}/torchrun
%files %{python_files devel}
%{python_sitearch}/torch/share
%{python_sitearch}/torch/include/TH/
%{python_sitearch}/torch/include/c10
%{python_sitearch}/torch/include/ATen
%{python_sitearch}/torch/include/pybind11
%{python_sitearch}/torch/include/caffe2
%{python_sitearch}/torch/include/torch/csrc
%{python_sitearch}/torch/include/torch/*.h
%{python_sitearch}/torch/include
%{python_sitearch}/torch/_inductor/codegen
%{python_sitearch}/torch/utils/benchmark/utils/
%{python_sitearch}/torchgen/packaged/ATen/templates
%{python_sitearch}/torchgen/packaged/autograd/templates
%files -n pytorch-converters
%{_bindir}/convert-caffe2-to-onnx
%{_bindir}/convert-onnx-to-caffe2
%files %{python_files converters}
%python_alternative %{_bindir}/convert-caffe2-to-onnx
%python_alternative %{_bindir}/convert-onnx-to-caffe2
%files -n pytorch-examples
%files %{python_files examples}
%{_docdir}/%{name}
%exclude %{_docdir}/%{name}/NOTICE
%exclude %{_docdir}/%{name}/README.md
%exclude %{_docdir}/%{name}/releases.html
%files -n libtorch
%files -n libtorch%{?pkg_suffix}
%{_libdir}/*.so*
%changelog