terradev-cli 3.7.6__tar.gz → 3.7.7__tar.gz
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.
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/PKG-INFO +42 -2
- {terradev_cli-3.7.6/terradev_cli → terradev_cli-3.7.7}/README.md +41 -1
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/pyproject.toml +1 -1
- {terradev_cli-3.7.6 → terradev_cli-3.7.7/terradev_cli}/README.md +41 -1
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/__init__.py +1 -1
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cli.py +286 -1
- terradev_cli-3.7.7/terradev_cli/ml_services/sglang_service.py +1259 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli.egg-info/PKG-INFO +42 -2
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli.egg-info/SOURCES.txt +1 -0
- terradev_cli-3.7.7/tests/test_sglang_optimization.py +595 -0
- terradev_cli-3.7.6/terradev_cli/ml_services/sglang_service.py +0 -526
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/.clawhubignore +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/.ebextensions/python.config +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/.env.example +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/.env.template +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/.github/workflows/ci.yml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/.github/workflows/deploy.yml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/.github/workflows/release.yml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/.github/workflows/static.yml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/BingSiteAuth.xml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/CHANGELOG_v3.7.1.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/CUCO_INTEGRATION_GUIDE.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/Dockerfile +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/Dockerfile.hub +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/LICENSE +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/MANIFEST.in +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/PAGES_README.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/PROGRESS_UPDATE_JUPYTER.ipynb +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/README_ACTION.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/README_DOCKER.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/README_JUPYTER.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/README_long.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/SKILL.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/USER_GUIDE.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/VLLM_AUTO_OPTIMIZATION_GUIDE.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/VLLM_OPTIMIZATION_GUIDE.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/VLLM_OPTIMIZATION_SUMMARY.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/action.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/action.yml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/activations/973dfe463ec85785f5f95af5ba3906eedb2d931c24e69824a89ea65dba4e813b.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/agentic_ai_throughput_report.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/agentic_ai_token_throughput_analysis.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/agentic_ai_token_throughput_visualization.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/ai-discovery.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/analysis/api-differences-comparison.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/analysis/cost-structure-differences.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/analysis/inference-arbitrage-pivot.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/apis/free-apis-latency-arbitrage.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/aws_ssm_starter.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/b2b_roi_analysis.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/bottleneck_analysis.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/bottleneck_analysis_viz.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/bucket-policy.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/build_v3.7.1.sh +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/business/compute-arbitrage-business.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/byoapi_real_snapshot.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/check_logs_fix.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/README.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/helm/values-glm5.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/k8s/hpa.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/k8s/model-cache-pvc.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/k8s/namespace.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/k8s/pdb.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/k8s/service.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/k8s/sglang-deployment.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/k8s/vllm-deployment.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/task.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/terraform/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/terraform/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/glm-5/terraform/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/README.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/helm/values-moe.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/k8s/deployment.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/k8s/hpa.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/k8s/model-cache-pvc.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/k8s/namespace.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/k8s/pdb.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/k8s/service.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/task.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/terraform/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/terraform/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/moe-template/terraform/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/rag-template/README.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/rag-template/helm/values-rag.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/rag-template/k8s/deployment.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/clusters/rag-template/terraform/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/complete_weakness_resolution_report.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/comprehensive_throughput_quantification.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/comprehensive_throughput_quantification.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/config.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/data_sources_methodology.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/demo/RECORDING_GUIDE.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/demo/generate_gif.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/demo/terradev-demo.gif +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/demo_k8s_config.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/deploy_correct_pricing.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/deploy_enhanced_server.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/deploy_exact_servers.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/deploy_simple_enhanced.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/deploy_telemetry_aws.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/deploy_to_aws.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/direct_aws_starter.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docker-compose.yml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docs/ADVANCED_FINANCIAL_INNOVATIONS.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docs/API_DOCUMENTATION.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docs/BingSiteAuth.xml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docs/FINOPS_ATTRIBUTION_SYSTEM.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docs/USER_GUIDE.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docs/architecture.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docs/index.html +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docs/robots.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/docs/sitemap.xml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/eb_deploy.zip +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/ec2_user_data_starter.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/fallback_server.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/figure_calculation_breakdown.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/fix_server_ports.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/genius_data_storage/data_compressor.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/genius_data_storage/genius_data_demo.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/genius_data_storage/integrity_verifier.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/genius_data_storage/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/genius_data_storage/zero_egress_accessor.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/gpu-check.sh +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/grafana_training_dashboard.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/helm/terradev/Chart.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/helm/terradev/templates/_helpers.tpl +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/helm/terradev/templates/deployment.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/helm/terradev/values.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/high_throughput_workload.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/index.html +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/infrastructure/kubernetes/microservices.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/infrastructure/terraform/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/infrastructure/terraform/parallelism.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/integrations/cli-tool.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/integrations/cloud-management-widgets.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/integrations/cloud-provider-apis.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/integrations/critical-widgets.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/integrations/devops-cicd-widgets.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/integrations/devops-essential-tools.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/integrations/docker-integration.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/integrations/kubernetes-operator.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/integrations/mlflow-integration.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/kaggle_notebooks/01_hf_spaces_cost_optimization.ipynb +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/kubernetes_training_deployment.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/latency_throughput_tradeoff.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/latency_throughput_tradeoff_viz.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/llms.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/memory_scaling_analysis.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/memory_scaling_viz.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/modules/datadog/README.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/modules/datadog/dashboard.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/modules/datadog/monitors.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/modules/datadog/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/modules/datadog/provider.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/modules/datadog/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/modules/datadog/versions.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/nginx.conf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/openclaw-skill/terradev-gpu-cloud/.clawhubignore +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/openclaw-skill/terradev-gpu-cloud/LICENSE +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/openclaw-skill/terradev-gpu-cloud/README.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/openclaw-skill/terradev-gpu-cloud/SKILL.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/openclaw-skill/terradev-gpu-cloud/gpu-check.sh +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/optimization_impact_viz.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/parallel_provisioning.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/partnerships/brand-partnerships.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/partnerships/partnership-roadmap.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/pricing_analysis_report.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/production_telemetry_server.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/prometheus_training_config.yml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/provision_based_pricing_analysis.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/pypi_traffic_report.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/pyproject_v2.toml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/real_day_one_snapshot.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/remaining_25_analysis_report.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/render.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/requirements-render.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/requirements.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/requirements_api.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/requirements_eb.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/requirements_stripe.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/robots.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/sample_workload.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/server_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/setup/Lambda Cloud API spec 1.8.3.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/setup/account-setup-guide.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/setup/setup.sh +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/setup.cfg +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/simple_ssm_starter.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/sitemap.xml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/ssh_server_starter.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/start_aws_servers.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/stripe_telemetry_server.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/telemetry_production.db-shm +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/telemetry_production.db-wal +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/telemetry_server.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/CHANGELOG.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/README_old.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/README_with_emojis.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/__main__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/bandit-report.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cli_clean.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cli_enhanced.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cli_final.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cli_optimization.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cli_optimization_fixed.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cli_optimization_simple.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cli_simple.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cli_tiered.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/__init__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/async_config.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/auth.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/checkpoint_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/config.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/cost_scaler.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/cost_tracker.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/cuda_graph_integrator.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/dag_executor.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/data_governance.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/dataset_stager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/deployment_router.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/drift_detector.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/egress_optimizer.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/enterprise_auth.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/gitops_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/gpu_topology.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/helm_generator.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/helm_generator_old.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/hf_cli_integration.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/hf_smart_templates.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/hf_spaces.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/inference_router.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/job_state_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/manifest_cache.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/manifest_example.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/model_orchestrator.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/oidc_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/optimization_config.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/parallel_provisioner.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/preflight_validator.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/price_discovery.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/price_discovery_mock.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/price_intelligence.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/quick_start.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/rate_limiter.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/saml_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_router.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/__init__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/base_signal.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/complexity_signal.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/domain_signal.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/keyword_signal.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/language_signal.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/modality_signal.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/orchestrator.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/routing_policy.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/semantic_signals/safety_signal.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/session_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/ssh_key_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/stripe_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/telemetry.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/telemetry_backup.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/terradev_engine.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/tier_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/trace_viewer.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/training_monitor.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/training_orchestrator.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/user_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/core/warm_pool_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/cost_optimizer.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/credential_prompt.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/demo.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/entry_point.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/integrations/Terradev LOGO BLACK.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/integrations/Terradev LOGO WHITEW.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/integrations/__init__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/integrations/datadog_integration.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/integrations/prometheus_integration.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/integrations/wandb_integration.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/k8s/terraform_wrapper.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/kubernetes/inferx-cost-optimized.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/kubernetes/inferx-infrastructure.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/kubernetes/inferx-models.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/kubernetes/inferx-platform.yaml +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/kubernetes/inferx_setup.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/__init__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/dvc_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/guardrails_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/huggingface_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/kserve_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/kubernetes_enhanced.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/kubernetes_enhanced_fixed.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/kubernetes_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/langchain_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/langgraph_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/langsmith_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/lmcache_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/mlflow_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/ollama_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/phoenix_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/qdrant_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/ray_enhanced.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/ray_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/vllm_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/wandb_enhanced.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/ml_services/wandb_service.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/optimization/__init__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/optimization/auto_optimizer.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/optimization/cuco_optimizer.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/__init__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/alibaba_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/aws_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/azure_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/base_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/baseten_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/coreweave_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/crusoe_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/demo_mode.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/digitalocean_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/fluidstack_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/gcp_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/hetzner_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/huggingface_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/hyperstack_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/inferx_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/lambda_labs_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/oracle_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/ovhcloud_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/provider_factory.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/real_pricing.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/runpod_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/siliconflow_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/tensordock_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/providers/vastai_provider.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/requirements.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/requirements_minimal.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/safety-report.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/setup.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/telemetry_protection.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terradev_cli/__init__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terradev_cli/cli.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/__init__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-aws/bootstrap.sh +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-aws/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-aws/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-aws/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-aws/versions.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-hyperstack/bootstrap.sh +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-hyperstack/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-hyperstack/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-hyperstack/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-hyperstack/versions.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-lambda/bootstrap.sh +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-lambda/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-lambda/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-lambda/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-lambda/versions.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-vastai/bootstrap.sh +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-vastai/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-vastai/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-vastai/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/gpu-node-vastai/versions.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/k8s-control-plane/join-script.tpl +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/k8s-control-plane/kubeconfig.tpl +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/k8s-control-plane/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/k8s-control-plane/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/k8s-control-plane/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/k8s-control-plane/versions.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/networking/main.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/networking/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/networking/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/modules/networking/versions.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/outputs.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/price-optimizer/optimal-allocation.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/providers.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/terraform/variables.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/utils/__init__.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli/utils/formatters.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli.egg-info/dependency_links.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli.egg-info/entry_points.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli.egg-info/requires.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terradev_cli.egg-info/top_level.txt +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform.tfvars.example +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_cli/README.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_cli/demo_usage.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_cli/install.sh +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_cli/terradev_cli.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_optimization/backend.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_optimization/error_handling.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_optimization/storage_choice_matrix.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_optimization/test_error_handler.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_optimization/versions.tf +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/audit_demo/trail_3caed73ad5bf.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/audit_trail.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/audit_trails.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/decision_engine.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/decision_logs.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/operations.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/terraform_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/terraform_plans.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/transparency_demo.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/terraform_transparency/transparency_report.json +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/test_cli_telemetry.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/test_cli_ux_battle.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/test_cli_ux_battle_fixed.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/test_cli_ux_final.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/test_final_integration.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/test_integrated_optimization.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/test_p10_production_failover.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/test_telemetry_backend.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/test_vllm_optimization.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/INTEGRATION_STRATEGY.md +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/Makefile +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/ci_pipeline.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/conftest.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/simple_test.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_checkpoint_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_cli_smoke.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_dag_executor.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_integration.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_job_state_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_providers.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_semantic_router.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_ssh_key_manager.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_training_monitor.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/tests/test_training_orchestrator.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/throughput_comparison_analysis.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/throughput_comparison_viz.py +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/volatility_charts/aws_a100_volatility.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/volatility_charts/aws_v100_volatility.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/volatility_charts/runpod_a100_volatility.png +0 -0
- {terradev_cli-3.7.6 → terradev_cli-3.7.7}/volatility_charts/runpod_v100_volatility.png +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: terradev-cli
|
|
3
|
-
Version: 3.7.
|
|
3
|
+
Version: 3.7.7
|
|
4
4
|
Summary: NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes
|
|
5
5
|
Author-email: Terradev Team <team@terradev.com>
|
|
6
6
|
Maintainer-email: Terradev Team <team@terradev.com>
|
|
@@ -91,7 +91,7 @@ Requires-Dist: redis>=5.0.0; extra == "enterprise"
|
|
|
91
91
|
Requires-Dist: PyJWT>=2.8.0; extra == "enterprise"
|
|
92
92
|
Dynamic: license-file
|
|
93
93
|
|
|
94
|
-
# Terradev CLI v3.7.
|
|
94
|
+
# Terradev CLI v3.7.7
|
|
95
95
|
|
|
96
96
|
**NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes**
|
|
97
97
|
|
|
@@ -99,6 +99,46 @@ Dynamic: license-file
|
|
|
99
99
|
|
|
100
100
|
Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
|
|
101
101
|
|
|
102
|
+
## What's New in v3.7.7
|
|
103
|
+
|
|
104
|
+
**Complete SGLang Optimization Stack**
|
|
105
|
+
|
|
106
|
+
Revolutionary workload-specific auto-optimization for SGLang serving with 7 workload types:
|
|
107
|
+
|
|
108
|
+
### 🚀 SGLang Workload Optimizations
|
|
109
|
+
- **Agentic/Multi-turn Chat**: LPM + RadixAttention + cache-aware routing (75-90% cache hit rate)
|
|
110
|
+
- **High-Throughput Batch**: FCFS + CUDA graphs + FP8 quantization (maximum tokens/sec)
|
|
111
|
+
- **Low-Latency/Real-Time**: EAGLE3 + Spec V2 + capped concurrency (30-50% TTFT improvement)
|
|
112
|
+
- **MoE Models**: DeepEP auto + TBO/SBO + EPLB + redundant experts (up to 2x throughput)
|
|
113
|
+
- **PD Disaggregated**: Separate prefill/decode configurations with production optimizations
|
|
114
|
+
- **Structured Output/RAG**: xGrammar + FSM optimization (10x faster structured output)
|
|
115
|
+
- **Hardware-Specific**: H100/H200, H20, GB200, AMD MI300X optimizations
|
|
116
|
+
|
|
117
|
+
### 🎯 Auto-Apply Decision Tree
|
|
118
|
+
```bash
|
|
119
|
+
# Auto-optimize any model for workload type
|
|
120
|
+
terradev sglang optimize deepseek-ai/DeepSeek-V3
|
|
121
|
+
|
|
122
|
+
# Detect workload from description
|
|
123
|
+
terradev sglang detect meta-llama/Llama-2-7b-hf --user-description "Real-time API"
|
|
124
|
+
|
|
125
|
+
# Multi-replica cache-aware routing
|
|
126
|
+
terradev sglang router meta-llama/Llama-2-7b-hf --dp-size 8
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 📊 Performance Gains
|
|
130
|
+
- **Agentic Chat**: 1.9x throughput with multi-replica, 95-98% GPU utilization
|
|
131
|
+
- **Batch Inference**: Maximum tokens/second with pre-compiled CUDA graphs
|
|
132
|
+
- **Low Latency**: 30-50% TTFT improvement, 20-40% TPOT improvement
|
|
133
|
+
- **MoE Models**: Up to 2x throughput with Two-Batch Overlap
|
|
134
|
+
- **Cache-Aware Routing**: 3.8x higher cache hit rate
|
|
135
|
+
|
|
136
|
+
### 🔧 Hardware Optimization
|
|
137
|
+
- **H100/H200**: FlashInfer + FP8 KV cache optimization
|
|
138
|
+
- **H20**: FA3 + MoE→QKV→FP8 stacking + swapAB runner
|
|
139
|
+
- **GB200 NVL72**: Rack-scale TP + NUMA-aware placement
|
|
140
|
+
- **AMD MI300X**: Triton backend + ROCm EPLB tuning
|
|
141
|
+
|
|
102
142
|
## What's New in v3.7.3
|
|
103
143
|
|
|
104
144
|
Performance and scalability improvements for enterprise deployments.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Terradev CLI v3.7.
|
|
1
|
+
# Terradev CLI v3.7.7
|
|
2
2
|
|
|
3
3
|
**NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes**
|
|
4
4
|
|
|
@@ -6,6 +6,46 @@
|
|
|
6
6
|
|
|
7
7
|
Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
|
|
8
8
|
|
|
9
|
+
## What's New in v3.7.7
|
|
10
|
+
|
|
11
|
+
**Complete SGLang Optimization Stack**
|
|
12
|
+
|
|
13
|
+
Revolutionary workload-specific auto-optimization for SGLang serving with 7 workload types:
|
|
14
|
+
|
|
15
|
+
### 🚀 SGLang Workload Optimizations
|
|
16
|
+
- **Agentic/Multi-turn Chat**: LPM + RadixAttention + cache-aware routing (75-90% cache hit rate)
|
|
17
|
+
- **High-Throughput Batch**: FCFS + CUDA graphs + FP8 quantization (maximum tokens/sec)
|
|
18
|
+
- **Low-Latency/Real-Time**: EAGLE3 + Spec V2 + capped concurrency (30-50% TTFT improvement)
|
|
19
|
+
- **MoE Models**: DeepEP auto + TBO/SBO + EPLB + redundant experts (up to 2x throughput)
|
|
20
|
+
- **PD Disaggregated**: Separate prefill/decode configurations with production optimizations
|
|
21
|
+
- **Structured Output/RAG**: xGrammar + FSM optimization (10x faster structured output)
|
|
22
|
+
- **Hardware-Specific**: H100/H200, H20, GB200, AMD MI300X optimizations
|
|
23
|
+
|
|
24
|
+
### 🎯 Auto-Apply Decision Tree
|
|
25
|
+
```bash
|
|
26
|
+
# Auto-optimize any model for workload type
|
|
27
|
+
terradev sglang optimize deepseek-ai/DeepSeek-V3
|
|
28
|
+
|
|
29
|
+
# Detect workload from description
|
|
30
|
+
terradev sglang detect meta-llama/Llama-2-7b-hf --user-description "Real-time API"
|
|
31
|
+
|
|
32
|
+
# Multi-replica cache-aware routing
|
|
33
|
+
terradev sglang router meta-llama/Llama-2-7b-hf --dp-size 8
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 📊 Performance Gains
|
|
37
|
+
- **Agentic Chat**: 1.9x throughput with multi-replica, 95-98% GPU utilization
|
|
38
|
+
- **Batch Inference**: Maximum tokens/second with pre-compiled CUDA graphs
|
|
39
|
+
- **Low Latency**: 30-50% TTFT improvement, 20-40% TPOT improvement
|
|
40
|
+
- **MoE Models**: Up to 2x throughput with Two-Batch Overlap
|
|
41
|
+
- **Cache-Aware Routing**: 3.8x higher cache hit rate
|
|
42
|
+
|
|
43
|
+
### 🔧 Hardware Optimization
|
|
44
|
+
- **H100/H200**: FlashInfer + FP8 KV cache optimization
|
|
45
|
+
- **H20**: FA3 + MoE→QKV→FP8 stacking + swapAB runner
|
|
46
|
+
- **GB200 NVL72**: Rack-scale TP + NUMA-aware placement
|
|
47
|
+
- **AMD MI300X**: Triton backend + ROCm EPLB tuning
|
|
48
|
+
|
|
9
49
|
## What's New in v3.7.3
|
|
10
50
|
|
|
11
51
|
Performance and scalability improvements for enterprise deployments.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "terradev-cli"
|
|
7
|
-
version = "3.7.
|
|
7
|
+
version = "3.7.7"
|
|
8
8
|
description = "NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "BUSL-1.1"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Terradev CLI v3.7.
|
|
1
|
+
# Terradev CLI v3.7.7
|
|
2
2
|
|
|
3
3
|
**NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes**
|
|
4
4
|
|
|
@@ -6,6 +6,46 @@
|
|
|
6
6
|
|
|
7
7
|
Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
|
|
8
8
|
|
|
9
|
+
## What's New in v3.7.7
|
|
10
|
+
|
|
11
|
+
**Complete SGLang Optimization Stack**
|
|
12
|
+
|
|
13
|
+
Revolutionary workload-specific auto-optimization for SGLang serving with 7 workload types:
|
|
14
|
+
|
|
15
|
+
### 🚀 SGLang Workload Optimizations
|
|
16
|
+
- **Agentic/Multi-turn Chat**: LPM + RadixAttention + cache-aware routing (75-90% cache hit rate)
|
|
17
|
+
- **High-Throughput Batch**: FCFS + CUDA graphs + FP8 quantization (maximum tokens/sec)
|
|
18
|
+
- **Low-Latency/Real-Time**: EAGLE3 + Spec V2 + capped concurrency (30-50% TTFT improvement)
|
|
19
|
+
- **MoE Models**: DeepEP auto + TBO/SBO + EPLB + redundant experts (up to 2x throughput)
|
|
20
|
+
- **PD Disaggregated**: Separate prefill/decode configurations with production optimizations
|
|
21
|
+
- **Structured Output/RAG**: xGrammar + FSM optimization (10x faster structured output)
|
|
22
|
+
- **Hardware-Specific**: H100/H200, H20, GB200, AMD MI300X optimizations
|
|
23
|
+
|
|
24
|
+
### 🎯 Auto-Apply Decision Tree
|
|
25
|
+
```bash
|
|
26
|
+
# Auto-optimize any model for workload type
|
|
27
|
+
terradev sglang optimize deepseek-ai/DeepSeek-V3
|
|
28
|
+
|
|
29
|
+
# Detect workload from description
|
|
30
|
+
terradev sglang detect meta-llama/Llama-2-7b-hf --user-description "Real-time API"
|
|
31
|
+
|
|
32
|
+
# Multi-replica cache-aware routing
|
|
33
|
+
terradev sglang router meta-llama/Llama-2-7b-hf --dp-size 8
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 📊 Performance Gains
|
|
37
|
+
- **Agentic Chat**: 1.9x throughput with multi-replica, 95-98% GPU utilization
|
|
38
|
+
- **Batch Inference**: Maximum tokens/second with pre-compiled CUDA graphs
|
|
39
|
+
- **Low Latency**: 30-50% TTFT improvement, 20-40% TPOT improvement
|
|
40
|
+
- **MoE Models**: Up to 2x throughput with Two-Batch Overlap
|
|
41
|
+
- **Cache-Aware Routing**: 3.8x higher cache hit rate
|
|
42
|
+
|
|
43
|
+
### 🔧 Hardware Optimization
|
|
44
|
+
- **H100/H200**: FlashInfer + FP8 KV cache optimization
|
|
45
|
+
- **H20**: FA3 + MoE→QKV→FP8 stacking + swapAB runner
|
|
46
|
+
- **GB200 NVL72**: Rack-scale TP + NUMA-aware placement
|
|
47
|
+
- **AMD MI300X**: Triton backend + ROCm EPLB tuning
|
|
48
|
+
|
|
9
49
|
## What's New in v3.7.3
|
|
10
50
|
|
|
11
51
|
Performance and scalability improvements for enterprise deployments.
|
|
@@ -3,7 +3,7 @@ Terradev CLI - Cross-Cloud Compute Optimization Platform
|
|
|
3
3
|
Parallel provisioning and orchestration for optimized compute costs
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
__version__ = "3.7.
|
|
6
|
+
__version__ = "3.7.7"
|
|
7
7
|
__author__ = "Terradev Team"
|
|
8
8
|
__description__ = (
|
|
9
9
|
"NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes"
|
|
@@ -8708,8 +8708,293 @@ def sso_test(provider):
|
|
|
8708
8708
|
print(f"✅ {p} configuration appears valid")
|
|
8709
8709
|
|
|
8710
8710
|
|
|
8711
|
-
#
|
|
8711
|
+
# ── SGLANG COMMAND GROUP ──
|
|
8712
|
+
|
|
8713
|
+
@cli.group()
|
|
8714
|
+
def sglang():
|
|
8715
|
+
"""SGLang optimization and management with workload-specific auto-tuning"""
|
|
8716
|
+
pass
|
|
8717
|
+
|
|
8718
|
+
|
|
8719
|
+
@sglang.command()
|
|
8720
|
+
@click.argument('model_path')
|
|
8721
|
+
@click.option('--workload-type', type=click.Choice(['agentic_chat', 'batch_inference', 'low_latency', 'moe_model', 'pd_disaggregated', 'structured_output', 'rag_workload']), help='Workload type for optimization')
|
|
8722
|
+
@click.option('--user-description', help='Natural language description of workload')
|
|
8723
|
+
@click.option('--host', default='0.0.0.0', help='Server host')
|
|
8724
|
+
@click.option('--port', default=8000, help='Server port')
|
|
8725
|
+
@click.option('--dry-run', is_flag=True, help='Show optimization plan without launching')
|
|
8726
|
+
def optimize(model_path, workload_type, user_description, host, port, dry_run):
|
|
8727
|
+
"""Auto-optimize SGLang configuration for workload type and hardware"""
|
|
8728
|
+
from ml_services.sglang_service import SGLangService, WorkloadType
|
|
8729
|
+
|
|
8730
|
+
service = SGLangService()
|
|
8731
|
+
|
|
8732
|
+
# Convert string to enum if provided
|
|
8733
|
+
workload_enum = None
|
|
8734
|
+
if workload_type:
|
|
8735
|
+
workload_enum = WorkloadType(workload_type)
|
|
8736
|
+
|
|
8737
|
+
# Create optimized configuration
|
|
8738
|
+
config = service.create_optimized_config(
|
|
8739
|
+
model_path=model_path,
|
|
8740
|
+
workload_type=workload_enum,
|
|
8741
|
+
user_description=user_description,
|
|
8742
|
+
host=host,
|
|
8743
|
+
port=port
|
|
8744
|
+
)
|
|
8745
|
+
|
|
8746
|
+
# Get optimization summary
|
|
8747
|
+
summary = service.get_optimization_summary(config)
|
|
8748
|
+
|
|
8749
|
+
print(f"🚀 SGLang Optimization Configuration")
|
|
8750
|
+
print(f"Model: {model_path}")
|
|
8751
|
+
print(f"Workload Type: {summary['workload_type']}")
|
|
8752
|
+
print(f"Hardware Detected: {summary['hardware_detected']}")
|
|
8753
|
+
print(f"Schedule Policy: {summary['schedule_policy']}")
|
|
8754
|
+
print(f"Attention Backend: {summary['attention_backend']}")
|
|
8755
|
+
print()
|
|
8756
|
+
|
|
8757
|
+
print("Applied Optimizations:")
|
|
8758
|
+
for opt in summary['optimizations_applied']:
|
|
8759
|
+
print(f" ✅ {opt}")
|
|
8760
|
+
print()
|
|
8761
|
+
|
|
8762
|
+
if summary['performance_expectations']:
|
|
8763
|
+
print("Performance Expectations:")
|
|
8764
|
+
for key, value in summary['performance_expectations'].items():
|
|
8765
|
+
print(f" 📊 {key.replace('_', ' ').title()}: {value}")
|
|
8766
|
+
print()
|
|
8767
|
+
|
|
8768
|
+
if summary['hardware_tuned']:
|
|
8769
|
+
print("🔧 Hardware-specific optimizations applied")
|
|
8770
|
+
print()
|
|
8771
|
+
|
|
8772
|
+
# Validate configuration
|
|
8773
|
+
warnings = service.validate_config(config)
|
|
8774
|
+
if warnings:
|
|
8775
|
+
print("⚠️ Configuration Warnings:")
|
|
8776
|
+
for warning in warnings:
|
|
8777
|
+
print(f" ⚠️ {warning}")
|
|
8778
|
+
print()
|
|
8779
|
+
|
|
8780
|
+
if dry_run:
|
|
8781
|
+
print("🔍 Dry run - configuration generated but not launched")
|
|
8782
|
+
return
|
|
8783
|
+
|
|
8784
|
+
# Generate and display launch command
|
|
8785
|
+
launch_cmd = service.generate_launch_command(config)
|
|
8786
|
+
print("🚀 Launch Command:")
|
|
8787
|
+
print(launch_cmd)
|
|
8788
|
+
print()
|
|
8789
|
+
|
|
8790
|
+
print("💡 To start the server, run:")
|
|
8791
|
+
print(f" {launch_cmd}")
|
|
8792
|
+
|
|
8793
|
+
|
|
8794
|
+
@sglang.command()
|
|
8795
|
+
@click.argument('model_path')
|
|
8796
|
+
@click.option('--dp-size', default=8, help='Data parallel size for multi-replica')
|
|
8797
|
+
@click.option('--workload-type', type=click.Choice(['agentic_chat', 'batch_inference', 'low_latency', 'moe_model', 'pd_disaggregated', 'structured_output', 'rag_workload']), help='Workload type for optimization')
|
|
8798
|
+
def router(model_path, dp_size, workload_type):
|
|
8799
|
+
"""Generate cache-aware router command for multi-replica deployments"""
|
|
8800
|
+
from ml_services.sglang_service import SGLangService, WorkloadType
|
|
8801
|
+
|
|
8802
|
+
service = SGLangService()
|
|
8803
|
+
|
|
8804
|
+
# Convert string to enum if provided
|
|
8805
|
+
workload_enum = None
|
|
8806
|
+
if workload_type:
|
|
8807
|
+
workload_enum = WorkloadType(workload_type)
|
|
8808
|
+
|
|
8809
|
+
# Create optimized configuration
|
|
8810
|
+
config = service.create_optimized_config(
|
|
8811
|
+
model_path=model_path,
|
|
8812
|
+
workload_type=workload_enum
|
|
8813
|
+
)
|
|
8814
|
+
|
|
8815
|
+
# Generate router command
|
|
8816
|
+
router_cmd = service.generate_multi_replica_command(config, dp_size)
|
|
8817
|
+
|
|
8818
|
+
print(f"🔄 Cache-Aware Router Configuration")
|
|
8819
|
+
print(f"Model: {model_path}")
|
|
8820
|
+
print(f"DP Size: {dp_size}")
|
|
8821
|
+
print(f"Workload Type: {config.workload_type.value}")
|
|
8822
|
+
print()
|
|
8823
|
+
print("🚀 Router Launch Command:")
|
|
8824
|
+
print(router_cmd)
|
|
8825
|
+
print()
|
|
8826
|
+
|
|
8827
|
+
print("💡 This router provides:")
|
|
8828
|
+
print(" 📈 Up to 1.9x throughput increase")
|
|
8829
|
+
print(" 🎯 3.8x higher cache hit rate")
|
|
8830
|
+
print(" 🧠 Intelligent request routing based on cache predictions")
|
|
8831
|
+
|
|
8832
|
+
|
|
8833
|
+
@sglang.command()
|
|
8834
|
+
@click.argument('model_path')
|
|
8835
|
+
@click.option('--workload-type', type=click.Choice(['agentic_chat', 'batch_inference', 'low_latency', 'moe_model', 'pd_disaggregated', 'structured_output', 'rag_workload']), help='Workload type to test')
|
|
8836
|
+
@click.option('--user-description', help='Natural language description of workload')
|
|
8837
|
+
def detect(model_path, workload_type, user_description):
|
|
8838
|
+
"""Auto-detect workload type and show optimization recommendations"""
|
|
8839
|
+
from ml_services.sglang_service import SGLangService, WorkloadType
|
|
8840
|
+
|
|
8841
|
+
service = SGLangService()
|
|
8842
|
+
|
|
8843
|
+
# Detect workload type
|
|
8844
|
+
detected_type = service.detect_workload_type(model_path, user_description)
|
|
8845
|
+
|
|
8846
|
+
print(f"🔍 Workload Detection Results")
|
|
8847
|
+
print(f"Model: {model_path}")
|
|
8848
|
+
print(f"Detected Workload Type: {detected_type.value}")
|
|
8849
|
+
|
|
8850
|
+
if workload_type:
|
|
8851
|
+
manual_type = WorkloadType(workload_type)
|
|
8852
|
+
print(f"Manual Workload Type: {manual_type.value}")
|
|
8853
|
+
if detected_type != manual_type:
|
|
8854
|
+
print("⚠️ Manual and detected types differ - using manual specification")
|
|
8855
|
+
final_type = manual_type
|
|
8856
|
+
else:
|
|
8857
|
+
print("✅ Manual and detected types match")
|
|
8858
|
+
final_type = detected_type
|
|
8859
|
+
else:
|
|
8860
|
+
final_type = detected_type
|
|
8861
|
+
|
|
8862
|
+
print()
|
|
8863
|
+
|
|
8864
|
+
# Show optimization recommendations
|
|
8865
|
+
config = service.create_optimized_config(
|
|
8866
|
+
model_path=model_path,
|
|
8867
|
+
workload_type=final_type,
|
|
8868
|
+
user_description=user_description
|
|
8869
|
+
)
|
|
8870
|
+
|
|
8871
|
+
summary = service.get_optimization_summary(config)
|
|
8872
|
+
|
|
8873
|
+
print("🎯 Optimization Recommendations:")
|
|
8874
|
+
for opt in summary['optimizations_applied']:
|
|
8875
|
+
print(f" ✅ {opt}")
|
|
8876
|
+
print()
|
|
8877
|
+
|
|
8878
|
+
if summary['performance_expectations']:
|
|
8879
|
+
print("📊 Expected Performance:")
|
|
8880
|
+
for key, value in summary['performance_expectations'].items():
|
|
8881
|
+
print(f" 📈 {key.replace('_', ' ').title()}: {value}")
|
|
8882
|
+
|
|
8883
|
+
print()
|
|
8884
|
+
print("💡 Run 'terradev sglang optimize' to generate the full launch command")
|
|
8885
|
+
|
|
8886
|
+
|
|
8887
|
+
@sglang.command()
|
|
8888
|
+
@click.option('--instance-ip', help='Remote instance IP for installation')
|
|
8889
|
+
@click.option('--ssh-user', default='root', help='SSH user for remote installation')
|
|
8890
|
+
@click.option('--ssh-key', help='SSH private key path')
|
|
8891
|
+
def install(instance_ip, ssh_user, ssh_key):
|
|
8892
|
+
"""Install SGLang with optimization stack"""
|
|
8893
|
+
from ml_services.sglang_service import SGLangService
|
|
8894
|
+
|
|
8895
|
+
service = SGLangService()
|
|
8896
|
+
|
|
8897
|
+
if instance_ip:
|
|
8898
|
+
# Remote installation
|
|
8899
|
+
print(f"📦 Installing SGLang on {instance_ip}...")
|
|
8900
|
+
result = asyncio.run(service.install_on_instance(
|
|
8901
|
+
instance_ip=instance_ip,
|
|
8902
|
+
ssh_user=ssh_user,
|
|
8903
|
+
ssh_key=ssh_key
|
|
8904
|
+
))
|
|
8905
|
+
|
|
8906
|
+
if result["status"] == "installed":
|
|
8907
|
+
print("✅ SGLang installed successfully")
|
|
8908
|
+
print(f"📋 Output: {result['output']}")
|
|
8909
|
+
else:
|
|
8910
|
+
print(f"❌ Installation failed: {result['error']}")
|
|
8911
|
+
else:
|
|
8912
|
+
# Local installation
|
|
8913
|
+
print("📦 Installing SGLang locally...")
|
|
8914
|
+
import subprocess
|
|
8915
|
+
import sys
|
|
8916
|
+
|
|
8917
|
+
try:
|
|
8918
|
+
subprocess.run([
|
|
8919
|
+
sys.executable, "-m", "pip", "install",
|
|
8920
|
+
"sglang[all]", "--find-links", "https://flashinfer.ai/whl/cu124/torch2.5/flashinfer-python"
|
|
8921
|
+
], check=True)
|
|
8922
|
+
print("✅ SGLang installed successfully")
|
|
8923
|
+
except subprocess.CalledProcessError as e:
|
|
8924
|
+
print(f"❌ Installation failed: {e}")
|
|
8925
|
+
|
|
8926
|
+
|
|
8927
|
+
@sglang.command()
|
|
8928
|
+
@click.argument('model_path')
|
|
8929
|
+
@click.option('--instance-ip', help='Remote instance IP')
|
|
8930
|
+
@click.option('--ssh-user', default='root', help='SSH user for remote deployment')
|
|
8931
|
+
@click.option('--ssh-key', help='SSH private key path')
|
|
8932
|
+
@click.option('--workload-type', type=click.Choice(['agentic_chat', 'batch_inference', 'low_latency', 'moe_model', 'pd_disaggregated', 'structured_output', 'rag_workload']), help='Workload type for optimization')
|
|
8933
|
+
@click.option('--port', default=8000, help='Server port')
|
|
8934
|
+
def start(model_path, instance_ip, ssh_user, ssh_key, workload_type, port):
|
|
8935
|
+
"""Start optimized SGLang server"""
|
|
8936
|
+
from ml_services.sglang_service import SGLangService, WorkloadType
|
|
8937
|
+
|
|
8938
|
+
service = SGLangService()
|
|
8939
|
+
|
|
8940
|
+
# Create optimized configuration
|
|
8941
|
+
workload_enum = None
|
|
8942
|
+
if workload_type:
|
|
8943
|
+
workload_enum = WorkloadType(workload_type)
|
|
8944
|
+
|
|
8945
|
+
config = service.create_optimized_config(
|
|
8946
|
+
model_path=model_path,
|
|
8947
|
+
workload_type=workload_enum,
|
|
8948
|
+
port=port
|
|
8949
|
+
)
|
|
8950
|
+
|
|
8951
|
+
if instance_ip:
|
|
8952
|
+
# Remote deployment
|
|
8953
|
+
print(f"🚀 Starting SGLang server on {instance_ip}...")
|
|
8954
|
+
result = asyncio.run(service.start_server(
|
|
8955
|
+
instance_ip=instance_ip,
|
|
8956
|
+
ssh_user=ssh_user,
|
|
8957
|
+
ssh_key=ssh_key
|
|
8958
|
+
))
|
|
8959
|
+
|
|
8960
|
+
if result["status"] == "started":
|
|
8961
|
+
print("✅ SGLang server started successfully")
|
|
8962
|
+
print(f"🌐 Endpoint: http://{instance_ip}:{port}")
|
|
8963
|
+
else:
|
|
8964
|
+
print(f"❌ Failed to start server: {result['error']}")
|
|
8965
|
+
else:
|
|
8966
|
+
# Local launch
|
|
8967
|
+
launch_cmd = service.generate_launch_command(config)
|
|
8968
|
+
print(f"🚀 Starting SGLang server locally...")
|
|
8969
|
+
print(f"🌐 Endpoint: http://localhost:{port}")
|
|
8970
|
+
print()
|
|
8971
|
+
print("💡 Launch command:")
|
|
8972
|
+
print(launch_cmd)
|
|
8973
|
+
print()
|
|
8974
|
+
print("⚠️ Run the command above to start the server")
|
|
8975
|
+
|
|
8976
|
+
|
|
8977
|
+
@sglang.command()
|
|
8978
|
+
def test():
|
|
8979
|
+
"""Test SGLang installation and configuration"""
|
|
8980
|
+
from ml_services.sglang_service import SGLangService
|
|
8981
|
+
|
|
8982
|
+
service = SGLangService()
|
|
8983
|
+
|
|
8984
|
+
print("🔍 Testing SGLang installation...")
|
|
8985
|
+
result = asyncio.run(service.test_connection())
|
|
8986
|
+
|
|
8987
|
+
if result["status"] == "connected":
|
|
8988
|
+
print("✅ SGLang is installed and available")
|
|
8989
|
+
print(f"📦 Version: {result['sglang_version']}")
|
|
8990
|
+
else:
|
|
8991
|
+
print(f"❌ SGLang test failed: {result['error']}")
|
|
8992
|
+
print("💡 Run 'terradev sglang install' to install SGLang")
|
|
8993
|
+
|
|
8994
|
+
|
|
8995
|
+
# Add command groups to CLI
|
|
8712
8996
|
cli.add_command(sso)
|
|
8997
|
+
cli.add_command(sglang)
|
|
8713
8998
|
|
|
8714
8999
|
|
|
8715
9000
|
if __name__ == '__main__':
|