Przejdź do głównej treści

Inicjalizacja konta usługi Qiskit Runtime

Przed użyciem Qiskit Runtime musisz zainicjalizować (utworzyć instancję) swoje konto, przesyłając (wczytując) dane uwierzytelniające. Możesz je podawać ręcznie za każdym razem, gdy inicjalizujesz usługę Qiskit Runtime, lub zapisać je do ponownego użycia.

Uwagi
  • Jeśli korzystasz z komputera publicznego lub innego niezaufanego środowiska, zamiast tego postępuj zgodnie z instrukcjami w Inicjalizacja usługi w niezaufanym środowisku.
  • Postępuj zgodnie z tymi instrukcjami, jeśli chcesz połączyć się za pomocą interfejsu REST API zamiast Qiskit.
  • W razie potrzeby skorzystaj z tych informacji, aby skonfigurować zaporę sieciową i umożliwić dostęp do punktów końcowych API IBM Quantum.

Zanim zaczniesz

Upewnij się, że wykonałeś następujące kroki:

  1. Upewnij się, że jesteś członkiem konta IBM Cloud. Instrukcje znajdziesz w Konfiguracja konta IBM Cloud.
  2. Utwórz (lub uzyskaj dostęp do) co najmniej jedną instancję. Aby to zweryfikować, wykonaj następujące kroki:
    1. Zaloguj się do IBM Quantum Platform.
    2. Upewnij się, że w przełączniku kont w nagłówku wybrano właściwe konto i region.
    3. Jeśli widoczna jest co najmniej jedna instancja, ten krok jest zakończony. W przeciwnym razie utwórz instancję.
  3. Upewnij się, że pracujesz w aktywnym środowisku Python z zainstalowanym Qiskit SDK i Qiskit Runtime.
  4. Aktywuj wirtualne środowisko Python i uruchom Pythona w tym środowisku.

Znajdź swoje dane uwierzytelniające

  1. Znajdź swój klucz API (zwany również tokenem API). Na pulpicie nawigacyjnym utwórz klucz API, a następnie skopiuj go w bezpieczne miejsce, aby móc użyć go do uwierzytelniania. Token nie będzie widoczny ponownie. Pamiętaj, że możesz używać jednego klucza API do łączenia się z dowolnym regionem.
  2. Opcjonalnie: Znajdź instancję, której chcesz użyć, na stronie Instances. Najedź kursorem na jej CRN, kliknij ikonę, aby go skopiować, a następnie zapisz go w bezpiecznym miejscu, aby móc go użyć do identyfikacji instancji.

Połącz Qiskit z instancją usługi Qiskit Runtime

uwaga

Te instrukcje są przeznaczone dla qiskit_ibm_runtime w wersji 0.42 lub nowszej. Niektóre funkcje nie są dostępne we wcześniejszych wersjach qiskit_ibm_runtime. W takich przypadkach zawsze podawaj wartości parametrów channel, token i instance — jawnie lub przez zapisane konto.

Poniżej znajduje się podstawowy kod do połączenia Qiskit z instancją usługi Qiskit Runtime. Istnieje jednak kilka różnych sposobów dostosowania opcji QiskitRuntimeService w zależności od potrzeb. Opcje te opisano w kolejnych sekcjach.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(channel=<channel>,
token=<your-API_KEY>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)
uwaga

Domyślnym kanałem jest ibm_quantum_platform. Ponieważ jest to niemal zawsze właściwy kanał, nie jest on uwzględniany w przykładach.

Szybki start: jawne podanie danych uwierzytelniających

Najszybszym sposobem uruchomienia instancji QiskitRuntimeService jest metoda bezpośredniej inicjalizacji: jawne podawanie tokenu API (klucza) i CRN (identyfikatora instancji) za każdym razem, gdy trzeba zainicjalizować usługę Qiskit Runtime. W razie potrzeby zapoznaj się z sekcją Znajdź swoje dane uwierzytelniające.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(token=<cloud_api_key>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)

