рдЖрд░ рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рдбреЙрдХрд┐рдВрдЧ рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдБ

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдХрдВрдЯреЗрдирд░реАрдХрд░рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдпрд╛ рд╕реЗрд╡рд╛, рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдЕрдореВрд░реНрдд рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдХрдЯ рдлрд╛рдЗрд▓реЗрдВ) рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдореЗрдВ рдПрдХ рд╕рд╛рде рдкреИрдХ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдПрдХ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдФрд░ рдЖрд░, рдкрд╛рдпрдерди рд╢реЗрд▓, рдФрд░ рдЕрдиреНрдп рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЗрдЦреЗрдВрдЧреЗред рдЕрдм рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрдВ!



рдПрдХ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдУрдПрд╕) рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЙрдХрд░ рдкреЛрд░реНрдЯреЗрдмрд▓, рд╕реНрд╡-рдирд┐рд╣рд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рддреИрдирд╛рддреА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдпрд╛ рдСрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВред

Microsoft рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд╕рд░реНрд╡рд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдЪреАрд▓рд╛ рдЙрджреНрдпрдо рдордВрдЪ рд╣реИ, рдмреБрджреНрдзрд┐рдорд╛рди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкрд╛рдпрдерди рдФрд░ рдЖрд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рдкрд╛рд░-рдореВрд▓реНрдпрд╡рд╛рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред " рдкрд░рд┐рдЪрд╛рд▓рди " рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде рд╣реИ Microsoft рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдореЗрдВ рдЖрд░ рдФрд░ рдкрд╛рдпрдерди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдореЙрдбрд▓ рдФрд░ рдХреЛрдб рдХреА рддреИрдирд╛рддреА рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдХрдВрдкрдиреА рдХреА рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмрд╛рдж рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдбреЙрдХрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд╕рд░реНрд╡рд░ 9.3 рдпреБрдХреНрдд рдбреЙрдХ рдЪрд┐рддреНрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдФрд░ рдирд┐рдореНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ:

  1. рдЖрд░ рд╢реЗрд▓ рдЪрд▓рд╛рдПрдВред
  2. рдЕрдЬрдЧрд░ рдЦреЛрд▓ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкред
  3. рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред
  4. OneBox рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред
  5. рд╡реЗрдм рд╕реЗрд╡рд╛ рдЖрд░ред
  6. рдкрд╛рдпрдерди рд╡реЗрдм рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛ред

рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ


рдХрд┐рд╕реА рднреА рд▓рд┐рдирдХреНрд╕ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЬрд┐рд╕рдореЗрдВ рдбреЙрдХ рдХрдореНрдпреБрдирд┐рдЯреА рдПрдбрд┐рд╢рди (рд╕реАрдИ) рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ, рдореИрдВрдиреЗ рдЙрдмрдВрдЯреВ 16.04 рд╡реАрдПрдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдбреЙрдХрдЯрд░ рд╕реАрдИ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ ред

рдЪрд░рдг 1


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдорд╢реАрди рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рд╕рд░реНрд╡рд░ 9.3 рдХреЗ рд╕рд╛рде mlserver рдирд╛рдордХ рдПрдХ рдЗрдореЗрдЬ рдмрдирд╛рдпреЗрдВрдЧреЗ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЙрдХрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

