truss 0.10.9rc601__tar.gz → 0.10.10__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.
Potentially problematic release.
This version of truss might be problematic. Click here for more details.
- {truss-0.10.9rc601 → truss-0.10.10}/PKG-INFO +2 -2
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/python_bindings/README.md +4 -4
- {truss-0.10.9rc601 → truss-0.10.10}/pyproject.toml +3 -2
- {truss-0.10.9rc601 → truss-0.10.10}/truss/base/constants.py +0 -1
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/deploy_checkpoints/deploy_checkpoints.py +30 -22
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/deploy_checkpoints/deploy_checkpoints_helpers.py +8 -2
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/deploy_checkpoints/deploy_full_checkpoints.py +2 -2
- truss-0.10.10/truss/cli/train/deploy_checkpoints/deploy_whisper_checkpoints.py +63 -0
- truss-0.10.10/truss/cli/train/deploy_from_checkpoint_config_whisper.yml +17 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train_commands.py +11 -3
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/image_builder/cache_warmer.py +1 -3
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/image_builder/serving_image_builder.py +24 -32
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/api.py +11 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/core.py +209 -1
- truss-0.10.10/truss/remote/baseten/utils/time.py +15 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/model_wrapper.py +0 -12
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/requirements.txt +1 -1
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/truss_server.py +0 -13
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server.Dockerfile.jinja +1 -1
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/cli/train/test_deploy_checkpoints.py +436 -0
- truss-0.10.10/truss/tests/remote/baseten/conftest.py +18 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/remote/baseten/test_api.py +49 -14
- truss-0.10.10/truss/tests/remote/baseten/test_core.py +763 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_openai/model/model.py +0 -3
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/truss_handle.py +0 -1
- {truss-0.10.9rc601 → truss-0.10.10}/truss-train/truss_train/definitions.py +6 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-train/truss_train/deployment.py +15 -2
- {truss-0.10.9rc601 → truss-0.10.10}/truss-transfer/README.md +2 -2
- truss-0.10.9rc601/truss/tests/remote/baseten/test_core.py +0 -247
- truss-0.10.9rc601/truss/tests/util/test_basetenpointer.py +0 -227
- truss-0.10.9rc601/truss/util/basetenpointer.py +0 -160
- {truss-0.10.9rc601 → truss-0.10.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/.github/pull_request_template.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/.gitignore +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/CODE_OF_CONDUCT.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/CONTRIBUTING.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/LICENSE +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/android-arm-eabi/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/android-arm64/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/darwin-arm64/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/darwin-universal/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/darwin-x64/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/freebsd-x64/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/linux-arm-gnueabihf/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/linux-arm-musleabihf/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/linux-arm64-gnu/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/linux-arm64-musl/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/linux-riscv64-gnu/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/linux-x64-gnu/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/linux-x64-musl/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/win32-arm64-msvc/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/win32-ia32-msvc/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/node_bindings/npm/win32-x64-msvc/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/baseten-performance-client/scripts/README_nodejs.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/context_builder.Dockerfile +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/docs/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/docs/chains/doc_gen/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/docs/contribute/base-images.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/docs/contribute/release.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/api/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/api/definitions.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/base/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/base/custom_types.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/base/errors.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/base/trt_llm_config.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/base/truss_config.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/base/truss_spec.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/chains_commands.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/cli.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/logs/base_watcher.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/logs/model_log_watcher.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/logs/training_log_watcher.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/logs/utils.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/remote_cli.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/common.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/core.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/deploy_checkpoints/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/deploy_checkpoints/deploy_lora_checkpoints.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/deploy_from_checkpoint_config.yml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/metrics_watcher.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/poller.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/types.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/utils/common.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/utils/output.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/cli/utils/self_upgrade.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/docker_build_setup.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/image_builder/image_builder.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/image_builder/util.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/local_loader/docker_build_emulator.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/local_loader/dockerfile_parser.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/local_loader/load_model_local.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/local_loader/truss_module_loader.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/local_loader/utils.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/contexts/truss_context.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/local/local_config.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/local/local_config_handler.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/patch/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/patch/hash.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/patch/signature.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/patch/truss_dir_patch_applier.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/auth.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/custom_types.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/error.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/remote.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/rest_client.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/service.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/utils/status.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/utils/tar.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/baseten/utils/transfer.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/remote_factory.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/remote/truss_remote.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/README.md.jinja +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/base.Dockerfile.jinja +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/cache.Dockerfile.jinja +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/cache_requirements.txt +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/application.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/endpoints.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/context_managers.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/custom_types.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/errors.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/inference_server_controller.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/inference_server_process_controller.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/inference_server_starter.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/truss_patch/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/truss_patch/model_code_patch_applier.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/truss_patch/model_container_patch_applier.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/truss_patch/requirement_name_identifier.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/helpers/truss_patch/system_packages.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/control/server.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/control/requirements.txt +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/copy_cache_files.Dockerfile.jinja +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/custom/examples.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/custom/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/custom/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/custom_python_dx/my_model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/docker_server/proxy.conf.jinja +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/docker_server/supervisord.conf.jinja +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/docker_server_requirements.txt +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/common/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/common/errors.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/common/patches/whisper/patch.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/common/patches.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/common/retry.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/common/schema.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/common/tracing.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/server/main.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/shared/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/shared/dynamic_config_resolver.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/shared/lazy_data_resolver.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/shared/log_config.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/shared/secrets_resolver.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/shared/serialization.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/shared/util.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-audio/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-audio/packages/sigint_patch.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-audio/packages/whisper_trt/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-audio/packages/whisper_trt/assets.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-audio/packages/whisper_trt/batching.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-audio/packages/whisper_trt/custom_types.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-audio/packages/whisper_trt/modeling.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-audio/packages/whisper_trt/tokenizer.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-audio/packages/whisper_trt/utils.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-briton/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/templates/trtllm-briton/src/extension.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/cli/test_cli.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/cli/train/resources/test_deploy_from_checkpoint_config.yml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/cli/train/test_train_cli_core.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/conftest.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/contexts/image_builder/test_serving_image_builder.py +1 -1
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/contexts/local_loader/test_load_local.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/contexts/local_loader/test_truss_module_finder.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/helpers.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/local/test_local_config_handler.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/patch/test_calc_patch.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/patch/test_dir_signature.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/patch/test_hash.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/patch/test_signature.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/patch/test_truss_dir_patch_applier.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/patch/test_types.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/remote/baseten/test_auth.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/remote/baseten/test_remote.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/remote/baseten/test_service.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/remote/test_remote_factory.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/remote/test_truss_remote.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/control/control/helpers/test_context_managers.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/control/control/helpers/test_model_container_patch_applier.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/control/control/helpers/test_requirement_name_identifier.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/control/control/test_endpoints.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/control/control/test_server.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/control/control/test_server_integration.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/core/server/test_dynamic_config_resolver.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/core/server/test_lazy_data_resolver_v2.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/core/server/test_secrets_resolver.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/server/common/test_retry.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/server/test_model_wrapper.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/server/test_schema.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/templates/server/test_truss_server.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_build.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_config.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_context_builder_image.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_control_truss_patching.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_custom_server.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/annotated_types_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/annotated_types_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/annotated_types_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/annotated_types_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/auto-mpg.data +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/context_builder_image_test/Dockerfile +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/context_builder_image_test/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/context_builder_image_test/test.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/gcs_fix/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/gcs_fix/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/gcs_fix/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/gcs_fix/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/happy.ipynb +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/model_load_failure_test/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/model_load_failure_test/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/model_load_failure_test/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/model_load_failure_test/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/patch_ping_test_server/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/patch_ping_test_server/app.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/pima-indians-diabetes.csv +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/readme_int_example.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/readme_no_example.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/readme_str_example.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/server.Dockerfile +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/server_conformance_test_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/server_conformance_test_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/server_conformance_test_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/server_conformance_test_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_async_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_async_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_async_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_async_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_basic_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_basic_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_basic_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_basic_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_build_commands/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_build_commands/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_build_commands/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_build_commands/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_build_commands_failure/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_build_commands_failure/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_build_commands_failure/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_build_commands_failure/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_concurrency_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_concurrency_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_concurrency_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_concurrency_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_custom_server_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_custom_server_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_custom_server_truss/test_docker_image/Dockerfile +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_custom_server_truss/test_docker_image/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_custom_server_truss/test_docker_image/VERSION +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_custom_server_truss/test_docker_image/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_custom_server_truss/test_docker_image/app.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_custom_server_truss/test_docker_image/build_upload_new_image.sh +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_env_vars/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_go_custom_server_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_go_custom_server_truss/docker/Dockerfile +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_go_custom_server_truss/docker/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_go_custom_server_truss/docker/VERSION +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_go_custom_server_truss/docker/build_upload_new_image.sh +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_go_custom_server_truss/docker/main.go +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_openai/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_openai/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_openai/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v1/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v1/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v1/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v1/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v1/requirements.txt +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v2/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v2/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v2/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v2/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_pyantic_v2/requirements.txt +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_requirements_file_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_requirements_file_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_requirements_file_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_requirements_file_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_requirements_file_truss/requirements.txt +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_async_generator_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_async_generator_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_async_generator_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_async_generator_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_read_timeout/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_read_timeout/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_read_timeout/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_read_timeout/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_error/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_error/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_error/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_error/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_error/packages/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_error/packages/helpers_1.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_error/packages/helpers_2.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_tracing/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_tracing/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_tracing/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_streaming_truss_with_tracing/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_trt_llm_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_trt_llm_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_trt_llm_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_trt_llm_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss/examples.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss/model/dummy +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss/packages/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss/packages/test_package/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss/packages/test_package/test.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_server_model_cache_v1/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_server_model_cache_v1/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_server_model_cache_v1/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_server_model_cache_v1/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_server_model_cache_v2/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_server_model_cache_v2/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_server_model_cache_v2/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_server_model_cache_v2/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_with_error/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_with_error/config.yaml +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_with_error/model/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_with_error/model/model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_with_error/packages/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_with_error/packages/helpers_1.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_data/test_truss_with_error/packages/helpers_2.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_docker.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_model_inference.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_model_schema.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_testing_utilities_for_other_tests.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_truss_gatherer.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_truss_handle.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/test_util.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/trt_llm/test_trt_llm_config.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/trt_llm/test_validation.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/util/test_config_checks.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/util/test_env_vars.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/tests/util/test_path.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/trt_llm/config_checks.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/trt_llm/validation.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/build.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/decorators.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/patch/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/patch/calc_patch.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/patch/constants.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/patch/custom_types.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/patch/dir_signature.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/patch/hash.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/patch/local_truss_patch_applier.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/patch/signature.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/patch/truss_dir_patch_applier.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/readme_generator.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/truss_handle/truss_gatherer.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/.truss_ignore +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/docker.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/download.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/env_vars.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/gpu.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/jinja.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/log_utils.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/notebook.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/path.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/requirements.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss/util/user_config.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/examples/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/examples/audio-transcription/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/examples/rag/README.md +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/tests/itest_chain/requirements.txt +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/deployment/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/deployment/code_gen.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/deployment/deployment_client.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/framework.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/private_types.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/public_api.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/public_types.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/py.typed +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/pydantic_numpy.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/reference_code/reference_chainlet.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/reference_code/reference_model.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/remote_chainlet/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/remote_chainlet/model_skeleton.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/remote_chainlet/stub.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/remote_chainlet/utils.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/streaming.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-chains/truss_chains/utils.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-train/truss_train/__init__.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-train/truss_train/loader.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-train/truss_train/public_api.py +0 -0
- {truss-0.10.9rc601 → truss-0.10.10}/truss-transfer/tests/README.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: truss
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.10
|
|
4
4
|
Summary: A seamless bridge from model development to model delivery
|
|
5
5
|
Project-URL: Repository, https://github.com/basetenlabs/truss
|
|
6
6
|
Project-URL: Homepage, https://truss.baseten.co
|
|
@@ -37,7 +37,7 @@ Requires-Dist: rich<14,>=13.4.2
|
|
|
37
37
|
Requires-Dist: ruff>=0.4.8
|
|
38
38
|
Requires-Dist: tenacity>=8.0.1
|
|
39
39
|
Requires-Dist: tomlkit>=0.13.2
|
|
40
|
-
Requires-Dist: truss-transfer==0.0.
|
|
40
|
+
Requires-Dist: truss-transfer==0.0.29
|
|
41
41
|
Requires-Dist: watchfiles<0.20,>=0.19.0
|
|
42
42
|
Description-Content-Type: text/markdown
|
|
43
43
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# High performance client for Baseten.co
|
|
2
2
|
|
|
3
|
-
This library provides a high-performance Python client for Baseten.co endpoints including embeddings, reranking, and classification. It was built for massive concurrent post requests to any URL, also outside of baseten.co. PerformanceClient releases the GIL while performing requests in the Rust, and supports
|
|
3
|
+
This library provides a high-performance Python client for Baseten.co endpoints including embeddings, reranking, and classification. It was built for massive concurrent post requests to any URL, also outside of baseten.co. PerformanceClient releases the GIL while performing requests in the Rust, and supports simultaneous sync and async usage. It was benchmarked with >1200 rps per client in [our blog](https://www.baseten.co/blog/your-client-code-matters-10x-higher-embedding-throughput-with-python-and-rust/). PerformanceClient is built on top of pyo3, reqwest and tokio and is MIT licensed.
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
@@ -93,7 +93,7 @@ Comparison against `pip install openai` for `/v1/embeddings`. Tested with the `.
|
|
|
93
93
|
| 131 072 | 1 024 | 4.63 | 39.07 | 8.44× |
|
|
94
94
|
| 2 097 152 | 16 384 | 70.92 | 903.68 | 12.74× |
|
|
95
95
|
|
|
96
|
-
###
|
|
96
|
+
### General Batch POST
|
|
97
97
|
|
|
98
98
|
The batch_post method is generic. It can be used to send POST requests to any URL, not limited to Baseten endpoints. The input and output can be any JSON item.
|
|
99
99
|
|
|
@@ -179,7 +179,7 @@ async def async_rerank():
|
|
|
179
179
|
```
|
|
180
180
|
|
|
181
181
|
### Classification
|
|
182
|
-
|
|
182
|
+
Predict (classification endpoint) compatible with BEI or text-embeddings-inference.
|
|
183
183
|
#### Synchronous Classification
|
|
184
184
|
|
|
185
185
|
```python
|
|
@@ -230,7 +230,7 @@ Here's an example demonstrating how to catch these errors for the `embed` method
|
|
|
230
230
|
```python
|
|
231
231
|
import requests
|
|
232
232
|
|
|
233
|
-
# client = PerformanceClient(base_url="
|
|
233
|
+
# client = PerformanceClient(base_url="your_baseten_url", api_key="your_baseten_api_key")
|
|
234
234
|
|
|
235
235
|
texts_to_embed = ["Hello world", "Another text example"]
|
|
236
236
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "truss"
|
|
3
|
-
version = "0.10.
|
|
3
|
+
version = "0.10.10"
|
|
4
4
|
description = "A seamless bridge from model development to model delivery"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "Pankaj Gupta", email = "no-reply@baseten.co" },
|
|
@@ -43,7 +43,7 @@ dependencies = [
|
|
|
43
43
|
"ruff>=0.4.8",
|
|
44
44
|
"tenacity>=8.0.1",
|
|
45
45
|
"watchfiles>=0.19.0,<0.20",
|
|
46
|
-
"truss-transfer==0.0.
|
|
46
|
+
"truss-transfer==0.0.29",
|
|
47
47
|
]
|
|
48
48
|
|
|
49
49
|
[project.urls]
|
|
@@ -78,6 +78,7 @@ dev = [
|
|
|
78
78
|
"types-aiofiles>=24.1.0",
|
|
79
79
|
"types-requests==2.31.0.2",
|
|
80
80
|
"types-setuptools>=69.0.0.0,<70",
|
|
81
|
+
"types-python-dateutil>=2.9.0.20250822",
|
|
81
82
|
]
|
|
82
83
|
dev-server = [
|
|
83
84
|
"aiohttp>3.11.13",
|
|
@@ -29,7 +29,6 @@ BEI_REQUIRED_MAX_NUM_TOKENS = 16384
|
|
|
29
29
|
TRTLLM_MIN_MEMORY_REQUEST_GI = 10
|
|
30
30
|
HF_MODELS_API_URL = "https://huggingface.co/api/models"
|
|
31
31
|
HF_ACCESS_TOKEN_KEY = "hf_access_token"
|
|
32
|
-
HF_ACCESS_TOKEN_FILE_NAME = "hf_access_token"
|
|
33
32
|
TRUSSLESS_MAX_PAYLOAD_SIZE = "64M"
|
|
34
33
|
# Alias for TEMPLATES_DIR
|
|
35
34
|
SERVING_DIR: pathlib.Path = TEMPLATES_DIR
|
{truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/deploy_checkpoints/deploy_checkpoints.py
RENAMED
|
@@ -33,6 +33,10 @@ from .deploy_lora_checkpoints import (
|
|
|
33
33
|
hydrate_lora_checkpoint,
|
|
34
34
|
render_vllm_lora_truss_config,
|
|
35
35
|
)
|
|
36
|
+
from .deploy_whisper_checkpoints import (
|
|
37
|
+
hydrate_whisper_checkpoint,
|
|
38
|
+
render_vllm_whisper_truss_config,
|
|
39
|
+
)
|
|
36
40
|
|
|
37
41
|
HF_TOKEN_ENVVAR_NAME = "HF_TOKEN"
|
|
38
42
|
# If we change this, make sure to update the logic in backend codebase
|
|
@@ -178,6 +182,8 @@ def hydrate_checkpoint(
|
|
|
178
182
|
return hydrate_lora_checkpoint(job_id, checkpoint_id, checkpoint)
|
|
179
183
|
elif checkpoint_type.lower() == ModelWeightsFormat.FULL.value:
|
|
180
184
|
return hydrate_full_checkpoint(job_id, checkpoint_id, checkpoint)
|
|
185
|
+
elif checkpoint_type.lower() == ModelWeightsFormat.WHISPER.value:
|
|
186
|
+
return hydrate_whisper_checkpoint(job_id, checkpoint_id, checkpoint)
|
|
181
187
|
else:
|
|
182
188
|
raise ValueError(
|
|
183
189
|
f"Unsupported checkpoint type: {checkpoint_type}. Contact Baseten for support with other checkpoint types."
|
|
@@ -196,6 +202,8 @@ def _render_truss_config_for_checkpoint_deployment(
|
|
|
196
202
|
return render_vllm_lora_truss_config(checkpoint_deploy)
|
|
197
203
|
elif checkpoint_deploy.model_weight_format == ModelWeightsFormat.FULL:
|
|
198
204
|
return render_vllm_full_truss_config(checkpoint_deploy)
|
|
205
|
+
elif checkpoint_deploy.model_weight_format == ModelWeightsFormat.WHISPER:
|
|
206
|
+
return render_vllm_whisper_truss_config(checkpoint_deploy)
|
|
199
207
|
else:
|
|
200
208
|
raise ValueError(
|
|
201
209
|
f"Unsupported model weight format: {checkpoint_deploy.model_weight_format}. Please upgrade to the latest Truss version to access the latest supported formats. Contact Baseten if you would like us to support additional formats."
|
|
@@ -288,18 +296,6 @@ def _get_checkpoint_ids_to_deploy(
|
|
|
288
296
|
return checkpoint_ids
|
|
289
297
|
|
|
290
298
|
|
|
291
|
-
def _select_single_checkpoint(checkpoint_id_options: List[str]) -> List[str]:
|
|
292
|
-
"""Select a single checkpoint using interactive prompt."""
|
|
293
|
-
checkpoint_id = inquirer.select(
|
|
294
|
-
message="Select the checkpoint to deploy:", choices=checkpoint_id_options
|
|
295
|
-
).execute()
|
|
296
|
-
|
|
297
|
-
if not checkpoint_id:
|
|
298
|
-
raise click.UsageError("A checkpoint must be selected.")
|
|
299
|
-
|
|
300
|
-
return [checkpoint_id]
|
|
301
|
-
|
|
302
|
-
|
|
303
299
|
def _select_multiple_checkpoints(checkpoint_id_options: List[str]) -> List[str]:
|
|
304
300
|
"""Select multiple checkpoints using interactive checkbox."""
|
|
305
301
|
checkpoint_ids = inquirer.checkbox(
|
|
@@ -351,6 +347,8 @@ def _get_base_model_id(user_input: Optional[str], checkpoint: dict) -> Optional[
|
|
|
351
347
|
)
|
|
352
348
|
elif checkpoint.get("checkpoint_type") == ModelWeightsFormat.FULL.value.lower():
|
|
353
349
|
return None
|
|
350
|
+
elif checkpoint.get("checkpoint_type") == ModelWeightsFormat.WHISPER.value.lower():
|
|
351
|
+
return None
|
|
354
352
|
else:
|
|
355
353
|
base_model_id = inquirer.text(message="Enter the base model id.").execute()
|
|
356
354
|
if not base_model_id:
|
|
@@ -416,18 +414,28 @@ def _validate_selected_checkpoints(
|
|
|
416
414
|
"Unable to infer model weight format. Reach out to Baseten for support."
|
|
417
415
|
)
|
|
418
416
|
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
417
|
+
validation_rules = {
|
|
418
|
+
ModelWeightsFormat.FULL.value: {
|
|
419
|
+
"error_message": "Full checkpoints are not supported for multiple checkpoints. Please select a single checkpoint.",
|
|
420
|
+
"reason": "vLLM does not support multiple checkpoints when any checkpoint is full model weights.",
|
|
421
|
+
},
|
|
422
|
+
ModelWeightsFormat.WHISPER.value: {
|
|
423
|
+
"error_message": "Whisper checkpoints are not supported for multiple checkpoints. Please select a single checkpoint.",
|
|
424
|
+
"reason": "vLLM does not support multiple checkpoints when any checkpoint is whisper model weights.",
|
|
425
|
+
},
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
# Check each checkpoint type that has restrictions
|
|
429
|
+
for checkpoint_type, rule in validation_rules.items():
|
|
430
|
+
has_restricted_checkpoint = any(
|
|
431
|
+
response_checkpoints[checkpoint_id].get("checkpoint_type")
|
|
432
|
+
== checkpoint_type
|
|
433
|
+
for checkpoint_id in checkpoint_ids
|
|
429
434
|
)
|
|
430
435
|
|
|
436
|
+
if has_restricted_checkpoint and len(checkpoint_ids) > 1:
|
|
437
|
+
raise ValueError(rule["error_message"])
|
|
438
|
+
|
|
431
439
|
|
|
432
440
|
def get_hf_secret_name(user_input: Union[str, SecretReference, None]) -> str:
|
|
433
441
|
"""Get HuggingFace secret name from user input or prompt for it."""
|
{truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/deploy_checkpoints/deploy_checkpoints_helpers.py
RENAMED
|
@@ -3,7 +3,7 @@ from pathlib import Path
|
|
|
3
3
|
|
|
4
4
|
from truss.base import truss_config
|
|
5
5
|
from truss.cli.train.types import DeployCheckpointsConfigComplete
|
|
6
|
-
from truss_train.definitions import SecretReference
|
|
6
|
+
from truss_train.definitions import ModelWeightsFormat, SecretReference
|
|
7
7
|
|
|
8
8
|
START_COMMAND_ENVVAR_NAME = "BT_DOCKER_SERVER_START_CMD"
|
|
9
9
|
|
|
@@ -12,8 +12,14 @@ def setup_base_truss_config(
|
|
|
12
12
|
checkpoint_deploy: DeployCheckpointsConfigComplete,
|
|
13
13
|
) -> truss_config.TrussConfig:
|
|
14
14
|
"""Set up the base truss config with common properties."""
|
|
15
|
+
truss_deploy_config = None
|
|
16
|
+
truss_base_file = (
|
|
17
|
+
"deploy_from_checkpoint_config_whisper.yml"
|
|
18
|
+
if checkpoint_deploy.model_weight_format == ModelWeightsFormat.WHISPER
|
|
19
|
+
else "deploy_from_checkpoint_config.yml"
|
|
20
|
+
)
|
|
15
21
|
truss_deploy_config = truss_config.TrussConfig.from_yaml(
|
|
16
|
-
Path(os.path.dirname(__file__), "..",
|
|
22
|
+
Path(os.path.dirname(__file__), "..", truss_base_file)
|
|
17
23
|
)
|
|
18
24
|
if not truss_deploy_config.docker_server:
|
|
19
25
|
raise ValueError(
|
{truss-0.10.9rc601 → truss-0.10.10}/truss/cli/train/deploy_checkpoints/deploy_full_checkpoints.py
RENAMED
|
@@ -40,7 +40,7 @@ def render_vllm_full_truss_config(
|
|
|
40
40
|
truss_deploy_config, checkpoint_deploy
|
|
41
41
|
)
|
|
42
42
|
|
|
43
|
-
checkpoint_str =
|
|
43
|
+
checkpoint_str = build_full_checkpoint_string(truss_deploy_config)
|
|
44
44
|
|
|
45
45
|
accelerator = checkpoint_deploy.compute.accelerator
|
|
46
46
|
|
|
@@ -71,7 +71,7 @@ def hydrate_full_checkpoint(
|
|
|
71
71
|
return FullCheckpoint(training_job_id=job_id, paths=paths)
|
|
72
72
|
|
|
73
73
|
|
|
74
|
-
def
|
|
74
|
+
def build_full_checkpoint_string(truss_deploy_config) -> str:
|
|
75
75
|
"""Build checkpoint string from artifact references for full checkpoints.
|
|
76
76
|
|
|
77
77
|
Args:
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from jinja2 import Template
|
|
2
|
+
|
|
3
|
+
from truss.base import truss_config
|
|
4
|
+
from truss.cli.train.deploy_checkpoints.deploy_checkpoints_helpers import (
|
|
5
|
+
START_COMMAND_ENVVAR_NAME,
|
|
6
|
+
)
|
|
7
|
+
from truss.cli.train.deploy_checkpoints.deploy_full_checkpoints import (
|
|
8
|
+
build_full_checkpoint_string,
|
|
9
|
+
)
|
|
10
|
+
from truss.cli.train.types import DeployCheckpointsConfigComplete
|
|
11
|
+
from truss_train.definitions import WhisperCheckpoint
|
|
12
|
+
|
|
13
|
+
from .deploy_checkpoints_helpers import (
|
|
14
|
+
setup_base_truss_config,
|
|
15
|
+
setup_environment_variables_and_secrets,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
VLLM_WHISPER_START_COMMAND = Template(
|
|
19
|
+
"sh -c '{% if envvars %}{{ envvars }} {% endif %}"
|
|
20
|
+
'HF_TOKEN="$$(cat /secrets/hf_access_token)" && export HF_TOKEN && '
|
|
21
|
+
"vllm serve {{ model_path }} --port 8000 --tensor-parallel-size {{ specify_tensor_parallelism }}'"
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def render_vllm_whisper_truss_config(
|
|
26
|
+
checkpoint_deploy: DeployCheckpointsConfigComplete,
|
|
27
|
+
) -> truss_config.TrussConfig:
|
|
28
|
+
"""Render truss config specifically for whisper checkpoints using vLLM."""
|
|
29
|
+
truss_deploy_config = setup_base_truss_config(checkpoint_deploy)
|
|
30
|
+
|
|
31
|
+
start_command_envvars = setup_environment_variables_and_secrets(
|
|
32
|
+
truss_deploy_config, checkpoint_deploy
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
checkpoint_str = build_full_checkpoint_string(truss_deploy_config)
|
|
36
|
+
|
|
37
|
+
accelerator = checkpoint_deploy.compute.accelerator
|
|
38
|
+
|
|
39
|
+
start_command_args = {
|
|
40
|
+
"model_path": checkpoint_str,
|
|
41
|
+
"envvars": start_command_envvars,
|
|
42
|
+
"specify_tensor_parallelism": accelerator.count if accelerator else 1,
|
|
43
|
+
}
|
|
44
|
+
# Note: we set the start command as an environment variable in supervisord config.
|
|
45
|
+
# This is so that we don't have to change the supervisord config when the start command changes.
|
|
46
|
+
# Our goal is to reduce the number of times we need to rebuild the image, and allow us to deploy faster.
|
|
47
|
+
start_command = VLLM_WHISPER_START_COMMAND.render(**start_command_args)
|
|
48
|
+
truss_deploy_config.environment_variables[START_COMMAND_ENVVAR_NAME] = start_command
|
|
49
|
+
# Note: supervisord uses the convention %(ENV_VAR_NAME)s to access environment variable VAR_NAME
|
|
50
|
+
truss_deploy_config.docker_server.start_command = ( # type: ignore[union-attr]
|
|
51
|
+
f"%(ENV_{START_COMMAND_ENVVAR_NAME})s"
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
return truss_deploy_config
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def hydrate_whisper_checkpoint(
|
|
58
|
+
job_id: str, checkpoint_id: str, checkpoint: dict
|
|
59
|
+
) -> WhisperCheckpoint:
|
|
60
|
+
"""Create a Checkpoint object for whisper model weights."""
|
|
61
|
+
# NOTE: Slash at the end is important since it means the checkpoint is a directory
|
|
62
|
+
paths = [f"rank-0/{checkpoint_id}/"]
|
|
63
|
+
return WhisperCheckpoint(training_job_id=job_id, paths=paths)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
base_image:
|
|
2
|
+
image: vllm/vllm-openai:latest
|
|
3
|
+
|
|
4
|
+
docker_server:
|
|
5
|
+
start_command: sh -c "" # replaced when deploying
|
|
6
|
+
readiness_endpoint: /health
|
|
7
|
+
liveness_endpoint: /health
|
|
8
|
+
predict_endpoint: /v1/audio/transcriptions
|
|
9
|
+
server_port: 8000
|
|
10
|
+
runtime:
|
|
11
|
+
predict_concurrency : 256
|
|
12
|
+
environment_variables:
|
|
13
|
+
VLLM_LOGGING_LEVEL: WARNING
|
|
14
|
+
VLLM_USE_V1: 0
|
|
15
|
+
HF_HUB_ENABLE_HF_TRANSFER: 1
|
|
16
|
+
requirements:
|
|
17
|
+
- vllm[audio]
|
|
@@ -13,6 +13,7 @@ from truss.cli.train import common as train_common
|
|
|
13
13
|
from truss.cli.train import core
|
|
14
14
|
from truss.cli.utils import common
|
|
15
15
|
from truss.cli.utils.output import console, error_console
|
|
16
|
+
from truss.remote.baseten.core import get_training_job_logs_with_pagination
|
|
16
17
|
from truss.remote.baseten.remote import BasetenRemote
|
|
17
18
|
from truss.remote.remote_factory import RemoteFactory
|
|
18
19
|
|
|
@@ -72,8 +73,11 @@ def _prepare_click_context(f: click.Command, params: dict) -> click.Context:
|
|
|
72
73
|
@click.argument("config", type=Path, required=True)
|
|
73
74
|
@click.option("--remote", type=str, required=False, help="Remote to use")
|
|
74
75
|
@click.option("--tail", is_flag=True, help="Tail for status + logs after push.")
|
|
76
|
+
@click.option("--job-name", type=str, required=False, help="Name of the training job.")
|
|
75
77
|
@common.common_options()
|
|
76
|
-
def push_training_job(
|
|
78
|
+
def push_training_job(
|
|
79
|
+
config: Path, remote: Optional[str], tail: bool, job_name: Optional[str]
|
|
80
|
+
):
|
|
77
81
|
"""Run a training job"""
|
|
78
82
|
from truss_train import deployment
|
|
79
83
|
|
|
@@ -84,7 +88,9 @@ def push_training_job(config: Path, remote: Optional[str], tail: bool):
|
|
|
84
88
|
remote_provider: BasetenRemote = cast(
|
|
85
89
|
BasetenRemote, RemoteFactory.create(remote=remote)
|
|
86
90
|
)
|
|
87
|
-
job_resp = deployment.create_training_job_from_file(
|
|
91
|
+
job_resp = deployment.create_training_job_from_file(
|
|
92
|
+
remote_provider, config, job_name
|
|
93
|
+
)
|
|
88
94
|
|
|
89
95
|
# Note: This post create logic needs to happen outside the context
|
|
90
96
|
# of the above context manager, as only one console session can be active
|
|
@@ -138,7 +144,9 @@ def get_job_logs(
|
|
|
138
144
|
)
|
|
139
145
|
|
|
140
146
|
if not tail:
|
|
141
|
-
logs =
|
|
147
|
+
logs = get_training_job_logs_with_pagination(
|
|
148
|
+
remote_provider.api, project_id, job_id
|
|
149
|
+
)
|
|
142
150
|
for log in cli_log_utils.parse_logs(logs):
|
|
143
151
|
cli_log_utils.output_log(log)
|
|
144
152
|
else:
|
|
@@ -15,8 +15,6 @@ from botocore.exceptions import ClientError, NoCredentialsError
|
|
|
15
15
|
from google.cloud import storage
|
|
16
16
|
from huggingface_hub import hf_hub_download
|
|
17
17
|
|
|
18
|
-
from truss.base import constants
|
|
19
|
-
|
|
20
18
|
B10CP_PATH_TRUSS_ENV_VAR_NAME = "B10CP_PATH_TRUSS"
|
|
21
19
|
|
|
22
20
|
GCS_CREDENTIALS = "/app/data/service_account.json"
|
|
@@ -110,7 +108,7 @@ class RepositoryFile(ABC):
|
|
|
110
108
|
|
|
111
109
|
class HuggingFaceFile(RepositoryFile):
|
|
112
110
|
def download_to_cache(self):
|
|
113
|
-
secret_path = Path(
|
|
111
|
+
secret_path = Path("/etc/secrets/hf-access-token")
|
|
114
112
|
secret = secret_path.read_text().strip() if secret_path.exists() else None
|
|
115
113
|
try:
|
|
116
114
|
hf_hub_download(
|
|
@@ -73,7 +73,6 @@ from truss.contexts.image_builder.util import (
|
|
|
73
73
|
)
|
|
74
74
|
from truss.contexts.truss_context import TrussContext
|
|
75
75
|
from truss.truss_handle.patch.hash import directory_content_hash
|
|
76
|
-
from truss.util.basetenpointer import model_cache_hf_to_b10ptr
|
|
77
76
|
from truss.util.jinja import read_template_from_fs
|
|
78
77
|
from truss.util.path import (
|
|
79
78
|
build_truss_target_directory,
|
|
@@ -93,6 +92,8 @@ USER_TRUSS_IGNORE_FILE = ".truss_ignore"
|
|
|
93
92
|
GCS_CREDENTIALS = "service_account.json"
|
|
94
93
|
S3_CREDENTIALS = "s3_credentials.json"
|
|
95
94
|
|
|
95
|
+
HF_ACCESS_TOKEN_FILE_NAME = "hf-access-token"
|
|
96
|
+
|
|
96
97
|
CLOUD_BUCKET_CACHE = MODEL_CACHE_PATH
|
|
97
98
|
|
|
98
99
|
HF_SOURCE_DIR = Path("./root/.cache/huggingface/hub/")
|
|
@@ -324,36 +325,27 @@ def get_files_to_model_cache_v1(config: TrussConfig, truss_dir: Path, build_dir:
|
|
|
324
325
|
def build_model_cache_v2_and_copy_bptr_manifest(config: TrussConfig, build_dir: Path):
|
|
325
326
|
assert config.model_cache.is_v2
|
|
326
327
|
assert all(model.volume_folder is not None for model in config.model_cache.models)
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
f.write(basetenpointer_json)
|
|
349
|
-
except Exception as e:
|
|
350
|
-
logging.warning(f"debug: failed to create BasetenPointer: {e}")
|
|
351
|
-
# TODO: remove below section + remove logging lines above.
|
|
352
|
-
# builds BasetenManifest for caching
|
|
353
|
-
basetenpointers = model_cache_hf_to_b10ptr(config.model_cache)
|
|
354
|
-
# write json of bastenpointers into build dir
|
|
355
|
-
with open(build_dir / "bptr-manifest", "w") as f:
|
|
356
|
-
f.write(basetenpointers.model_dump_json())
|
|
328
|
+
from truss_transfer import PyModelRepo, create_basetenpointer_from_models
|
|
329
|
+
|
|
330
|
+
py_models = [
|
|
331
|
+
PyModelRepo(
|
|
332
|
+
repo_id=model.repo_id,
|
|
333
|
+
revision=model.revision,
|
|
334
|
+
runtime_secret_name=model.runtime_secret_name,
|
|
335
|
+
allow_patterns=model.allow_patterns,
|
|
336
|
+
ignore_patterns=model.ignore_patterns,
|
|
337
|
+
volume_folder=model.volume_folder,
|
|
338
|
+
kind=model.kind.value,
|
|
339
|
+
)
|
|
340
|
+
for model in config.model_cache.models
|
|
341
|
+
]
|
|
342
|
+
# create BasetenPointer from models
|
|
343
|
+
basetenpointer_json = create_basetenpointer_from_models(models=py_models)
|
|
344
|
+
bptr_py = json.loads(basetenpointer_json)["pointers"]
|
|
345
|
+
logging.info(f"created ({len(bptr_py)}) Basetenpointer")
|
|
346
|
+
logging.info(f"pointers json: {basetenpointer_json}")
|
|
347
|
+
with open(build_dir / "bptr-manifest", "w") as f:
|
|
348
|
+
f.write(basetenpointer_json)
|
|
357
349
|
|
|
358
350
|
|
|
359
351
|
def generate_docker_server_nginx_config(build_dir, config):
|
|
@@ -819,7 +811,7 @@ class ServingImageBuilder(ImageBuilder):
|
|
|
819
811
|
model_cache_v1=config.model_cache.is_v1,
|
|
820
812
|
model_cache_v2=config.model_cache.is_v2,
|
|
821
813
|
hf_access_token=hf_access_token,
|
|
822
|
-
hf_access_token_file_name=
|
|
814
|
+
hf_access_token_file_name=HF_ACCESS_TOKEN_FILE_NAME,
|
|
823
815
|
external_data_files=external_data_files,
|
|
824
816
|
build_commands=build_commands,
|
|
825
817
|
use_local_src=config.use_local_src,
|
|
@@ -669,6 +669,17 @@ class BasetenApi:
|
|
|
669
669
|
# NB(nikhil): reverse order so latest logs are at the end
|
|
670
670
|
return resp_json["logs"][::-1]
|
|
671
671
|
|
|
672
|
+
def _fetch_log_batch(
|
|
673
|
+
self, project_id: str, job_id: str, query_params: Dict[str, Any]
|
|
674
|
+
) -> List[Any]:
|
|
675
|
+
"""
|
|
676
|
+
Fetch a single batch of logs from the API.
|
|
677
|
+
"""
|
|
678
|
+
resp_json = self._rest_api_client.post(
|
|
679
|
+
f"v1/training_projects/{project_id}/jobs/{job_id}/logs", body=query_params
|
|
680
|
+
)
|
|
681
|
+
return resp_json["logs"]
|
|
682
|
+
|
|
672
683
|
def get_training_job_checkpoint_presigned_url(
|
|
673
684
|
self, project_id: str, job_id: str, page_size: int = 100
|
|
674
685
|
) -> List[Dict[str, str]]:
|