Get:1 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Get:2 http://archive.ubuntu.com/ubuntu noble InRelease [256 kB]
Get:3 http://security.ubuntu.com/ubuntu noble-security/multiverse amd64 Packages [50.0 kB]
Get:4 http://security.ubuntu.com/ubuntu noble-security/main amd64 Packages [1245 kB]
Get:5 http://security.ubuntu.com/ubuntu noble-security/universe amd64 Packages [1533 kB]
Get:6 http://security.ubuntu.com/ubuntu noble-security/restricted amd64 Packages [1801 kB]
Get:7 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:8 http://archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:9 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages [19.3 MB]
Get:10 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages [1808 kB]
Get:11 http://archive.ubuntu.com/ubuntu noble/restricted amd64 Packages [117 kB]
Get:12 http://archive.ubuntu.com/ubuntu noble/multiverse amd64 Packages [331 kB]
Get:13 http://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Packages [56.2 kB]
Get:14 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [2149 kB]
Get:15 http://archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Packages [1960 kB]
Get:16 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [1580 kB]
Get:17 http://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Packages [671 B]
Get:18 http://archive.ubuntu.com/ubuntu noble-backports/universe amd64 Packages [40.4 kB]
Get:19 http://archive.ubuntu.com/ubuntu noble-backports/main amd64 Packages [78.5 kB]
Fetched 32.7 MB in 4s (7682 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  ca-certificates krb5-locales libbrotli1 libcurl4t64 libgssapi-krb5-2
  libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-common libldap2
  libnghttp2-14 libpsl5t64 librtmp1 libsasl2-2 libsasl2-modules
  libsasl2-modules-db libssh-4 libssl3t64 openssl publicsuffix
Suggested packages:
  krb5-doc krb5-user libsasl2-modules-gssapi-mit
  | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap libsasl2-modules-otp
  libsasl2-modules-sql
The following NEW packages will be installed:
  ca-certificates curl krb5-locales libbrotli1 libcurl4t64 libgssapi-krb5-2
  libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-common libldap2
  libnghttp2-14 libpsl5t64 librtmp1 libsasl2-2 libsasl2-modules
  libsasl2-modules-db libssh-4 openssl publicsuffix
The following packages will be upgraded:
  libssl3t64
1 upgraded, 21 newly installed, 0 to remove and 42 not upgraded.
Need to get 5501 kB of archives.
After this operation, 9176 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libssl3t64 amd64 3.0.13-0ubuntu3.15 [1944 kB]
Get:2 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 openssl amd64 3.0.13-0ubuntu3.15 [1003 kB]
Get:3 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 ca-certificates all 20260601~24.04.1 [139 kB]
Get:4 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 krb5-locales all 1.20.1-6ubuntu2.10 [15.3 kB]
Get:5 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libkrb5support0 amd64 1.20.1-6ubuntu2.10 [34.9 kB]
Get:6 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libk5crypto3 amd64 1.20.1-6ubuntu2.10 [81.9 kB]
Get:7 http://archive.ubuntu.com/ubuntu noble/main amd64 libkeyutils1 amd64 1.6.3-3build1 [9490 B]
Get:8 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libkrb5-3 amd64 1.20.1-6ubuntu2.10 [348 kB]
Get:9 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libgssapi-krb5-2 amd64 1.20.1-6ubuntu2.10 [143 kB]
Get:10 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libnghttp2-14 amd64 1.59.0-1ubuntu0.4 [74.6 kB]
Get:11 http://archive.ubuntu.com/ubuntu noble/main amd64 libpsl5t64 amd64 0.21.2-1.1build1 [57.1 kB]
Get:12 http://archive.ubuntu.com/ubuntu noble/main amd64 publicsuffix all 20231001.0357-0.1 [129 kB]
Get:13 http://archive.ubuntu.com/ubuntu noble/main amd64 libbrotli1 amd64 1.1.0-2build2 [331 kB]
Get:14 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-5ubuntu3.1 [20.4 kB]
Get:15 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-5ubuntu3.1 [53.2 kB]
Get:16 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libldap2 amd64 2.6.10+dfsg-0ubuntu0.24.04.1 [198 kB]
Get:17 http://archive.ubuntu.com/ubuntu noble/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2build7 [56.3 kB]
Get:18 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libssh-4 amd64 0.10.6-2ubuntu0.5 [191 kB]
Get:19 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libcurl4t64 amd64 8.5.0-2ubuntu10.13 [343 kB]
Get:20 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 curl amd64 8.5.0-2ubuntu10.13 [226 kB]
Get:21 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libldap-common all 2.6.10+dfsg-0ubuntu0.24.04.1 [32.9 kB]
Get:22 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libsasl2-modules amd64 2.1.28+dfsg1-5ubuntu3.1 [69.9 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 5501 kB in 1s (7410 kB/s)
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 4381 files and directories currently installed.)
Preparing to unpack .../libssl3t64_3.0.13-0ubuntu3.15_amd64.deb ...
Unpacking libssl3t64:amd64 (3.0.13-0ubuntu3.15) over (3.0.13-0ubuntu3.6) ...
Setting up libssl3t64:amd64 (3.0.13-0ubuntu3.15) ...
Selecting previously unselected package openssl.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 4381 files and directories currently installed.)
Preparing to unpack .../00-openssl_3.0.13-0ubuntu3.15_amd64.deb ...
Unpacking openssl (3.0.13-0ubuntu3.15) ...
Selecting previously unselected package ca-certificates.
Preparing to unpack .../01-ca-certificates_20260601~24.04.1_all.deb ...
Unpacking ca-certificates (20260601~24.04.1) ...
Selecting previously unselected package krb5-locales.
Preparing to unpack .../02-krb5-locales_1.20.1-6ubuntu2.10_all.deb ...
Unpacking krb5-locales (1.20.1-6ubuntu2.10) ...
Selecting previously unselected package libkrb5support0:amd64.
Preparing to unpack .../03-libkrb5support0_1.20.1-6ubuntu2.10_amd64.deb ...
Unpacking libkrb5support0:amd64 (1.20.1-6ubuntu2.10) ...
Selecting previously unselected package libk5crypto3:amd64.
Preparing to unpack .../04-libk5crypto3_1.20.1-6ubuntu2.10_amd64.deb ...
Unpacking libk5crypto3:amd64 (1.20.1-6ubuntu2.10) ...
Selecting previously unselected package libkeyutils1:amd64.
Preparing to unpack .../05-libkeyutils1_1.6.3-3build1_amd64.deb ...
Unpacking libkeyutils1:amd64 (1.6.3-3build1) ...
Selecting previously unselected package libkrb5-3:amd64.
Preparing to unpack .../06-libkrb5-3_1.20.1-6ubuntu2.10_amd64.deb ...
Unpacking libkrb5-3:amd64 (1.20.1-6ubuntu2.10) ...
Selecting previously unselected package libgssapi-krb5-2:amd64.
Preparing to unpack .../07-libgssapi-krb5-2_1.20.1-6ubuntu2.10_amd64.deb ...
Unpacking libgssapi-krb5-2:amd64 (1.20.1-6ubuntu2.10) ...
Selecting previously unselected package libnghttp2-14:amd64.
Preparing to unpack .../08-libnghttp2-14_1.59.0-1ubuntu0.4_amd64.deb ...
Unpacking libnghttp2-14:amd64 (1.59.0-1ubuntu0.4) ...
Selecting previously unselected package libpsl5t64:amd64.
Preparing to unpack .../09-libpsl5t64_0.21.2-1.1build1_amd64.deb ...
Unpacking libpsl5t64:amd64 (0.21.2-1.1build1) ...
Selecting previously unselected package publicsuffix.
Preparing to unpack .../10-publicsuffix_20231001.0357-0.1_all.deb ...
Unpacking publicsuffix (20231001.0357-0.1) ...
Selecting previously unselected package libbrotli1:amd64.
Preparing to unpack .../11-libbrotli1_1.1.0-2build2_amd64.deb ...
Unpacking libbrotli1:amd64 (1.1.0-2build2) ...
Selecting previously unselected package libsasl2-modules-db:amd64.
Preparing to unpack .../12-libsasl2-modules-db_2.1.28+dfsg1-5ubuntu3.1_amd64.deb ...
Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-5ubuntu3.1) ...
Selecting previously unselected package libsasl2-2:amd64.
Preparing to unpack .../13-libsasl2-2_2.1.28+dfsg1-5ubuntu3.1_amd64.deb ...
Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-5ubuntu3.1) ...
Selecting previously unselected package libldap2:amd64.
Preparing to unpack .../14-libldap2_2.6.10+dfsg-0ubuntu0.24.04.1_amd64.deb ...
Unpacking libldap2:amd64 (2.6.10+dfsg-0ubuntu0.24.04.1) ...
Selecting previously unselected package librtmp1:amd64.
Preparing to unpack .../15-librtmp1_2.4+20151223.gitfa8646d.1-2build7_amd64.deb ...
Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2build7) ...
Selecting previously unselected package libssh-4:amd64.
Preparing to unpack .../16-libssh-4_0.10.6-2ubuntu0.5_amd64.deb ...
Unpacking libssh-4:amd64 (0.10.6-2ubuntu0.5) ...
Selecting previously unselected package libcurl4t64:amd64.
Preparing to unpack .../17-libcurl4t64_8.5.0-2ubuntu10.13_amd64.deb ...
Unpacking libcurl4t64:amd64 (8.5.0-2ubuntu10.13) ...
Selecting previously unselected package curl.
Preparing to unpack .../18-curl_8.5.0-2ubuntu10.13_amd64.deb ...
Unpacking curl (8.5.0-2ubuntu10.13) ...
Selecting previously unselected package libldap-common.
Preparing to unpack .../19-libldap-common_2.6.10+dfsg-0ubuntu0.24.04.1_all.deb ...
Unpacking libldap-common (2.6.10+dfsg-0ubuntu0.24.04.1) ...
Selecting previously unselected package libsasl2-modules:amd64.
Preparing to unpack .../20-libsasl2-modules_2.1.28+dfsg1-5ubuntu3.1_amd64.deb ...
Unpacking libsasl2-modules:amd64 (2.1.28+dfsg1-5ubuntu3.1) ...
Setting up libkeyutils1:amd64 (1.6.3-3build1) ...
Setting up libbrotli1:amd64 (1.1.0-2build2) ...
Setting up libsasl2-modules:amd64 (2.1.28+dfsg1-5ubuntu3.1) ...
Setting up libpsl5t64:amd64 (0.21.2-1.1build1) ...
Setting up libnghttp2-14:amd64 (1.59.0-1ubuntu0.4) ...
Setting up krb5-locales (1.20.1-6ubuntu2.10) ...
Setting up libldap-common (2.6.10+dfsg-0ubuntu0.24.04.1) ...
Setting up libkrb5support0:amd64 (1.20.1-6ubuntu2.10) ...
Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-5ubuntu3.1) ...
Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2build7) ...
Setting up libk5crypto3:amd64 (1.20.1-6ubuntu2.10) ...
Setting up libsasl2-2:amd64 (2.1.28+dfsg1-5ubuntu3.1) ...
Setting up libkrb5-3:amd64 (1.20.1-6ubuntu2.10) ...
Setting up openssl (3.0.13-0ubuntu3.15) ...
Setting up publicsuffix (20231001.0357-0.1) ...
Setting up libldap2:amd64 (2.6.10+dfsg-0ubuntu0.24.04.1) ...
Setting up ca-certificates (20260601~24.04.1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC entries checked: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.38.2 /usr/local/share/perl/5.38.2 /usr/lib/x86_64-linux-gnu/perl5/5.38 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.38 /usr/share/perl/5.38 /usr/local/lib/site_perl) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 8.)
debconf: falling back to frontend: Teletype
Updating certificates in /etc/ssl/certs...
121 added, 0 removed; done.
Setting up libgssapi-krb5-2:amd64 (1.20.1-6ubuntu2.10) ...
Setting up libssh-4:amd64 (0.10.6-2ubuntu0.5) ...
Setting up libcurl4t64:amd64 (8.5.0-2ubuntu10.13) ...
Setting up curl (8.5.0-2ubuntu10.13) ...
Processing triggers for libc-bin (2.39-0ubuntu8.6) ...
Processing triggers for ca-certificates (20260601~24.04.1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
downloading uv 0.9.5 x86_64-unknown-linux-gnu
no checksums to verify
installing to /root/.local/bin
  uv
  uvx
everything's installed!

To add $HOME/.local/bin to your PATH, either restart your shell or run:

    source $HOME/.local/bin/env (sh, bash, zsh)
    source $HOME/.local/bin/env.fish (fish)
Downloading cpython-3.13.9-linux-x86_64-gnu (download) (32.0MiB)
 Downloading cpython-3.13.9-linux-x86_64-gnu (download)
Downloading sympy (6.0MiB)
Downloading pygments (1.2MiB)
Downloading networkx (2.0MiB)
Downloading nvidia-cublas-cu12 (374.9MiB)
Downloading nvidia-nccl-cu12 (192.0MiB)
Downloading nvidia-cusparse-cu12 (206.5MiB)
Downloading nvidia-cuda-cupti-cu12 (8.5MiB)
Downloading torch (825.0MiB)
Downloading nvidia-cusolver-cu12 (150.9MiB)
Downloading nvidia-curand-cu12 (53.7MiB)
Downloading nvidia-cufft-cu12 (190.9MiB)
Downloading nvidia-cuda-nvrtc-cu12 (22.6MiB)
Downloading nvidia-cusparselt-cu12 (149.5MiB)
Downloading triton (149.3MiB)
Downloading nvidia-nvjitlink-cu12 (18.8MiB)
Downloading nvidia-cudnn-cu12 (544.5MiB)
Downloading nvidia-cufile-cu12 (1.1MiB)
 Downloading nvidia-cufile-cu12
 Downloading pygments
 Downloading networkx
 Downloading nvidia-cuda-cupti-cu12
 Downloading nvidia-nvjitlink-cu12
 Downloading nvidia-cuda-nvrtc-cu12
 Downloading sympy
 Downloading nvidia-curand-cu12
 Downloading nvidia-cusparselt-cu12
 Downloading nvidia-cusolver-cu12
 Downloading triton
 Downloading nvidia-nccl-cu12
 Downloading nvidia-cufft-cu12
 Downloading nvidia-cusparse-cu12
 Downloading nvidia-cublas-cu12
 Downloading nvidia-cudnn-cu12
 Downloading torch
Installed 31 packages in 459ms
============================= test session starts ==============================
platform linux -- Python 3.13.9, pytest-8.4.1, pluggy-1.6.0
rootdir: /tests
plugins: json-ctrf-0.3.5
collected 13 items

../tests/test_outputs.py ...FFFF......                                   [100%]

=================================== FAILURES ===================================
_____________________ test_column_parallel_linear[2-True] ______________________

bias = True, world_size = 2

    @pytest.mark.parametrize("bias", [True, False])
    @pytest.mark.parametrize("world_size", [1, 2, 4])
    def test_column_parallel_linear(bias, world_size):
        """
        Checks that ColumnParallelLinear slices weights and bias correctly,
        and produces correct output and gradients for different world sizes
        and bias settings.
        """
>       mp.spawn(
            _test_column_parallel_linear,
            args=(world_size, bias),
            nprocs=world_size,
            join=True,
        )

/tests/test_outputs.py:193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:340: in spawn
    return start_processes(fn, args, nprocs, join, daemon, start_method="spawn")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:296: in start_processes
    while not context.join():
              ^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <torch.multiprocessing.spawn.ProcessContext object at 0x70fb5ddc3390>
timeout = None, grace_period = None

    def join(
        self, timeout: Optional[float] = None, grace_period: Optional[float] = None
    ):
        r"""Join one or more processes within spawn context.
    
        Attempt to join one or more processes in this spawn context.
        If one of them exited with a non-zero exit status, this function
        kills the remaining processes (optionally with a grace period)
        and raises an exception with the cause of the first process exiting.
    
        Returns ``True`` if all processes have been joined successfully,
        ``False`` if there are more processes that need to be joined.
    
        Args:
            timeout (float): Wait this long (in seconds) before giving up on waiting.
            grace_period (float): When any processes fail, wait this long (in seconds)
                for others to shutdown gracefully before terminating them. If they
                still don't exit, wait another grace period before killing them.
        """
        # Ensure this function can be called even when we're done.
        if len(self.sentinels) == 0:
            return True
    
        # Wait for any process to fail or all of them to succeed.
        ready = multiprocessing.connection.wait(
            self.sentinels.keys(),
            timeout=timeout,
        )
    
        error_index = None
        for sentinel in ready:
            index = self.sentinels.pop(sentinel)
            process = self.processes[index]
            process.join()
            if process.exitcode != 0:
                error_index = index
                break
    
        # Return if there was no error.
        if error_index is None:
            # Return whether or not all processes have been joined.
            return len(self.sentinels) == 0
        # An error occurred. Clean-up all processes before returning.
        # First, allow a grace period for processes to shutdown themselves.
        if grace_period is not None:
            self._join_procs_with_timeout(grace_period)
        # Then, terminate processes that are still alive. Try SIGTERM first.
        for process in self.processes:
            if process.is_alive():
                log.warning("Terminating process %s via signal SIGTERM", process.pid)
                process.terminate()
    
        # Try SIGKILL if the process isn't going down after another grace_period.
        # The reason is related to python signal handling is limited
        # to main thread and if that is in c/c++ land and stuck it won't
        # to handle it. We have seen processes getting stuck not handling
        # SIGTERM for the above reason.
        self._join_procs_with_timeout(30 if grace_period is None else grace_period)
        for process in self.processes:
            if process.is_alive():
                log.warning(
                    "Unable to shutdown process %s via SIGTERM , forcefully exiting via SIGKILL",
                    process.pid,
                )
                process.kill()
            process.join()
    
        # The file will only be created if the process crashed.
        failed_process = self.processes[error_index]
        if not os.access(self.error_files[error_index], os.R_OK):
            exitcode = self.processes[error_index].exitcode
            if exitcode < 0:
                try:
                    name = signal.Signals(-exitcode).name
                except ValueError:
                    name = f"<Unknown signal {-exitcode}>"
                raise ProcessExitedException(
                    f"process {error_index:d} terminated with signal {name}",
                    error_index=error_index,
                    error_pid=failed_process.pid,
                    exit_code=exitcode,
                    signal_name=name,
                )
            else:
                raise ProcessExitedException(
                    f"process {error_index:d} terminated with exit code {exitcode:d}",
                    error_index=error_index,
                    error_pid=failed_process.pid,
                    exit_code=exitcode,
                )
    
        with open(self.error_files[error_index], "rb") as fh:
            original_trace = pickle.load(fh)
        msg = f"\n\n-- Process {error_index:d} terminated with the following error:\n"
        msg += original_trace
>       raise ProcessRaisedException(msg, error_index, failed_process.pid)
E       torch.multiprocessing.spawn.ProcessRaisedException: 
E       
E       -- Process 0 terminated with the following error:
E       Traceback (most recent call last):
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py", line 90, in _wrap
E           fn(i, *args)
E           ~~^^^^^^^^^^
E         File "/tests/test_outputs.py", line 93, in _test_column_parallel_linear
E           parallel_loss.backward()
E           ~~~~~~~~~~~~~~~~~~~~~~^^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_tensor.py", line 648, in backward
E           torch.autograd.backward(
E           ~~~~~~~~~~~~~~~~~~~~~~~^
E               self, gradient, retain_graph, create_graph, inputs=inputs
E               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           )
E           ^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/__init__.py", line 353, in backward
E           _engine_run_backward(
E           ~~~~~~~~~~~~~~~~~~~~^
E               tensors,
E               ^^^^^^^^
E           ...<5 lines>...
E               accumulate_grad=True,
E               ^^^^^^^^^^^^^^^^^^^^^
E           )
E           ^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py", line 824, in _engine_run_backward
E           return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
E                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               t_outputs, *args, **kwargs
E               ^^^^^^^^^^^^^^^^^^^^^^^^^^
E           )  # Calls into the C++ engine to run the backward pass
E           ^
E       RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:215: ProcessRaisedException
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
W0920 13:02:17.458000 2902 torch/multiprocessing/spawn.py:169] Terminating process 2917 via signal SIGTERM
_____________________ test_column_parallel_linear[2-False] _____________________

