Binder에서 Dotnet 노트북 공유

Binder에서 .NET 노트북 공유





바인더란?



Binder은 다른 사람들과 함께 jupyter 노트북을 실행할 수 있는 무료 온라인 서비스입니다. Google Colab과 유사하지만 Google 로그인이 필요하지 않습니다. 실제로 필요한 것은 .ipynb 파일이 있는 공용 리포지토리입니다.

훌륭한 서비스이며 즉시 사용할 수 있는 많은 언어를 지원합니다. Python 노트북을 가동하려면 간단한requirements.txt 파일만 있으면 됩니다. R 또는 Julia를 사용하려는 경우 environment.yml 파일이 적합합니다. Binder의 가이드를 따라 이를 시작하고 실행할 수 있습니다.

.NET에서는 설치가 조금 더 어려울 수 있습니다.

따라서 이 기본 도커 이미지jmacivor/dotnet-binder:0.1.1를 제공하게 되어 기쁩니다. 이 이미지는 .NET SDK와 Binder에서 작업하는 데 필요한 모든 것을 제공합니다. 그런 다음 노트북과 관련 파일을 복사하여 쉽게 실행할 수 있습니다.

Docker를 처음 사용하는 경우 아래에서 만든 것과 유사한 파일을 설정할 수 있습니다. 다시 말하지만 *.ipynb 를 포함하는 저장소의 루트에 이와 같은 것이 필요합니다.

Binder를 사용하면 모든 종류의 리포지토리, 특히 gist 및 github에서 공유 노트북을 만들 수 있습니다. 새로운 github 또는 gist를 설정할 수 있습니다. 노트북에 복사하는 Dockerfile이 있는 한 아무 문제가 없습니다!

FROM jmacivor/dotnet-binder:0.1.1

ARG NB_USER=jovyan
ARG NB_UID=1000

USER $NB_USER

ENV HOME=/home/$NB_USER

WORKDIR $HOME

COPY ml_net_simple_regression.ipynb $HOME/ml_net_simple_regression.ipynb
COPY Salary_Data.csv $HOME/Salary_Data.csv



gist 을 확인하십시오.

노트북을 로컬에서 설계하고 테스트하려면 my guide for getting setup with Jupyter Notebooks.을 따르십시오.

위의 Dockerfile에서 사용된 기본 이미지를 만드는 데 약간의 노력이 필요했습니다. 그 내용이 궁금하시다면 아래에서 확인해보세요. 확실히 개선의 여지가 있습니다.

이 기본 이미지는 다음과 같은 변경 사항을 활용할 수 있습니다.
  • 전체 이미지의 크기를 줄이기 위해 dotnet alpine SDK로 전환합니다.
  • 사용자가 노트북에서 다운로드하지 않도록 ML.NET용 너겟 패키지를 다운로드하고 캐시하는 방법을 찾습니다.
  • dotnet-interactive 도구가 .NET 5용으로 준비되는 즉시 .NET 기본 이미지를 .NET 5로 업그레이드합니다.

  • 다음은 gist 입니다.

    FROM mcr.microsoft.com/dotnet/core/sdk:3.1-focal
    
    USER root
    RUN cd /tmp
    # now get the key:
    RUN wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
    # now install that key
    RUN apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
    # now remove the public key file exit the root shell
    RUN rm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
    
    # we have to get this because the linux mlnet nuget expects a dependency that only ships with windows.
    # so we add the public key as shown above and apt-get install intel-mkl-64bit-2020.0.088 
    RUN sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list'
    
    RUN apt-get update \
        && apt-get -y upgrade \
        && apt-get -y install python3 python3-pip python3-dev ipython3 intel-mkl-64bit-2020.0-088
    
    RUN find /opt -name "libiomp5.so"
    RUN ldconfig /opt/intel/compilers_and_libraries_2020.0.166/linux/compiler/lib/intel64_lin/
    
    RUN pip3 install --no-cache notebook
    
    ARG NB_USER=jovyan
    ARG NB_UID=1000
    RUN useradd -m -s /bin/bash -N -u $NB_UID $NB_USER
    
    USER $NB_USER
    
    ENV HOME=/home/$NB_USER
    
    WORKDIR $HOME
    
    ENV PATH="${PATH}:$HOME/.dotnet/tools/"
    
    RUN dotnet tool install -g --add-source "https://dotnet.myget.org/F/dotnet-try/api/v3/index.json" dotnet-interactive
    
    RUN dotnet-interactive jupyter install
    
    


    그건 그렇고, dotnet-interactive에는 자체Dockerfile for Binder.가 있습니다. Binder용으로 만들어진 기본 이미지에서 시작하여 거기에서 .NET 종속성과 .NET을 설치하는 완전히 다른 방향으로 이동합니다. 이 방법을 시도했지만 그 과정에서 많은 문제를 발견했습니다. 그래도 이런 식으로 시도해 볼 수 있습니다. Binder 서버를 시작하는 시간은 사용하는 접근 방식에 관계없이 거의 동일한 것으로 보입니다.

    좋은 웹페이지 즐겨찾기