@aws/ml-container-creator 0.7.1 → 0.9.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.
Files changed (46) hide show
  1. package/LICENSE-THIRD-PARTY +50760 -16218
  2. package/bin/cli.js +1 -1
  3. package/infra/ci-harness/buildspec.yml +4 -0
  4. package/package.json +3 -1
  5. package/servers/lib/catalogs/instances.json +52 -1275
  6. package/servers/lib/catalogs/model-servers.json +80 -0
  7. package/servers/lib/catalogs/models.json +0 -132
  8. package/servers/lib/catalogs/popular-diffusors.json +1 -110
  9. package/servers/model-picker/index.js +27 -16
  10. package/src/app.js +113 -23
  11. package/src/lib/cli-handler.js +1 -1
  12. package/src/lib/config-manager.js +39 -2
  13. package/src/lib/cross-cutting-checker.js +146 -33
  14. package/src/lib/deployment-config-resolver.js +10 -4
  15. package/src/lib/e2e-bootstrap.js +227 -0
  16. package/src/lib/e2e-catalog-validator.js +103 -0
  17. package/src/lib/e2e-quota-validator.js +135 -0
  18. package/src/lib/mcp-client.js +16 -1
  19. package/src/lib/mcp-command-handler.js +10 -2
  20. package/src/lib/prompt-runner.js +306 -24
  21. package/src/lib/prompts.js +9 -3
  22. package/src/lib/template-manager.js +10 -4
  23. package/src/lib/train-config-parser.js +136 -0
  24. package/src/lib/train-config-persistence.js +143 -0
  25. package/src/lib/train-config-validator.js +112 -0
  26. package/src/lib/train-feedback.js +46 -0
  27. package/src/lib/train-idempotency.js +97 -0
  28. package/src/lib/train-request-builder.js +120 -0
  29. package/src/lib/tune-catalog-validator.js +5 -5
  30. package/templates/code/serve +2 -2
  31. package/templates/code/serving.properties +2 -2
  32. package/templates/diffusors/serve +3 -3
  33. package/templates/do/.train_build_request.py +141 -0
  34. package/templates/do/.train_poll_parser.py +135 -0
  35. package/templates/do/.train_status_parser.py +187 -0
  36. package/templates/do/.tune_helper.py +2 -2
  37. package/templates/do/lib/feedback.sh +41 -0
  38. package/templates/do/register +8 -2
  39. package/templates/do/test +5 -5
  40. package/templates/do/train +786 -0
  41. package/templates/do/training/config.yaml +140 -0
  42. package/templates/do/training/train.py +463 -0
  43. package/templates/do/tune +2 -2
  44. package/templates/marketplace/config +118 -0
  45. package/templates/marketplace/deploy +890 -0
  46. package/templates/marketplace/test +453 -0