FROM ubuntu:16.04 RUN apt-get -y update \ && apt-get install -y apt-transport-https wget \ && echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ xenial main" | tee /etc/apt/sources.list.d/azure-cli.list \ && wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O /tmp/prod.deb \ && dpkg -i /tmp/prod.deb \ && rm -f /tmp/prod.deb \ && apt-key adv --keyserver packages.microsoft.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893 \ && apt-get -y update \ && apt-get install -y microsoft-r-open-foreachiterators-3.4.3 \ && apt-get install -y microsoft-r-open-mkl-3.4.3 \ && apt-get install -y microsoft-r-open-mro-3.4.3 \ && apt-get install -y microsoft-mlserver-packages-r-9.3.0 \ && apt-get install -y microsoft-mlserver-python-9.3.0 \ && apt-get install -y microsoft-mlserver-packages-py-9.3.0 \ && apt-get install -y microsoft-mlserver-mml-r-9.3.0 \ && apt-get install -y microsoft-mlserver-mml-py-9.3.0 \ && apt-get install -y microsoft-mlserver-mlm-r-9.3.0 \ && apt-get install -y microsoft-mlserver-mlm-py-9.3.0 \ && apt-get install -y azure-cli=2.0.26-1~xenial \ && apt-get install -y dotnet-runtime-2.0.0 \ && apt-get install -y microsoft-mlserver-adminutil-9.3.0 \ && apt-get install -y microsoft-mlserver-config-rserve-9.3.0 \ && apt-get install -y microsoft-mlserver-computenode-9.3.0 \ && apt-get install -y microsoft-mlserver-webnode-9.3.0 \ && apt-get clean \ && /opt/microsoft/mlserver/9.3.0/bin/R/activate.sh 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдбреЙрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ mlserver рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП docker рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 docker build -f mlserver-dockerfile -t mlserver. 

рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдирд┐рдореНрди рдЖрджреЗрд╢ рдХреЛ рдЪрд▓рд╛рдХрд░ mlserver рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ:

 docker images 

рдЖрд░ рд╢реЗрд▓ рд▓реЙрдиреНрдЪ


 docker run -it mlserver R 



рдкрд╛рдпрдерди рд╢реЗрд▓ рд▓реЙрдиреНрдЪ


 docker run -it mlserver mlserver-python 



рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ


 docker run -p 8888:8888 -it mlserver /opt/microsoft/mlserver/9.3.0/runtime/python/bin/jupyter notebook --no-browser --port=8888 --ip=0.0.0.0 --allow-root 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЗрд╕реЗ рдЦреЛрд▓рдХрд░ рдПрдХ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



OneBox рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ


Microsoft рд▓рд░реНрдирд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред

  FROM ubuntu:16.04 RUN apt-get -y update \ && apt-get install -y apt-transport-https wget \ && echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ xenial main" | tee /etc/apt/sources.list.d/azure-cli.list \ && wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O /tmp/prod.deb \ && dpkg -i /tmp/prod.deb \ && rm -f /tmp/prod.deb \ && apt-key adv --keyserver packages.microsoft.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893 \ && apt-get -y update \ && apt-get install -y microsoft-r-open-foreachiterators-3.4.3 \ && apt-get install -y microsoft-r-open-mkl-3.4.3 \ && apt-get install -y microsoft-r-open-mro-3.4.3 \ && apt-get install -y microsoft-mlserver-packages-r-9.3.0 \ && apt-get install -y microsoft-mlserver-python-9.3.0 \ && apt-get install -y microsoft-mlserver-packages-py-9.3.0 \ && apt-get install -y microsoft-mlserver-mml-r-9.3.0 \ && apt-get install -y microsoft-mlserver-mml-py-9.3.0 \ && apt-get install -y microsoft-mlserver-mlm-r-9.3.0 \ && apt-get install -y microsoft-mlserver-mlm-py-9.3.0 \ && apt-get install -y azure-cli=2.0.26-1~xenial \ && apt-get install -y dotnet-runtime-2.0.0 \ && apt-get install -y microsoft-mlserver-adminutil-9.3.0 \ && apt-get install -y microsoft-mlserver-config-rserve-9.3.0 \ && apt-get install -y microsoft-mlserver-computenode-9.3.0 \ && apt-get install -y microsoft-mlserver-webnode-9.3.0 \ && apt-get clean \ && /opt/microsoft/mlserver/9.3.0/bin/R/activate.sh RUN echo $'#!/bin/bash \n\ set -e \n\ az ml admin bootstrap --admin-password "Microsoft@2018" --confirm-password "Microsoft@2018" \n\ exec "$@"' > bootstrap.sh RUN chmod +x bootstrap.sh EXPOSE 12800 ENTRYPOINT ["/bootstrap.sh"] CMD ["bash"] 

