

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 예약 작업
<a name="braket-reservations"></a>

예약을 통해 선택한 양자 디바이스에 독점적으로 액세스할 수 있습니다. 편리한 시간에 예약을 할 수 있으므로 워크로드 실행이 시작되고 종료되는 시기를 정확히 알 수 있습니다. 예약은 모든 Braket 디바이스에 대해 1시간 단위로 제공되며 추가 비용 없이 최대 48시간 전에 취소할 수 있습니다. 예정된 예약을 위해 양자 작업 및 하이브리드 작업을 미리 대기열에 추가하거나, Braket Direct Reservation ARN을 사용하거나, 예약 중에 워크로드를 제출하는 것이 좋습니다.

전용 디바이스 액세스 비용은 양자 처리 장치(QPU)에서 실행하는 양자 작업 및 하이브리드 작업 수에 관계없이 예약 기간을 기준으로 합니다. 예약에 사용할 수 있는 업데이트된 양자 컴퓨터 목록은 [요금 페이지](https://aws.amazon.com/braket/pricing/) 또는 [Amazon Braket 관리 콘솔](https://us-east-1.console.aws.amazon.com/braket/home?region=us-east-1#/devices)을 통해 확인할 수 있습니다.

**참고**  
예약에는 [게이트샷](braket-terms.md#gateshot-limit-term) 제한이 없습니다. 또한 IonQ 디바이스의 경우 [오류 완화](https://docs.aws.amazon.com/braket/latest/developerguide/braket-error-mitigation.html) 작업의 최소 샷 수가 500개(온디맨드의 경우 2500개)로 줄어듭니다.

 **예약 사용 시기** 

예약 액세스를 활용하면 양자 워크로드가 언제 실행을 시작하고 종료하는지 정확히 알 수 있는 편리성과 예측 가능성을 얻을 수 있습니다. 온디맨드 방식으로 작업 및 하이브리드 작업을 제출하는 것에 비해 다른 고객 작업이 있는 대기열에서 대기할 필요가 없습니다. 예약 기간 동안 디바이스에 독점적으로 액세스할 수 있으므로, 전체 예약 기간에 걸쳐 디바이스에서는 해당 사용자의 워크로드만 실행됩니다.

연구의 설계 및 프로토타입 작성 단계에 온디맨드 액세스를 사용하여 알고리즘을 빠르고 비용 효율적으로 반복할 수 있도록 하는 것이 좋습니다. 최종 실험 결과를 생성할 준비가 되면 프로젝트 또는 게시 기한을 충족할 수 있도록 편리한 시간에 디바이스 예약을 고려하세요. 또한 양자 컴퓨터에서 라이브 데모 또는 워크숍을 실행하는 경우와 같이 특정 시간 동안 작업 실행을 원하는 경우 예약을 사용하는 것이 좋습니다.

**Topics**
+ [예약을 생성하는 방법](braket-create-a-reservation.md)
+ [예약 기간 동안 양자 작업 실행](braket-run-quantum-task-with-reservation.md)
+ [예약 기간 동안 하이브리드 작업 실행](braket-run-hybrid-jobs-with-reservation.md)
+ [예약 종료 시 발생하는 일](braket-end-of-reservation.md)
+ [기존 예약 취소 또는 일정 조정](braket-cancel-reservation.md)

# 예약을 생성하는 방법
<a name="braket-create-a-reservation"></a>

예약을 생성하려면 다음 단계에 따라 Braket 팀에 문의하세요.

1. Amazon Braket 콘솔을 엽니다.

1. 왼쪽 창에서 **Braket Direct**를 선택한 다음 **예약** 섹션에서 **디바이스 예약**을 선택합니다.

1. 예약하려는 **디바이스**를 선택합니다.

1. **이름** 및 **이메일**을 포함한 연락처 정보를 제공합니다. 정기적으로 확인하는 유효한 이메일 주소를 제공해야 합니다.

1. **워크로드에 대한 정보 제공**에서 예약을 사용하여 실행할 워크로드에 대한 세부 정보를 제공합니다. 예를 들어, 원하는 예약 기간, 관련 제약 조건 또는 원하는 일정 등이 있습니다.

양식을 제출하면 Braket 팀으로부터 다음 단계가 포함된 이메일을 받게 됩니다. 예약이 확인되면 이메일을 통해 예약 ARN을 받게 됩니다. 예약 ARN을 사용하여 예약 작업을 생성하려면이 필요합니다. 예약 ARN 없이 생성된 작업은 일반 온디맨드 대기열에 제출되며 예약 중에 실행되지 않습니다.

**참고**  
예약 ARN을 받은 후에만 예약이 확정됩니다.

예약은 최소 1시간 단위로 가능하며 특정 디바이스에는 추가 예약 기간 제약 조건(최소 및 최대 예약 기간 포함)이 적용될 수 있습니다. Braket 팀은 예약을 확정하기 전에 관련 정보를 공유합니다.

Braket 팀이 이메일을 통해 연락하여 Braket 전문가와 30분 세션을 예약합니다.

# 예약 기간 동안 양자 작업 실행
<a name="braket-run-quantum-task-with-reservation"></a>

[예약 생성](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation)에서 유효한 예약 ARN을 얻은 후 예약 기간 동안 실행할 양자 작업을 생성할 수 있습니다. 예약 ARN과 함께 제출된 양자 작업 및 하이브리드 작업은 디바이스 대기열에 표시되지 않습니다. 예약 시작 시간 이전에 제출된 작업은 예약이 시작될 때까지 `QUEUED` 상태로 유지됩니다.

**참고**  
예약은 AWS 계정 및 디바이스별로 다릅니다. 예약을 생성한 AWS 계정만 예약 ARN을 사용할 수 있습니다.  
예약 중에 예약 작업과 일반 작업을 모두 생성할 수 있습니다. 생성된 Braket 양자 작업이 예약과 연결되어 있는지 확인하려면 Braket 콘솔의 양자 작업 페이지에서 “예약 ARN” 필드를 확인하거나 SDK를 사용하여 작업 메타데이터에서 동일한 필드를 쿼리합니다. 이 페이지의 나머지 부분에서는 재개와 연결된 작업을 지정하는 방법을 설명합니다.

Python SDKs [Braket](https://docs.aws.amazon.com/braket/latest/developerguide/braket-references.html), , [https://github.com/NVIDIA/cuda-quantum](https://github.com/NVIDIA/cuda-quantum), [https://github.com/amazon-braket/amazon-braket-pennylane-plugin-python](https://github.com/amazon-braket/amazon-braket-pennylane-plugin-python) [https://github.com/qiskit-community/qiskit-braket-provider](https://github.com/qiskit-community/qiskit-braket-provider)또는 boto3([Boto3 작업)과 직접 같은를 사용하여 양자 작업을 생성할 수 있습니다](https://docs.aws.amazon.com/braket/latest/developerguide/braket-using-boto3.html). 예약을 사용하려면 버전 [v1.79.0](https://github.com/amazon-braket/amazon-braket-sdk-python/releases/tag/v1.79.0) 이상의 [Amazon Braket Python SDK](https://github.com/amazon-braket/amazon-braket-sdk-python)가 있어야 합니다. 다음 코드를 사용하여 최신 Braket SDK, Qiskit 공급자 및 PennyLane 플러그인으로 업데이트할 수 있습니다.

```
pip install --upgrade amazon-braket-sdk amazon-braket-pennylane-plugin qiskit-braket-provider
```

**`DirectReservation` 컨텍스트 관리자를 사용하여 작업 실행**

예정된 예약 내에서 작업을 실행하는 데 권장되는 방법은 `DirectReservation` 컨텍스트 관리자를 사용하는 것입니다. 컨텍스트 관리자는 대상 디바이스와 예약 ARN을 지정하여 Python `with` 문 내에서 생성된 모든 작업이 디바이스에 대한 독점적 액세스 권한으로 실행되도록 합니다.

먼저 양자 회로와 디바이스를 정의합니다. 그런 다음 예약 컨텍스트를 사용하고 작업을 실행합니다. **전체 워크로드가 `with` 블록 내에서 실행되어야 합니다. `with` 블록 범위 외부에서 실행되는 모든 것은 예약과 연결되지 않습니다.**

```
from braket.aws import AwsDevice, DirectReservation
from braket.circuits import Circuit
from braket.devices import Devices

bell = Circuit().h(0).cnot(0, 1)
device = AwsDevice(Devices.IonQ.ForteEnterprise1)

# run the circuit in a reservation
with DirectReservation(device, reservation_arn="<my_reservation_arn>"):
    task = device.run(bell, shots=100)
```

양자 작업을 생성하는 동안 `DirectReservation` 컨텍스트가 활성 상태인 한 , CUDA-Q PennyLane및 Qiskit 플러그인을 사용하여 예약에서 양자 작업을 생성할 수 있습니다. 예를 들어 Qiskit-Braket 공급자를 사용하면 다음과 같이 작업을 실행할 수 있습니다.

```
from braket.devices import Devices
from braket.aws import DirectReservation
from qiskit import QuantumCircuit
from qiskit_braket_provider import BraketProvider


qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)

qpu = BraketProvider().get_backend("Forte Enterprise 1")

# run the circuit in a reservation
with DirectReservation(Devices.IonQ.ForteEnterprise1, reservation_arn="<my_reservation_arn>"):
    qpu_task = qpu.run(qc, shots=10)
```

마찬가지로, 다음 코드는 예약 기간 동안 Braket-PennyLane 플러그인을 사용하여 회로를 실행합니다.

```
from braket.devices import Devices
from braket.aws import DirectReservation
import pennylane as qml


dev = qml.device("braket.aws.qubit", device_arn=Devices.IonQ.ForteEnterprise1.value, wires=2, shots=10)

@qml.qnode(dev)
def bell_state():
    qml.Hadamard(wires=0)
    qml.CNOT(wires=[0, 1])
    return qml.probs(wires=[0, 1])

# run the circuit in a reservation
with DirectReservation(Devices.IonQ.ForteEnterprise1, reservation_arn="<my_reservation_arn>"):
    probs = bell_state()
```

**예약 컨텍스트 수동 설정**

또는 다음 코드를 사용하여 예약 컨텍스트를 수동으로 설정할 수 있습니다.

```
# set reservation context 
reservation_context = DirectReservation(device, reservation_arn="<my_reservation_arn>").start()

# run circuit during reservation
task = device.run(bell, shots=100)
```

이는 컨텍스트를 첫 번째 셀에서 실행할 수 있고 모든 후속 작업이 예약에서 실행되는 Jupyter Notebook에 적합합니다.

**참고**  
`.start()` 직접 호출이 포함된 셀은 *한 번만 실행*해야 합니다.

온디맨드 모드로 다시 전환하는 방법: Jupyter Notebook을 다시 시작하거나 다음을 직접적으로 호출하여 컨텍스트를 온디맨드 모드로 다시 변경합니다.

```
reservation_context.stop()  # unset reservation context 
```

**참고**  
 예약에는 미리 결정된 시작 및 종료 시간이 [있습니다(예약 생성](https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservation) 참조). `reservation_context.start()` 및 `reservation_context.stop()` 메서드는 **예약을 시작하거나 종료하지 않습니다**. 대신 컨텍스트가 활성화되어 있는 동안 생성한 양자 작업은 예약과 연결되며 예약된 예약 중에만 실행됩니다. 예약 컨텍스트는 예약된 예약 시간에 영향을 미치지 않습니다.

**작업 생성 시 예약 ARN 명시적으로 전달**

예약 기간 동안 작업을 생성하는 또 다른 방법은 `device.run()`를 직접적으로 호출할 때 예약 ARN을 명시적으로 전달하는 것입니다.

```
task = device.run(bell, shots=100, reservation_arn="<my_reservation_arn>")
```

이 메서드는 양자 작업을 예약 ARN과 직접 연결하여 예약 기간 동안 실행되도록 합니다. 이 옵션의 경우 예약 기간 동안 실행하려는 각 작업에 예약 ARN을 추가합니다. 그러나 Qiskit 또는와 같은 타사 라이브러리를 사용하는 경우 제출된 작업이 올바른 예약 ARN을 사용하고 있는지 확인하기 어려울 PennyLane수 있습니다. 따라서 DirectReservation 컨텍스트 관리자를 사용하는 것이 좋습니다.

boto3을 직접 사용하는 경우 작업을 생성할 때 예약 ARN을 연결로 전달합니다.

```
import boto3

braket_client = boto3.client("braket")


kwargs["associations"] = [
    {
        "arn": "<my_reservation_arn>",
        "type": "RESERVATION_TIME_WINDOW_ARN",
    }
]

response = braket_client.create_quantum_task(**kwargs)
```

# 예약 기간 동안 하이브리드 작업 실행
<a name="braket-run-hybrid-jobs-with-reservation"></a>

하이브리드 작업으로 실행할 Python 함수가 있으면 `reservation_arn` 키워드 인수를 전달하여 예약에서 하이브리드 작업을 실행할 수 있습니다. 하이브리드 작업 내의 모든 작업은 예약 ARN을 사용합니다. 중요한 점은, `reservation_arn`이 있는 하이브리드 작업은 *예약이 시작된 후에만 고전적 컴퓨팅을 가동한다는 것입니다*.

**참고**  
예약 기간 동안 실행되는 하이브리드 작업은 예약된 디바이스에서만 *양자 작업을 성공적으로 실행*합니다. 다른 온디맨드 Braket 디바이스를 사용하려고 하면 오류가 발생합니다. 동일한 하이브리드 작업 내에서 온디맨드 시뮬레이터와 예약된 디바이스 모두에서 작업을 실행해야 하는 경우 대신 `DirectReservation`을 사용합니다.

다음 코드는 예약 기간 동안 하이브리드 작업을 실행하는 방법을 보여줍니다.

```
from braket.aws import AwsDevice
from braket.devices import Devices
from braket.jobs import get_job_device_arn, hybrid_job

@hybrid_job(device=Devices.IonQ.ForteEnterprise1, reservation_arn="<my_reservation_arn>")
def example_hybrid_job():
    # declare AwsDevice within the hybrid job
    device = AwsDevice(get_job_device_arn())
    bell = Circuit().h(0).cnot(0, 1)
    
    task = device.run(bell, shots=10)
```

Python 스크립트를 사용하는 하이브리드 작업의 경우(개발자 안내서의 [Creating your first Hybrid Job](https://docs.aws.amazon.com/braket/latest/developerguide/braket-jobs-first.html) 섹션 참조) 작업을 생성할 때 `reservation_arn` 키워드 인수를 전달하여 예약 내에서 실행할 수 있습니다.

```
from braket.aws import AwsQuantumJob 
from braket.devices import Devices

job = AwsQuantumJob.create( 
    Devices.IonQ.ForteEnterprise1,
    source_module="algorithm_script.py", 
    entry_point="algorithm_script:start_here",
    reservation_arn="<my_reservation_arn>"
)
```

# 예약 종료 시 발생하는 일
<a name="braket-end-of-reservation"></a>

예약이 종료된 후에는 더 이상 디바이스에 대한 전용 액세스 권한이 부여되지 않습니다. 이 예약과 함께 대기 중인 나머지 워크로드는 자동으로 취소됩니다.

**참고**  
예약이 종료되면 `RUNNING` 상태였던 모든 작업이 취소됩니다. 편리한 시간에 [체크포인트를 사용하여 작업을 저장하고 다시 시작](https://docs.aws.amazon.com/braket/latest/developerguide/braket-jobs-checkpoints.html)하는 것이 좋습니다.

각 예약은 독립 실행형 전용 디바이스 액세스를 의미하므로, 예약 시작 후 및 예약 종료 전과 같은 진행 중인 예약은 연장할 수 없습니다. 예를 들어 두 개의 back-to-back 예약은 별도의 예약으로 간주되며 첫 번째 예약에서 보류 중인 모든 작업은 자동으로 취소됩니다. 해당 작업은 두 번째 예약에서 재개되지 않습니다.

**참고**  
예약은 AWS 계정의 전용 디바이스 액세스를 나타냅니다. 디바이스가 유휴 상태로 유지되더라도 다른 고객은 디바이스를 사용할 수 없습니다. 따라서 실제 사용 시간에 관계없이 예약 시간 전체에 대해 요금이 부과됩니다.

# 기존 예약 취소 또는 일정 조정
<a name="braket-cancel-reservation"></a>

예정된 예약 시작 시간 최소 48시간 전에 예약을 취소할 수 있습니다. 취소하려면 취소 요청과 함께 받은 예약 확인 이메일에 회신합니다.

일정을 조정하려면 기존 예약을 취소한 다음 새 예약을 생성해야 합니다.