bias = False, world_size = 2

    @pytest.mark.parametrize("bias", [True, False])
    @pytest.mark.parametrize("world_size", [1, 2, 4])
    def test_column_parallel_linear(bias, world_size):
        """
        Checks that ColumnParallelLinear slices weights and bias correctly,
        and produces correct output and gradients for different world sizes
        and bias settings.
        """
>       mp.spawn(
            _test_column_parallel_linear,
            args=(world_size, bias),
            nprocs=world_size,
            join=True,
        )

/tests/test_outputs.py:193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:340: in spawn
    return start_processes(fn, args, nprocs, join, daemon, start_method="spawn")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:296: in start_processes
    while not context.join():
              ^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <torch.multiprocessing.spawn.ProcessContext object at 0x70fa8fec4180>
timeout = None, grace_period = None

    def join(
        self, timeout: Optional[float] = None, grace_period: Optional[float] = None
    ):
        r"""Join one or more processes within spawn context.
    
        Attempt to join one or more processes in this spawn context.
        If one of them exited with a non-zero exit status, this function
        kills the remaining processes (optionally with a grace period)
        and raises an exception with the cause of the first process exiting.
    
        Returns ``True`` if all processes have been joined successfully,
        ``False`` if there are more processes that need to be joined.
    
        Args:
            timeout (float): Wait this long (in seconds) before giving up on waiting.
            grace_period (float): When any processes fail, wait this long (in seconds)
                for others to shutdown gracefully before terminating them. If they
                still don't exit, wait another grace period before killing them.
        """
        # Ensure this function can be called even when we're done.
        if len(self.sentinels) == 0:
            return True
    
        # Wait for any process to fail or all of them to succeed.
        ready = multiprocessing.connection.wait(
            self.sentinels.keys(),
            timeout=timeout,
        )
    
        error_index = None
        for sentinel in ready:
            index = self.sentinels.pop(sentinel)
            process = self.processes[index]
            process.join()
            if process.exitcode != 0:
                error_index = index
                break
    
        # Return if there was no error.
        if error_index is None:
            # Return whether or not all processes have been joined.
            return len(self.sentinels) == 0
        # An error occurred. Clean-up all processes before returning.
        # First, allow a grace period for processes to shutdown themselves.
        if grace_period is not None:
            self._join_procs_with_timeout(grace_period)
        # Then, terminate processes that are still alive. Try SIGTERM first.
        for process in self.processes:
            if process.is_alive():
                log.warning("Terminating process %s via signal SIGTERM", process.pid)
                process.terminate()
    
        # Try SIGKILL if the process isn't going down after another grace_period.
        # The reason is related to python signal handling is limited
        # to main thread and if that is in c/c++ land and stuck it won't
        # to handle it. We have seen processes getting stuck not handling
        # SIGTERM for the above reason.
        self._join_procs_with_timeout(30 if grace_period is None else grace_period)
        for process in self.processes:
            if process.is_alive():
                log.warning(
                    "Unable to shutdown process %s via SIGTERM , forcefully exiting via SIGKILL",
                    process.pid,
                )
                process.kill()
            process.join()
    
        # The file will only be created if the process crashed.
        failed_process = self.processes[error_index]
        if not os.access(self.error_files[error_index], os.R_OK):
            exitcode = self.processes[error_index].exitcode
            if exitcode < 0:
                try:
                    name = signal.Signals(-exitcode).name
                except ValueError:
                    name = f"<Unknown signal {-exitcode}>"
                raise ProcessExitedException(
                    f"process {error_index:d} terminated with signal {name}",
                    error_index=error_index,
                    error_pid=failed_process.pid,
                    exit_code=exitcode,
                    signal_name=name,
                )
            else:
                raise ProcessExitedException(
                    f"process {error_index:d} terminated with exit code {exitcode:d}",
                    error_index=error_index,
                    error_pid=failed_process.pid,
                    exit_code=exitcode,
                )
    
        with open(self.error_files[error_index], "rb") as fh:
            original_trace = pickle.load(fh)
        msg = f"\n\n-- Process {error_index:d} terminated with the following error:\n"
        msg += original_trace
>       raise ProcessRaisedException(msg, error_index, failed_process.pid)
E       torch.multiprocessing.spawn.ProcessRaisedException: 
E       
E       -- Process 1 terminated with the following error:
E       Traceback (most recent call last):
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py", line 90, in _wrap
E           fn(i, *args)
E           ~~^^^^^^^^^^
E         File "/tests/test_outputs.py", line 93, in _test_column_parallel_linear
E           parallel_loss.backward()
E           ~~~~~~~~~~~~~~~~~~~~~~^^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_tensor.py", line 648, in backward
E           torch.autograd.backward(
E           ~~~~~~~~~~~~~~~~~~~~~~~^
E               self, gradient, retain_graph, create_graph, inputs=inputs
E               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           )
E           ^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/__init__.py", line 353, in backward
E           _engine_run_backward(
E           ~~~~~~~~~~~~~~~~~~~~^
E               tensors,
E               ^^^^^^^^
E           ...<5 lines>...
E               accumulate_grad=True,
E               ^^^^^^^^^^^^^^^^^^^^^
E           )
E           ^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py", line 824, in _engine_run_backward
E           return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
E                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               t_outputs, *args, **kwargs
E               ^^^^^^^^^^^^^^^^^^^^^^^^^^
E           )  # Calls into the C++ engine to run the backward pass
E           ^
E       RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:215: ProcessRaisedException
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
W0920 13:02:21.626000 2902 torch/multiprocessing/spawn.py:169] Terminating process 2925 via signal SIGTERM
_____________________ test_column_parallel_linear[4-True] ______________________

bias = True, world_size = 4

    @pytest.mark.parametrize("bias", [True, False])
    @pytest.mark.parametrize("world_size", [1, 2, 4])
    def test_column_parallel_linear(bias, world_size):
        """
        Checks that ColumnParallelLinear slices weights and bias correctly,
        and produces correct output and gradients for different world sizes
        and bias settings.
        """
>       mp.spawn(
            _test_column_parallel_linear,
            args=(world_size, bias),
            nprocs=world_size,
            join=True,
        )

/tests/test_outputs.py:193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:340: in spawn
    return start_processes(fn, args, nprocs, join, daemon, start_method="spawn")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:296: in start_processes
    while not context.join():
              ^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <torch.multiprocessing.spawn.ProcessContext object at 0x70fa8fec49d0>
timeout = None, grace_period = None

    def join(
        self, timeout: Optional[float] = None, grace_period: Optional[float] = None
    ):
        r"""Join one or more processes within spawn context.
    
        Attempt to join one or more processes in this spawn context.
        If one of them exited with a non-zero exit status, this function
        kills the remaining processes (optionally with a grace period)
        and raises an exception with the cause of the first process exiting.
    
        Returns ``True`` if all processes have been joined successfully,
        ``False`` if there are more processes that need to be joined.
    
        Args:
            timeout (float): Wait this long (in seconds) before giving up on waiting.
            grace_period (float): When any processes fail, wait this long (in seconds)
                for others to shutdown gracefully before terminating them. If they
                still don't exit, wait another grace period before killing them.
        """
        # Ensure this function can be called even when we're done.
        if len(self.sentinels) == 0:
            return True
    
        # Wait for any process to fail or all of them to succeed.
        ready = multiprocessing.connection.wait(
            self.sentinels.keys(),
            timeout=timeout,
        )
    
        error_index = None
        for sentinel in ready:
            index = self.sentinels.pop(sentinel)
            process = self.processes[index]
            process.join()
            if process.exitcode != 0:
                error_index = index
                break
    
        # Return if there was no error.
        if error_index is None:
            # Return whether or not all processes have been joined.
            return len(self.sentinels) == 0
        # An error occurred. Clean-up all processes before returning.
        # First, allow a grace period for processes to shutdown themselves.
        if grace_period is not None:
            self._join_procs_with_timeout(grace_period)
        # Then, terminate processes that are still alive. Try SIGTERM first.
        for process in self.processes:
            if process.is_alive():
                log.warning("Terminating process %s via signal SIGTERM", process.pid)
                process.terminate()
    
        # Try SIGKILL if the process isn't going down after another grace_period.
        # The reason is related to python signal handling is limited
        # to main thread and if that is in c/c++ land and stuck it won't
        # to handle it. We have seen processes getting stuck not handling
        # SIGTERM for the above reason.
        self._join_procs_with_timeout(30 if grace_period is None else grace_period)
        for process in self.processes:
            if process.is_alive():
                log.warning(
                    "Unable to shutdown process %s via SIGTERM , forcefully exiting via SIGKILL",
                    process.pid,
                )
                process.kill()
            process.join()
    
        # The file will only be created if the process crashed.
        failed_process = self.processes[error_index]
        if not os.access(self.error_files[error_index], os.R_OK):
            exitcode = self.processes[error_index].exitcode
            if exitcode < 0:
                try:
                    name = signal.Signals(-exitcode).name
                except ValueError:
                    name = f"<Unknown signal {-exitcode}>"
                raise ProcessExitedException(
                    f"process {error_index:d} terminated with signal {name}",
                    error_index=error_index,
                    error_pid=failed_process.pid,
                    exit_code=exitcode,
                    signal_name=name,
                )
            else:
                raise ProcessExitedException(
                    f"process {error_index:d} terminated with exit code {exitcode:d}",
                    error_index=error_index,
                    error_pid=failed_process.pid,
                    exit_code=exitcode,
                )
    
        with open(self.error_files[error_index], "rb") as fh:
            original_trace = pickle.load(fh)
        msg = f"\n\n-- Process {error_index:d} terminated with the following error:\n"
        msg += original_trace
