GCE

Compute Engine

Ubuntu

Ubuntu 20.04 LTS, SSD(Boot) 10G
Management, security, disks, networking, sole tenancy에서 Disks, + Add new disk, Type: Local SSD scratch disk (maximum 24) 빠른 파일 로딩을 위해 Local SSDs x 1 (NVME, 385 GB) 지정. 그러나, Local SSD는 instance stop이 안된다. 비용 절감을 할 수 없다.

아래는 conda 및 gcc, cmake 별도 설치하는 과정:

# Anaconda
$ wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh

# ==> For changes to take effect, close and re-open your current shell. <==

# Update to a newer version of Anaconda
conda update -n base -c defaults conda

# Developer Tools
$ sudo apt install gcc cmake

개인적으로 ubuntu를 선호하지만 GCP는 debian이 default다.

Container Optimized OS

추가 디스크 공간이 /mnt/stateful_partition/home로 할당되어 있는데 /home과 동일하다. $ readlink . -f에서는 각각의 디렉토리 명이 표시된다.

yum, apt 모두 지원하지 않고 toolbox를 실행해서 설치1 여러가지 유용한 도구 제공. k8s에서도 이 OS(약칭 cos)를 활용한다.

# Inside the toolbox shell
USER@cos-dev ~ $ toolbox
root@cos-dev:~# apt-get update && apt-get install -y htop psmisc
root@cos-dev:~# htop
root@cos-dev:~# pstree -p
root@cos-dev:~# exit

Deep Learning on Linux

GCE에서 제공하는 딥러닝 이미지. 예전에는 Deep Learning Image와 Deep Learning VM이 별도로 존재했다. 지금도 Deep Learning VM은 남아 있지만 최근에는 관리가 안되는 것으로 보인다.

지금은 GCE 생성시 이 이미지를 통해 GPU 이미지를 생성할 수 있다. 만약 GPU 머신을 직접 구성한다면 이 이미지를 택한다.

Deep Learning Image

지금은 안보인다. Deep Learning VM은 그대로 있으나 이미지는 Deep Learning on Linux로 변경

Deep Learning Image: PyTorch 1.4.0 and fastai m51 설치(이제 PyTorch 1.6.0도 지원한다)

T4의 생성 limit이 처음에 1로 되어 있는데, all quotas에서 요청을 하면 5분 이내에 바로 처리해준다. 반영되는데는 최대 15분 소요. 처음 접속할때 CUDA 최초 설치 필요. anaconda는 이미 설치되어 있다.

XGBoost, CatBoost는 GPU 버전이 바로 설치되지만, LightGBM는 별도 옵션으로 설치(소스 컴파일됨)해야 한다. pytorch는 지난 3월에 릴리즈된 1.4.0이 이미 설치되어 있다. cuDF를 설치하고 싶었으나 conda로만 설치가 가능하고, 설치 진행이 안되서 실패. RAPIDS는 설치가 가장 어렵다.

Deep Learning VM

Google Click to Deploy
Seoul도 지원하고(K80만 보인다) Enable access to JupyterLab via URL instead of SSH도 지원한다. 최근 관리가 안되는 것으로 보인다. 예전에는 AI Platform에서도 동일 이미지로 보였으나 최근 Vertex AI에서는 별도로 관리하는듯.

RAPIDS XGBoost를 experimental 버전으로 바로 지원한다. conda 설치에 시달릴 필요가 없다. 특히 cuDF를 바로 사용할 수 있어 이 이미지를 택했다. PyCharm에서 Remote Python으로 Python Console로 실험. Jupyter 보다 편하다. 다만 큰 데이터는 오래 걸리므로 Show Variables는 turn off.

PyTorch 설치:

$ conda install pytorch torchvision cudatoolkit=10.0 -c pytorch

CUDA 10.0이라서 PyTorch는 1.4.0 버전이 설치된다. pip 설치는 CUDA 버전이 맞지 않다며 실행되지 않음(이제 CUDA 11과 PyTorch 1.6도 있다)

