독립형 인스턴스 사용
    • PDF

    독립형 인스턴스 사용

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    독립형 인스턴스(Private Instance)를 활용하여 별도의 분석 환경에서 데이터 연산을 수행할 수 있습니다. 독립형 인스턴스는 Python 코드로 데이터 분석을 할 수 있는 Jupyter Notebook을 제공하며, 네이버 클라우드 플랫폼의 HOMEROS SDK를 포함하고 있어 손쉬운 코드 작성이 가능합니다.

    인스턴스 생성

    콘솔에서 새로운 인스턴스를 생성하는 방법은 다음과 같습니다.

    참고

    독립형 인스턴스는 개인 회원은 1개, 기업 회원은 3개까지 생성할 수 있습니다. 회원 유형별 정책에 따라 인스턴스 생성이 제한될 수 있으니 인스턴스 생성이 불가한 경우 고객지원으로 문의해주시기 바랍니다.

    1. 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instances 메뉴를 차례대로 클릭해 주십시오.

    2. [Instance 생성] 버튼을 클릭해 주십시오.

    3. Instance 이름을 입력하고 라이브러리 버전을 선택해 주십시오.

    4. 아래의 표를 참고하여 VPC, Subnet, 서버 유형을 선택해 주십시오.

      서버 유형GPUvCPU메모리디스크서비스 존
      CPU Intensive-8개16GBSSD 50GBKR-2
      CPU Intensive-16개32GBSSD 50GBKR-2
      CPU Intensive-32개64GBSSD 50GBKR-2
      GPU1개8개90GBSSD 50GBKR-2
      GPU2개16개180GBSSD 50GBKR-2
      GPU4개32개360GBSSD 50GBKR-2
      참고

      독립형 인스턴스는 KR-2 존에서만 제공됩니다. KR-2 존의 Public Subnet을 선택해 주십시오.

    5. Jupyter Notebook을 사용하기 위한 비밀번호 입력해 주십시오.

    6. 동형암호 연산 및 데이터 분석을 위해 별도의 작업 스토리지를 생성합니다. 동형암호 키와 암호문 등을 저장하는 스토리지의 크기를 입력해 주십시오.

      참고
      • 스토리지는 최소 50GB에서 최대 2,000GB까지 입력할 수 있습니다.
      • 스토리지는 인스턴스와 별도로 Block Storage 요금이 부과됩니다.
      • 인스턴스 생성 후에는 스토리지를 추가할 수 없습니다.
    7. [생성] 버튼을 클릭하고 Instance 생성 확인 팝업창에서 [확인] 버튼을 클릭해 주십시오.

    인스턴스 목록 확인

    생성된 인스턴스는 콘솔의 인스턴스 목록에 표시되며, 목록에서 인스턴스 시작, 정지, 반납, 비밀번호 확인 등 관리 작업을 수행할 수 있습니다.

    인스턴스의 목록을 확인하려면 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instances 메뉴를 차례대로 클릭해 주십시오.

    인스턴스 시작

    정지 상태의 인스턴스를 시작하는 절차는 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instances 메뉴를 차례대로 클릭해 주십시오.
    2. 인스턴스 목록에서 시작하려는 인스턴스를 선택한 후 [시작] 버튼을 클릭해 주십시오.
    3. 확인 팝업 창에서 [예] 버튼을 클릭해 주십시오.

    인스턴스 정지

    인스턴스를 정지하는 절차는 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instances 메뉴를 차례대로 클릭해 주십시오.
    2. 인스턴스 목록에서 정지하려는 인스턴스를 선택한 후 [정지] 버튼을 클릭해 주십시오.
    3. 확인 팝업 창에서 [예] 버튼을 클릭해 주십시오.
    참고

    인스턴스는 정지 중에도 요금이 부과됩니다. 인스턴스를 더이상 사용하지 않으려면 반납해 주십시오.

    인스턴스 반납

    인스턴스를 반납하는 절차는 다음과 같습니다.

    참고

    반납하려는 인스턴스의 작업 스토리지도 같이 삭제됩니다. 필요한 데이터는 미리 백업해 주십시오.

    1. 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instances 메뉴를 차례대로 클릭해 주십시오.
    2. 인스턴스 목록에서 반납하려는 인스턴스를 선택한 후 [정지] 버튼을 클릭해 주십시오.
    3. 인스턴스 상태가 정지로 변경되면 해당 인스턴스를 다시 선택한 후 [반납] 버튼을 클릭해 주십시오.
    참고

    인스턴스를 반납하는 데는 수 분이 소요됩니다. 인스턴스 반납이 완료되면 인스턴스 목록에서 해당 인스턴스가 사라집니다.

    Jupyter Notebook 활용

    Jupyter Notebook 접속

    인스턴스가 운영중 상태에서 Jupyter Notebook에 접속할 수 있습니다. Jupyter Notebook에 접속하는 절차는 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instances 메뉴를 차례대로 클릭해 주십시오.
    2. 인스턴스 목록에서 Jupyter Notebook에 접속하려는 인스턴스를 선택해 주십시오.
    3. 인스턴스 상세 정보에서 Jupyter Notebook의 URL을 클릭해 주십시오.
    참고

    Jupyter Notebook 접속이 안 될 경우 아래와 같이 재시작이 가능합니다.

    1. SSH 로그인
    >> ssh homeros@{SERVER_IP}
    >> {JUPYTER_NOTEBOOK_PASSWORD}
    
    1. Jupyter Notebook 서비스 실행
    >> nohup jupyter notebook --config /home/homeros/.jupyter/jupyter_notebook_config.py > /home/homeros/.jupyter/log.out &
    
    주의

    인스턴스 생성 단계에서 입력한 비밀번호로 Jupyter Notebook에 접근할 수 있습니다. 비밀번호 분실 시 활용할 수 없으니 관리에 유의해 주십시오.

    Jupyter Notebook 예제

    독립형 인스턴스는 Jupyter Notebook과 HOMEROS SDK를 활용하는 예제를 제공합니다. Jupyter Notebook 화면에서 tutorial 폴더로 이동하면 여러 가지 예제와 예제 실행에 필요한 데이터가 있습니다.

    Jupyter Notebook의 예제는 다음과 같습니다.

    0. Getting Started

    Jupyter Notebook 예제에 대한 기본적인 설명을 제공합니다.

    1. Overview of the basic structure of HOMEROS SDK

    HOMEROS SDK를 사용하기 위한 기본적인 사용법과 예제를 제공합니다. 주요 내용은 다음과 같습니다.

    1. Context
      동형암호 키 쌍을 생성하고 관리하기 위한 기본 개념인 Context를 설명합니다. HOMEROS 1.0 버전에서는 CKKS scheme 기반의 HEaaN 라이브러리로 구현된 HEaaNContext를 제공하고 있습니다.
    2. Data
      평문을 암호화하는 예제를 제공합니다.
    3. Data transfer
      암호문 공유를 위해 제공하는 함수와 예제를 설명합니다.
    4. Operations
      동형암호 연산을 수행하는 함수와 예제를 제공합니다.
      • 덧셈과 곱셈 연산을 설명합니다.
      • 암호문의 최대 연산 횟수인 Depth를 설명하는 예제를 제공합니다.
    5. Decrypt
      암호문을 복호화하는 예제를 제공합니다.

    2. The statistic operations scenario

    HOMEROS에서 제공하고 있는 산술연산과 통계연산에 대한 예제를 제공합니다. 각 연산에 대한 설명과 연산을 수행하기 위해 필요한 최소 Depth는 다음의 표를 참고해 주십시오.

    <산술 연산>

    연산명Depth연산 설명
    Summation3두 암호문의 덧셈을 수행
    Sub3두 암호문의 뺄셈을 수행
    Mult3두 암호문의 곱셈을 수행
    Add Const3하나의 암호문에 상수 덧셈을 수행
    Sub Const3하나의 암호문에 상수 뺄셈을 수행
    Mult Const3하나의 암호문에 상수 곱셈을 수행

    <통계 연산>

    연산명Depth연산 설명
    SummationFull암호문 내 지정한 컬럼의 합을 구함
    MeanFull암호문 내 지정한 컬럼의 평균을 구함
    VarianceFull암호문 내 지정한 컬럼의 분산을 구함
    Standard DerivationFull암호문 내 지정한 컬럼의 표준편차를 구함
    Standard ErrorFull암호문 내 지정한 컬럼의 표준오차를 구함
    Coefficient of VariationFull암호문 내 지정한 컬럼의 변동계수를 구함
    Absolute ValueFull암호문의 각 원소에 대한 절댓값을 구함
    SkewnessFull암호문의 모든 원소의 왜도를 구함
    KurtosisFull암호문의 모든 원소의 첨도를 구함
    CorrelationFull두 암호문의 상관계수를 구함
    CovarianceFull두 암호문의 공분산을 구함
    Maximun ValueFull암호문의 모든 원소 중 최댓값을 구함

    <구간 통계 계산>

    연산명Depth연산 설명
    Confidence interval of meanFull암호문의 평균의 신뢰 구간을 구함
    Confidence interval of variance with chi-square distributionFull암호문의 카이-제곱 분포를 사용하는 분산의 신뢰 구간을 구함

    <검정 연산>

    연산명Depth연산 설명
    T-test for the mean of one sampleFull한 표본의 평균에 대한 T 검정을 구함
    Z-test for proportion of one binomial sampleFull한 이항 표본의 비율에 대한 Z 검정을 구함
    Chi-square test for variance of one sampleFull한 표본의 분산에 대한 카이-제곱 검정을 구함
    T-test for the means of two samplesFull두 표본의 평균에 대한 T 검정을 구함
    F-test for variances of two samplesFull두 표본의 분산에 대한 F-검정을 구함

    3. The categorical operations scenario

    범주형(Categorical) 연산이란 특정 컬럼이 범주형 값들을 가질 때, 조건에 맞는 컬럼의 통계연산을 의미합니다. HOMEROS에서 제공하고 있는 범주형 산술연산과 범주형 통계연산에 대한 예제를 제공합니다. 02장에서 제공하는 대부분의 연산을 제공하며 다음과 같은 예제를 추가로 제공합니다.

    • 두 이항 표본의 비율에 대한 Z 검정
    • Z 분포를 통한 모집단의 확률에 대한 신뢰구간

    4. Data concatenation scenario

    데이터 결합을 통해 서로 다른 기관 또는 기업에서 데이터를 공유하여 결합 분석하는 시나리오를 제공합니다.

    5. K means clustering prediction scenario

    K means clustering은 대표적인 군집화 기법 중 하나로, 라벨이 없는 또는 일부만 있는 데이터의 지도 학습을 위해 라벨링을 하거나 데이터들을 성격에 맞게 분류하는 등 다양한 상황에서 사용됩니다. HOMEROS에서 제공하고 있는 암호화된 데이터의 K means clustering 추론 기능에 대한 예제를 제공합니다.

    6. Linear SVM prediction scenario

    Linear SVM(Support Vector Machine)은 선형 데이터들의 분류 또는 회귀에 주로 쓰이는 대표적인 머신러닝 알고리즘으로, 비교적 단순한 구조에서 나오는 강력한 기능으로 다양한 분야에서 많이 쓰이고 있습니다. HOMEROS에서 제공하고 있는 암호화된 데이터의 Linear SVM 추론 기능에 대한 예제를 제공합니다.

    7. Convolutional Neural Network with MNIST dataset prediction scenario

    이미지 분석에 가장 많이 쓰이는 딥러닝 알고리즘인 CNN(Convolutional Neural Network)의 암호화된 추론 예제를 제공합니다. 해당 예제를 위해 이미지 분석에서 가장 많이 쓰이는 예제 중 하나인 MNIST를 사용하여 2차원 CNN 알고리즘의 암호화된 추론을 제공하며 이를 위해 Pytorch로 학습된 CNN 모델에 추론을 제공합니다.

    8. Convolutional Neural Network with Fashion MNIST dataset prediction scenario

    07장의 CNN 예제에서 추론용 데이터셋을 Fashion MNIST로 변경한 예제를 제공합니다.

    9. Linear Regression With training and prediction scenario

    Linear Regression은 단순한 구조에도 불구하고 강력한 성능을 지닌 머신러닝 알고리즘입니다. HOMEROS에서 제공하고 있는 암호화된 상태에서 Linear Regression의 학습과, 학습된 암호화된 모델을 복호화하여 추론하는 예제를 제공합니다.

    10. Logistic Regression With training and prediction scenario

    Logistic Regression은 단순한 구조에도 불구하고 강력한 성능을 지닌 머신러닝 알고리즘입니다. HOMEROS에서 제공하고 있는 암호화된 상태에서 Logistic Regression의 학습과, 학습된 암호화된 모델을 복호화하여 추론하는 예제를 제공합니다.

    11. Random forest prediction scenario

    Random Forest는 대표적인 앙상블 머신러닝 모델로써, Decision Tree가 오버피팅이 될 가능성이 높다는 단점을 보완하여 많은 분야에서 사용되고 있습니다. HOMEROS에서 제공하고 있는 암호화된 Random Forest 추론 예제를 제공합니다.

    12. XGBoost prediction scenario

    Random Forest가 대표적인 앙상블 모델이라면 XGBoost는 대표적인 부스팅 머신러닝 모델로 분류와 회귀를 모두 제공하며 성능과 자원의 효율성이 좋아 많은 인기를 기반으로 사용되고 있는 알고리즘입니다. HOMEROS에서 제공하고 있는 암호화된 XGBoost 추론 예제를 제공합니다.

    13. MLP(Multi Layers Perceptron) prediction scenario

    Multi Layer Perceptron 은 가장 기본적인 딥러닝 모델입니다. HOMEROS에서 제공하고 있는 암호화된 MLP 추론 예제를 제공합니다.

    SSH 접속

    인스턴스가 운영중 상태에서 SSH로 서버에 접속할 수 있습니다. SSH 접속하는 절차는 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instances 메뉴를 차례대로 클릭해 주십시오.
    2. 인스턴스 목록에서 SSH로 접속하려는 인스턴스를 선택해 주십시오.
    3. 인스턴스 상세 정보에서 Jupyter Notebook의 URL에서 IP 주소를 복사해 주십시오.
    4. 터미널 또는 파워셸(PowerShell)을 통해 다음과 같이 접속 가능합니다. SSH 접속시 인스턴스 생성 단계에 설정한 비밀번호를 입력해 주십시오.
    >> ssh homeros@{SERVER_IP}
    >> {JUPYTER_NOTEBOOK_PASSWORD}
    

    애플리케이션 배포

    Python 기반 개발 프레임워크인 Flask와 Django를 사용하여 HOMEROS를 활용한 서비스 배포 방법을 설명합니다.

    개발 환경에서는 Flask나 Django 프레임워크 자체만으로 WAS(Web Application Server)를 구성할 수 있으나, 성능 및 보안 등을 위해 배포 환경에서는 WSGI(Web Server Gateway Interface)를 통해 이러한 제약을 해결할 수 있습니다. WSGI는 파이썬 스크립트가 웹서버 (Web Server)와 효율적으로 통신하기 위해 만들어진 인터페이스입니다.

    본 가이드에서는 대표적인 WSGI 기술 중 하나인 Gunicorn과 빠른 속도, 리버스 프록시 및 SSL 등을 제공하는 대표적인 웹서버인 Nginx를 활용한 애플리케이션을 배포 방법을 설명합니다.

    1. Flask 설치

    (1) 필요한 패키지 설치
    root가 아닌 homeros 계정으로 설치를 진행하기 때문에 --user 옵션을 넣어줍니다.

    pip3 install flask --user
    pip3 install MarkupSafe --user
    pip3 install Jinja2 --user
    pip3 install click --user
    

    (2) Flask 기본 애플리케이션 작성
    Flask 프로젝트를 생성할 폴더에 app.py 파일 생성하고, 다음의 코드를 작성합니다.

    from flask import Flask
    app = Flask(__name__)
    @app.route('/')
    def home():
        return 'Hello, World!'
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=1080)
    
    참고
    • 인스턴스 외부의 접속을 허용하려면 host='0.0.0.0' 설정이 필요합니다.
    • 원하는 포트는 port 변수를 활용해 주십시오.

    (3) Gunicorn과 애플리케이션 연동
    8000번 포트를 오픈하는 경우 app.py 파일이 있는 곳에서 다음의 명령어를 실행해 주십시오.

    gunicorn --bind 0.0.0.0:8000 app:app &
    

    2. Django 설치

    (1) 필요한 패키지 설치

    python3 -m pip install Django --user
    

    (2) django 기본 애플리케이션 작성
    애플리케이션을 생성할 폴더에서 다음의 명령어를 실행해 주십시오.

    django-admin startproject mysite
    

    (3) Gunicorn과 애플리케이션 연동
    애플리케이션명 mysite가 위치한 폴더에서 8000번 포트를 오픈하는 경우 다음의 명령어를 실행해 주십시오.

    gunicorn --bind 127.0.0.1:8000 mysite.wsgi:application &
    

    3. Nginx 연동

    (1) Nginx 설치 (현 기준 최신 버전인 1.20.2를 기준으로 진행)

    소스코드를 다운로드 받아 빌드를 진행합니다.(기준 폴더는 /home/homeros/myproject/nginx으로 가정합니다.)

    wget https://nginx.org/download/nginx-1.20.2.tar.gz
    

    다운로드 받은 nginx의 tar.gz 파일의 압축을 해제합니다.

    tar zxvf nginx-1.20.2.tar.gz 
    

    압축을 푼 폴더로 변경합니다.

    cd nginx-1.20.2
    

    (2) 빌드

    configure 설정
    /home/homeros/myproject/nginx 경로 아래 로그 파일들과 config 파일, 실행파일이 있는 sbin 파일이 생성되도록 설정합니다.

    ./configure \
      --prefix=/home/homeros/myproject/nginx/ \
      --user=homeros \
      --group=homeros \
      --error-log-path=/home/homeros/myproject/nginx/error.log \
      --http-log-path=/home/homeros/myproject/nginx/access.log \
      --without-http_scgi_module \
      --without-http_uwsgi_module \
      --without-http_fastcgi_module \
      --with-stream
    

    make 수행

    make
    

    make install 수행

    make install
    

    (3) 설정
    /home/homeros/myproject/nginx/conf 에 nginx.conf 파일을 열어 다음과 같이 입력합니다.

    vim nginx.conf
    server {
        listen  $nginx 포트;
        …
    
        location / {
            proxy_pass http://127.0.0.1:$gunicorn 포트;
        }
    }
    

    예를 들어, gunicorn과 연동한 포트가 8000이고, 이를 nginx에서 8001 포트로 프록시 하고 싶으면 다음과 같이 수정합니다.

    server {
        listen  nginx 8001;
        …
    
        location / {
            proxy_pass http://127.0.0.1:8000;
        }
    }
    

    (4) nginx 실행

    /home/homeros/myproject/nginx/sbin/nginx
    

    (5) nginx 종료

    /home/homeros/myproject/nginx/sbin/nginx -s stop
    

    Cache 데이터 삭제

    HOMEROS에서 사용하는 임시파일이 자동으로 삭제되지 않는 경우 스토리지 용량이 부족해질 수 있습니다. 만일 저장 공간 부족으로 인하여 작업이 불가능한 경우 임시파일을 삭제해 저장 공간을 추가로 확보할 수 있습니다.

    1. 실행 중인 Jupyter notebook shutdown

    실행 중인 Jupyter Notebook을 shutdown하면 Context가 삭제되면서 임시파일이 삭제됩니다.

    만일, Jupyter Notebook을 shutdown 하였지만 저장 공간이 확보되지 않는 경우 직접 임시파일 삭제할 수 있습니다.

    2. Cache 데이터 삭제

    (1) 터미널 접속
    Jupyter Notebook 우측 상단에 있는 [New] >> [Terminal] 을 통해 터미널 접속이 가능합니다.

    참고

    터미널을 통해 서버에 접속하시려면 다음과 같이 접속하시면 됩니다.

    >> ssh homeros@{SERVER_IP}
    >> {JUPYTER_NOTEBOOK_PASSWORD}
    

    (2) 저장 공간 확인

    >> df -h
    

    만일 /home 하위의 용량이 부족하다면 다음 명령어를 통해 /home/homeros/.homeros/ 폴더의 용량을 확인합니다.

    du -sh /home/homeros/.homeros/
    

    (3) .homeros 하위 임시 파일 삭제
    .homeros 폴더의 용량이 부족하다면 .homeros 디렉터리의 임시 파일을 삭제하여 저장공간을 확보합니다.

    >> rm -rf /home/homeros/.homeros/*
    
    주의
    • .homeros 디렉터리 자체를 삭제하면 Context 생성이 불가능해지기 때문에 반드시 하위 디렉터리 또는 파일만 삭제해야 합니다.
    • 리눅스 삭제 명령어로 삭제한 파일 또는 폴더는 복구되지 않으니 주의해 주십시오.

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.