@aws/ml-container-creator 0.4.0 → 0.5.0
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.
- package/bin/cli.js +5 -2
- package/infra/ci-harness/buildspec.yml +60 -0
- package/package.json +1 -1
- package/servers/README.md +41 -1
- package/servers/instance-sizer/index.js +6 -0
- package/src/app.js +33 -2
- package/src/lib/config-manager.js +40 -1
- package/src/lib/deployment-entry-schema.js +16 -0
- package/src/lib/prompt-runner.js +174 -3
- package/src/lib/prompts.js +222 -2
- package/src/lib/registry-command-handler.js +12 -0
- package/templates/Dockerfile +12 -0
- package/templates/code/serving.properties +14 -0
- package/templates/do/adapter +1214 -0
- package/templates/do/adapters/.gitkeep +2 -0
- package/templates/do/add-ic +130 -0
- package/templates/do/benchmark +81 -9
- package/templates/do/clean +507 -17
- package/templates/do/config +23 -1
- package/templates/do/deploy +513 -367
- package/templates/do/ic/default.conf +32 -0
- package/templates/do/lib/endpoint-config.sh +216 -0
- package/templates/do/lib/inference-component.sh +167 -0
- package/templates/do/lib/secrets.sh +44 -0
- package/templates/do/lib/wait.sh +131 -0
- package/templates/do/logs +107 -27
- package/templates/do/optimize +528 -0
- package/templates/do/register +111 -1
- package/templates/do/status +337 -0
- package/templates/do/test +80 -28
package/templates/do/logs
CHANGED
|
@@ -15,33 +15,111 @@ source "${SCRIPT_DIR}/config"
|
|
|
15
15
|
# SageMaker Real-Time Inference Logs (CloudWatch)
|
|
16
16
|
# ============================================================
|
|
17
17
|
|
|
18
|
-
#
|
|
19
|
-
|
|
18
|
+
# Parse arguments: ./do/logs [--ic <name>] [--adapter <name>]
|
|
19
|
+
IC_ARG=""
|
|
20
|
+
ADAPTER_ARG=""
|
|
21
|
+
while [ $# -gt 0 ]; do
|
|
22
|
+
case "$1" in
|
|
23
|
+
--ic) shift; IC_ARG="${1:-}"; shift ;;
|
|
24
|
+
--adapter) shift; ADAPTER_ARG="${1:-}"; shift ;;
|
|
25
|
+
--help|-h)
|
|
26
|
+
echo "Usage: ./do/logs [--ic <name>] [--adapter <name>]"
|
|
27
|
+
echo ""
|
|
28
|
+
echo "Tail CloudWatch logs for the deployed inference component."
|
|
29
|
+
echo ""
|
|
30
|
+
echo "Options:"
|
|
31
|
+
echo " --ic <name> Show logs for a specific inference component"
|
|
32
|
+
echo " --adapter <name> Show logs for a specific LoRA adapter IC"
|
|
33
|
+
echo ""
|
|
34
|
+
echo "IC resolution:"
|
|
35
|
+
echo " --adapter <name> Use ADAPTER_IC_NAME from do/adapters/<name>.conf"
|
|
36
|
+
echo " --ic <name> Use IC_DEPLOYED_NAME from do/ic/<name>.conf"
|
|
37
|
+
echo " (no flag) Show all logs for the endpoint (current behavior)"
|
|
38
|
+
exit 0
|
|
39
|
+
;;
|
|
40
|
+
*) shift ;;
|
|
41
|
+
esac
|
|
42
|
+
done
|
|
43
|
+
|
|
20
44
|
ENDPOINT="${ENDPOINT_NAME:-}"
|
|
21
45
|
|
|
22
|
-
if [ -z "${
|
|
23
|
-
echo "❌
|
|
46
|
+
if [ -z "${ENDPOINT}" ]; then
|
|
47
|
+
echo "❌ ENDPOINT_NAME not set in config"
|
|
24
48
|
echo ""
|
|
25
49
|
echo "Usage:"
|
|
26
|
-
echo " ./do/logs <
|
|
27
|
-
echo " ./do/logs
|
|
50
|
+
echo " ./do/logs --ic <name> # logs for a specific IC"
|
|
51
|
+
echo " ./do/logs # all endpoint logs"
|
|
28
52
|
echo ""
|
|
29
|
-
echo "Run ./do/deploy first to set
|
|
53
|
+
echo "Run ./do/deploy first to set ENDPOINT_NAME automatically."
|
|
30
54
|
exit 1
|
|
31
55
|
fi
|
|
32
56
|
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
57
|
+
# Resolve inference component name for filtering
|
|
58
|
+
# Precedence: --adapter <name>, --ic <name>, first in do/ic/, or legacy config
|
|
59
|
+
IC_NAME=""
|
|
60
|
+
if [ -n "${ADAPTER_ARG}" ]; then
|
|
61
|
+
# Adapter name provided via --adapter flag — look up adapter IC
|
|
62
|
+
ADAPTER_CONF="${SCRIPT_DIR}/adapters/${ADAPTER_ARG}.conf"
|
|
63
|
+
if [ ! -f "${ADAPTER_CONF}" ]; then
|
|
64
|
+
echo "❌ Adapter config not found: do/adapters/${ADAPTER_ARG}.conf"
|
|
65
|
+
echo " Available adapters:"
|
|
66
|
+
if [ -d "${SCRIPT_DIR}/adapters" ]; then
|
|
67
|
+
for conf in "${SCRIPT_DIR}"/adapters/*.conf; do
|
|
68
|
+
[ -f "${conf}" ] || continue
|
|
69
|
+
echo " • $(basename "${conf}" .conf)"
|
|
70
|
+
done
|
|
71
|
+
else
|
|
72
|
+
echo " (none)"
|
|
73
|
+
fi
|
|
74
|
+
exit 1
|
|
75
|
+
fi
|
|
76
|
+
ADAPTER_IC_NAME=""
|
|
77
|
+
source "${ADAPTER_CONF}"
|
|
78
|
+
if [ -z "${ADAPTER_IC_NAME}" ]; then
|
|
79
|
+
echo "❌ Adapter '${ADAPTER_ARG}' conf is missing ADAPTER_IC_NAME."
|
|
80
|
+
exit 1
|
|
81
|
+
fi
|
|
82
|
+
IC_NAME="${ADAPTER_IC_NAME}"
|
|
83
|
+
elif [ -n "${IC_ARG}" ]; then
|
|
84
|
+
# Explicit IC name provided via --ic flag
|
|
85
|
+
IC_CONF="${SCRIPT_DIR}/ic/${IC_ARG}.conf"
|
|
86
|
+
if [ ! -f "${IC_CONF}" ]; then
|
|
87
|
+
echo "❌ IC config not found: do/ic/${IC_ARG}.conf"
|
|
88
|
+
exit 1
|
|
89
|
+
fi
|
|
90
|
+
IC_DEPLOYED_NAME=""
|
|
91
|
+
source "${IC_CONF}"
|
|
92
|
+
if [ -z "${IC_DEPLOYED_NAME}" ]; then
|
|
93
|
+
echo "❌ IC '${IC_ARG}' has not been deployed yet. Run ./do/deploy --ic ${IC_ARG} first."
|
|
94
|
+
exit 1
|
|
95
|
+
fi
|
|
96
|
+
IC_NAME="${IC_DEPLOYED_NAME}"
|
|
97
|
+
elif [ -d "${SCRIPT_DIR}/ic" ]; then
|
|
98
|
+
# No --ic argument, but do/ic/ exists — use first IC alphabetically
|
|
99
|
+
for conf in "${SCRIPT_DIR}"/ic/*.conf; do
|
|
100
|
+
[ -f "${conf}" ] || continue
|
|
101
|
+
IC_DEPLOYED_NAME=""
|
|
102
|
+
source "${conf}"
|
|
103
|
+
if [ -n "${IC_DEPLOYED_NAME}" ]; then
|
|
104
|
+
IC_NAME="${IC_DEPLOYED_NAME}"
|
|
105
|
+
break
|
|
106
|
+
fi
|
|
107
|
+
done
|
|
108
|
+
# If no ICs deployed, fall through to show all endpoint logs
|
|
109
|
+
else
|
|
110
|
+
# Legacy: no do/ic/ directory, use INFERENCE_COMPONENT_NAME from do/config
|
|
111
|
+
IC_NAME="${INFERENCE_COMPONENT_NAME:-}"
|
|
39
112
|
fi
|
|
40
113
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
echo "
|
|
114
|
+
# Determine log group based on whether we have an IC name
|
|
115
|
+
if [ -n "${IC_NAME}" ]; then
|
|
116
|
+
LOG_GROUP="/aws/sagemaker/InferenceComponents/${IC_NAME}"
|
|
117
|
+
echo "📋 Tailing logs for inference component: ${IC_NAME}"
|
|
118
|
+
echo " Endpoint: ${ENDPOINT}"
|
|
119
|
+
else
|
|
120
|
+
LOG_GROUP="/aws/sagemaker/Endpoints/${ENDPOINT}"
|
|
121
|
+
echo "📋 Tailing logs for endpoint: ${ENDPOINT}"
|
|
122
|
+
fi
|
|
45
123
|
echo " Log group: ${LOG_GROUP}"
|
|
46
124
|
echo " Region: ${AWS_REGION}"
|
|
47
125
|
echo ""
|
|
@@ -59,7 +137,7 @@ ELAPSED=0
|
|
|
59
137
|
FALLBACK_LOG_GROUP="/aws/sagemaker/Endpoints/${ENDPOINT}"
|
|
60
138
|
|
|
61
139
|
while true; do
|
|
62
|
-
# Check
|
|
140
|
+
# Check primary log group
|
|
63
141
|
if aws logs describe-log-groups \
|
|
64
142
|
--log-group-name-prefix "${LOG_GROUP}" \
|
|
65
143
|
--region "${AWS_REGION}" \
|
|
@@ -68,15 +146,17 @@ while true; do
|
|
|
68
146
|
break
|
|
69
147
|
fi
|
|
70
148
|
|
|
71
|
-
# Check endpoint-level log group as fallback
|
|
72
|
-
if
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
149
|
+
# Check endpoint-level log group as fallback (only when targeting a specific IC)
|
|
150
|
+
if [ -n "${IC_NAME}" ]; then
|
|
151
|
+
if aws logs describe-log-groups \
|
|
152
|
+
--log-group-name-prefix "${FALLBACK_LOG_GROUP}" \
|
|
153
|
+
--region "${AWS_REGION}" \
|
|
154
|
+
--query "logGroups[?logGroupName=='${FALLBACK_LOG_GROUP}'].logGroupName" \
|
|
155
|
+
--output text 2>/dev/null | grep -q "${FALLBACK_LOG_GROUP}"; then
|
|
156
|
+
LOG_GROUP="${FALLBACK_LOG_GROUP}"
|
|
157
|
+
echo " ℹ️ Using endpoint log group: ${LOG_GROUP}"
|
|
158
|
+
break
|
|
159
|
+
fi
|
|
80
160
|
fi
|
|
81
161
|
|
|
82
162
|
if [ "${ELAPSED}" -ge "${MAX_WAIT}" ]; then
|