>       raise ProcessRaisedException(msg, error_index, failed_process.pid)
E       torch.multiprocessing.spawn.ProcessRaisedException: 
E       
E       -- Process 3 terminated with the following error:
E       Traceback (most recent call last):
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py", line 90, in _wrap
E           fn(i, *args)
E           ~~^^^^^^^^^^
E         File "/tests/test_outputs.py", line 93, in _test_column_parallel_linear
E           parallel_loss.backward()
E           ~~~~~~~~~~~~~~~~~~~~~~^^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_tensor.py", line 648, in backward
E           torch.autograd.backward(
E           ~~~~~~~~~~~~~~~~~~~~~~~^
E               self, gradient, retain_graph, create_graph, inputs=inputs
E               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           )
E           ^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/__init__.py", line 353, in backward
E           _engine_run_backward(
E           ~~~~~~~~~~~~~~~~~~~~^
E               tensors,
E               ^^^^^^^^
E           ...<5 lines>...
E               accumulate_grad=True,
E               ^^^^^^^^^^^^^^^^^^^^^
E           )
E           ^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py", line 824, in _engine_run_backward
E           return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
E                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               t_outputs, *args, **kwargs
E               ^^^^^^^^^^^^^^^^^^^^^^^^^^
E           )  # Calls into the C++ engine to run the backward pass
E           ^
E       RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:215: ProcessRaisedException
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
W0920 13:02:31.522000 2902 torch/multiprocessing/spawn.py:169] Terminating process 2934 via signal SIGTERM
W0920 13:02:31.522000 2902 torch/multiprocessing/spawn.py:169] Terminating process 2935 via signal SIGTERM
W0920 13:02:31.523000 2902 torch/multiprocessing/spawn.py:169] Terminating process 2936 via signal SIGTERM
_____________________ test_column_parallel_linear[4-False] _____________________

