주 콘텐츠로 건너뛰기
이 프로젝트는 베타 단계입니다. 버그를 발견하셨나요? GitHub 이슈 만들기. 질문이나 아이디어가 있으신가요? Discussions에서 질문하기 — 피드백을 기다립니다!
이 페이지의 번역 품질은 어떻습니까?

컴퓨트 프로필 선택

관리형 워크플로는 컴퓨트 프로필에서 실행됩니다. 컴퓨트 프로필은 HPC 스케줄러에 요청하는 리소스와 비슷하게, vCPU, 메모리, GPU의 고정된 조합입니다. 워크플로를 업로드할 때 S, M 같은 크기를 프로필에 매핑하고, 각 실행은 이러한 크기 중 하나를 선택합니다. 그러면 작업은 해당 프로필을 가진 자체 노드에서 실행되며, 작업이 끝날 때까지 그 프로필을 유지합니다.

프로필vCPU메모리(GB)GPU
8x32832없음
16x12816128없음
48x76848768없음
128x15001281500없음
24x120x1l40s241201 L40S
20x320x2a100203202 A100
80x1200x8a1008012008 A100
160x1792x8h10016017928 H100

프로필 ID의 형식은 {cpu}x{memory}(메모리 단위는 GB)이며, GPU가 있는 프로필은 {cpu}x{memory}x{count}{gpu}입니다. 예를 들어 24x120x1l40s는 vCPU 24개, 메모리 120GB, NVIDIA L40S GPU 1개를 가집니다.

사용 가능한 프로필 확인​

사용 가능한 프로필을 보려면 compute_profiles()를 호출하세요.

run_workflow_remotely.ipynb

from qiskit_ibm_catalog import ManagedWorkflowClient

client = ManagedWorkflowClient()
print(client.compute_profiles())
8x32 (8 vCPU / 32 GB)
16x128 (16 vCPU / 128 GB)
48x768 (48 vCPU / 768 GB)
128x1500 (128 vCPU / 1500 GB)
24x120x1l40s (24 vCPU / 120 GB / 1l40s)
20x320x2a100 (20 vCPU / 320 GB / 2a100)
80x1200x8a100 (80 vCPU / 1200 GB / 8a100)
160x1792x8h100 (160 vCPU / 1792 GB / 8h100)

리소스로 프로필 찾기​

프로필 ID를 직접 입력하는 대신 compute_profile()로 워크플로에 필요한 리소스를 설명하고, 그 결과를 sizes_map의 값으로 사용할 수 있습니다. cpu와 memory는 GB 단위로 전달하고, GPU 프로필에는 gpu를 전달하세요.

run_workflow_remotely.ipynb

profile = client.compute_profile(cpu=24, memory=120, gpu="1l40s")
print(profile) # 24x120x1l40s

sizes_map = {"S": "8x32", "L": profile}

sizes_map은 프로필 ID와 compute_profile()이 반환하는 프로필을 모두 받으며, 하나의 맵에서 둘을 섞어 사용할 수 있습니다. 업로드하기 전에 프로필 ID를 확인하려면 compute_profile()에 전달하세요. 예: client.compute_profile("16x128"). 일치하는 프로필이 없으면 오류에 사용 가능한 프로필이 나열됩니다.

compute_profiles()는 리스트를 반환하므로 직접 필터링할 수도 있습니다. 예를 들어 다음 코드는 GPU 프로필을 찾습니다.

run_workflow_remotely.ipynb

gpu_profiles = [p for p in client.compute_profiles() if p.gpu]

워크플로의 기본 컴퓨트 프로필 설정​

대부분의 워크플로는 하나의 크기로 시작합니다. 워크플로를 업로드할 때 sizes_map으로 프로필에 매핑하고, default_size로 기본값으로 지정하세요.

run_workflow_remotely.ipynb

from qiskit_ibm_catalog import ManagedWorkflow, ManagedWorkflowClient

client = ManagedWorkflowClient()

my_workflow = client.upload(
ManagedWorkflow(
title="my-workflow",
entrypoint="my_workflow.py",
working_dir="./source_files/",
sizes_map={"M": "16x128"},
default_size="M",
)
)

워크플로의 모든 실행이 이 프로필을 사용하므로, 실행할 때 크기를 전달할 필요가 없습니다.

run_workflow_remotely.ipynb

job = my_workflow.run(circuits=circuits) # Runs on 16x128

모범 사례: 문제 크기에 맞게 크기 설정​

워크플로는 특정 문제를 해결하며, 문제의 규모와 복잡도가 커지면 다른 컴퓨트 프로필이 필요할 수 있습니다. 워크플로마다 sizes_map을 두면 다음을 할 수 있습니다.

  • 큰 문제가 끝까지 실행될 수 있도록 충분한 컴퓨팅 리소스를 제공합니다.

  • 작은 문제가 필요 이상으로 큰 노드를 사용하지 않도록 합니다.

