aws / aws/sagemaker-python-sdk

Naming discrepancy between `env` in Processing and `environment` in Estimator

Đã đóng
#6,214 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
2.3k
Fork
1.3k
Merge trung bình
1 ngày 22 giờ
Pull request đã merge (30 ngày)
35

Mô tả

# Describe the feature you'd like
There is a discrepancy on passing environment variables in Processing and Estimator. The parameter is called `env` in Processing and `environment` in Estimator.

I would like these to be aligned. For backwards compatibility sake, this should probably be manifested through a `environment_variables` parameter, but any solution would work for me.

## The problem
The problem is that we cannot have a unified interface to these entities using `**kwargs` to pass arguments without manually parsing a parameter ourselves.

Current situation van be something like this if we use `env` for both situations:

```python
def data_processing(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)

return Processing(**kwargs)

def model_training(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)

env_vars = kwargs.pop("env")
if env_vars:
kwargs["environment"] = env_vars

return Estimator(**kwargs)

data_processing(environment="dev", env={"MY_VAR": 42})
model_training(environment="dev", env={"MY_VAR": 67})
```

Or with a more compatible interface

```python
def data_processing(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)

env_vars = kwargs.pop("environment_variables")
if env_vars:
kwargs["env"] = env_vars

return Processing(**kwargs)

def model_training(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)

env_vars = kwargs.pop("environment_variables")
if env_vars:
kwargs["environment"] = env_vars

return Estimator(**kwargs)

data_processing(environment="dev", environment_variables={"MY_VAR": 42})
model_training(environment="dev", environment_variables={"MY_VAR": 67})
```

Ideally, we would want it to look like this because both classes accept a `environment_variables` parameter:

```python
def data_processing(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)

return Processing(**kwargs)

def model_training(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)

return Estimator(**kwargs)

data_processing(environment="dev", environment_variables={"MY_VAR": 42})
model_training(environment="dev", environment_variables={"MY_VAR": 67})
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng cách xác định các điểm vào của Processing và Estimator cùng các tham số biến môi trường hiện có của chúng. So sánh cách `env` và `environment` được cung cấp, sau đó xác định một giao diện dùng chung tương thích ngược; công việc được xem là hoàn tất khi cả hai thực thể đều chấp nhận tham số đã được căn chỉnh mà không làm hỏng cách sử dụng hiện có.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
aws, python
Lĩnh vực
cloud, machine-learning
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.