Train
enhancement.UnpairedTrainer
Enhancement 모델을 학습시키기 위한 UnpairedTrainer class 입니다.
Usage
demo/train.py 참고
build(config, data)
classmethod
UnpairedTrainer class의 instance를 생성합니다.
Parameters:
Returns:
| Name | Type | Description |
|---|---|---|
UnpairedTrainer |
UnpairedTrainer
|
build가 완료된 enhancement.UnpairedTrainer class의 instance를 반환합니다. |
to_device(device)
Trainer의 device를 변경합니다. (cpu/gpu)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
device |
Union[device, str, int]
|
변경하고자 하는 device 입니다.
|
required |
Returns: None: None
train_one_step()
학습을 1스텝 수행하고, 결과를 반환합니다.
Returns:
validation_enabled()
Trainer가 validation이 가능한지 bool로 반환합니다. 현재 IEN은 validation을 지원하지 않습니다.
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
Trainer가 validation이 가능하면 True를, 불가능하다면 False를 반환합니다. |
post_train_process(save_root)
PairedTrainer의 학습에 사용할 데이터를 생성하고, PairedTrainer의 build에 필요한 data config를 리턴합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
save_root |
str
|
학습에 사용할 데이터를 저장할 root path 입니다. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
Usage
post_train_process로 PairedTrainer의 학습에 사용할 데이터를 생성하여 build 하는 예시입니다. 상세 내용은 demo/train.py를 참고해주세요.
pause(checkpoint_path, metadata=None, password=None)
완료된 step의 학습 상태를 저장하고 학습을 일시 정지합니다 (Continuous Training).
Model, 모든 optimizer/scheduler, step/epoch/epoch_step, training loader 위치, RNG,
validation warm-up과 persistent worker의 iterator 생성 여부를 저장합니다.
CycleGAN의 과거 생성 이미지를 담는 두 image pool도 저장합니다.
성공한 뒤에는 resume() 전까지 추가 학습할 수 없습니다.
저장 성공을 확인한 뒤 프로세스를 종료하는 것은 제품에서 처리합니다.
SaigeToolkit >=2.8.3,<2.9.0과 use_infinite_sampler=True인 training loader가 필요합니다.
Public build()는 이 설정을 사용합니다. Finite loader는 기존 학습을 지원하며,
pause()/resume()은 오류 code -416336을 반환합니다.
일반 save_checkpoint() 형식은 유지되며, 학습 재개에는 이 API로 저장한 파일이 필요합니다.
학습 실패 시 누적 gradient를 비웁니다. Optimizer/scaler 갱신 단계 이후 실패하면 resume()으로 복원해야 다시 학습할 수 있습니다. Pause 성공 후 training loader를 닫습니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
재개용 checkpoint를 저장할 path입니다. |
required |
metadata |
Optional[Dict[str, Any]]
|
함께 저장할 caller의 추가 정보입니다. 생략하면 빈 dictionary를 저장합니다. Defaults to None. |
None
|
password |
Optional[str]
|
checkpoint 암호화에 사용할 password입니다. None이면 암호화하지 않습니다. Defaults to None. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
성공 시 |
resume(checkpoint_path, password=None)
Pause checkpoint를 복원하여 다음 step부터 학습하고 저장된 metadata를 반환합니다.
Module major/minor와 지원하는 training state format_version이 같아야 하며,
patch 버전 차이는 양방향으로 허용합니다.
같은 config, 데이터 내용과 순서, transform, library version을 사용해야 합니다.
새 프로세스에서는 같은 Trainer를 build하고 저장할 때와 같은 device 종류를
to_device()로 선택한 뒤 호출합니다. 같은 Trainer에서 재개할 수도 있습니다.
일반 checkpoint는 기존 load_checkpoint()로 읽습니다.
Training augmentation은 global Python/NumPy/Torch CPU RNG를 복원합니다. Private RNG, CUDA transform, 상태가 변하는 dataset은 별도 state 관리가 필요합니다. Persistent validation worker 내부의 RNG는 저장하지 않으므로 해당 validation transform은 결정적이어야 합니다. Iterator 생성 여부가 없는 이전 pause 파일은 읽을 수 있지만 validation worker lifecycle에 따른 RNG 일치는 보장하지 않습니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
|
required |
password |
Optional[str]
|
저장할 때 사용한 password입니다. 암호화하지 않았다면 None입니다. Defaults to None. |
None
|
Returns:
| Type | Description |
|---|---|
Dict[str, Any]
|
Dict[str, Any]: 성공 시 |
Usage
새 프로세스에서 학습을 재개하는 예시입니다.
error, message, trainer = UnpairedTrainer.build(config, data)
assert error >= 0, message
error, message, _ = trainer.to_device(device)
assert error >= 0, message
error, message, metadata = trainer.resume("training.pause.pt", password=password)
assert error >= 0, message
# pause() 예제에서 caller가 저장한 진행률을 사용합니다.
for step in range(metadata["completed_steps"], total_steps):
error, message, result = trainer.train_one_step()
assert error >= 0, message
save_checkpoint(checkpoint_path, metadata=None, password=None)
현재 Trainer의 상태를 암호화하여 저장합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
checkpoint를 저장할 path 입니다. |
required |
metadata |
Optional[Dict]
|
checkpoint에 저장할 추가 metadata. Defaults to None. |
None
|
password |
Optional[str]
|
checkpoint 파일에서 중요한 정보를 암호화 하는데 사용되는 password 입니다. None이면 암호화하지 않습니다. Defaults to None. |
None
|
Returns: None: None
load_checkpoint(checkpoint_path, password=None)
저장한 checkpoint로부터 Trainer의 상태를 불러오고, metadata를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
load할 checkpoint가 저장 되어 있는 path 입니다. |
required |
password |
Optional[str]
|
checkpoint 파일에서 중요한 정보를 복호화 하는데 사용되는 password 입니다. None이면 복호화하지 않습니다. Defaults to None. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
save_checkpoint에서 저장했던 metadata 입니다. |
enhancement.PairedTrainer
Enhancement 모델을 학습시키기 위한 PairedTrainer class 입니다.
Usage
demo/train.py 참고
build(config, data)
classmethod
PairedTrainer class의 instance를 생성합니다.
Parameters:
Returns:
| Name | Type | Description |
|---|---|---|
PairedTrainer |
PairedTrainer
|
build가 완료된 enhancement.PairedTrainer class의 instance를 반환합니다. |
to_device(device)
Trainer의 device를 변경합니다. (cpu/gpu)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
device |
Union[device, str, int]
|
변경하고자 하는 device 입니다.
|
required |
Returns: None: None
train_one_step()
학습을 1스텝 수행하고, 결과를 반환합니다.
Returns:
validation_enabled()
Trainer가 validation이 가능한지 bool로 반환합니다. 현재 IEN은 validation을 지원하지 않습니다.
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
Trainer가 validation이 가능하면 True를, 불가능하다면 False를 반환합니다. |
post_train_process()
pause(checkpoint_path, metadata=None, password=None)
완료된 step의 학습 상태를 저장하고 학습을 일시 정지합니다 (Continuous Training).
Model, optimizer/scheduler, step/epoch/epoch_step, training loader 위치, RNG,
validation warm-up과 persistent worker의 iterator 생성 여부를 저장합니다.
성공한 뒤에는 resume() 전까지 추가 학습할 수 없습니다.
저장 성공을 확인한 뒤 프로세스를 종료하는 것은 제품에서 처리합니다.
SaigeToolkit >=2.8.3,<2.9.0과 use_infinite_sampler=True인 training loader가 필요합니다.
Public build()는 이 설정을 사용합니다. Finite loader는 기존 학습을 지원하며,
pause()/resume()은 오류 code -416336을 반환합니다.
일반 save_checkpoint() 형식은 유지되며, 학습 재개에는 이 API로 저장한 파일이 필요합니다.
학습 실패 시 누적 gradient를 비웁니다. Optimizer/scaler 갱신 단계 이후 실패하면 resume()으로 복원해야 다시 학습할 수 있습니다. Pause 성공 후 training loader를 닫습니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
재개용 checkpoint를 저장할 path입니다. |
required |
metadata |
Optional[Dict[str, Any]]
|
함께 저장할 caller의 추가 정보입니다. 생략하면 빈 dictionary를 저장합니다. Defaults to None. |
None
|
password |
Optional[str]
|
checkpoint 암호화에 사용할 password입니다. None이면 암호화하지 않습니다. Defaults to None. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
성공 시 |
resume(checkpoint_path, password=None)
Pause checkpoint를 복원하여 다음 step부터 학습하고 저장된 metadata를 반환합니다.
Module major/minor와 지원하는 training state format_version이 같아야 하며,
patch 버전 차이는 양방향으로 허용합니다.
같은 config, 데이터 내용과 순서, transform, library version을 사용해야 합니다.
새 프로세스에서는 같은 Trainer를 build하고 저장할 때와 같은 device 종류를
to_device()로 선택한 뒤 호출합니다. 같은 Trainer에서 재개할 수도 있습니다.
일반 checkpoint는 기존 load_checkpoint()로 읽습니다.
Training augmentation은 global Python/NumPy/Torch CPU RNG를 복원합니다. Private RNG, CUDA transform, 상태가 변하는 dataset은 별도 state 관리가 필요합니다. Persistent validation worker 내부의 RNG는 저장하지 않으므로 해당 validation transform은 결정적이어야 합니다. Iterator 생성 여부가 없는 이전 pause 파일은 읽을 수 있지만 validation worker lifecycle에 따른 RNG 일치는 보장하지 않습니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
|
required |
password |
Optional[str]
|
저장할 때 사용한 password입니다. 암호화하지 않았다면 None입니다. Defaults to None. |
None
|
Returns:
| Type | Description |
|---|---|
Dict[str, Any]
|
Dict[str, Any]: 성공 시 |
Usage
새 프로세스에서 학습을 재개하는 예시입니다.
error, message, trainer = PairedTrainer.build(config, data)
assert error >= 0, message
error, message, _ = trainer.to_device(device)
assert error >= 0, message
error, message, metadata = trainer.resume("training.pause.pt", password=password)
assert error >= 0, message
# pause() 예제에서 caller가 저장한 진행률을 사용합니다.
for step in range(metadata["completed_steps"], total_steps):
error, message, result = trainer.train_one_step()
assert error >= 0, message
save_checkpoint(checkpoint_path, metadata=None, password=None)
현재 Trainer의 상태를 암호화하여 저장합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
checkpoint를 저장할 path 입니다. |
required |
metadata |
Optional[Dict]
|
checkpoint에 저장할 추가 metadata. Defaults to None. |
None
|
password |
Optional[str]
|
checkpoint 파일에서 중요한 정보를 암호화 하는데 사용되는 password 입니다. None이면 암호화하지 않습니다. Defaults to None. |
None
|
Returns: None: None
load_checkpoint(checkpoint_path, password=None)
저장한 checkpoint로부터 Trainer의 상태를 불러오고, metadata를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
load할 checkpoint가 저장 되어 있는 path 입니다. |
required |
password |
Optional[str]
|
checkpoint 파일에서 중요한 정보를 복호화 하는데 사용되는 password 입니다. None이면 복호화하지 않습니다. Defaults to None. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
Dict
|
save_checkpoint에서 저장했던 metadata 입니다. |