skypilot-nightly 1.0.0.dev20250916__py3-none-any.whl → 1.0.0.dev20250919__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of skypilot-nightly might be problematic. Click here for more details.
- sky/__init__.py +4 -2
- sky/adaptors/primeintellect.py +1 -0
- sky/adaptors/seeweb.py +68 -4
- sky/authentication.py +25 -0
- sky/backends/__init__.py +3 -2
- sky/backends/backend_utils.py +16 -12
- sky/backends/cloud_vm_ray_backend.py +57 -0
- sky/catalog/primeintellect_catalog.py +95 -0
- sky/clouds/__init__.py +2 -0
- sky/clouds/primeintellect.py +314 -0
- sky/core.py +77 -48
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/{y8s7LlyyfhMzpzCkxuD2r → VvaUqYDvHOcHZRnvMBmax}/_buildManifest.js +1 -1
- sky/dashboard/out/_next/static/chunks/1121-4ff1ec0dbc5792ab.js +1 -0
- sky/dashboard/out/_next/static/chunks/3015-88c7c8d69b0b6dba.js +1 -0
- sky/dashboard/out/_next/static/chunks/{6856-e0754534b3015377.js → 6856-9a2538f38c004652.js} +1 -1
- sky/dashboard/out/_next/static/chunks/8969-a39efbadcd9fde80.js +1 -0
- sky/dashboard/out/_next/static/chunks/9037-472ee1222cb1e158.js +6 -0
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1e9248ddbddcd122.js +16 -0
- sky/dashboard/out/_next/static/chunks/pages/clusters/{[cluster]-0b4b35dc1dfe046c.js → [cluster]-9525660179df3605.js} +1 -1
- sky/dashboard/out/_next/static/chunks/{webpack-05f82d90d6fd7f82.js → webpack-b2a3938c22b6647b.js} +1 -1
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/config.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/infra/[context].html +1 -1
- sky/dashboard/out/infra.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs/pools/[pool].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/volumes.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -1
- sky/dashboard/out/workspaces/[name].html +1 -1
- sky/dashboard/out/workspaces.html +1 -1
- sky/global_user_state.py +99 -62
- sky/jobs/server/server.py +14 -1
- sky/jobs/state.py +26 -1
- sky/metrics/utils.py +174 -8
- sky/provision/__init__.py +1 -0
- sky/provision/docker_utils.py +6 -2
- sky/provision/primeintellect/__init__.py +10 -0
- sky/provision/primeintellect/config.py +11 -0
- sky/provision/primeintellect/instance.py +454 -0
- sky/provision/primeintellect/utils.py +398 -0
- sky/resources.py +9 -1
- sky/schemas/generated/jobsv1_pb2.py +40 -40
- sky/schemas/generated/servev1_pb2.py +58 -0
- sky/schemas/generated/servev1_pb2.pyi +115 -0
- sky/schemas/generated/servev1_pb2_grpc.py +322 -0
- sky/serve/serve_rpc_utils.py +179 -0
- sky/serve/serve_utils.py +29 -12
- sky/serve/server/core.py +37 -19
- sky/serve/server/impl.py +221 -129
- sky/server/metrics.py +52 -158
- sky/server/requests/executor.py +12 -8
- sky/server/requests/payloads.py +6 -0
- sky/server/requests/requests.py +1 -1
- sky/server/requests/serializers/encoders.py +3 -2
- sky/server/server.py +5 -41
- sky/setup_files/dependencies.py +1 -0
- sky/skylet/constants.py +10 -5
- sky/skylet/job_lib.py +14 -15
- sky/skylet/services.py +98 -0
- sky/skylet/skylet.py +3 -1
- sky/templates/kubernetes-ray.yml.j2 +22 -12
- sky/templates/primeintellect-ray.yml.j2 +71 -0
- sky/utils/locks.py +41 -10
- {skypilot_nightly-1.0.0.dev20250916.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/METADATA +36 -35
- {skypilot_nightly-1.0.0.dev20250916.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/RECORD +76 -64
- sky/dashboard/out/_next/static/chunks/1121-408ed10b2f9fce17.js +0 -1
- sky/dashboard/out/_next/static/chunks/3015-2ea98b57e318bd6e.js +0 -1
- sky/dashboard/out/_next/static/chunks/8969-0487dfbf149d9e53.js +0 -1
- sky/dashboard/out/_next/static/chunks/9037-f9800e64eb05dd1c.js +0 -6
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1cbba24bd1bd35f8.js +0 -16
- /sky/dashboard/out/_next/static/{y8s7LlyyfhMzpzCkxuD2r → VvaUqYDvHOcHZRnvMBmax}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250916.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250916.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250916.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250916.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/top_level.txt +0 -0
|
@@ -823,7 +823,8 @@ available_node_types:
|
|
|
823
823
|
fi
|
|
824
824
|
$(prefix_cmd) cp -p "$FUSERMOUNT_PATH" "${FUSERMOUNT_PATH}-original"
|
|
825
825
|
$(prefix_cmd) ln -sf {{k8s_fusermount_shared_dir}}/fusermount-shim "$FUSERMOUNT_PATH"
|
|
826
|
-
|
|
826
|
+
# "|| true" because fusermount3 is not always available
|
|
827
|
+
FUSERMOUNT3_PATH=$(which fusermount3) || true
|
|
827
828
|
if [ -z "$FUSERMOUNT3_PATH" ]; then
|
|
828
829
|
FUSERMOUNT3_PATH="${FUSERMOUNT_PATH}3"
|
|
829
830
|
fi
|
|
@@ -872,11 +873,14 @@ available_node_types:
|
|
|
872
873
|
|
|
873
874
|
touch /tmp/apt_ssh_setup_complete
|
|
874
875
|
echo "=== SSH setup completed ==="
|
|
875
|
-
) > /tmp/${STEPS[0]}.log 2>&1
|
|
876
|
-
|
|
876
|
+
) > /tmp/${STEPS[0]}.log 2>&1
|
|
877
|
+
if [ "$?" -ne "0" ]; then
|
|
878
|
+
{
|
|
879
|
+
echo "Error: ${STEPS[0]} failed. Continuing anyway..." > /tmp/${STEPS[0]}.failed 2>&1
|
|
877
880
|
cat /tmp/${STEPS[0]}.log
|
|
878
881
|
exit 1
|
|
879
|
-
|
|
882
|
+
}
|
|
883
|
+
fi
|
|
880
884
|
) &
|
|
881
885
|
|
|
882
886
|
# STEP 2: Install conda, ray and skypilot (for dependencies); start
|
|
@@ -931,11 +935,14 @@ available_node_types:
|
|
|
931
935
|
set +e
|
|
932
936
|
{{ ray_worker_start_command }}
|
|
933
937
|
fi
|
|
934
|
-
) > /tmp/${STEPS[1]}.log 2>&1
|
|
935
|
-
|
|
938
|
+
) > /tmp/${STEPS[1]}.log 2>&1
|
|
939
|
+
if [ "$?" -ne "0" ]; then
|
|
940
|
+
{
|
|
941
|
+
echo "Error: ${STEPS[1]} failed. Continuing anyway..." > /tmp/${STEPS[1]}.failed 2>&1
|
|
936
942
|
cat /tmp/${STEPS[1]}.log
|
|
937
943
|
exit 1
|
|
938
|
-
|
|
944
|
+
}
|
|
945
|
+
fi
|
|
939
946
|
) &
|
|
940
947
|
|
|
941
948
|
|
|
@@ -953,11 +960,14 @@ available_node_types:
|
|
|
953
960
|
fi;
|
|
954
961
|
fi;
|
|
955
962
|
export -p > ~/container_env_var.sh && $(prefix_cmd) mv ~/container_env_var.sh /etc/profile.d/container_env_var.sh
|
|
956
|
-
) > /tmp/${STEPS[2]}.log 2>&1
|
|
957
|
-
|
|
963
|
+
) > /tmp/${STEPS[2]}.log 2>&1
|
|
964
|
+
if [ "$?" -ne "0" ]; then
|
|
965
|
+
{
|
|
966
|
+
echo "Error: ${STEPS[2]} failed. Continuing anyway..." > /tmp/${STEPS[2]}.failed 2>&1
|
|
958
967
|
cat /tmp/${STEPS[2]}.log
|
|
959
968
|
exit 1
|
|
960
|
-
|
|
969
|
+
}
|
|
970
|
+
fi
|
|
961
971
|
) &
|
|
962
972
|
|
|
963
973
|
function mylsof { p=$(for pid in /proc/{0..9}*; do i=$(basename "$pid"); for file in "$pid"/fd/*; do link=$(readlink -e "$file"); if [ "$link" = "$1" ]; then echo "$i"; fi; done; done); echo "$p"; };
|
|
@@ -1324,7 +1334,7 @@ setup_commands:
|
|
|
1324
1334
|
if [ -f /tmp/apt_ssh_setup_started ]; then
|
|
1325
1335
|
echo "=== Logs for asynchronous SSH setup ===";
|
|
1326
1336
|
[ -f /tmp/apt_ssh_setup_complete ] && cat /tmp/${STEPS[0]}.log ||
|
|
1327
|
-
{ tail -f -n +1 /tmp/${STEPS[0]}.log & TAIL_PID=$!; echo "Tail PID: $TAIL_PID"; until [ -f /tmp/apt_ssh_setup_complete ]; do sleep 0.5; done; kill $TAIL_PID || true; };
|
|
1337
|
+
{ tail -f -n +1 /tmp/${STEPS[0]}.log & TAIL_PID=$!; echo "Tail PID: $TAIL_PID"; until [ -f /tmp/apt_ssh_setup_complete ] || [ -f /tmp/${STEPS[0]}.failed ]; do sleep 0.5; done; kill $TAIL_PID || true; };
|
|
1328
1338
|
[ -f /tmp/${STEPS[0]}.failed ] && { echo "Error: ${STEPS[0]} failed. Exiting."; exit 1; } || true;
|
|
1329
1339
|
fi
|
|
1330
1340
|
|
|
@@ -1332,7 +1342,7 @@ setup_commands:
|
|
|
1332
1342
|
if [ -f /tmp/skypilot_is_nimbus ]; then
|
|
1333
1343
|
echo "=== Logs for asynchronous ray and skypilot installation ===";
|
|
1334
1344
|
[ -f /tmp/ray_skypilot_installation_complete ] && cat /tmp/${STEPS[1]}.log ||
|
|
1335
|
-
{ tail -f -n +1 /tmp/${STEPS[1]}.log & TAIL_PID=$!; echo "Tail PID: $TAIL_PID"; until [ -f /tmp/ray_skypilot_installation_complete ]; do sleep 0.5; done; kill $TAIL_PID || true; };
|
|
1345
|
+
{ tail -f -n +1 /tmp/${STEPS[1]}.log & TAIL_PID=$!; echo "Tail PID: $TAIL_PID"; until [ -f /tmp/ray_skypilot_installation_complete ] || [ -f /tmp/${STEPS[1]}.failed ]; do sleep 0.5; done; kill $TAIL_PID || true; };
|
|
1336
1346
|
[ -f /tmp/${STEPS[1]}.failed ] && { echo "Error: ${STEPS[1]} failed. Exiting."; exit 1; } || true;
|
|
1337
1347
|
fi
|
|
1338
1348
|
end_epoch=$(date +%s);
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
cluster_name: {{cluster_name_on_cloud}}
|
|
2
|
+
|
|
3
|
+
# The maximum number of workers nodes to launch in addition to the head node.
|
|
4
|
+
max_workers: {{num_nodes - 1}}
|
|
5
|
+
upscaling_speed: {{num_nodes - 1}}
|
|
6
|
+
idle_timeout_minutes: 60
|
|
7
|
+
|
|
8
|
+
provider:
|
|
9
|
+
type: external
|
|
10
|
+
module: sky.provision.primeintellect
|
|
11
|
+
region: "{{region}}"
|
|
12
|
+
zones: "{{zones}}"
|
|
13
|
+
|
|
14
|
+
auth:
|
|
15
|
+
ssh_user: skypilot:ssh_user
|
|
16
|
+
ssh_private_key: {{ssh_private_key}}
|
|
17
|
+
|
|
18
|
+
available_node_types:
|
|
19
|
+
ray_head_default:
|
|
20
|
+
resources: {}
|
|
21
|
+
node_config:
|
|
22
|
+
InstanceType: {{instance_type}}
|
|
23
|
+
DiskSize: {{disk_size}}
|
|
24
|
+
ImageId: {{image_id}}
|
|
25
|
+
PublicKey: |-
|
|
26
|
+
skypilot:ssh_public_key_content
|
|
27
|
+
|
|
28
|
+
head_node_type: ray_head_default
|
|
29
|
+
|
|
30
|
+
# Format: `REMOTE_PATH : LOCAL_PATH`
|
|
31
|
+
file_mounts: {
|
|
32
|
+
"{{sky_ray_yaml_remote_path}}": "{{sky_ray_yaml_local_path}}",
|
|
33
|
+
"{{sky_remote_path}}/{{sky_wheel_hash}}": "{{sky_local_path}}",
|
|
34
|
+
{%- for remote_path, local_path in credentials.items() %}
|
|
35
|
+
"{{remote_path}}": "{{local_path}}",
|
|
36
|
+
"~/.ssh/sky-cluster-key": "{{ssh_private_key}}",
|
|
37
|
+
{%- endfor %}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
rsync_exclude: []
|
|
41
|
+
|
|
42
|
+
initialization_commands: []
|
|
43
|
+
|
|
44
|
+
# List of shell commands to run to set up nodes.
|
|
45
|
+
# NOTE: these are very performance-sensitive. Each new item opens/closes an SSH
|
|
46
|
+
# connection, which is expensive. Try your best to co-locate commands into fewer
|
|
47
|
+
# items!
|
|
48
|
+
#
|
|
49
|
+
# Increment the following for catching performance bugs easier:
|
|
50
|
+
# current num items (num SSH connections): 1
|
|
51
|
+
setup_commands:
|
|
52
|
+
# Disable unattended-upgrades and handle apt-get locks
|
|
53
|
+
# Install patch utility for Ray
|
|
54
|
+
# Install conda and Ray
|
|
55
|
+
# Set system limits for Ray performance (nofile and TasksMax)
|
|
56
|
+
- {%- for initial_setup_command in initial_setup_commands %}
|
|
57
|
+
{{ initial_setup_command }}
|
|
58
|
+
{%- endfor %}
|
|
59
|
+
sudo systemctl stop unattended-upgrades || true;
|
|
60
|
+
sudo systemctl disable unattended-upgrades || true;
|
|
61
|
+
sudo sed -i 's/Unattended-Upgrade "1"/Unattended-Upgrade "0"/g' /etc/apt/apt.conf.d/20auto-upgrades || true;
|
|
62
|
+
sudo kill -9 `sudo lsof /var/lib/dpkg/lock-frontend | awk '{print $2}' | tail -n 1` || true;
|
|
63
|
+
sudo pkill -9 apt-get;
|
|
64
|
+
sudo pkill -9 dpkg;
|
|
65
|
+
sudo dpkg --configure -a;
|
|
66
|
+
which patch > /dev/null || sudo apt install -y patch;
|
|
67
|
+
{{ conda_installation_commands }}
|
|
68
|
+
{{ ray_skypilot_installation_commands }}
|
|
69
|
+
sudo bash -c 'rm -rf /etc/security/limits.d; echo "* soft nofile 1048576" >> /etc/security/limits.conf; echo "* hard nofile 1048576" >> /etc/security/limits.conf';
|
|
70
|
+
sudo grep -e '^DefaultTasksMax' /etc/systemd/system.conf || (sudo bash -c 'echo "DefaultTasksMax=infinity" >> /etc/systemd/system.conf'); sudo systemctl set-property user-$(id -u $(whoami)).slice TasksMax=infinity; sudo systemctl daemon-reload;
|
|
71
|
+
{{ ssh_max_sessions_config }}
|
sky/utils/locks.py
CHANGED
|
@@ -11,6 +11,7 @@ import time
|
|
|
11
11
|
from typing import Any, Optional
|
|
12
12
|
|
|
13
13
|
import filelock
|
|
14
|
+
import psycopg2
|
|
14
15
|
import sqlalchemy
|
|
15
16
|
|
|
16
17
|
from sky import global_user_state
|
|
@@ -197,6 +198,7 @@ class PostgresLock(DistributedLock):
|
|
|
197
198
|
if engine.dialect.name != db_utils.SQLAlchemyDialect.POSTGRESQL.value:
|
|
198
199
|
raise ValueError('PostgresLock requires PostgreSQL database. '
|
|
199
200
|
f'Current dialect: {engine.dialect.name}')
|
|
201
|
+
# Borrow a dedicated connection from the pool.
|
|
200
202
|
return engine.raw_connection()
|
|
201
203
|
|
|
202
204
|
def acquire(self, blocking: bool = True) -> AcquireReturnProxy:
|
|
@@ -233,9 +235,7 @@ class PostgresLock(DistributedLock):
|
|
|
233
235
|
time.sleep(self.poll_interval)
|
|
234
236
|
|
|
235
237
|
except Exception:
|
|
236
|
-
|
|
237
|
-
self._connection.close()
|
|
238
|
-
self._connection = None
|
|
238
|
+
self._close_connection()
|
|
239
239
|
raise
|
|
240
240
|
|
|
241
241
|
def release(self) -> None:
|
|
@@ -248,27 +248,58 @@ class PostgresLock(DistributedLock):
|
|
|
248
248
|
cursor.execute('SELECT pg_advisory_unlock(%s)', (self._lock_key,))
|
|
249
249
|
self._connection.commit()
|
|
250
250
|
self._acquired = False
|
|
251
|
+
except psycopg2.OperationalError as e:
|
|
252
|
+
# Lost connection to the database, likely the lock is force unlocked
|
|
253
|
+
# by other routines.
|
|
254
|
+
logger.debug(f'Failed to release postgres lock {self.lock_id}: {e}')
|
|
251
255
|
finally:
|
|
252
|
-
|
|
253
|
-
self._connection.close()
|
|
254
|
-
self._connection = None
|
|
256
|
+
self._close_connection()
|
|
255
257
|
|
|
256
258
|
def force_unlock(self) -> None:
|
|
257
259
|
"""Force unlock the postgres advisory lock."""
|
|
258
260
|
try:
|
|
259
|
-
|
|
261
|
+
# The lock is held by current routine, gracefully unlock it
|
|
262
|
+
if self._acquired:
|
|
263
|
+
self.release()
|
|
264
|
+
return
|
|
265
|
+
|
|
266
|
+
# The lock is held by another routine, force unlock it.
|
|
267
|
+
if self._connection is None:
|
|
260
268
|
self._connection = self._get_connection()
|
|
261
269
|
cursor = self._connection.cursor()
|
|
262
270
|
cursor.execute('SELECT pg_advisory_unlock(%s)', (self._lock_key,))
|
|
263
|
-
|
|
271
|
+
result = cursor.fetchone()[0]
|
|
272
|
+
if result:
|
|
273
|
+
# The lock is held by current routine and unlock suceed
|
|
274
|
+
self._connection.commit()
|
|
275
|
+
self._acquired = False
|
|
276
|
+
return
|
|
277
|
+
cursor.execute(
|
|
278
|
+
('SELECT pid FROM pg_locks WHERE locktype = \'advisory\' '
|
|
279
|
+
'AND ((classid::bigint << 32) | objid::bigint) = %s'),
|
|
280
|
+
(self._lock_key,))
|
|
281
|
+
row = cursor.fetchone()
|
|
282
|
+
if row:
|
|
283
|
+
# The lock is still held by another routine, false unlock it
|
|
284
|
+
# by killing the PG connection of that routine.
|
|
285
|
+
cursor.execute('SELECT pg_terminate_backend(%s)', (row[0],))
|
|
286
|
+
self._connection.commit()
|
|
287
|
+
return
|
|
264
288
|
except Exception as e:
|
|
265
289
|
raise RuntimeError(
|
|
266
290
|
f'Failed to force unlock postgres lock {self.lock_id}: {e}'
|
|
267
291
|
) from e
|
|
268
292
|
finally:
|
|
269
|
-
|
|
293
|
+
self._close_connection()
|
|
294
|
+
|
|
295
|
+
def _close_connection(self) -> None:
|
|
296
|
+
"""Close the postgres connection."""
|
|
297
|
+
if self._connection:
|
|
298
|
+
try:
|
|
270
299
|
self._connection.close()
|
|
271
|
-
|
|
300
|
+
except Exception as e: # pylint: disable=broad-except
|
|
301
|
+
logger.debug(f'Failed to close postgres connection: {e}')
|
|
302
|
+
self._connection = None
|
|
272
303
|
|
|
273
304
|
def is_locked(self) -> bool:
|
|
274
305
|
"""Check if the postgres advisory lock is acquired."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: skypilot-nightly
|
|
3
|
-
Version: 1.0.0.
|
|
3
|
+
Version: 1.0.0.dev20250919
|
|
4
4
|
Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
|
|
5
5
|
Author: SkyPilot Team
|
|
6
6
|
License: Apache 2.0
|
|
@@ -121,6 +121,7 @@ Provides-Extra: fluidstack
|
|
|
121
121
|
Provides-Extra: cudo
|
|
122
122
|
Requires-Dist: cudo-compute>=0.1.10; extra == "cudo"
|
|
123
123
|
Provides-Extra: paperspace
|
|
124
|
+
Provides-Extra: primeintellect
|
|
124
125
|
Provides-Extra: do
|
|
125
126
|
Requires-Dist: pydo>=0.3.0; extra == "do"
|
|
126
127
|
Requires-Dist: azure-core>=1.24.0; extra == "do"
|
|
@@ -151,49 +152,49 @@ Requires-Dist: grpcio>=1.63.0; extra == "server"
|
|
|
151
152
|
Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
|
|
152
153
|
Requires-Dist: aiosqlite; extra == "server"
|
|
153
154
|
Provides-Extra: all
|
|
154
|
-
Requires-Dist:
|
|
155
|
-
Requires-Dist: colorama<0.4.5; extra == "all"
|
|
156
|
-
Requires-Dist: msgraph-sdk; extra == "all"
|
|
157
|
-
Requires-Dist: pyjwt; extra == "all"
|
|
155
|
+
Requires-Dist: docker; extra == "all"
|
|
158
156
|
Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
|
|
159
|
-
Requires-Dist:
|
|
160
|
-
Requires-Dist:
|
|
161
|
-
Requires-Dist: azure-common; extra == "all"
|
|
162
|
-
Requires-Dist: grpcio>=1.63.0; extra == "all"
|
|
163
|
-
Requires-Dist: ibm-vpc; extra == "all"
|
|
164
|
-
Requires-Dist: cudo-compute>=0.1.10; extra == "all"
|
|
165
|
-
Requires-Dist: azure-core>=1.24.0; extra == "all"
|
|
166
|
-
Requires-Dist: ibm-cos-sdk; extra == "all"
|
|
167
|
-
Requires-Dist: azure-identity>=1.19.0; extra == "all"
|
|
157
|
+
Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
|
|
158
|
+
Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
|
|
168
159
|
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
|
|
169
160
|
Requires-Dist: nebius>=0.2.47; extra == "all"
|
|
161
|
+
Requires-Dist: azure-core>=1.24.0; extra == "all"
|
|
162
|
+
Requires-Dist: ibm-cos-sdk; extra == "all"
|
|
163
|
+
Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
|
|
164
|
+
Requires-Dist: boto3>=1.26.1; extra == "all"
|
|
165
|
+
Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
|
|
166
|
+
Requires-Dist: azure-core>=1.31.0; extra == "all"
|
|
167
|
+
Requires-Dist: passlib; extra == "all"
|
|
170
168
|
Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
|
|
171
|
-
Requires-Dist: msrestazure; extra == "all"
|
|
172
169
|
Requires-Dist: oci; extra == "all"
|
|
173
|
-
Requires-Dist:
|
|
174
|
-
Requires-Dist: ray[default]>=2.6.1; extra == "all"
|
|
170
|
+
Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
|
|
175
171
|
Requires-Dist: google-cloud-storage; extra == "all"
|
|
176
|
-
Requires-Dist:
|
|
172
|
+
Requires-Dist: sqlalchemy_adapter; extra == "all"
|
|
173
|
+
Requires-Dist: runpod>=1.6.1; extra == "all"
|
|
174
|
+
Requires-Dist: azure-common; extra == "all"
|
|
177
175
|
Requires-Dist: ibm-cloud-sdk-core; extra == "all"
|
|
178
176
|
Requires-Dist: awscli>=1.27.10; extra == "all"
|
|
179
|
-
Requires-Dist:
|
|
180
|
-
Requires-Dist:
|
|
181
|
-
Requires-Dist:
|
|
182
|
-
Requires-Dist: sqlalchemy_adapter; extra == "all"
|
|
183
|
-
Requires-Dist: python-dateutil; extra == "all"
|
|
184
|
-
Requires-Dist: azure-cli>=2.65.0; extra == "all"
|
|
185
|
-
Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
|
|
186
|
-
Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
|
|
187
|
-
Requires-Dist: docker; extra == "all"
|
|
188
|
-
Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
|
|
189
|
-
Requires-Dist: aiohttp; extra == "all"
|
|
190
|
-
Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
|
|
177
|
+
Requires-Dist: ray[default]>=2.6.1; extra == "all"
|
|
178
|
+
Requires-Dist: msgraph-sdk; extra == "all"
|
|
179
|
+
Requires-Dist: ecsapi>=0.2.0; extra == "all"
|
|
191
180
|
Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
|
|
192
|
-
Requires-Dist: pydo>=0.3.0; extra == "all"
|
|
193
|
-
Requires-Dist: runpod>=1.6.1; extra == "all"
|
|
194
181
|
Requires-Dist: botocore>=1.29.10; extra == "all"
|
|
182
|
+
Requires-Dist: ibm-vpc; extra == "all"
|
|
183
|
+
Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
|
|
184
|
+
Requires-Dist: cudo-compute>=0.1.10; extra == "all"
|
|
185
|
+
Requires-Dist: colorama<0.4.5; extra == "all"
|
|
186
|
+
Requires-Dist: azure-cli>=2.65.0; extra == "all"
|
|
187
|
+
Requires-Dist: python-dateutil; extra == "all"
|
|
188
|
+
Requires-Dist: aiohttp; extra == "all"
|
|
189
|
+
Requires-Dist: aiosqlite; extra == "all"
|
|
195
190
|
Requires-Dist: anyio; extra == "all"
|
|
191
|
+
Requires-Dist: pyjwt; extra == "all"
|
|
192
|
+
Requires-Dist: websockets; extra == "all"
|
|
193
|
+
Requires-Dist: azure-identity>=1.19.0; extra == "all"
|
|
194
|
+
Requires-Dist: grpcio>=1.63.0; extra == "all"
|
|
195
|
+
Requires-Dist: msrestazure; extra == "all"
|
|
196
196
|
Requires-Dist: casbin; extra == "all"
|
|
197
|
+
Requires-Dist: pydo>=0.3.0; extra == "all"
|
|
197
198
|
Dynamic: author
|
|
198
199
|
Dynamic: classifier
|
|
199
200
|
Dynamic: description
|
|
@@ -291,12 +292,12 @@ SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code change
|
|
|
291
292
|
Install with pip:
|
|
292
293
|
```bash
|
|
293
294
|
# Choose your clouds:
|
|
294
|
-
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp]"
|
|
295
|
+
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,seeweb]"
|
|
295
296
|
```
|
|
296
297
|
To get the latest features and fixes, use the nightly build or [install from source](https://docs.skypilot.co/en/latest/getting-started/installation.html):
|
|
297
298
|
```bash
|
|
298
299
|
# Choose your clouds:
|
|
299
|
-
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp]"
|
|
300
|
+
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,seeweb]"
|
|
300
301
|
```
|
|
301
302
|
|
|
302
303
|
<p align="center">
|
|
@@ -305,7 +306,7 @@ pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,
|
|
|
305
306
|
|
|
306
307
|
Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Nebius, Lambda Cloud, RunPod, Fluidstack,
|
|
307
308
|
Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai,
|
|
308
|
-
VMware vSphere.
|
|
309
|
+
VMware vSphere, Seeweb.
|
|
309
310
|
<p align="center">
|
|
310
311
|
<img alt="SkyPilot" src="https://raw.githubusercontent.com/skypilot-org/skypilot/master/docs/source/images/cloud-logos-light.png" width=85%>
|
|
311
312
|
</p>
|