부분 공간 크기, 배치 수, 큐비트 수처럼 워크플로의 메모리와 CPU 사용량을 결정하는 요인을 기준으로 크기를 정할 수 있습니다.

크기 정의​

작은 문제(S), 중간 문제(M), 큰 문제(L), 매우 큰 문제(XL)에 대해 최대 네 가지 크기를 매핑할 수 있습니다. 예를 들어 다음 코드는 세 가지 크기를 가진 워크플로를 정의합니다.

run_workflow_remotely.ipynb

sizes_map = {"S": "8x32", "M": "16x128", "L": "128x1500"}

my_workflow = client.upload(
ManagedWorkflow(
title="my-workflow",
entrypoint="my_workflow.py",
working_dir="./source_files/",
sizes_map=sizes_map,
default_size="M",
)
)

크기 규칙​

크기 레이블은 S, M, L, XL 중 하나여야 하므로 워크플로는 최대 네 가지 크기를 정의할 수 있습니다. 관리형 워크플로는 대문자 또는 소문자 레이블을 모두 일치시키며 대문자로 저장합니다. 두 개의 크기가 같은 프로필에 매핑될 수 있습니다.

워크플로는 다음과 같은 경우 첫 번째 업로드를 거부합니다.

  • 레이블이 S, M, L, XL이 아닙니다.

  • default_size 없이 sizes_map을 설정했거나, sizes_map 없이 default_size를 설정했습니다.

  • default_size가 sizes_map의 레이블 중 하나가 아닙니다.

  • sizes_map의 값이 사용 가능한 컴퓨트 프로필이 아닙니다.

다시 업로드할 때 크기 변경​

같은 title로 워크플로를 다시 업로드하면 관리형 워크플로는 크기를 다음과 같이 처리합니다.

  • sizes_map을 설정하면 새 크기가 저장된 모든 크기를 대체합니다.

  • sizes_map을 생략하면 워크플로는 저장된 크기와 기본값을 유지합니다.

  • 기본값만 변경하려면 sizes_map 없이 default_size를 설정하세요. default_size의 값은 저장된 크기 중 하나여야 합니다.

sizes_map을 설정할 때마다 default_size를 설정하세요. 다시 업로드할 때 default_size가 필수는 아닙니다. 새 크기에 이전 기본값이 포함되지 않으면 워크플로에 기본값이 없어지며, function_size 없이 실행하는 모든 실행이 실패합니다.

실행마다 크기 선택​

run()에 function_size를 전달하여 해당 작업에 사용할 워크플로의 크기를 선택하세요. 생략하면 작업은 워크플로의 기본 크기를 사용합니다.

run_workflow_remotely.ipynb

print(my_workflow.sizes()) # {'S': '8x32', 'M': '16x128', 'L': '128x1500'}
print(my_workflow.get_default_size()) # 'M'

job = my_workflow.run(function_size="L", circuits=circuits) # Runs on 128x1500
job = my_workflow.run(circuits=circuits) # Runs on the default size, M

sizes()와 get_default_size()는 워크플로를 로드했을 때 저장되어 있던 크기를 반환합니다. 워크플로를 로드한 후 변경된 크기를 보려면 워크플로를 다시 로드하세요.

작업의 크기와 컴퓨트 프로필을 읽으려면 워크플로 코드에서 get_function_size()와 get_compute_profile()을 호출하세요.

source_files/my_workflow.py

from qiskit_serverless import get_compute_profile, get_function_size

print(get_function_size()) # 'L'
print(get_compute_profile()) # '128x1500'

크기 문제 해결​

문제원인
업로드가 Invalid size '...'. Valid sizes are: S, M, L, XL.과 함께 실패합니다.sizes_map의 레이블이 지원되는 네 가지 레이블 중 하나가 아닙니다.
업로드가 Unknown compute profile '...' for size '...'.과 함께 실패합니다.sizes_map의 값이 사용 가능한 프로필이 아닙니다. compute_profiles()로 ID를 확인하거나 compute_profile()로 찾아보세요.
compute_profile()이 No compute profile matches ...와 함께 실패합니다.정확히 그 리소스를 가진 프로필이 없습니다. GPU 프로필의 경우 gpu도 전달하세요. 오류에 나열된 목록에서 프로필을 선택하세요.
업로드가 'default_size' is required when 'sizes' is provided.와 함께 실패합니다.첫 번째 업로드에서 default_size 없이 sizes_map을 설정했습니다.
run()이 Unknown function size '...' for this function. Available sizes: ...와 함께 실패합니다.function_size에 전달한 크기를 워크플로가 정의하지 않았습니다.
run()이 This function has no size.와 함께 실패합니다.다시 업로드하면서 크기가 대체되어 기본값이 제거되었습니다. default_size와 함께 다시 업로드하거나 function_size를 전달하세요.