forked from containers/ai-lab-recipes
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from fabiendupont/amd-bootc-use-out-of-tree-dri…
…vers Remove source stage for amd-bootc
- Loading branch information
Showing
6 changed files
with
251 additions
and
69 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
#!/bin/bash | ||
|
||
echo-err() { echo "$@" >&2; } | ||
|
||
verify_range() { | ||
subuid_range="$1" | ||
username="$2" | ||
NUMBER_OF_MATCHING_SUBUID_RANGES=$(if [[ -z "$subuid_range" ]]; then echo 0; else wc -l <<<"$subuid_range"; fi) | ||
|
||
if [[ "$NUMBER_OF_MATCHING_SUBUID_RANGES" == 0 ]]; then | ||
echo-err "No /etc/subuid range found for user $username ($UID)" | ||
exit 1 | ||
elif [[ "$NUMBER_OF_MATCHING_SUBUID_RANGES" != 1 ]]; then | ||
# TODO: Handle multiple subuid ranges. But for now, hard fail | ||
echo-err "Multiple /etc/subuid ranges found for user $username ($UID), this is currently unsupported:" | ||
echo-err "$subuid_range" | ||
exit 1 | ||
fi | ||
} | ||
|
||
check_insights() { | ||
if [[ -f /etc/insights-client/machine-id ]]; then | ||
return | ||
fi | ||
if [[ -f /etc/ilab/insights-opt-out ]]; then | ||
return | ||
fi | ||
local ID | ||
eval "$(grep ^ID= /etc/os-release)" | ||
if [[ "$ID" != "rhel" ]]; then | ||
return | ||
fi | ||
cat << EOF | ||
This host is not connected to Red Hat Insights. | ||
To connect this host to Red Hat Insights run the following command: | ||
sudo rhc connect --organization <org_id> --activation-key <your_activation_key> | ||
To generate an Activation Key: | ||
https://console.redhat.com/insights/connector/activation-keys (this page will also display your Organization ID). | ||
For more information on Red Hat Insights, please visit: | ||
https://docs.redhat.com/en/documentation/subscription_central/1-latest/html/getting_started_with_activation_keys_on_the_hybrid_cloud_console/assembly-creating-managing-activation-keys | ||
EOF | ||
exit 1 | ||
} | ||
|
||
check_insights | ||
|
||
# Template values replaced by container build | ||
IMAGE_NAME="__REPLACE_IMAGE_NAME__" | ||
|
||
ENTRYPOINT="ilab" | ||
PARAMS=("$@") | ||
|
||
if [[ -n "$ILAB_HOME" ]]; then | ||
HOME="$ILAB_HOME" | ||
fi | ||
|
||
for dir in "$HOME/.cache" "$HOME/.config" "$HOME/.local"; do | ||
mkdir -p "$dir" | ||
done | ||
|
||
if [[ "$1" = "shell" ]]; then | ||
ENTRYPOINT=bash | ||
PARAMS=() | ||
fi | ||
|
||
# If you need to mount additional volumes into the container, you can specify them | ||
# using the ILAB_ADDITIONAL_MOUNTS environment variable. | ||
# | ||
# Example ILAB_ADDITIONAL_MOUNTS usage: | ||
# | ||
# ILAB_ADDITIONAL_MOUNTS="/host/path:/container/path /host/path2:/container/path2" | ||
# | ||
# If your path contains spaces, you can use quotes: | ||
# | ||
# ILAB_ADDITIONAL_MOUNTS="/host/path:/container/path '/host/path with spaces':/container/path" | ||
ADDITIONAL_MOUNTS=() | ||
if [ -n "${ILAB_ADDITIONAL_MOUNTS}" ]; then | ||
# (eval is used here to allow the user to specify mounts that might have spaces in them) | ||
eval "ADDITIONAL_MOUNTS=(${ILAB_ADDITIONAL_MOUNTS})" | ||
fi | ||
ADDITIONAL_MOUNT_OPTIONS=() | ||
for PODMAN_MOUNT in "${ADDITIONAL_MOUNTS[@]}"; do | ||
ADDITIONAL_MOUNT_OPTIONS+=("-v" "$PODMAN_MOUNT") | ||
done | ||
|
||
# Add pull-secret to additional mounts | ||
# In case of normal user, /run/user is used (XDG_RUNTIME_DIR), if root, it will be /run/containers | ||
for authfile in \ | ||
"${XDG_RUNTIME_DIR}/containers/auth.json" \ | ||
/run/user/${UID}/containers/auth.json \ | ||
/run/containers/${UID}/auth.json | ||
do | ||
if [[ -f "$authfile" ]]; then | ||
ADDITIONAL_MOUNT_OPTIONS+=("-v" "$authfile:/run/containers/0/auth.json") | ||
break | ||
fi | ||
done | ||
|
||
# We run the container as sudo in order to be able to access the root container | ||
# storage, which has the ilab image pre-pulled. But for security reasons we map | ||
# root UID 0 inside the container to the current user's UID (and all the other | ||
# subuids to the user's /etc/subuid range) so that we're effectively running | ||
# the container as the current user. | ||
# | ||
# In the future, we will run podman as the current user, once we figure a | ||
# reasonable way for the current user to access the root's user container | ||
# storage. | ||
if [[ "$UID" == 0 ]]; then | ||
# If we're already running as root, we don't need to map any UIDs | ||
IMPERSONATE_CURRENT_USER_PODMAN_FLAGS=() | ||
else | ||
CURRENT_USER_NAME=$(id --user --name) | ||
CURRENT_USER_SUBUID_RANGE=$(awk \ | ||
--field-separator ':' \ | ||
--assign current_user="$CURRENT_USER_NAME" \ | ||
--assign current_uid="$UID" \ | ||
'$1 == current_user || $1 == current_uid {print $2 ":" $3}' \ | ||
/etc/subuid) | ||
|
||
verify_range "$CURRENT_USER_SUBUID_RANGE" "$CURRENT_USER_NAME" | ||
|
||
IMPERSONATE_CURRENT_USER_PODMAN_FLAGS=("--uidmap" "0:$UID" "--uidmap" "1:$CURRENT_USER_SUBUID_RANGE") | ||
fi | ||
|
||
PRESERVE_ENV="VLLM_LOGGING_LEVEL,NCCL_DEBUG,HOME,HF_TOKEN" | ||
PODMAN_COMMAND=("sudo" "--preserve-env=$PRESERVE_ENV" "podman" "run" "--rm" "-it" | ||
"${IMPERSONATE_CURRENT_USER_PODMAN_FLAGS[@]}" | ||
"--device" "/dev/kfd" "--device" "/dev/dri" | ||
"--security-opt" "label=disable" "--net" "host" | ||
"--shm-size" "10G" | ||
"--pids-limit" "-1" | ||
"-v" "$HOME:$HOME" | ||
"${ADDITIONAL_MOUNT_OPTIONS[@]}" | ||
"--env" "VLLM_LOGGING_LEVEL" | ||
"--env" "HOME" | ||
"--env" "NCCL_DEBUG" | ||
"--entrypoint" "$ENTRYPOINT" | ||
"--env" "HF_TOKEN" | ||
"${IMAGE_NAME}") | ||
|
||
exec "${PODMAN_COMMAND[@]}" "${PARAMS[@]}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
-----BEGIN PGP PUBLIC KEY BLOCK----- | ||
Version: GnuPG v1 | ||
|
||
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 | ||
ta5TfPumStSQ1UjP8pPny4l+JQ== | ||
=UOE+ | ||
-----END PGP PUBLIC KEY BLOCK----- |
2 changes: 1 addition & 1 deletion
2
training/amd-bootc/amdgpu.repo-6.1.2 → training/amd-bootc/repos.d/amdgpu.repo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6 changes: 3 additions & 3 deletions
6
training/amd-bootc/rocm.repo → training/amd-bootc/repos.d/rocm.repo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters