Przejdź do głównej treści

⚙️ Ustawienia doQumentation

Skonfiguruj serwer Jupyter używany do wykonywania kodu Python w tutorialach.

Bieżące środowisko:

Tryb symulatora

Włącz, aby uruchamiać notatniki bez konta IBM Quantum. Wszystkie wywołania QiskitRuntimeService są przekierowywane do lokalnego symulatora. Nie są potrzebne żadne modyfikacje komórek. Dotyczy to tylko wykonania kodu osadzonego na tej stronie — otwieranie notatnika w JupyterLab używa standardowego środowiska uruchomieniowego Qiskit.

Skompilowane obwody i wyniki specyficzne dla backendu będą się różnić od prawdziwego sprzętu w trybie symulatora. Statyczne oczekiwane wyniki pokazywane na stronach odzwierciedlają prawdziwe backendy IBM.

Preferencje wyświetlania

Rozmiar czcionki kodu

14px
from qiskit import QuantumCircuit

Wstępnie obliczone wyniki

Każda strona notatnika pokazuje wstępnie obliczone wyniki (obrazy, tabele, tekst) z oryginalnych przebiegów IBM. Gdy klikniesz Run, aby wykonać kod na żywo, oryginalne wyniki i nowe wyniki na żywo są pokazywane obok siebie. Włącz to przełączanie, aby ukryć oryginalne wyniki podczas wykonywania na żywo, wyświetlając tylko twoje wyniki.

Ostrzeżenia Pythona

Domyślnie ostrzeżenia Pythona (powiadomienia o deprecjacji, wskazówki uruchomieniowe) są wyciszane dla czystszego wyjścia notatnika. Wyłącz to, aby zobaczyć wszystkie ostrzeżenia — przydatne do debugowania lub uczenia się o zmianach API.

Postępy nauki

Twój postęp w czytaniu i wykonywaniu jest śledzony lokalnie w przeglądarce. Odwiedzone strony pokazują na pasku bocznym; wykonane notatniki pokazują .

Brak śledzonych postępów. Odwiedź tutoriale i przewodniki, aby rozpocząć śledzenie.

Inne

Ustawienia zaawansowane

IBM Cloud Code Engine

Code Engine zapewnia szybki, bezserwerowy kernel Jupyter oparty na Twoim własnym koncie IBM Cloud. Start zajmuje sekundy zamiast minut. Bezpłatny poziom obejmuje ~14 godzin/miesiąc.

Instrukcje konfiguracji
  1. Utwórz konto IBM Cloud na cloud.ibm.com (dostępny bezpłatny poziom)
  2. Utwórz projekt Code Engine w preferowanym regionie
  3. Wdróż nową aplikację z obrazem ghcr.io/janlahmann/doqumentation-codeengine:latest, port 8080
  4. Ustaw zmienną środowiskową JUPYTER_TOKEN na bezpieczny token (min. 32 znaki) i CORS_ORIGIN na Twoją domenę
Join Workshop

Paste the workshop config string provided by your instructor. This connects you to a pool of Code Engine instances for the class.

Konto IBM Quantum

Uwaga dotycząca bezpieczeństwa: Dane uwierzytelniające są przechowywane w localStorage przeglądarki jako zwykły tekst. Nie są szyfrowane i mogą być odczytane przez rozszerzenia przeglądarki lub osoby z dostępem do tego urządzenia. Użyj ustawienia wygasania poniżej, aby ograniczyć ekspozycję, i usuń dane uwierzytelniające po zakończeniu. W przypadku współdzielonych lub publicznych komputerów preferuj ręczną metodę save_account() opisaną poniżej.