рдЙрдкрд░реЛрдХреНрдд рдбреЙрдХрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдордПрд▓рд╕реЗрд╡рд░-рд╡рдирдмреЙрдХреНрд╕ рдЫрд╡рд┐ рдмрдирд╛рдПрдВ:

 docker build -f mlserver-onebox-dockerfile -t mlserver-onebox. 

рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдирд┐рдореНрди рдЖрджреЗрд╢ рдХреЛ рдЪрд▓рд╛рдХрд░ mlserver-onebox рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ:

 docker images 

рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╡рдирдмреЙрдХреНрд╕ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:

 docker run --name mlserver-onebox-container -dit mlserver-onebox 

рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

 docker logs mlserver-onebox-container 

рдЙрдкрд░реЛрдХреНрдд рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд░рд╣реЗ рдереЗ, рдЖрдк рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рдПрдХ-рдмреЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдбреЙрдХрд░ рд▓реЙрдЧ рдбреЗрдЯрд╛ рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП: "рд╕рднреА рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ")ред

рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ IP рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mlserver-onebox-container '172.17.0.3' 

рдФрд░ рдЗрд╕реЗ рдПрдХ-рдмреЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 az login --mls --mls-endpoint "http://172.17.0.3:12800" --username "admin" --password "Microsoft@2018" az ml admin diagnostic run 

рдЖрд░ рд╡реЗрдм рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛


рд╣рдо рдПрдХ рдкреНрд░реАрдХреЙрдиреНрдлрд╝рд┐рдЧрд░реНрдб рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реА рдпрд╣ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рдореИрдиреБрдЕрд▓ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

  FROM ubuntu:16.04 RUN apt-get -y update \ && apt-get install -y apt-transport-https wget \ && echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ xenial main" | tee /etc/apt/sources.list.d/azure-cli.list \ && wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O /tmp/prod.deb \ && dpkg -i /tmp/prod.deb \ && rm -f /tmp/prod.deb \ && apt-key adv --keyserver packages.microsoft.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893 \ && apt-get -y update \ && apt-get install -y microsoft-r-open-foreachiterators-3.4.3 \ && apt-get install -y microsoft-r-open-mkl-3.4.3 \ && apt-get install -y microsoft-r-open-mro-3.4.3 \ && apt-get install -y microsoft-mlserver-packages-r-9.3.0 \ && apt-get install -y microsoft-mlserver-python-9.3.0 \ && apt-get install -y microsoft-mlserver-packages-py-9.3.0 \ && apt-get install -y microsoft-mlserver-mml-r-9.3.0 \ && apt-get install -y microsoft-mlserver-mml-py-9.3.0 \ && apt-get install -y microsoft-mlserver-mlm-r-9.3.0 \ && apt-get install -y microsoft-mlserver-mlm-py-9.3.0 \ && apt-get install -y azure-cli=2.0.26-1~xenial \ && apt-get install -y dotnet-runtime-2.0.0 \ && apt-get install -y microsoft-mlserver-adminutil-9.3.0 \ && apt-get install -y microsoft-mlserver-config-rserve-9.3.0 \ && apt-get install -y microsoft-mlserver-computenode-9.3.0 \ && apt-get install -y microsoft-mlserver-webnode-9.3.0 \ && apt-get clean \ && /opt/microsoft/mlserver/9.3.0/bin/R/activate.sh RUN echo $'library(mrsdeploy) \n\ carsModel <- glm(formula = am ~ hp + wt, data = mtcars, family = binomial) \n\ manualTransmission <- function(hp, wt) { \n\ newdata <- data.frame(hp = hp, wt = wt) \n\ predict(carsModel, newdata, type = "response") \n\ } \n\ remoteLogin("http://localhost:12800", username = "admin", password = "Microsoft@2018", session = FALSE) \n\ api <- publishService("ManualTransmissionService", code = manualTransmission, model = carsModel, inputs = list(hp = "numeric", wt = "numeric"), outputs = list(answer = "numeric"), v = "1.0.0") \n\ result <- api$manualTransmission(120, 2.8) \n\ print(result$output("answer")) \n\ remoteLogout()' > /tmp/ManualTransmission.R RUN echo $'#!/bin/bash \n\ set -e \n\ az ml admin bootstrap --admin-password "Microsoft@2018" --confirm-password "Microsoft@2018" \n\ /usr/bin/Rscript --no-save --no-restore --verbose "/tmp/ManualTransmission.R" \n\ exec "$@"' > bootstrap.sh RUN chmod +x bootstrap.sh EXPOSE 12800 ENTRYPOINT ["/bootstrap.sh"] CMD ["bash"] 

