Skip to content

Commit 3e4869b

Browse files
authored
Remove SkyPilot backend references (#541)
1 parent cfc7048 commit 3e4869b

41 files changed

Lines changed: 5201 additions & 7242 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CONTRIBUTING.md

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -67,31 +67,19 @@ To create a new release:
6767
- Publish the curated release notes
6868
- Build and publish the package to PyPI
6969

70-
Then follow the SkyPilot or Local Training instructions below.
70+
Then follow the GPU training instructions below.
7171

72-
### SkyPilot
72+
### GPU Training (Local or Cloud VM)
7373

7474
Copy the `.env.example` file to `.env` and set the environment variables:
7575

7676
```bash
7777
cp .env.example .env
7878
```
7979

80-
Ensure you have a valid SkyPilot cloud available:
80+
Make sure you're on a machine with at least one H100 or A100-80GB GPU. Machines equipped with lower-end GPUs may work, but training will be slower.
8181

82-
```bash
83-
uv run sky check
84-
```
85-
86-
Launch a cluster:
87-
88-
```bash
89-
./scripts/launch-cluster.sh # you can pass any sky launch arguments here
90-
```
91-
92-
Make sure you are on a machine with at least one H100 or A100-80GB GPU. Machines equipped with lower-end GPUs may work, but training will be slower.
93-
94-
You can now SSH into the `art` cluster, using either VSCode or the command line.
82+
If you're using a cloud VM, you can SSH into the machine using either VSCode or the command line.
9583

9684
### Connecting via Command Line
9785

@@ -145,8 +133,4 @@ If you run into any issues, the training output is set to maximum verbosity. Cop
145133

146134
### Cleaning Up
147135

148-
When you're done, you can tear down the cluster with:
149-
150-
```bash
151-
uv run sky down art
152-
```
136+
When you're done, shut down your GPU instance (if using a cloud VM) or stop the local training process.

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ ART stands on the shoulders of giants. While we owe many of the ideas and early
157157
- [vLLM](https://github.com/vllm-project/vllm)
158158
- [trl](https://github.com/huggingface/trl)
159159
- [torchtune](https://github.com/pytorch/torchtune)
160-
- [SkyPilot](https://github.com/skypilot-org/skypilot)
161160

162161
Finally, thank you to our partners who've helped us test ART in the wild! We're excited to see what you all build with it.
163162

dev/test_skypilot/launch.py

Lines changed: 0 additions & 24 deletions
This file was deleted.

dev/test_skypilot/launch_tail.py

Lines changed: 0 additions & 27 deletions
This file was deleted.

dev/test_skypilot/register_model.py

Lines changed: 0 additions & 49 deletions
This file was deleted.

docs/features/checkpoint-deletion.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ To delete all but the most recent and best-performing checkpoints of a model, ca
1111

1212
```python
1313
import art
14-
# also works with LocalBackend and SkyPilotBackend
14+
# also works with LocalBackend
1515
from art.serverless.backend import ServerlessBackend
1616

1717
model = art.TrainableModel(

docs/fundamentals/art-backend.mdx

Lines changed: 5 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,6 @@ While the backend's training and inference settings are highly configurable, the
2020
arrow={true}
2121
></Card>
2222
</div>
23-
<div className="card-wrapper">
24-
<Card
25-
title="SkyPilotBackend"
26-
icon="cloud"
27-
href="/fundamentals/art-backend#skypilotbackend"
28-
horizontal={true}
29-
arrow={true}
30-
></Card>
31-
</div>
3223
<div className="card-wrapper">
3324
<Card
3425
title="LocalBackend"
@@ -40,17 +31,14 @@ While the backend's training and inference settings are highly configurable, the
4031
</div>
4132
</div>
4233

43-
## Managed, remote, or local training
34+
## Managed or local training
4435

45-
ART provides three backend classes:
36+
ART provides two backend classes:
4637

4738
* `ServerlessBackend` - train remotely on autoscaling GPUs
48-
* `SkyPilotBackend` - train remotely on self-managed infra
4939
* `LocalBackend` - run your agent and training code on the same machine
5040

51-
If your agent is already set up on a machine equipped with an advanced GPU and you want to run training on the same machine, use `LocalBackend`. If your agent is running on a machine without an advanced GPU (this includes most personal computers and production servers), use `SkyPilotBackend` or `ServerlessBackend` instead. `ServerlessBackend` optimizes speed and cost by autoscaling across managed clusters. `SkyPilotBackend` lets you use your own infra.
52-
53-
All three backend types implement the `art.Backend` class and the client interacts with all three in the exact same way. Under the hood, `SkyPilotBackend` configures a remote machine equipped with a GPU to run `LocalBackend`, and forwards requests from the client to the remote instance. `ServerlessBackend` runs within W&B Training clusters and autoscales GPUs to meet training and inference demand.
41+
If your agent is already set up on a machine equipped with an advanced GPU and you want to run training on the same machine, use `LocalBackend`. If your agent is running on a machine without an advanced GPU (this includes most personal computers and production servers), use `ServerlessBackend` instead. `ServerlessBackend` optimizes speed and cost by autoscaling across managed clusters.
5442

5543
### ServerlessBackend
5644

@@ -67,59 +55,6 @@ backend = ServerlessBackend(
6755

6856
As your training job progresses, `ServerlessBackend` automatically saves your LoRA checkpoints as W&B Artifacts and deploys them for production inference on W&B Inference.
6957

70-
### SkyPilotBackend
71-
72-
To use SkyPilotBackend, you'll need to install the optional dependency:
73-
74-
```bash
75-
pip install openpipe-art[skypilot]
76-
```
77-
78-
When a `SkyPilotBackend` instance is initialized, it does a few things:
79-
80-
- Provisions a remote machine with an advanced GPU (by default on RunPod)
81-
- Installs `openpipe-art` and its dependencies
82-
- Initializes a `LocalBackend` instance with vLLM and a training server (unsloth or torchtune)
83-
- Registers the `LocalBackend` instance to forward requests to it over http
84-
85-
To initialize a `SkyPilotBackend` instance, follow the code sample below:
86-
87-
```python
88-
from art.skypilot import SkyPilotBackend
89-
90-
backend = await SkyPilotBackend.initialize_cluster(
91-
# name of the cluster in SkyPilot's registry
92-
cluster_name="my-cluster",
93-
# version of openpipe-art that should be installed on the remote cluster
94-
# default to version installed on the client
95-
art_version="0.3.12",
96-
# path to environment variables (e.g. WANDB_API_KEY) to set on the remote cluster
97-
env_path=".env",
98-
# the GPU the cluster is equipped with
99-
gpu="H100"
100-
# alternatively, more complicated requirements can be specified in
101-
# the `resources` argument
102-
)
103-
```
104-
105-
When a training job is finished, you can shut down a cluster either through code or the CLI.
106-
107-
**Code:**
108-
109-
```python
110-
backend = await SkyPilotBackend.initialize_cluster(...)
111-
112-
# ...training code...
113-
114-
backend.down()
115-
```
116-
117-
**CLI:**
118-
119-
```bash
120-
uv run sky down my-cluster
121-
```
122-
12358
### LocalBackend
12459

12560
The `LocalBackend` class runs a vLLM server and either an Unsloth or torchtune instance on whatever machine your agent itself is executing. This is a good fit if you're already running your agent on a machine with a GPU.
@@ -148,12 +83,6 @@ BACKEND_TYPE = "serverless"
14883
if BACKEND_TYPE == "serverless":
14984
from art.serverless.backend import ServerlessBackend
15085
backend = await ServerlessBackend()
151-
else if BACKEND_TYPE="remote":
152-
from art.skypilot import SkyPilotBackend
153-
backend = await SkyPilotBackend.initialize_cluster(
154-
cluster_name="my-cluster",
155-
gpu="H100"
156-
)
15786
else:
15887
from art.local import LocalBackend
15988
backend = LocalBackend()
@@ -182,12 +111,12 @@ To see `LocalBackend` and `ServerlessBackend` in action, try the examples below.
182111
<div className="card-wrapper">
183112
<Card
184113
title="Summarizer"
185-
icon="cloud"
114+
icon="laptop-code"
186115
href="/tutorials/summarizer"
187116
horizontal={true}
188117
arrow={true}
189118
>
190-
Use SkyPilotBackend to train a SOTA summarizing agent.
119+
Use LocalBackend to train a SOTA summarizing agent.
191120
</Card>
192121
</div>
193122
</div>

docs/fundamentals/art-client.mdx

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,6 @@ If you're curious about how ART allows you to run training and inference either
1818
>
1919
Run training and inference on autoscaling GPUs.
2020
</Card>
21-
<Card
22-
title="SkyPilotBackend"
23-
icon="cloud"
24-
href="/fundamentals/art-backend#skypilotbackend"
25-
horizontal={true}
26-
arrow={true}
27-
>
28-
Run training and inference on a separate ephemeral machine.
29-
</Card>
3021
<Card
3122
title="LocalBackend"
3223
icon="laptop-code"
@@ -63,11 +54,6 @@ Once you've initialized your [backend](/fundamentals/art-backend), you can regis
6354
# managed training
6455
backend = ServerlessBackend()
6556

66-
# remote training
67-
backend = SkyPilotBackend.initialize_cluster(
68-
cluster_name="art", gpu="H100"
69-
)
70-
7157
# local training
7258
backend = LocalBackend()
7359

docs/getting-started/installation-setup.mdx

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -65,36 +65,6 @@ await model.register(backend)
6565
... the rest of your code ...
6666
```
6767

68-
### Running the server on remote dedicated GPUs
69-
70-
The ART client can also be run locally and connected to a remote server, which ART will automatically provision for you. To use SkyPilot, you'll need to install the optional dependency:
71-
72-
```bash
73-
pip install openpipe-art[skypilot]
74-
```
75-
76-
Then you can use SkyPilotBackend in your code:
77-
78-
```python
79-
from art import TrainableModel, gather_trajectory_groups
80-
from art.skypilot.backend import SkyPilotBackend
81-
82-
backend = await SkyPilotBackend.initialize_cluster(
83-
cluster_name="my-cluster",
84-
gpu="H100"
85-
)
86-
87-
model = TrainableModel(
88-
name="agent-001",
89-
project="my-agentic-task",
90-
base_model="OpenPipe/Qwen3-14B-Instruct",
91-
)
92-
93-
await model.register(backend)
94-
95-
... the rest of your code ...
96-
```
97-
9868
To learn more about the ART client and server, see the docs below.
9969

10070
<div className="cards-container">

docs/integrations/langgraph-integration.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ To use ART with LangGraph, install ART with the required extras:
1515
uv pip install -U openpipe-art[backend,langgraph]>=0.4.9
1616
```
1717

18-
The `langgraph` extra includes the LangGraph integration dependencies, while `backend` provides the training backend components. If running using the [SkyPilotBackend](/fundamentals/art-backend#skypilotbackend), substitute `skypilot` for `backend` in the extras array.
18+
The `langgraph` extra includes the LangGraph integration dependencies, while `backend` provides the training backend components.
1919

2020
## Why Use ART with LangGraph?
2121

@@ -264,7 +264,7 @@ from art.utils import iterate_dataset
264264

265265
# Initialize model and backend
266266
model = art.Model(name="Qwen/Qwen2.5-7B-Instruct")
267-
backend = art.backends.SkyPilotBackend()
267+
backend = art.LocalBackend()
268268

269269
# Data models
270270
class EmailResult(BaseModel):

0 commit comments

Comments
 (0)