# Problem and approach Retail catalogs arrive with inconsistent names, descriptions, and category paths. Manually tagging thousands of SKUs is slow and inconsistent. The walkthrough argues that when a taxonomy is stable and outputs can be scored programmatically, customizing a smaller open-weight model is a better fit than relying on broad foundation models with prompt engineering every time.
# What this walkthrough does
# Why SFT then RLVR SFT teaches the model the tagging schema directly (mapping inputs to the nine-category target used in the example). RLVR then optimizes behavior against a deterministic, verifiable reward using Group Relative Policy Optimization (GRPO). The combined approach helps balance missing tags versus unnecessary tags in the final outputs.
# Data preparation and repeatability The walkthrough uses the public Amazon Sales Dataset (Kaggle) as the example source. Key catalog-facing fields include product_name, category path, and about_product. The data transformation is performed as a SageMaker Processing job so the same transformation can be repeated and audited. The processing script: reads S3 source files, normalizes text and paths, removes unusable rows, maps inputs into the nine-category target schema, splits train/validation, and writes JSONL files for training and evaluation.
# Serverless customization details This example uses the SageMaker Python SDK v3 serverless trainers (SFTTrainer and RLVRTrainer). When no compute configuration is provided, SageMaker selects and releases the training capacity for the customization job, so you don't provision GPUs manually. The post contrasts serverless customization with SageMaker Training Jobs (SMTJ), noting that earlier examples used customer-selected GPU instances and custom images.
# Deployment and inference After RLVR optimization, the final model package is deployed for asynchronous inference. The walkthrough uses an asynchronous endpoint backed by a provisioned ml.g6.2xlarge instance to process batch-oriented catalog enrichment requests.
# Operational prerequisites and considerations
- IAM permissions for serverless customization jobs, AI Registry datasets and evaluators, model package groups, asynchronous inference, and iam:PassRole.
- S3 access for source catalog, transformed training data, model artifacts, and async requests/outputs.
- Use an AWS Region that supports Qwen3-8B SFT and RLVR serverless customization.
- Check endpoint quota for ml.g6.2xlarge and endpoint count used for asynchronous endpoints.
- Local tools: Python 3.11+, AWS CLI v2, pandas, SageMaker Python SDK v3, Docker only if building vLLM image.
- Use short-lived credentials (IAM Identity Center or similar) rather than long-lived keys.
# Practical outcomes The pattern separates concerns: versioned data processing, serverless training customization, and provisioned asynchronous serving. That separation supports repeatable data pipelines, constrained model capabilities tailored to the tagging schema, and predictable hosting for batch jobs.
# Where to look next The walkthrough links to SageMaker serverless model customization examples and the SageMaker SDK v3 serverless notebooks for concrete code. It also references the Amazon Sales Dataset used in the example and the SageMaker documentation for supported open-weight models and customization types.