рдЙрдкрд░реЛрдХреНрдд рдбреЙрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ rmanualtransmission рдЫрд╡рд┐ рдмрдирд╛рдПрдВ:

 docker build -f r-manualtransmission-dockerfile -t rmanualtransmission. 

рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрджреЗрд╢ рдХреЛ рдЪрд▓рд╛рдХрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реНрдг рдХреА рдЧрдИ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг:

 docker images 

рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:

 docker run --name rmanualtransmission-container -dit rmanualtransmission 

рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

 docker logs rmanualtransmission-container 

рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рдереЗ рдФрд░ рд╡реЗрдм рд╕реЗрд╡рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛ рдЧрдИ рд╣реИ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ IP рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' rmanualtransmission-container '172.17.0.3' 

рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ swagger.json R рд╡реЗрдм рд╕реЗрд╡рд╛ рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реНрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http://172.17.0.3:12800/login | jq -r '.access_token' <access token> curl -s --header "Content-Type: application/json" --header "Authorization: Bearer <access token>" --request POST --data '{"hp":120,"wt":2.8}' http://172.17.0.3:12800/api/ManualTransmissionService/1.0.0 {"success":true,"errorMessage":"","outputParameters":{"answer":0.64181252840938208},"outputFiles":{},"consoleOutput":"","changedFiles":[]} curl -s --header "Authorization: Bearer <access token>" --request GET http://172.17.0.3:12800/api/ManualTransmissionService/1.0.0/swagger.json -o swagger.json 

Swagger.json рдлрд╝рд╛рдЗрд▓ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред

рдкрд╛рдпрдерди рд╡реЗрдм рд╕реЗрд╡рд╛ рдЪрд▓рд╛рдирд╛


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рдпрдерди рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдореИрдиреБрдЕрд▓ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

  FROM ubuntu:16.04 RUN apt-get -y update \ && apt-get install -y apt-transport-https wget \ && echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ xenial main" | tee /etc/apt/sources.list.d/azure-cli.list \ && wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O /tmp/prod.deb \ && dpkg -i /tmp/prod.deb \ && rm -f /tmp/prod.deb \ && apt-key adv --keyserver packages.microsoft.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893 \ && apt-get -y update \ && apt-get install -y microsoft-r-open-foreachiterators-3.4.3 \ && apt-get install -y microsoft-r-open-mkl-3.4.3 \ && apt-get install -y microsoft-r-open-mro-3.4.3 \ && apt-get install -y microsoft-mlserver-packages-r-9.3.0 \ && apt-get install -y microsoft-mlserver-python-9.3.0 \ && apt-get install -y microsoft-mlserver-packages-py-9.3.0 \ && apt-get install -y microsoft-mlserver-mml-r-9.3.0 \ && apt-get install -y microsoft-mlserver-mml-py-9.3.0 \ && apt-get install -y microsoft-mlserver-mlm-r-9.3.0 \ && apt-get install -y microsoft-mlserver-mlm-py-9.3.0 \ && apt-get install -y azure-cli=2.0.26-1~xenial \ && apt-get install -y dotnet-runtime-2.0.0 \ && apt-get install -y microsoft-mlserver-adminutil-9.3.0 \ && apt-get install -y microsoft-mlserver-config-rserve-9.3.0 \ && apt-get install -y microsoft-mlserver-computenode-9.3.0 \ && apt-get install -y microsoft-mlserver-webnode-9.3.0 \ && apt-get clean \ && /opt/microsoft/mlserver/9.3.0/bin/R/activate.sh RUN echo $'from microsoftml.datasets.datasets import DataSetMtCars \n\ import pandas as pd \n\ from revoscalepy import rx_lin_mod, rx_predict \n\ cars_model = rx_lin_mod(formula="am ~ hp + wt", data=DataSetMtCars().as_df()) \n\ mydata = pd.DataFrame({"hp":[120],"wt":[2.8]}) \n\ def manualTransmission(hp, wt): \n\ \timport pandas as pd \n\ \tfrom revoscalepy import rx_predict \n\ \tnewData = pd.DataFrame({"hp":[hp], "wt":[wt]}) \n\ \treturn rx_predict(cars_model, newData, type="response") \n\ \n\ from azureml.deploy import DeployClient \n\ from azureml.deploy.server import MLServer \n\ from azureml.common.configuration import Configuration \n\ \n\ HOST = "http://localhost:12800" \n\ context = ("admin", "Microsoft@2018") \n\ client = DeployClient(HOST, use=MLServer, auth=context) \n\ service_name = "ManualTransmissionService" \n\ service_version = "1.0.0" \n\ service = client.service(service_name).version(service_version).code_fn(manualTransmission).inputs(hp=float, wt=float).outputs(answer=pd.DataFrame).models(cars_model=cars_model).description("Man ual Transmission Service").deploy() \n\ res = service.manualTransmission(120, 2.8) \n\ print(res.output("answer"))' > /tmp/ManualTransmission.py RUN echo $'#!/bin/bash \n\ set -e \n\ az ml admin bootstrap --admin-password "Microsoft@2018" --confirm-password "Microsoft@2018" \n\ mlserver-python /tmp/ManualTransmission.py \n\ exec "$@"' > bootstrap.sh RUN chmod +x bootstrap.sh EXPOSE 12800 ENTRYPOINT ["/bootstrap.sh"] CMD ["bash"] 