Wprowadź tutaj raz swoje dane uwierzytelniające IBM Quantum. Zostaną automatycznie wstrzyknięte przez save_account() po uruchomieniu kernela, więc nie musisz ich wprowadzać w każdym notatniku. Dotyczy to tylko wykonania kodu osadzonego na tej stronie — otwieranie notatnika w JupyterLab wymaga ręcznego wywołania save_account().

  1. Zarejestruj się na quantum.cloud.ibm.com/registration — karta kredytowa nie jest wymagana przez pierwsze 30 dni
  2. Zaloguj się na quantum.cloud.ibm.com
  3. Instancja — Utwórz bezpłatną instancję Open Plan na Instancje, jeśli jej jeszcze nie masz
  4. Token API — Kliknij ikonę profilu (prawy górny róg), a następnie „API token”. Skopiuj klucz.
  5. CRN — Skopiuj ciąg CRN ze strony Instancje

Szczegółowe kroki znajdziesz w przewodniku IBM Konfiguracja uwierzytelniania (krok 2).

Alternatywa: ręczne uruchomienie save_account() w komórce notatnika

Jeśli wolisz nie przechowywać danych uwierzytelniających w tej przeglądarce, wklej to do dowolnej komórki kodu i uruchom. Dane uwierzytelniające są zapisywane w tymczasowej pamięci kernela Bindera i tracone po zakończeniu sesji.

from qiskit_ibm_runtime import QiskitRuntimeService
QiskitRuntimeService.save_account(
    token="YOUR_API_TOKEN",
    instance="YOUR_CRN",
    overwrite=True
)

Pakiety Binder

Podczas działania na GitHub Pages kod jest wykonywany przez MyBinder. Środowisko Binder zawiera preinstalowane podstawowe pakiety Qiskit:

qiskit[visualization], qiskit-aer,
qiskit-ibm-runtime, pylatexenc,
qiskit-ibm-catalog, qiskit-addon-utils, pyscf

Niektóre notatniki wymagają dodatkowych pakietów. Możesz je zainstalować na żądanie, uruchamiając to w komórce kodu:

!pip install -q <package>

Lub zainstaluj wszystkie opcjonalne pakiety naraz:

!pip install -q scipy scikit-learn qiskit-ibm-transpiler \
  qiskit-experiments plotly sympy qiskit-serverless \
  qiskit-addon-sqd qiskit-addon-mpf \
  qiskit-addon-aqc-tensor[aer,quimb-jax] \
  qiskit-addon-obp qiskit-addon-cutting ffsim \
  gem-suite python-sat

Niestandardowy serwer Jupyter

Bazowy URL Twojego serwera Jupyter (np. http://localhost:8888)
Token z jupyter server --generate-config lub wyświetlony podczas uruchamiania

Pomoc z konfiguracją

Konfiguracja RasQberry

Jeśli działasz na RasQberry Pi, serwer Jupyter powinien zostać automatycznie wykryty. Jeśli nie, upewnij się, że usługa jupyter-tutorials jest uruchomiona:

sudo systemctl status jupyter-tutorials

Lokalna konfiguracja Jupyter

Uruchom serwer Jupyter z włączonym CORS:

jupyter server --ServerApp.token='rasqberry' \
  --ServerApp.allow_origin='*' \
  --ServerApp.disable_check_xsrf=True

Konfiguracja Docker

Kontener Docker generuje losowy token Jupyter przy uruchomieniu. Wykonywanie kodu przez stronę (port 8080) działa automatycznie — token nie jest potrzebny. Token jest wymagany tylko do bezpośredniego dostępu do JupyterLab na porcie 8888.

Aby pobrać token z logów kontenera:

docker compose --profile jupyter logs | grep "Jupyter token"

Aby ustawić stały token:

JUPYTER_TOKEN=mytoken docker compose --profile jupyter up

Serwer zdalny

W przypadku serwerów zdalnych upewnij się, że CORS jest skonfigurowany, aby zezwolić na połączenia z tej strony. Dodaj poniższe do pliku jupyter_server_config.py:

c.ServerApp.allow_origin = '*'
c.ServerApp.allow_credentials = True