Support for PPC64LE in Scikit-Learn CI

### **Proposed new feature or change:**
Hi Team,

We would like to upstream support for the Power (PPC64LE) architecture in scikit-learn by adding a new CI job in wheels.yml. This will enable continuous integration (CI) support for PPC64LE using a GitHub Actions self-hosted runner.

**What We've Done So Far**

1. **Forking and Building:**
  - We forked the scikit-learn repository and successfully built and tested wheels for PPC64LE using an ephemeral self-hosted runner on an OSU Power machine.

2. **Using cibuildwheel:**
  -  We leveraged **cibuildwheel**, the same tool used for building wheels on other architectures and confirmed that it works smoothly for PPC64LE.

3. **Modifications:**
  - The key change involves adding a new job for PPC64LE in the **wheels.yml** file.
  - This ensures that scikit-learn can be built and tested automatically for Power architecture alongside other existing platforms.

**Why We're Proposing These Changes**

- Enabling CI support for PPC64LE ensures continuous testing and validation, improving compatibility and reliability for Power users.
- The self-hosted runner ensures minimal impact on existing CI/CD pipelines since it only runs when triggered.
- Other projects, such as PyTorch, have adopted a similar approach for alternative architectures like s390x

**Details of Self-Hosted Runner Setup**

- We have successfully set up an ephemeral self-hosted runner for PPC64LE on an OSU VM, following an approach similar to [s390x.](https://github.com.mcas.ms/pytorch/pytorch/blob/main/.github/scripts/s390x-ci/README.md)
- The runner remains in listening mode and can be triggered by specific workflows (e.g., trunk updates), ensuring efficient usage.

**Details of OSU and IBM Power Support**

Through a partnership between IBM and the Oregon State University (OSU) Open Source Lab (OSL), infrastructure is provided for open-source development:

- **Architecture**: Power Little-Endian (LE)
- **Virtualization**: Kernel-based Virtual Machine (KVM)
- **Access**: Secure Shell (SSH) and OpenStack API/GUI
- **Capabilities**: Supports Jenkins and integration into external CI/CD pipelines

**Alternative Approach: QEMU-Based CI**

- We also tested a **QEMU-based** approach, updating **wheels.yml** accordingly.
- Using a QEMU Ubuntu Docker setup on a GitHub runner, we successfully built the wheels.
- However, the **QEMU-based** build took approximately **6 hours**, whereas the **self-hosted runner** completes the build in just **22 minutes**, making it a significantly more efficient solution.

**Request for Feedback**

We would appreciate your feedback on:

1. Feasibility and design of the proposed changes.
2. Any modifications or requirements needed for upstreaming PPC64LE support.

We are happy to provide further details or assistance as needed. Looking forward to your thoughts!

COMMENT:
Thanks a lot for the details, we would first need numpy and scipy to have a PPC64LE wheel

I am going to close this one, but feel free to reopen when a numpy and scipy wheels are available.

numpy has had some discussion about this for example https://github.com/numpy/numpy/issues/28438 and https://github.com/numpy/numpy/issues/22318.

Labels: Needs Triage