рдЙрдкрд░реЛрдХреНрдд docker рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ pananualtransmission рдЗрдореЗрдЬ рдмрдирд╛рдПрдБ:

 docker build -f py-manualtransmission-dockerfile -t pymanualtransmission. 

рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ pananualtransmission рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ:

 docker images 

рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:

 docker run --name pymanualtransmission-container -dit pymanualtransmission 

рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

 docker logs pymanualtransmission-container 

рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рдереЗ рдФрд░ рд╡реЗрдм рд╕реЗрд╡рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛ рдЧрдИ рд╣реИ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ IP рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' pymanualtransmission-container '172.17.0.3' 

рдЖрдк рдХрд░реНрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реИрдЧрд░.рдЬреЙрди рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 apt-get -y install jq curl -s --header "Content-Type: application/json" --request POST --data '{"username":"admin","password":"Microsoft@2018"}' http://172.17.0.3:12800/login | jq -r '.access_token' <access token> curl -s --header "Content-Type: application/json" --header "Authorization: Bearer <access token>" --request POST --data '{"hp":120,"wt":2.8}' http://172.17.0.3:12800/api/ManualTransmissionService/1.0.0 {"success":true,"errorMessage":"","outputParameters":{"answer":0.64181252840938208},"outputFiles":{},"consoleOutput":"","changedFiles":[]} curl -s --header "Authorization: Bearer <access token>" --request GET http://172.17.0.3:12800/api/ManualTransmissionService/1.0.0/swagger.json -o swagger.json 

Swagger.json рдлрд╝рд╛рдЗрд▓ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред

рдиреЛрдЯред рдЖрдк рдЬрд╛рджреБрдИ рдбреЙрдХрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ appsettings.json рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ LDAP / AAD рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рд╕реНрддрд╛рд░


рдмрдирд╛рдИ рдЧрдИ рд╕реНрдерд╛рдиреАрдп рдбреЙрдХрдЯрд░ рдЫрд╡рд┐рдпрд╛рдВ Azure рдХрдВрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА (ACR ) рдХреЛ рднреЗрдЬреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

ACR рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Azure Kubernetes Service (AKS) рдореЗрдВ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдПрдБ, рдЬреЛ рд╕реНрд╡рддрдГ рд╣реА рдСрдЯреЛрд╕реНрдХреЗрд▓ рдкреЙрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред

рдХрдбрд╝рд┐рдпрд╛рдБ:


Source: https://habr.com/ru/post/hi420159/


All Articles