TensorFlow рдХреЗ рд╕рд╛рде рдЧрд╣рди рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ (DNN) рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, Azure рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ TensorFlow
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ Estimator
рдореВрд▓реНрдпрд╛рдВрдХрди рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред Azure SDK рдореЗрдВ TensorFlow
рдореВрд▓реНрдпрд╛рдВрдХрди TensorFlow
( tf.estimator.Estimator
рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛) рдПрдХрд▓ рдиреЛрдб рдХреЗ рд▓рд┐рдП TensorFlow рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛рд░реНрдп рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ Azure рд╡рд┐рд╡рд╛рдж рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд░рди рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдПрдХрд▓-рд╕рд╛рдЗрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг
TensorFlow
рдореВрд▓реНрдпрд╛рдВрдХрди TensorFlow
рд╕рд╛рде рд╕реАрдЦрдирд╛ Estimator
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд▓реЗрдЦ рдФрд░ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкрдврд╝реЗрдВред
TensorFlow рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ TensorFlow
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдХреНрд╖реНрдп рдХрдВрдкреНрдпреВрдЯ рд╕рдВрд╕рд╛рдзрди рдХрд╛ compute_target
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
from azureml.train.dnn import TensorFlow script_params = { '--batch-size': 50, '--learning-rate': 0.01, } tf_est = TensorFlow(source_directory='./my-tf-proj', script_params=script_params, compute_target=compute_target, entry_script='train.py', conda_packages=['scikit-learn'], use_gpu=True)
TensorFlow рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
рдкреИрд░рд╛рдореАрдЯрд░ | рд╡рд░реНрдгрди |
---|
source_directory | рдПрдХ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдлрд╝реЛрд▓реНрдбрд░ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рджреВрд░рд╕реНрде рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред |
script_params | рдПрдХ рдбрд┐рдХреНрд╢рдирд░реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП entry_script рдЯреНрд░реЗрдирд┐рдВрдЧ entry_script рдЬреЛрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ <рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ, рдорд╛рди>ред |
compute_target | рджреВрд░рд╕реНрде рдЧрдгрдирд╛ рд▓рдХреНрд╖реНрдп, рдЬрд┐рд╕ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓реЗрдЧреАред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдЬрд╝реНрдпреЛрд░ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдкрд░реНрдпрд╛рд╡рд░рдг ( AmlCompute ) рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред |
entry_script | рджреВрд░рд╕реНрде рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдлрд╝рд╛рдЗрд▓ рдкрде ( source_directory рд╕рд╛рдкреЗрдХреНрд╖)ред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред |
conda_packages | рдХреЛрдВрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП sklearn рдХрд╛ рдЙрдкрдпреЛрдЧ sklearn рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ pip_packages рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкрд╛рдЗрдк рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред |
use_gpu | рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдзреНрд╡рдЬ рдХреЛ True рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ False ред |
рдЪреВрдВрдХрд┐ рдЖрдк TensorFlow рдореВрд▓реНрдпрд╛рдВрдХрди рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ TensorFlow рдкреИрдХреЗрдЬ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реЛрдВрдЧреА рдЬреЛ CPU рдФрд░ GPU рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред
рдлрд┐рд░ TensorFlow рдЬреЙрдм рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ:
run = exp.submit(tf_est)
рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг
TensorFlow рдореВрд▓реНрдпрд╛рдВрдХрди рдЯреВрд▓ рдЖрдкрдХреЛ рдПрдЬрд╝реБрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЗ рд╕реАрдкреАрдпреВ рдФрд░ рдЬреАрдкреАрдпреВ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИред TensorFlow рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрдИ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрди рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдПрдЬрд╝реНрдпреЛрд░ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рдеред
Azure Machine Learning Services TensorFlow рдореЗрдВ рджреЛ рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред
horovod
рд╣реЛрд░рд╡реЙрдб рдЙрдмрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╡рд┐рддрд░рд┐рдд рд▓рд░реНрдирд┐рдВрдЧ-рдЖрдзрд╛рд░рд┐рдд рд░рд┐рдВрдЧ-рдПрд▓реЗрд░реЗрдб рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИред
TensorFlow рдХреЛ Horovod рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, TensorFlow рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдирд╛рдПрдВ:
from azureml.train.dnn import TensorFlow tf_est = TensorFlow(source_directory='./my-tf-proj', script_params={}, compute_target=compute_target, entry_script='train.py', node_count=2, process_count_per_node=1, distributed_backend='mpi', use_gpu=True)
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб TensorFlow constructor рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдП рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдкреИрд░рд╛рдореАрдЯрд░ | рд╡рд░реНрдгрди | рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди |
---|
node_count | рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ред | 1 |
process_count_per_node | рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ (рдпрд╛ рдХрд╛рд░реНрдп рднреВрдорд┐рдХрд╛рдУрдВ) рдХреА рд╕рдВрдЦреНрдпрд╛ред | 1 |
distributed_backend | рдПрдордкреАрдЖрдИ рдореВрд▓реНрдпрд╛рдВрдХрди рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рд╡рд┐рддрд░рд┐рдд рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдбред MPI (рдФрд░ Horovod) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдпрд╛ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, node_count > 1 рдпрд╛ process_count_per_node > 1, рдпрд╛ рджреЛрдиреЛрдВ) рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рддрд░рд┐рдд_рдмреИрдХреЗрдВрдб distributed_backend='mpi' рд╕реЗрдЯ рдХрд░реЗрдВ distributed_backend='mpi' Azure рдорд╢реАрди рдЙрдкрдпреЛрдЧ MPI рдУрдкрди MPI рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред | None |
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджреЛ рдХрд╛рд░реНрдп рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рднреВрдорд┐рдХрд╛ред
рд╣реЛрд░реЛрд╡реЛрдб рдФрд░ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреА, рдЗрд╕рд▓рд┐рдП рдЖрдк рдмрд╕ рдЙрдиреНрд╣реЗрдВ train.py
рдкреНрд░рд╢рд┐рдХреНрд╖рдг train.py
рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
import tensorflow as tf import horovod
рдЕрдВрдд рдореЗрдВ, рдЕрдкрдирд╛ TensorFlow рдЬреЙрдм рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ:
run = exp.submit(tf_est)
рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░
рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ TensorFlow рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рднреА рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдФрд░ рдХрд╛рд░реНрдп рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХрд╛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ TensorFlow рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ:
from azureml.train.dnn import TensorFlow tf_est = TensorFlow(source_directory='./my-tf-proj', script_params={}, compute_target=compute_target, entry_script='train.py', node_count=2, worker_count=2, parameter_server_count=1, distributed_backend='ps', use_gpu=True)
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ TensorFlow рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рдкреИрд░рд╛рдореАрдЯрд░ | рд╡рд░реНрдгрди | рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди |
---|
worker_count | рдХрд╛рд░реНрдп рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред | 1 |
parameter_server_count | рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ред | 1 |
distributed_backend | рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдЬреЛ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рди distributed_backend='ps' ред | None |
TF_CONFIG
рдкрд░ рдиреЛрдЯреНрд╕
рдЖрдкрдХреЛ tf.train.ClusterSpec
рд▓рд┐рдП рдХреНрд▓рд╕реНрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрддреЗ рдФрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП tf.train.ClusterSpec
рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд╕реЗрд╡рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ TF_CONFIG
рд╡рд╛рддрд╛рд╡рд░рдг TF_CONFIG
рд╕реЗрдЯ TF_CONFIG
ред
TF_CONFIG
рдкрд░реНрдпрд╛рд╡рд░рдг TF_CONFIG
рдПрдХ JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рд╣реИред
TF_CONFIG='{ "cluster": { "ps": ["host0:2222", "host1:2222"], "worker": ["host2:2222", "host3:2222", "host4:2222"], }, "task": {"type": "ps", "index": 0}, "environment": "cloud" }'
рдпрджрд┐ рдЖрдк tf.estimator
TensorFlow рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ tf.estimator
рдЗрд╕ TF_CONFIG
рдЪрд░ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ TF_CONFIG
рдЪрд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЛрдб рдореЗрдВ tf.train.ClusterSpec
рдмрдирд╛рдиреЗ рдХреА tf.train.ClusterSpec
рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд▓рд┐рдкрд┐ рдореЗрдВ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
import os, json import tensorflow as tf tf_config = os.environ.get('TF_CONFIG') if not tf_config or tf_config == "": raise ValueError("TF_CONFIG not found.") tf_config_json = json.loads(tf_config) cluster_spec = tf.train.ClusterSpec(cluster)
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ TensorFlow рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛рд░реНрдп рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ:
run = exp.submit(tf_est)
рдЙрджрд╛рд╣рд░рдг
рд╡рд┐рддрд░рд┐рдд рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдкреБрд╕реНрддрд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рджреЗрдЦреЗрдВ
рдЬреНрдпреВрдкреНрдЯрд░ рдиреЛрдЯрдмреБрдХ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдХреИрд╕реЗ рд╕реАрдЦреЗрдВ, рдЗрд╕ рдкрд░ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рдиреЛрдЯрдмреБрдХ рдЪрд▓рд╛рдирд╛ рд╕реАрдЦреЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА