Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 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
12 changes: 12 additions & 0 deletions .github/packaging/post_build_script.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash
set -euxo pipefail

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

echo "Uploading wheels to S3"
Copy link
Contributor

Choose a reason for hiding this comment

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

should we change this to like "Here are the files we're uploading to S3" or remove altogether?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah let me make this a bit clearer

ls -l "${WHL_DIR}"
ls ${FORGE_WHEEL}
echo "Copying files from $WHL_DIR to $DIST"
mkdir -p $DIST && cp -r $WHL_DIR $DIST
34 changes: 34 additions & 0 deletions .github/packaging/pre_build_cpu.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash
set -euxo pipefail

# Builds vLLM, Monarch and torchstore
# This script builds vLLM, Monarch and torchstore and places
# their wheels 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

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

# Builds vLLM, Monarch and torchstore
# This script builds vLLM, Monarch and torchstore and places
# their wheels into dist/.

MONARCH_COMMIT="265034a29ec3fb35919f4a9c23c65f2f4237190d"
TORCHTITAN_COMMIT="82f0287b966f1735819a377a9a09e7a303c55faa"
Copy link
Member

Choose a reason for hiding this comment

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

nightly?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is actually not used. I think we really only need to successfully upload Monarch and vLLM here, the rest can be handled elsewhere

TORCHSTORE_COMMIT="main"
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
# export MAX_JOBS=2 # don't resource starve the host
# export CMAKE_BUILD_PARALLEL_LEVEL=2
# export MAKEFLAGS=-j2
pip wheel -v --no-build-isolation --no-deps . -w "$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"
}

build_torchtitan() {
cd "$BUILD_DIR"
git clone https://github.com/pytorch/torchtitan.git
cd "$BUILD_DIR/torchtitan"
git checkout $TORCHTITAN_COMMIT

pip wheel --no-deps . -w "$WHL_DIR"
}

build_torchstore() {
cd "$BUILD_DIR"
if [ -d "torchstore" ]; then
log_warn "torchstore directory exists, removing..."
rm -rf torchstore
fi

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

pip wheel --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
# build_torchstore
# build_torchtitan
append_date
51 changes: 51 additions & 0 deletions .github/workflows/build_vllm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Build pinned vLLM against PyTorch nightly and upload

on:
pull_request:
Copy link
Contributor

Choose a reason for hiding this comment

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

should we remove pull_request? I assume we don't want this to actually run all the builds per PR

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oh yeah good call, thank you

push:
branches:
- nightly
workflow_dispatch:

permissions:
id-token: write
contents: read

jobs:
build:
# if: github.repository_owner == 'pytorch'
name: forge-cu129-nightly
uses: ebsmothers/test-infra/.github/workflows/build_wheels_linux.yml@main
strategy:
fail-fast: false
with:
repository: meta-pytorch/forge
ref: ""
test-infra-repository: ebsmothers/test-infra
test-infra-ref: ff517c0858457180586230eb6105bbbdd1d05264
run-smoke-test: false
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'
51 changes: 51 additions & 0 deletions .github/workflows/build_wheels.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Build nightly wheels and publish to PyTorch Index

on:
pull_request:
push:
branches:
- nightly
workflow_dispatch:

permissions:
id-token: write
contents: read

jobs:
build:
# if: github.repository_owner == 'pytorch'
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
# if: github.repository_owner == 'pytorch'
if: github.repository_owner == 'pytorch'

name: forge-cu129-nightly
uses: ebsmothers/test-infra/.github/workflows/build_wheels_linux.yml@main
strategy:
fail-fast: false
with:
repository: meta-pytorch/forge
ref: ""
test-infra-repository: ebsmothers/test-infra
test-infra-ref: ff517c0858457180586230eb6105bbbdd1d05264
run-smoke-test: false
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