@@ -0,0 +1,118 @@
1
+ #!/bin/bash
2
+ # do-framework configuration (marketplace)
3
+ # This file is sourced by all do scripts
4
+
5
+ # Project identification
6
+ export PROJECT_NAME="<%= projectName %>"
7
+ export DEPLOYMENT_CONFIG="marketplace"
8
+
9
+ # Marketplace model package
10
+ export MODEL_PACKAGE_ARN="<%= modelPackageArn %>"
11
+
12
+ # AWS configuration
13
+ export AWS_REGION="<%= awsRegion %>"
14
+
15
+ # Deployment configuration
16
+ export DEPLOYMENT_TARGET="<%= deploymentTarget %>"
17
+ export INSTANCE_TYPE="<%= instanceType %>"
18
+
19
+ <% if (roleArn) { %>
20
+ export ROLE_ARN="<%= roleArn %>"
21
+ <% } %>
22
+
23
+ <% if (deploymentTarget === 'async-inference') { %>
24
+ # Async-specific configuration
25
+ ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text 2>/dev/null || echo "UNKNOWN")
26
+
27
+ <% if (asyncS3OutputPath) { %>
28
+ export ASYNC_S3_OUTPUT_PATH="<%= asyncS3OutputPath %>"
29
+ <% } else { %>
30
+ export ASYNC_S3_OUTPUT_PATH="s3://mlcc-async-${ACCOUNT_ID}-${AWS_REGION}/${PROJECT_NAME}/output/"
31
+ <% } %>
32
+
33
+ <% if (asyncSnsSuccessTopic) { %>
34
+ export ASYNC_SNS_SUCCESS_TOPIC="<%= asyncSnsSuccessTopic %>"
35
+ <% } else { %>
36
+ export ASYNC_SNS_SUCCESS_TOPIC="arn:aws:sns:${AWS_REGION}:${ACCOUNT_ID}:ml-container-creator-${PROJECT_NAME}-async-success"
37
+ <% } %>
38
+
39
+ <% if (asyncSnsErrorTopic) { %>
40
+ export ASYNC_SNS_ERROR_TOPIC="<%= asyncSnsErrorTopic %>"
41
+ <% } else { %>
42
+ export ASYNC_SNS_ERROR_TOPIC="arn:aws:sns:${AWS_REGION}:${ACCOUNT_ID}:ml-container-creator-${PROJECT_NAME}-async-error"
43
+ <% } %>
44
+
45
+ <% if (asyncMaxConcurrentInvocations) { %>
46
+ export ASYNC_MAX_CONCURRENT_INVOCATIONS="<%= asyncMaxConcurrentInvocations %>"
47
+ <% } %>
48
+ <% } %>
49
+
50
+ <% if (deploymentTarget === 'batch-transform') { %>
51
+ # Batch Transform configuration
52
+ ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text 2>/dev/null || echo "UNKNOWN")
53
+
54
+ <% if (batchInputPath) { %>
55
+ export BATCH_INPUT_PATH="<%= batchInputPath %>"
56
+ <% } else { %>
57
+ export BATCH_INPUT_PATH="s3://mlcc-batch-${ACCOUNT_ID}-${AWS_REGION}/${PROJECT_NAME}/input/"
58
+ <% } %>
59
+ <% if (batchOutputPath) { %>
60
+ export BATCH_OUTPUT_PATH="<%= batchOutputPath %>"
61
+ <% } else { %>
62
+ export BATCH_OUTPUT_PATH="s3://mlcc-batch-${ACCOUNT_ID}-${AWS_REGION}/${PROJECT_NAME}/output/"
63
+ <% } %>
64
+ export BATCH_INSTANCE_COUNT="<%= batchInstanceCount %>"
65
+ export BATCH_SPLIT_TYPE="<%= batchSplitType %>"
66
+ export BATCH_STRATEGY="<%= batchStrategy %>"
67
+ export BATCH_JOIN_SOURCE="<%= batchJoinSource || 'None' %>"
68
+ <% if (batchMaxConcurrentTransforms) { %>
69
+ export BATCH_MAX_CONCURRENT_TRANSFORMS="<%= batchMaxConcurrentTransforms %>"
70
+ <% } %>
71
+ <% if (batchMaxPayloadInMB) { %>
72
+ export BATCH_MAX_PAYLOAD_IN_MB="<%= batchMaxPayloadInMB %>"
73
+ <% } %>
74
+ <% } %>
75
+
76
+ <% if (typeof includeBenchmark !== 'undefined' && includeBenchmark) { %>
77
+ # SageMaker AI Benchmarking configuration
78
+ export BENCHMARK_CONCURRENCY="<%= benchmarkConcurrency %>"
79
+ export BENCHMARK_INPUT_TOKENS_MEAN="<%= benchmarkInputTokensMean %>"
80
+ export BENCHMARK_OUTPUT_TOKENS_MEAN="<%= benchmarkOutputTokensMean %>"
81
+ export BENCHMARK_STREAMING="<%= benchmarkStreaming %>"
82
+ <% if (benchmarkRequestCount) { %>
83
+ export BENCHMARK_REQUEST_COUNT="<%= benchmarkRequestCount %>"
84
+ <% } else { %>
85
+ export BENCHMARK_REQUEST_COUNT=""
86
+ <% } %>
87
+ <% if (benchmarkS3OutputPath) { %>
88
+ export BENCHMARK_S3_OUTPUT_PATH="<%= benchmarkS3OutputPath %>"
89
+ <% } else { %>
90
+ export BENCHMARK_S3_OUTPUT_PATH="s3://mlcc-benchmark-$(aws sts get-caller-identity --query Account --output text)-${AWS_REGION}/${PROJECT_NAME}/"
91
+ <% } %>
92
+ export BENCHMARK_JOB_NAME=""
93
+ export BENCHMARK_WORKLOAD_CONFIG_NAME=""
94
+ <% } %>
95
+
96
+ # Allow environment variable overrides
97
+ export AWS_REGION=${AWS_REGION:-<%= awsRegion %>}
98
+ export INSTANCE_TYPE=${INSTANCE_TYPE:-<%= instanceType %>}
99
+
100
+ # Print configuration summary
101
+ echo "⚙️ Configuration loaded"
102
+ echo " Project: ${PROJECT_NAME}"
103
+ echo " Config: ${DEPLOYMENT_CONFIG}"
104
+ echo " Region: ${AWS_REGION}"
105
+ echo " Model package: ${MODEL_PACKAGE_ARN}"
106
+ echo " Deployment target: ${DEPLOYMENT_TARGET}"
107
+ echo " Instance: ${INSTANCE_TYPE}"
108
+ <% if (deploymentTarget === 'async-inference') { %>
109
+ echo " S3 output: ${ASYNC_S3_OUTPUT_PATH}"
110
+ echo " SNS success: ${ASYNC_SNS_SUCCESS_TOPIC}"
111
+ echo " SNS error: ${ASYNC_SNS_ERROR_TOPIC}"
112
+ <% } else if (deploymentTarget === 'batch-transform') { %>
113
+ echo " Instance count: ${BATCH_INSTANCE_COUNT}"
114
+ echo " S3 input: ${BATCH_INPUT_PATH}"
115
+ echo " S3 output: ${BATCH_OUTPUT_PATH}"
116
+ echo " Split type: ${BATCH_SPLIT_TYPE}"
117
+ echo " Strategy: ${BATCH_STRATEGY}"
118
+ <% } %>