Ta metoda jest niezawodna, ale może być uciążliwa, jeśli wielokrotnie ładujesz te same dane. Aby uniknąć wielokrotnego podawania danych uwierzytelniających, jeśli pracujesz w zaufanym środowisku Python (np. na prywatnym laptopie lub stacji roboczej), możesz użyć zapisanych danych uwierzytelniających, zgodnie z opisem w następnej sekcji.

Chociaż parametr wejściowy instance jest opcjonalny, zaleca się jego zawsze podawanie, chyba że chcesz używać jednej usługi do pracy z kilkoma instancjami. W takim przypadku zapoznaj się z sekcją automatyczny wybór instancji.

Szybki start: użycie zapisanych danych uwierzytelniających

Jeśli masz już zapisane dane uwierzytelniające, użyj poniższego kodu, aby zastosować domyślne dane. Instrukcje dotyczące zapisywania danych znajdziesz w Zapisz swoje dane uwierzytelniające.

from qiskit_ibm_runtime import QiskitRuntimeService

# run every time you need the service
service = QiskitRuntimeService()
...

Jeśli nadałeś nazwy jednemu lub kilku zestawom danych uwierzytelniających — na przykład dla dostępu otwartego i premium — użyj poniższego kodu, aby skorzystać z zestawu o konkretnej nazwie.

from qiskit_ibm_runtime import QiskitRuntimeService

# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...

Uwagi dotyczące wczytywania zapisanych danych uwierzytelniających

  • Jeśli inicjalizujesz usługę z parametrami token i name, parametr token jest ignorowany i wczytywane są zapisane dane z konta name.

    W poniższym przykładzie usługa wczytuje dane z account_A i nie używa token_B:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(token="token_B", name="account_A")
  • Jeśli podczas inicjalizacji usługi podasz name i instance, usługa spróbuje wczytać konto name oraz połączyć się z podaną instance. W przypadku jakiegokolwiek konfliktu zostanie wyświetlone ostrzeżenie.

    W poniższym przykładzie usługa spróbuje wczytać dane uwierzytelniające dla account_A i użyć instancji CRN_B — nawet jeśli w account_A podana jest inna instancja:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(instance="CRN_B", name="account_A")
  • Usługa próbuje wczytać domyślne zapisane konto tylko wtedy, gdy podczas inicjalizacji nie podasz token ani name. Jeśli jednak instance jest podana jawnie, usługa próbuje połączyć się z tą instancją, używając domyślnych danych uwierzytelniających. W przypadku jakiegokolwiek konfliktu zostanie wyświetlone ostrzeżenie.

    W poniższym przykładzie usługa próbuje wczytać domyślne dane uwierzytelniające i użyć instancji CRN_B — nawet jeśli w domyślnym koncie podana jest inna instancja:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(instance="CRN_B")
  • Jeśli zapiszesz wiele zestawów danych uwierzytelniających, ale nie wskażesz żadnego podczas inicjalizacji usługi i nie ma domyślnego zapisanego konta, używany jest zestaw, którego nazwa jest ostatnia w kolejności alfabetycznej.

    W poniższym przykładzie użytkownik zapisał konta o nazwach "my_premium" i "my_open", ale nie oznaczył żadnego z nich jako domyślnego. Następnie zainicjalizował usługę poniższym kodem. W tym przypadku używane są dane uwierzytelniające "my_premium":

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService()
  • Jeśli stale otrzymujesz błąd "401 Unauthorized", możliwe, że próbujesz użyć tokenu bearer zamiast klucza API.

Automatyczny wybór instancji

