코드 실행하기 (고급)

참고

각 명령어의 help에서 자세한 사용법을 확인할 것을 권장합니다. help는 -h 혹은 --help 를 명령어의 인자로 입력하여 불러올 수 있습니다.

동시 세션 실행하기

run 명령어는 Running simple sessions 에 설명되어 있는 단일 세션 실행뿐만 아니라 여러 세션의 동시 실행 기능을 제공하고, 이 때 --exec 옵션으로 입력되는 인수와 -e / --env 옵션으로 입력되는 환경 변수가 사용됩니다.

--exec 옵션에 해당하는 변수를 설정할 때에는 --exec-range 이 사용되고, --env 옵션에 해당하는 변수를 설정할 때에는 --env-range 이 사용됩니다.

아래는 4개의 세션을 생성하도록 환경 변수의 범위를 설정하는 예시입니다.

backend.ai run -c 'import os; print("Hello world, {}".format(os.environ["CASENO"]))' \
    -r cpu=1 -r mem=256m \
    -e 'CASENO=$X' \
    --env-range=X=case:1,2,3,4 \
    lablup/python:3.6-ubuntu18.04

range 옵션은 “range expressions” 라는 형식의 인자를 입력 받습니다. range 옵션의 앞 부분은 해당 변수와 등호(=)로 이루어져 있습니다. 뒷 부분은 아래에 나열된 종류의 형식의 식입니다.

식 (Expression)

설명

case:CASE1,CASE2,...,CASEN

문자열 또는 숫자로 구성된 배열

linspace:START,STOP,POINTS

numpy.linspace() 와 같은 문법으로 정의되는 구간의 값들. 예를 들어 linspace:1,2,3 은 길이가 3인 배열 [1, 1.5, 2]을 생성합니다.

range:START,STOP,STEP

파이썬의 range() 와 같은 문법으로 정의되는 수의 범위 (range). 예를 들어 range:1,6,2 은 배열 [1, 3, 5]을 생성합니다.

run 명령어에 여러 개의 range 옵션을 입력하면 클라이언트는 각 범위로 정의된 값들의 모든 조합에 해당하는 개수의 세션을 생성합니다.

참고

생성된 세션을 실행하기 위한 사용자 혹은 클러스터의 자원이 부족하면 일부 세션은 큐에 추가되어 커맨드가 실행되는 데에 오랜 시간이 걸릴 수 있습니다.

경고

위의 기능은 클라이언트에서 구현되었기 때문에 모든 케이스가 완료 될 때까지 클라이언트는 서버와의 연결을 유지해야 합니다. 서버의 batch job 스케줄링은 현재 개발 중입니다!