bias = False, world_size = 4

    @pytest.mark.parametrize("bias", [True, False])
    @pytest.mark.parametrize("world_size", [1, 2, 4])
    def test_column_parallel_linear(bias, world_size):
        """
        Checks that ColumnParallelLinear slices weights and bias correctly,
        and produces correct output and gradients for different world sizes
        and bias settings.
        """
>       mp.spawn(
            _test_column_parallel_linear,
            args=(world_size, bias),
            nprocs=world_size,
            join=True,
        )

/tests/test_outputs.py:193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:340: in spawn
    return start_processes(fn, args, nprocs, join, daemon, start_method="spawn")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:296: in start_processes
    while not context.join():
              ^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <torch.multiprocessing.spawn.ProcessContext object at 0x70fa8ff9e570>
timeout = None, grace_period = None

    def join(
        self, timeout: Optional[float] = None, grace_period: Optional[float] = None
    ):
        r"""Join one or more processes within spawn context.
    
        Attempt to join one or more processes in this spawn context.
        If one of them exited with a non-zero exit status, this function
        kills the remaining processes (optionally with a grace period)
        and raises an exception with the cause of the first process exiting.
    
        Returns ``True`` if all processes have been joined successfully,
        ``False`` if there are more processes that need to be joined.
    
        Args:
            timeout (float): Wait this long (in seconds) before giving up on waiting.
            grace_period (float): When any processes fail, wait this long (in seconds)
                for others to shutdown gracefully before terminating them. If they
                still don't exit, wait another grace period before killing them.
        """
        # Ensure this function can be called even when we're done.
        if len(self.sentinels) == 0:
            return True
    
        # Wait for any process to fail or all of them to succeed.
        ready = multiprocessing.connection.wait(
            self.sentinels.keys(),
            timeout=timeout,
        )
    
        error_index = None
        for sentinel in ready:
            index = self.sentinels.pop(sentinel)
            process = self.processes[index]
            process.join()
            if process.exitcode != 0:
                error_index = index
                break
    
        # Return if there was no error.
        if error_index is None:
            # Return whether or not all processes have been joined.
            return len(self.sentinels) == 0
        # An error occurred. Clean-up all processes before returning.
        # First, allow a grace period for processes to shutdown themselves.
        if grace_period is not None:
            self._join_procs_with_timeout(grace_period)
        # Then, terminate processes that are still alive. Try SIGTERM first.
        for process in self.processes:
            if process.is_alive():
                log.warning("Terminating process %s via signal SIGTERM", process.pid)
                process.terminate()
    
        # Try SIGKILL if the process isn't going down after another grace_period.
        # The reason is related to python signal handling is limited
        # to main thread and if that is in c/c++ land and stuck it won't
        # to handle it. We have seen processes getting stuck not handling
        # SIGTERM for the above reason.
        self._join_procs_with_timeout(30 if grace_period is None else grace_period)
        for process in self.processes:
            if process.is_alive():
                log.warning(
                    "Unable to shutdown process %s via SIGTERM , forcefully exiting via SIGKILL",
                    process.pid,
                )
                process.kill()
            process.join()
    
        # The file will only be created if the process crashed.
        failed_process = self.processes[error_index]
        if not os.access(self.error_files[error_index], os.R_OK):
            exitcode = self.processes[error_index].exitcode
            if exitcode < 0:
                try:
                    name = signal.Signals(-exitcode).name
                except ValueError:
                    name = f"<Unknown signal {-exitcode}>"
                raise ProcessExitedException(
                    f"process {error_index:d} terminated with signal {name}",
                    error_index=error_index,
                    error_pid=failed_process.pid,
                    exit_code=exitcode,
                    signal_name=name,
                )
            else:
                raise ProcessExitedException(
                    f"process {error_index:d} terminated with exit code {exitcode:d}",
                    error_index=error_index,
                    error_pid=failed_process.pid,
                    exit_code=exitcode,
                )
    
        with open(self.error_files[error_index], "rb") as fh:
            original_trace = pickle.load(fh)
        msg = f"\n\n-- Process {error_index:d} terminated with the following error:\n"
        msg += original_trace
