Skip to content

Commit

Permalink
remove uv from runtime setup due to azure installation issue (#4401)
Browse files Browse the repository at this point in the history
  • Loading branch information
cg505 authored Nov 23, 2024
1 parent 204d979 commit 0b20d56
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 18 deletions.
28 changes: 11 additions & 17 deletions sky/skylet/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
'which python3')
# Python executable, e.g., /opt/conda/bin/python3
SKY_PYTHON_CMD = f'$({SKY_GET_PYTHON_PATH_CMD})'
# Prefer SKY_UV_PIP_CMD, which is faster. TODO(cooper): remove all usages.
SKY_PIP_CMD = f'{SKY_PYTHON_CMD} -m pip'
# Ray executable, e.g., /opt/conda/bin/ray
# We need to add SKY_PYTHON_CMD before ray executable because:
Expand All @@ -51,10 +50,6 @@
SKY_REMOTE_PYTHON_ENV_NAME = 'skypilot-runtime'
SKY_REMOTE_PYTHON_ENV = f'~/{SKY_REMOTE_PYTHON_ENV_NAME}'
ACTIVATE_SKY_REMOTE_PYTHON_ENV = f'source {SKY_REMOTE_PYTHON_ENV}/bin/activate'
# uv is used for venv and pip, much faster than python implementations.
SKY_UV_INSTALL_DIR = '"$HOME/.local/bin"'
SKY_UV_CMD = f'{SKY_UV_INSTALL_DIR}/uv'
SKY_UV_PIP_CMD = f'VIRTUAL_ENV={SKY_REMOTE_PYTHON_ENV} {SKY_UV_CMD} pip'
# Deleting the SKY_REMOTE_PYTHON_ENV_NAME from the PATH to deactivate the
# environment. `deactivate` command does not work when conda is used.
DEACTIVATE_SKY_REMOTE_PYTHON_ENV = (
Expand Down Expand Up @@ -153,29 +148,28 @@
'echo "Creating conda env with Python 3.10" && '
f'conda create -y -n {SKY_REMOTE_PYTHON_ENV_NAME} python=3.10 && '
f'conda activate {SKY_REMOTE_PYTHON_ENV_NAME};'
# Install uv for venv management and pip installation.
'which uv >/dev/null 2>&1 || '
'curl -LsSf https://astral.sh/uv/install.sh '
f'| UV_INSTALL_DIR={SKY_UV_INSTALL_DIR} sh;'
# Create a separate conda environment for SkyPilot dependencies.
f'[ -d {SKY_REMOTE_PYTHON_ENV} ] || '
# Do NOT use --system-site-packages here, because if users upgrade any
# packages in the base env, they interfere with skypilot dependencies.
# Reference: https://github.com/skypilot-org/skypilot/issues/4097
f'{SKY_UV_CMD} venv {SKY_REMOTE_PYTHON_ENV};'
f'{SKY_PYTHON_CMD} -m venv {SKY_REMOTE_PYTHON_ENV};'
f'echo "$(echo {SKY_REMOTE_PYTHON_ENV})/bin/python" > {SKY_PYTHON_PATH_FILE};'
)

_sky_version = str(version.parse(sky.__version__))
RAY_STATUS = f'RAY_ADDRESS=127.0.0.1:{SKY_REMOTE_RAY_PORT} {SKY_RAY_CMD} status'
RAY_INSTALLATION_COMMANDS = (
'mkdir -p ~/sky_workdir && mkdir -p ~/.sky/sky_app;'
# Disable the pip version check to avoid the warning message, which makes
# the output hard to read.
'export PIP_DISABLE_PIP_VERSION_CHECK=1;'
# Print the PATH in provision.log to help debug PATH issues.
'echo PATH=$PATH; '
# Install setuptools<=69.5.1 to avoid the issue with the latest setuptools
# causing the error:
# ImportError: cannot import name 'packaging' from 'pkg_resources'"
f'{SKY_UV_PIP_CMD} install "setuptools<70"; '
f'{SKY_PIP_CMD} install "setuptools<70"; '
# Backward compatibility for ray upgrade (#3248): do not upgrade ray if the
# ray cluster is already running, to avoid the ray cluster being restarted.
#
Expand All @@ -189,10 +183,10 @@
# latest ray port 6380, but those existing cluster launched before #1790
# that has ray cluster on the default port 6379 will be upgraded and
# restarted.
f'{SKY_UV_PIP_CMD} list | grep "ray " | '
f'{SKY_PIP_CMD} list | grep "ray " | '
f'grep {SKY_REMOTE_RAY_VERSION} 2>&1 > /dev/null '
f'|| {RAY_STATUS} || '
f'{SKY_UV_PIP_CMD} install -U ray[default]=={SKY_REMOTE_RAY_VERSION}; ' # pylint: disable=line-too-long
f'{SKY_PIP_CMD} install --exists-action w -U ray[default]=={SKY_REMOTE_RAY_VERSION}; ' # pylint: disable=line-too-long
# In some envs, e.g. pip does not have permission to write under /opt/conda
# ray package will be installed under ~/.local/bin. If the user's PATH does
# not include ~/.local/bin (the pip install will have the output: `WARNING:
Expand All @@ -208,10 +202,10 @@
f'which ray > {SKY_RAY_PATH_FILE} || exit 1; }}; ')

SKYPILOT_WHEEL_INSTALLATION_COMMANDS = (
f'{{ {SKY_UV_PIP_CMD} list | grep "skypilot " && '
f'{{ {SKY_PIP_CMD} list | grep "skypilot " && '
'[ "$(cat ~/.sky/wheels/current_sky_wheel_hash)" == "{sky_wheel_hash}" ]; } || ' # pylint: disable=line-too-long
f'{{ {SKY_UV_PIP_CMD} uninstall skypilot; '
f'{SKY_UV_PIP_CMD} install "$(echo ~/.sky/wheels/{{sky_wheel_hash}}/'
f'{{ {SKY_PIP_CMD} uninstall skypilot -y; '
f'{SKY_PIP_CMD} install "$(echo ~/.sky/wheels/{{sky_wheel_hash}}/'
f'skypilot-{_sky_version}*.whl)[{{cloud}}, remote]" && '
'echo "{sky_wheel_hash}" > ~/.sky/wheels/current_sky_wheel_hash || '
'exit 1; }; ')
Expand All @@ -226,7 +220,7 @@
# The ray installation above can be skipped due to the existing ray cluster
# for backward compatibility. In this case, we should not patch the ray
# files.
f'{SKY_UV_PIP_CMD} list | grep "ray " | '
f'{SKY_PIP_CMD} list | grep "ray " | '
f'grep {SKY_REMOTE_RAY_VERSION} 2>&1 > /dev/null && '
f'{{ {SKY_PYTHON_CMD} -c '
'"from sky.skylet.ray_patches import patch; patch()" || exit 1; }; ')
Expand Down
2 changes: 1 addition & 1 deletion sky/templates/kubernetes-ray.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ available_node_types:
done
{{ conda_installation_commands }}
{{ ray_installation_commands }}
VIRTUAL_ENV=~/skypilot-runtime ~/.local/bin/uv pip install skypilot[kubernetes,remote]
~/skypilot-runtime/bin/python -m pip install skypilot[kubernetes,remote]
touch /tmp/ray_skypilot_installation_complete
echo "=== Ray and skypilot installation completed ==="

Expand Down

0 comments on commit 0b20d56

Please sign in to comment.