python 3.7.3이 설치되어 있으니 $ conda update -all 진행. 그러나 cuDF를 사용하려면 numba가 0.48.0이어야 한다. 주의. $ conda install -c numba numba=0.48.0로 아래 버전 지정 설치. (어느새 pytorch는 1.3.1로 내려가 있다. 그러나 conda로 cudatoolkit=10.0 하면 1.4.1이 다시 설치된다.)

cuDF가 0.7이라서(최신은 0.14) 기능 제약이 많다. conda로 업데이트를 시도하면 당연히 잘 안된다.

설정

SSH 접속

gcloud를 이용하는 방법은 너무 불편하여 ssh로 바로 접속이 가능하도록 셋팅. cat ~/.ssh/id_rsa_gcp.pub를 Metadata > SSH Keys에 등록했다. 해당 프로젝트내 모든 서버에 ssh 접속 가능하다. 정석대로는 gcloud를 이용해 ssh 접속이 가능하다.

$ gcloud compute ssh gcp-user@"NAME" --zone "asia-northeast3-c"

마찬가지로 Metadata > SSH Keys에 자동으로 등록하면서 접속이 진행된다. 맨 처음에 다음과 같은 메시지가 나온다.

Updating project ssh metadata...⠧

사용자 계정은 gcp-user로 로그인된다. 모두 sudo 권한을 갖고 있기 때문에 사실상 계정명은 큰 의미가 없다. default-allow-ssh로 모든 IP에 대해 ssh 접속 허용이 프로젝트 생성시 기본으로 되어 있는거 같다. 보안상 삭제가 필요하다.

서버 설정

alias, 시간, 로케일 설정

$ vi ~/.bash_aliases
alias ll='ls -al'

# Set up a clean UTF-8 environment
sudo bash -c 'echo "LANG=en_US.utf-8
LC_ALL=en_US.utf-8" > /etc/environment'
 
# Set the Timezone to KST
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

디스크의 경우 LocalSSD가 가장 빠르지만 별도로 마운트 해야 할뿐 아니라 stop이 안되기 때문에 비용 절감을 할 수도 없다.

네트워크

VPC networks - Firewall에서 내 IP에 대해 allow all 처리로 편하게 이용. 태그를 지정하면 해당 태그에만 룰이 적용되도록 설정 가능. network logging도 가능하다.

방화벽 설정에서 소스와 접속 포트만 다음과 같이 나열할 수 있다.

gcloud compute firewall-rules list --format="table(
                name,
                sourceRanges.list():label=SRC_RANGES,
                allowed[].map().firewall_rule().list():label=ALLOW
            )"

CLI

환경 설정

설정 조회

$ gcloud config list
[compute]
region = asia-northeast3
zone = asia-northeast3-b
[core]
account = xxx@email.com
disable_usage_reporting = False
project = edith-xxx

Your active configuration is: [default]
$ gcloud config set project edith-xx

이처럼 default project 지정. 매 번 cli에서 project id를 입력하지 않아도 된다. 이외 $ export PROJECT_ID=xxx 방법도 있다.

로컬 콘솔 외에도 Cloud Shell을 실행하는 방법이 있다. 모든 도구가 설치되어 있으며, 환경 차이 없이 가상 서버 터미널을 브라우저에서 표준 방식으로 사용할 수 있어 편리하다.

기타

인증 정보는 다음과 같다.

  1. Google Cloud SDK
    $ gcloud auth list
    

    gcloud가 사용하는 계정 정보. GCP 콘솔에서 사용하는 계정 정보와 동일하다.

  2. Google Auth Library
    $ gcloud auth application-default login
    

Last Modified: 2021/12/23 15:50:12

is a collection of Papers I have written.
© 2000 - Sang-Kil Park Except where otherwise noted, content on this site is licensed under a CC BY 4.0.
This site design was brought from Distill.