>       raise ProcessRaisedException(msg, error_index, failed_process.pid)
E       torch.multiprocessing.spawn.ProcessRaisedException: 
E       
E       -- Process 3 terminated with the following error:
E       Traceback (most recent call last):
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py", line 90, in _wrap
E           fn(i, *args)
E           ~~^^^^^^^^^^
E         File "/tests/test_outputs.py", line 93, in _test_column_parallel_linear
E           parallel_loss.backward()
E           ~~~~~~~~~~~~~~~~~~~~~~^^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_tensor.py", line 648, in backward
E           torch.autograd.backward(
E           ~~~~~~~~~~~~~~~~~~~~~~~^
E               self, gradient, retain_graph, create_graph, inputs=inputs
E               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           )
E           ^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/__init__.py", line 353, in backward
E           _engine_run_backward(
E           ~~~~~~~~~~~~~~~~~~~~^
E               tensors,
E               ^^^^^^^^
E           ...<5 lines>...
E               accumulate_grad=True,
E               ^^^^^^^^^^^^^^^^^^^^^
E           )
E           ^
E         File "/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py", line 824, in _engine_run_backward
E           return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
E                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E               t_outputs, *args, **kwargs
E               ^^^^^^^^^^^^^^^^^^^^^^^^^^
E           )  # Calls into the C++ engine to run the backward pass
E           ^
E       RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/multiprocessing/spawn.py:215: ProcessRaisedException
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
W0920 13:02:40.228000 2902 torch/multiprocessing/spawn.py:169] Terminating process 2951 via signal SIGTERM
W0920 13:02:40.232000 2902 torch/multiprocessing/spawn.py:169] Terminating process 2952 via signal SIGTERM
W0920 13:02:40.232000 2902 torch/multiprocessing/spawn.py:169] Terminating process 2953 via signal SIGTERM
=============================== warnings summary ===============================
../root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276
  /root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
    cpu = _conversion_method_template(device=torch.device("cpu"))

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
==================================== PASSES ====================================
_____________________ test_column_parallel_linear[1-True] ______________________
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
_____________________ test_column_parallel_linear[1-False] _____________________
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
_______________________ test_row_parallel_linear[1-True] _______________________
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
______________________ test_row_parallel_linear[1-False] _______________________
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
_______________________ test_row_parallel_linear[2-True] _______________________
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
______________________ test_row_parallel_linear[2-False] _______________________
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
_______________________ test_row_parallel_linear[4-True] _______________________
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
______________________ test_row_parallel_linear[4-False] _______________________
----------------------------- Captured stderr call -----------------------------
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.py:276: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:81.)
  cpu = _conversion_method_template(device=torch.device("cpu"))
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
/root/.cache/uv/archive-v0/lcLKAA5lmK1PC2n8h1uR9/lib/python3.13/site-packages/torch/autograd/graph.py:824: UserWarning: c10d::allreduce_: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at /pytorch/torch/csrc/autograd/autograd_not_implemented_fallback.cpp:62.)
  return Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
=========================== short test summary info ============================
PASSED ../tests/test_outputs.py::test_parallel_linear_exists
PASSED ../tests/test_outputs.py::test_column_parallel_linear[1-True]
PASSED ../tests/test_outputs.py::test_column_parallel_linear[1-False]
PASSED ../tests/test_outputs.py::test_row_parallel_linear[1-True]
PASSED ../tests/test_outputs.py::test_row_parallel_linear[1-False]
PASSED ../tests/test_outputs.py::test_row_parallel_linear[2-True]
PASSED ../tests/test_outputs.py::test_row_parallel_linear[2-False]
PASSED ../tests/test_outputs.py::test_row_parallel_linear[4-True]
PASSED ../tests/test_outputs.py::test_row_parallel_linear[4-False]
FAILED ../tests/test_outputs.py::test_column_parallel_linear[2-True] - torch....
FAILED ../tests/test_outputs.py::test_column_parallel_linear[2-False] - torch...
FAILED ../tests/test_outputs.py::test_column_parallel_linear[4-True] - torch....
FAILED ../tests/test_outputs.py::test_column_parallel_linear[4-False] - torch...
============== 4 failed, 9 passed, 1 warning in 66.47s (0:01:06) ===============