Jeśli podasz token, ale nie podasz CRN instancji podczas tworzenia instancji usługi, QiskitRuntimeService uwierzytelni się na koncie identyfikowanym przez token i użyje automatycznego wyboru instancji, aby wybrać najbardziej odpowiednią instancję dla żądanego zadania. Jeśli masz kilka instancji dostępnych w ramach konta, usługa automatycznie wybiera spośród dostępnych instancji w zależności od żądanego zasobu oraz następujących opcji QiskitRuntimeService (jeśli są ustawione): plans_preference, region, tags.

  • plans_preference: Typy planów instancji, którym należy nadać priorytet. Na przykład podanie [open] sprawia, że dostępne są tylko instancje planu Open. Akceptowane wartości to open, premium, pay-as-you-go, flex i on-prem. Jeśli plans_preference nie jest określone, plany bezpłatne mają pierwszeństwo przed płatnymi.
  • region: Region instancji. Akceptowane wartości to us-east i eu-de.
  • tags: Tagi instancji. Przyjmuje listę ciągów znaków z nazwami tagów.
uwaga

Możesz skonfigurować zapisane dane uwierzytelniające tak, aby automatycznie wybierały instancję.

Instancja jest wyszukiwana i używana w następującej kolejności:

  1. Jeśli twoje konto ma dostęp tylko do jednej instancji, jest ona wybierana domyślnie.
  2. Jeśli używane są zapisane dane uwierzytelniające i instancja została podana wraz z tymi danymi, używana jest ta instancja. Zobacz Uwagi dotyczące wczytywania zapisanych danych uwierzytelniających.
  3. Jeśli twoje konto ma wiele instancji, które mogą uzyskać dostęp do żądanego QPU, system używa twoich preferencji planu do wyboru planu i instancji. W przypadku Qiskit Runtime w wersji 0.42 i nowszych plany bezpłatne są domyślnie traktowane priorytetowo.
  4. Jeśli twoje konto ma dostęp do wielu instancji, ale tylko jedna może uzyskać dostęp do żądanego QPU, wybierana jest instancja z dostępem. Jeśli ta instancja nie jest powiązana z planem bezpłatnym, zostanie naliczona opłata.

Przykłady

W tym przykładzie usługa przeszukuje wszystkie instancje dostępne dla konta, aby znaleźć te, które mogą uzyskać dostęp do podanego Backend:

service = QiskitRuntimeService(token=<your-API_KEY>)

W tym przykładzie usługa przeszukuje wszystkie instancje dostępne dla konta w regionie EU, aby znaleźć te, które mogą uzyskać dostęp do podanego Backend:

service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")

W tym przykładzie usługa przeszukuje wszystkie instancje dostępne dla konta i oznaczone tagiem services, aby znaleźć te, które mogą uzyskać dostęp do podanego Backend:

service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])

W tym przykładzie usługa przeszukuje wszystkie instancje premium i open dostępne dla konta, aby znaleźć te, które mogą uzyskać dostęp do podanego Backend. Jeśli Backend jest dostępny zarówno w instancji Premium, jak i Open Plan, instancja Premium Plan ma pierwszeństwo, ponieważ premium jest podane jako pierwsze w plans_preference.

service = QiskitRuntimeService(token=<your-API_KEY>, plans_preference=['premium', 'open'])

Sprawdzanie wybranej instancji

Wybrana instancja jest zwracana jako ostrzeżenie. Dodatkowo możesz uruchomić service.active_instance(), aby sprawdzić aktywną instancję.

Lokalne testowanie z Qiskit Runtime

Klasę QiskitRuntimeService można zainicjalizować z parametrem channel=local, aby przeprowadzić lokalną symulację. W takim przypadku uwierzytelnianie nie jest wymagane i nie ma potrzeby podawania wartości token ani instance. Dlatego nie zaleca się zapisywania lokalnego konta. Zamiast tego można użyć bezpośredniej inicjalizacji:

from qiskit_ibm_runtime import QiskitRuntimeService

# Initialize for local testing

service = QiskitRuntimeService(channel="local")

Kolejne kroki

Rekomendacje