Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e2be8d0
Update oe-eval.sh to set a default timeout of 48h. (#789)
finbarrtimbers Jul 16, 2025
ca55010
Updated configs to support changes. (#790)
finbarrtimbers Jul 16, 2025
c56efad
Add benchmark scripts (#786)
finbarrtimbers Jul 16, 2025
004a48d
Add remap verifier (#773)
hamishivi Jul 16, 2025
3b5b354
Ran the linter. (#792)
finbarrtimbers Jul 16, 2025
7f7308c
fix the URL for code api setup (#791)
mnoukhov Jul 16, 2025
829796a
Add nltk setup to uv dockerfile (#785)
hamishivi Jul 16, 2025
e4e5dfb
Switches the actors to use the Ray queue. (#784)
finbarrtimbers Jul 16, 2025
7eb6c4d
Set new default value for num_samples
finbarrtimbers Jul 16, 2025
7bf039f
Updates the benchmark script (#795)
finbarrtimbers Jul 17, 2025
d5e7160
install nginx in uv (#793)
mnoukhov Jul 17, 2025
bb7477d
allow passing local models, bubble up dataset cache errors (#797)
mnoukhov Jul 17, 2025
839a806
binary reward for code (#798)
saurabh111233212 Jul 18, 2025
541058c
Now, we run individual prompts through the queue. (#796)
finbarrtimbers Jul 18, 2025
774edca
Adds flashinfer dep. (#800)
finbarrtimbers Jul 18, 2025
b3e8e70
new beaker names (#803)
hamishivi Jul 21, 2025
266f214
Remove Unused DPO Function (#794)
fabianlim Jul 21, 2025
8048c9a
extra reporting (#799)
garrett361 Jul 21, 2025
4659dca
Revert "Now, we run individual prompts through the queue. (#796)" (#804)
saurabh111233212 Jul 21, 2025
45ae474
Fix misnamed variables. (#808)
finbarrtimbers Jul 21, 2025
9d1620d
Fix broken syntax. (#809)
finbarrtimbers Jul 21, 2025
de8a14f
Add new olmo chat templates, and improve data mixing/tokenization (#765)
jacob-morrison Jul 21, 2025
d944d42
Fixes from last PR (#810)
hamishivi Jul 22, 2025
207268a
Delete run_repro.sh (#813)
finbarrtimbers Jul 22, 2025
cc33540
Fix disk space error on image creation (#814)
hamishivi Jul 22, 2025
79fcc0b
Merge remote-tracking branch 'upstream/main' into main-merge
garrett361 Jul 23, 2025
6a66db7
use upstream stats
garrett361 Jul 23, 2025
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
6 changes: 5 additions & 1 deletion .github/workflows/push-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,12 @@ jobs:
# ghcr_user: ${{ secrets.GHCR_USER }}

# big images fail, trying this
# reference for big files in runner: https://github.com/actions/runner-images/issues/10386
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache /usr/share/dotnet "$AGENT_TOOLSDIRECTORY"
run: rm -rf /opt/hostedtoolcache /usr/share/dotnet "$AGENT_TOOLSDIRECTORY" /usr/local/lib/android/sdk/ndk

- name: Check remaining disk space
run: df -h

- name: Build image
run: |
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ RUN apt-get update --no-install-recommends && apt-get install -y nginx && mkdir
ENV HF_HUB_ENABLE_HF_TRANSFER=1
RUN pip install torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128 --no-cache-dir
RUN pip install packaging --no-cache-dir
RUN pip install flash-attn==2.8.0.post2 --no-build-isolation --no-cache-dir
RUN pip install flash-attn==2.8.0.post2 flashinfer-python>=0.2.7.post1 --no-build-isolation --no-cache-dir
COPY requirements.txt .
RUN pip install -r requirements.txt --no-cache-dir
RUN python -m nltk.downloader punkt
Expand Down
7 changes: 7 additions & 0 deletions Dockerfile.uv
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ RUN echo "UV_CACHE_DIR: ${UV_CACHE_DIR}"
# setup files
WORKDIR /stage/

# Install nginx and create conf.d directory
RUN apt-get update --no-install-recommends && apt-get install -y nginx && mkdir -p /etc/nginx/conf.d && rm -rf /var/lib/apt/lists/*

ENV HF_HUB_ENABLE_HF_TRANSFER=1
ENV UV_COMPILE_BYTECODE=0

Expand All @@ -26,6 +29,10 @@ RUN --mount=type=cache,target=${UV_CACHE_DIR} \
# rerun with extras
RUN uv sync --extra compile --extra liger

# punkt / punkt_tab
RUN uv run -m nltk.downloader punkt
RUN uv run -m nltk.downloader punkt_tab

WORKDIR /stage/

# Copy all runtime files directly to final stage
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ pip install --upgrade pip "setuptools<70.0.0" wheel
# TODO, unpin setuptools when this issue in flash attention is resolved
pip install torch==2.6.0 torchvision==0.21.0 --index-url https://download.pytorch.org/whl/cu124
pip install packaging
pip install flash-attn==2.7.2.post1 --no-build-isolation
pip install flash-attn==2.7.2.post2 flashinfer-python>=0.2.7.post1 --no-build-isolation
pip install -r requirements.txt
pip install -e .
python -m nltk.downloader punkt
Expand All @@ -62,7 +62,7 @@ python -m nltk.downloader punkt
* **Local installation with uv (preview)**: We are experimenting with using [uv](https://docs.astral.sh/uv/). You can install via
```bash
uv sync
uv sync --extra compile --extra liger # to install flash attention and liger-kernel
uv sync --extra compile --extra liger # to install flash attention, flash infer, and liger-kernel
```


Expand Down
4 changes: 3 additions & 1 deletion configs/beaker_configs/code_api_setup.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/bin/bash

set -e

# Configuration
TOTAL_CPUS=$(nproc)
CODE_SERVER_CPUS=128
Expand All @@ -8,7 +10,7 @@ NGINX_PORT=8070
API_BASE_PORT=1234

# Get leader replica IP
BEAKER_LEADER_REPLICA_IP=$(getent hosts ${BEAKER_LEADER_REPLICA_HOSTNAME} | awk '{print $1}')
BEAKER_LEADER_REPLICA_IP=$(getent hosts ${BEAKER_LEADER_REPLICA_HOSTNAME} | head -n 1 | awk '{print $1}')

# Set up environment
export PYTHONPATH=$REPO_PATH
Expand Down
52 changes: 25 additions & 27 deletions mason.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,39 +54,35 @@ def parse_env_var(env_var_str: str) -> Dict[str, str]:
raise argparse.ArgumentTypeError("Environment variable name cannot be empty")
return {"name": name, "value": value}


NFS_CLUSTERS = [
"ai2/allennlp-cirrascale",
"ai2/aristo-cirrascale",
"ai2/climate-cirrascale",
"ai2/general-cirrascale",
"ai2/general-cirrascale-a5000",
"ai2/mosaic-cirrascale",
"ai2/mosaic-cirrascale-a100",
"ai2/pluto-cirrascale",
"ai2/prior-cirrascale",
"ai2/s2-cirrascale",
"ai2/s2-cirrascale-l40",
]

WEKA_CLUSTERS = [
"ai2/jupiter-cirrascale-2",
"ai2/jupiter",
"ai2/saturn-cirrascale",
"ai2/titan-cirrascale",
"ai2/titan",
"ai2/neptune-cirrascale",
"ai2/neptune",
"ai2/ceres-cirrascale",
"ai2/ceres",
"ai2/triton-cirrascale",
"ai2/triton",
"ai2/rhea-cirrascale",
"ai2/rhea",
]
GCP_CLUSTERS = [
"ai2/augusta-google-1"
"ai2/augusta-google-1",
"ai2/augusta"
]

INTERCONNECT_CLUSTERS = [
"ai2/jupiter-cirrascale-2",
"ai2/jupiter",
"ai2/ceres-cirrascale",
"ai2/ceres",
"ai2/titan-cirrascale",
"ai2/titan",
"ai2/augusta-google-1",
"ai2/augusta",
]


Expand Down Expand Up @@ -238,6 +234,9 @@ def get_env_vars(pure_docker_mode: bool, cluster: List[str], beaker_secrets: Lis
whoami: str, resumable: bool, num_nodes: int, additional_env_vars: List[Dict[str, str]],
additional_secrets: List[Dict[str, str]]):
env_vars = []
if "VLLM_ATTENTION_BACKEND" not in additional_env_vars:
env_vars.append(beaker.EnvVar(name="VLLM_ATTENTION_BACKEND",
value="FLASHINFER"))
# Add user-specified environment variables first
for env_var in additional_env_vars:
env_vars.append(
Expand Down Expand Up @@ -487,16 +486,8 @@ def get_env_vars(pure_docker_mode: bool, cluster: List[str], beaker_secrets: Lis
def get_datasets(beaker_datasets, cluster: List[str]):
"""if pure docker mode we don't mount the NFS; so we can run it on jupiter2"""
res = []
# if none of the cluster is in weka, we mount the NFS
if all(c in NFS_CLUSTERS for c in cluster):
res = [
beaker.DataMount(
source=beaker.DataSource(host_path="/net/nfs.cirrascale"),
mount_path="/net/nfs.cirrascale",
),
]
# if all cluster is in weka, we mount the weka
elif all(c in WEKA_CLUSTERS for c in cluster):
if all(c in WEKA_CLUSTERS for c in cluster):
res = [
beaker.DataMount(
source=beaker.DataSource(weka="oe-adapt-default"),
Expand Down Expand Up @@ -635,6 +626,8 @@ def remove_arg_from_list(lst: List[str], item: str, remove_value: bool = False):
dataset_config_hashes.append(dataset_config_hash)
stderr = result.stderr
return_code = result.returncode
if return_code != 0:
raise Exception(f"Error code {return_code} when creating cached dataset")
console.log("✅✅✅ Finished running the caching command")

if file in OPEN_INSTRUCT_RESUMABLES and idx != -1 and len(args.auto_checkpoint_state_dir) > 0:
Expand Down Expand Up @@ -706,8 +699,13 @@ def remove_arg_from_list(lst: List[str], item: str, remove_value: bool = False):
break

commit_hash = get_commit_hash(model_name_or_path, model_revision, "config.json", "model")
download_from_hf(model_name_or_path, model_revision) # first download the model
path = download_from_hf(model_name_or_path, model_revision) # then get the path
if os.path.exists(model_name_or_path):
path = model_name_or_path
model_name_or_path = os.path.basename(model_name_or_path)
console.log(f"Local model is already downloaded, using path basename as model name {model_name_or_path}, note that commit hash is {commit_hash}")
else:
download_from_hf(model_name_or_path, model_revision) # first download the model
path = download_from_hf(model_name_or_path, model_revision) # then get the path
gs_saved_path = f"gs://ai2-llm/post-training/deletable_cache_models/{model_name_or_path}/{commit_hash}"
gs_folder = gs_folder_exists(gs_saved_path) # race condition exists, but it's fine since we are launching mason sequentially
if not gs_folder:
Expand Down
Loading