Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/packaging/post_build_script.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash
set -euxo pipefail

FORGE_WHEEL=${GITHUB_WORKSPACE}/${REPOSITORY}/dist/*.whl
WHL_DIR="${GITHUB_WORKSPACE}/wheels/dist"
DIST=dist/

ls -l "${WHL_DIR}"
ls ${FORGE_WHEEL}
echo "Copying files from $WHL_DIR to $DIST"
mkdir -p $DIST && find "$WHL_DIR" -maxdepth 1 -type f -exec cp {} "$DIST/" \;
echo "The following wheels will be uploaded to S3"
ls -l "${DIST}"
32 changes: 32 additions & 0 deletions .github/packaging/pre_build_cpu.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/bash
set -euxo pipefail

# Builds vLLM
# This script builds vLLM and places its wheel into dist/.

VLLM_BRANCH="v0.10.0"
BUILD_DIR="$HOME/forge-build"

# Push other files to the dist folder
WHL_DIR="${GITHUB_WORKSPACE}/wheels/dist"

mkdir -p $BUILD_DIR
mkdir -p $WHL_DIR
echo "build dir is $BUILD_DIR"
echo "wheel dir is $WHL_DIR"

build_vllm() {
cd "$BUILD_DIR"

git clone https://github.com/vllm-project/vllm.git --branch $VLLM_BRANCH
cd "$BUILD_DIR/vllm"

python use_existing_torch.py
pip install -r requirements/build.txt
export VERBOSE=1
export CMAKE_VERBOSE_MAKEFILE=1
export FORCE_CMAKE=1
pip wheel -v --no-build-isolation --no-deps . -w "$WHL_DIR"
}

build_vllm
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh I wonder if we need to do the append_date here too. Which forge wheel ultimately gets uploaded?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

append_date is updating the forge wheel's name, right? Do we even care about that? (Actually if we are running this nightly shouldn't we be appending date to monarch and vllm wheels?)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess that's true on both accounts. I dunno I'm not too opinionated

71 changes: 71 additions & 0 deletions .github/packaging/pre_build_gpu.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/bin/bash
set -euxo pipefail

# Builds Monarch
# This script builds Monarch and places its wheel into dist/.

MONARCH_COMMIT="265034a29ec3fb35919f4a9c23c65f2f4237190d"
BUILD_DIR="$HOME/forge-build"

# Push other files to the dist folder
WHL_DIR="${GITHUB_WORKSPACE}/wheels/dist"

mkdir -p $BUILD_DIR
mkdir -p $WHL_DIR
echo "build dir is $BUILD_DIR"
echo "wheel dir is $WHL_DIR"

build_monarch() {
# Get Rust build related pieces
if ! command -v rustup &> /dev/null; then
echo "getting rustup"
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
export PATH="$HOME/.cargo/bin:$PATH"
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
fi

rustup toolchain install nightly
rustup default nightly

if command -v dnf &>/dev/null; then
dnf install -y clang-devel \
libibverbs rdma-core libmlx5 libibverbs-devel rdma-core-devel fmt-devel \
libunwind-devel
elif command -v apt-get &>/dev/null; then
apt-get update
apt-get install -y clang libunwind-dev \
libibverbs-dev librdmacm-dev libfmt-dev
fi

cd "$BUILD_DIR"
git clone https://github.com/meta-pytorch/monarch.git
cd "$BUILD_DIR/monarch"
git checkout $MONARCH_COMMIT

pip install -r build-requirements.txt
export USE_TENSOR_ENGINE=1
export RUST_BACKTRACE=1
export CARGO_TERM_VERBOSE=true
export CARGO_TERM_COLOR=always
pip wheel --no-build-isolation --no-deps . -w "$WHL_DIR"
}

append_date() {
cd ${GITHUB_WORKSPACE}/${REPOSITORY}
# Appends the current date and time to the Forge wheel
version_file="assets/version.txt"
init_file="src/forge/__init__.py"
if [[ -n "$BUILD_VERSION" ]]; then
# Update the version in version.txt
echo "$BUILD_VERSION" > "$version_file"
# Create a variable named __version__ at the end of __init__.py
echo "__version__ = \"$BUILD_VERSION\"" >> "$init_file"
else
echo "Error: BUILD_VERSION environment variable is not set or empty."
exit 1
fi
}


build_monarch
append_date
50 changes: 50 additions & 0 deletions .github/workflows/build_vllm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Build pinned vLLM against PyTorch nightly and upload

on:
push:
branches:
- nightly
workflow_dispatch:

permissions:
id-token: write
contents: read

jobs:
build:
name: forge-cu129-nightly
uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@28a1b658404f17c8eabde5f7fe25ae3ac826fae6
strategy:
fail-fast: false
with:
repository: meta-pytorch/forge
ref: ""
test-infra-repository: pytorch/test-infra
test-infra-ref: 28a1b658404f17c8eabde5f7fe25ae3ac826fae6
run-smoke-test: false
wheel-upload-path: preview/forge
package-name: forge
build-matrix: |
{
"include": [
{
"python_version": "3.10",
"gpu_arch_type": "cpu",
"gpu_arch_version": "12.9",
"desired_cuda": "cu129",
"container_image": "pytorch/manylinux2_28-builder:cuda12.9",
"package_type": "manywheel",
"build_name": "manywheel-py3_10-cuda12_9",
"validation_runner": "linux.12xlarge.memory",
"installation": "pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu129",
"channel": "nightly",
"upload_to_base_bucket": "no",
"stable_version": "2.8.0",
"use_split_build": false
}
]
}
pre-script: .github/packaging/pre_build_cpu.sh
post-script: .github/packaging/post_build_script.sh
trigger-event: ${{ github.event_name }}
build-platform: 'python-build-package'
50 changes: 50 additions & 0 deletions .github/workflows/build_wheels.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Build nightly wheels and publish to PyTorch Index

on:
push:
branches:
- nightly
workflow_dispatch:

permissions:
id-token: write
contents: read

jobs:
build:
name: forge-cu129-nightly
uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@28a1b658404f17c8eabde5f7fe25ae3ac826fae6
strategy:
fail-fast: false
with:
repository: meta-pytorch/forge
ref: ""
test-infra-repository: pytorch/test-infra
test-infra-ref: 28a1b658404f17c8eabde5f7fe25ae3ac826fae6
run-smoke-test: false
wheel-upload-path: preview/forge
package-name: forge
build-matrix: |
{
"include": [
{
"python_version": "3.10",
"gpu_arch_type": "cuda",
"gpu_arch_version": "12.9",
"desired_cuda": "cu129",
"container_image": "pytorch/manylinux2_28-builder:cuda12.9",
"package_type": "manywheel",
"build_name": "manywheel-py3_10-cuda12_9",
"validation_runner": "linux.4xlarge.nvidia.gpu",
"installation": "pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu129",
"channel": "nightly",
"upload_to_base_bucket": "no",
"stable_version": "2.8.0",
"use_split_build": false
}
]
}
pre-script: .github/packaging/pre_build_gpu.sh
post-script: .github/packaging/post_build_script.sh
trigger-event: ${{ github.event_name }}
build-platform: 'python-build-package'
2 changes: 2 additions & 0 deletions src/forge/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

__version__ = ""

# Enables faster downloading. For more info: https://huggingface.co/docs/huggingface_hub/en/guides/download#faster-downloads
# To disable, run `HF_HUB_ENABLE_HF_TRANSFER=0 tune download <model_config>`
try:
Expand Down
1 change: 1 addition & 0 deletions version.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.1.0
Loading