Klassisk databehandling utmanas i allt högre grad av dagens mest komplexa beräkningsproblem – även i skalan av våra mest kraftfulla superdatorer. Kvantdatorer har löftet att dramatiskt utöka våra beräkningsfunktioner. Genom att utnyttja kvantfysikens egenskaper för att utföra beräkningar ger de exponentiella hastigheter för vissa typer av problem. Kvantdatorer klarar sig till exempel exceptionellt bra med problem som kräver beräkning av ett stort antal möjliga kombinationer som ofta finns i optimerings-, simulerings- eller maskininlärningsscenarier.
Kvantberäkningskomponenter har dock en annan driftsmodell än klassisk programvara. Det finns vanligtvis en eller flera klassiska beräkningskomponenter som samordnar körningen av kvantkomponenter. Den här orkestreringen omfattar följande aktiviteter:
- Förberedelse av indata
- Överföring av kvantberäkning jobb till en kvantmiljö
- Övervakning av jobbkörning
- Efterbearbetning av jobbresultat
Du kan integrera den här orkestreringen med klassiska program på något av två sätt:
- Integrering via nära koppling. Logik för orkestrering av kvantresurser är integrerad i den klassiska komponenten eller komponenterna.
- Integrering via lös koppling. Logik för orkestrering av kvantresurser exponeras som ett API som kan anropas av olika klassiska programvarukomponenter.
Den här artikeln beskriver hur du implementerar kvantprogram i var och en av dessa designer. Varje implementering använder Azure Quantum som kvantberäkningsmotor, men de skiljer sig något åt i andra aspekter enligt beskrivningen nedan.
Den nära kopplade metoden är att föredra i dessa fall:
- Ett team äger både kvantkoden och den klassiska koden, och koden är integrerad.
- Kvantkomponenter delar samma livscykel som de klassiska komponenterna.
- Användningen av kvantkomponenterna är begränsad till ett enda program eller en liten uppsättning relaterade program.
- Kvantjobbet representerar en specialiserad lösning (till exempel en molekylär simulering) som endast används av ett specialiserat klassiskt program.
- Den implementerade algoritmen är hybrid kvantklassicistisk till sin natur, till exempel Variantal Quantum Eigensolvers (VQE) och Quantum Approximate Optimization Algorithms (QAOA).
Ladda ned en PowerPoint-fil av den här arkitekturen.
- En inloggad användare utlöser kvantjobbkörning via ett klassiskt klientprogram.
- Klientprogrammet placerar indata i Azure Storage.
- Klientprogrammet skickar jobbet till en Azure Quantum-arbetsyta och anger körningsmål eller mål. Klienten identifierar arbetsytan via data som lagras i Key Vault och autentiserar till arbetsytan via hanterad identitet.
- En kvantprovider kör jobbet i en målmiljö.
- Klientprogrammet övervakar jobbkörningen efter status för avsökningsjobbet.
- Så snart kvantjobbet är klart hämtar klientprogrammet beräkningsresultatet från Storage.
Det här arbetsflödet implementerar asynkront Request-Reply mönster och stegen som definierats för Azure Quantum-jobblivscykel.
- Azure Quantum tillhandahåller en arbetsyta, tillgänglig från Azure-portalen, för tillgångar som är associerade med att köra kvantjobb på olika mål. Jobb körs på kvantsimulatorer eller kvantmaskinvara, beroende på vilken leverantör du väljer.
- Microsoft Entra ID samordnar användarautentisering och hjälper till att skydda åtkomsten till Azure Quantum-arbetsytan.
- Key Vault- skyddar och behåller kontrollen över nycklar och andra hemligheter, till exempel namnet på Azure Quantum-arbetsytan.
- Azure Storage- tillhandahåller lagring för indata och resultat från kvantprovidern.
Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.
Tillförlitlighet säkerställer att ditt program kan uppfylla de åtaganden du gör gentemot dina kunder. Mer information finns i checklistan för Designgranskning för tillförlitlighet.
Tillgängligheten för kvantberäkningsfunktionen beror mycket på tillgängligheten och installationsbasen för den kvantberäkningsprovidern. Beroende på beräkningsmålet kan det klassiska klientprogrammet uppleva långa fördröjningar eller otillgänglighet för målet.
För de omgivande Azure-tjänsterna gäller de vanliga tillgänglighetsövervägandena:
- Använd redundansalternativen Key Vault.
- Om det behövs bör du överväga att använda replikeringsalternativen i Storage.
Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i checklistan för Designgranskning för Security.
Till skillnad från arkitekturen för löst kopplade alternativbaseras arkitekturen som presenteras här på antagandet att endast en klient har åtkomst till Azure Quantum-arbetsytan. Det här scenariot leder till följande konfigurationer:
- Eftersom klienten är känd kan du implementera autentisering via hanterad identitet, som är associerad med programmet.
- Du kan implementera begränsning av begäranden och cachelagring av resultat i själva klienten.
Överväg i allmänhet att använda typiska designmönster för när det är lämpligt.
Den löst kopplade metoden är att föredra i dessa fall:
- Du har ett dedikerat team av kvantspecialister som centralt tillhandahåller kvantfunktioner till andra team och kvantkomponenterna utvecklas oberoende av klassiska klientkomponenter.
- Kvantjobbet representerar en allmän lösning (till exempel jobbschemaläggning) som kan återanvändas av flera klassiska program.
Ladda ned en PowerPoint-fil av den här arkitekturen.
- En inloggad användare utlöser kvantjobbkörning via ett klassiskt program.
- Det klassiska programmet anropar DET anpassade jobb-API:et för att skicka jobbet.
- API-gatewayen utlöser azure-funktionen för jobböverföring, som skickar jobbindata.
- Funktionen placerar indata i Azure Storage.
- Funktionen skickar jobbet till en Azure Quantum-arbetsyta och anger körningsmål eller mål. Funktionen identifierar arbetsytan via data som lagras i Azure Key Vault och autentiserar till arbetsytan via hanterad identitet.
- En kvantprovider kör jobbet i en målmiljö.
- Klientprogrammet övervakar jobbkörningen genom att avsöka jobbstatus via API-anrop.
- API-gatewayen övervakar jobbkörningen genom att avsöka jobbstatus från kvantprovidern.
- När jobbet är klart lagras beräkningsresultaten i Azure Storage. Klientprogrammet hämtar resultaten med hjälp av ett API som implementeras via Azure-funktionen.
Det här arbetsflödet implementerar asynkront Request-Reply mönster och stegen som definierats för Azure Quantum-jobblivscykel.
- Azure Quantum tillhandahåller en arbetsyta, tillgänglig från Azure-portalen, för tillgångar som är associerade med att köra kvantjobb på olika mål. Jobb körs på kvantsimulatorer eller kvantmaskinvara, beroende på vilken leverantör du väljer.
- Microsoft Entra ID samordnar användarautentisering och hjälper till att skydda åtkomsten till Azure Quantum-arbetsytan.
- API Management är DEN API-gateway som centralt exponerar API-slutpunkterna för hantering av kvantjobb.
- Azure Functions- används för att vidarebefordra klientbegäranden till lämpliga kvantresurser.
- Azure Key Vault skyddar och behåller kontrollen över nycklar och andra hemligheter, till exempel namnet på Azure Quantum-arbetsytan.
- Azure Storage- tillhandahåller lagring för indata och resultat från kvantprovidern.
Tillgängligheten för kvantberäkningsfunktionen är mycket beroende av tillgängligheten och installationsbasen för den kvantberäkningsprovidern. Beroende på beräkningsmålet kan det klassiska klientprogrammet uppleva långa fördröjningar eller otillgänglighet för målet.
För de omgivande Azure-tjänsterna gäller de vanliga tillgänglighetsövervägandena:
- För hög tillgänglighet kan du distribuera API Management- till flera zoner eller regioner.
- Om du använder geo-replikering kan du etablera Azure Functions i flera regioner.
- Använd redundansalternativen Key Vault.
- Om det behövs bör du överväga att använda replikeringsalternativen i Storage.
Till skillnad från arkitekturen för nära kopplade alternativbaseras arkitekturen som presenteras här på antagandet att flera klienter har åtkomst till Azure Quantum-arbetsytan via API:et. Det här scenariot leder till följande konfigurationer:
- Klienter måste autentisera till API:et. Du kan implementera den här autentiseringen med hjälp av autentiseringsprinciper.
- Du kan implementera autentisering av Azure-funktionerna via hanterade identiteter associerade med funktionerna. Du kan använda dessa identiteter för att autentisera till Azure Quantum-arbetsytan.
- Flera klienter har åtkomst till API:et. Du kan implementera begränsning av begäranden med hjälp av API Management-begärandebegränsning för att skydda kvantserverdelen och begränsa användningen av kvantresurser.
- Beroende på begärandemönstret kanske du kan implementera cachelagring av kvantberäkningsresultat med hjälp av API Management-cachelagringsprinciper.
Överväg i allmänhet att använda typiska designmönster för när det är lämpligt.
Prestandaeffektivitet är arbetsbelastningens förmåga att skala för att uppfylla användarnas krav på ett effektivt sätt. Mer information finns i checklistan för Designgranskning för prestandaeffektivitet.
Programmets prestanda beror på tillgängligheten och prestandan för de underliggande kvantberäkningsmålen. Information om prestanda och skalbarhet för klassiska komponenter finns i typiska designmönster för skalbarhet och checklistan prestandaeffektivitet.
Följande funktioner är gemensamma för både tätt kopplade och löst kopplade implementeringsmodeller
De arkitekturer som presenteras här är för affärsproblem som kräver kvantberäkningsresurser för sina beräkningsuppgifter. För vissa beräkningsutmaningar kan befintliga tjänster som skapats för att utföra högpresterande databehandling eller tillhandahålla AI-funktioner vara ett alternativ.
Några av Azure-kvantmålen (särskilt kvantmaskinvara) kommer att vara en begränsad resurs under överskådlig framtid. Åtkomst till dessa resurser implementeras via en kömekanism. När du skickar ett kvantjobb till Azure Quantum läggs det här jobbet till i en jobbkö. Jobbet körs när målet har slutfört bearbetningen av tidigare köposter. Du kan få den förväntade väntetiden genom att visa tillgängliga mål. För att beräkna den fullständiga svarstiden måste du lägga till den tid som ägnas åt att vänta på en tillgänglig resurs till jobbkörningstiden.
Eftersom kvantmålmiljöer som Azure Quantum vanligtvis ger begränsad felkorrigering (begränsad till kvantprocessorn när det gäller Azure Quantum) kan andra fel, till exempel timeout för kvantdatorer, fortfarande inträffa, så vi rekommenderar att du övervakar jobbkörningen så att du kan informera användaren om jobbstatus. När jobbkörningen misslyckas på grund av ett tillfälligt fel implementerar du ett återförsöksmönster. Skicka jobben via asynkrona anrop, med avsökning för resultatet, för att undvika onödig blockering av den anropande klienten.
Eftersom kvantberäkningsresurser vanligtvis är begränsade bör förväntningarna på återhämtning överväga den här faktorn. Därför kan de förslag som erbjuds i den här artikeln ge ytterligare mått på återhämtning.
Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i checklistan Designgranskning för kostnadsoptimering.
Den totala kostnaden för den här lösningen beror på det kvantberäkningsmål som du väljer för att köra kvantjobbet. Det är enkelt att beräkna uppskattade kostnader för de klassiska komponenterna. Du kan använda priskalkylatorn för Azure.
För Azure Quantum-tjänsten bör du tänka på att kvantberäkningsleverantörer kan användas via ett Azure Marketplace-erbjudande. Prissättningen beror på typen av resurs (simulator eller maskinvara), SKU:n och din användning. Mer information finns på referenssidan för providern som behövs för ditt scenario. Dessa referenssidor visas i quantum computing providers på Azure Quantum.
Operational Excellence omfattar de driftsprocesser som distribuerar ett program och håller det igång i produktion. Mer information finns i checklistan för Designgranskning för Operational Excellence.
Att införliva kvantjobb i klassiska CI/CD-pipelines kan utföras med hjälp av Azure DevOps med mindre ändringar i en typisk design. Designen nedan illustrerar ett DevOps-pipelinearbetsflöde som kan tillämpas på de nära kopplade och löst kopplade arkitekturerna.
Ladda ned en PowerPoint-fil av den här arkitekturen.
- Utvecklaren ändrar källkoden för programkomponenterna.
- Ändringar görs i källkodslagringsplatsen.
- Ändringar i kvantkoden utlöser kvantgenereringspipelinen. Bygg-pipelinen checkar ut koden, kompilerar den, uppskattar nödvändiga resurser och kör algoritmen på en simulator.
- Den kompilerade kvantalgoritmen skickas till en kvantmiljö för testning.
- Ändringar utlöser en byggpipeline för de klassiska komponenterna. Pipelinen checkar ut koden, kompilerar den och kör enhets- och integreringstester.
- Lyckad kompilering och tester utlöser en versionspipeline. Pipelinen etablerar först Azure-miljön genom att distribuera Azure Resource Manager-mallarna som lagras på lagringsplatsen (infrastruktur som kod).
- Kompilerade klassiska programartefakter distribueras till Azure. Kvantjobben skickas till en kvantarbetsyta under körningen.
- Application Insights övervakar körningsbeteende, hälsa, prestanda och användningsinformation.
- Kvarvarande uppgifter uppdateras efter behov, beroende på övervakningsresultat.
- Utvecklaren använder Application Insights för programfeedback och optimering.
Den här lösningen använder följande DevOps-verktyg:
- Azure Repos tillhandahåller obegränsade, molnbaserade privata Git-lagringsplatser. Den används här för att lagra den kvant- och klassiska koden och De Azure Resource Manager-mallar som används för att etablera miljön.
- Azure Pipelines gör att du kontinuerligt kan skapa, testa och distribuera till molnet. Här används den för att implementera CI/CD, inklusive miljöetablering före koddistribution.
Alternativt kan du använda GitHub-lagringsplatser och GitHub-åtgärder för att implementera CI/CD-processerna.
Lösningen använder följande andra komponenter:
- Ett klientprogram samordnar kvantjobbet. Du kan implementera integrering med hjälp av en nära kopplad eller en löst kopplad metod.
- Azure Quantum tillhandahåller en arbetsyta för tillgångar som är associerade med att köra kvantberäkningsprogram. Jobb körs på kvantsimulatorer eller kvantmaskinvara, beroende på vilken leverantör du väljer.
- Microsoft Entra ID samordnar användarautentisering och skyddar åtkomsten till Azure Quantum-arbetsytan.
- Azure Key Vault skyddar och behåller kontrollen över nycklar och andra hemligheter, till exempel namnet på kvantarbetsytan.
- Azure Storage- innehåller indata och utdata för kvantjobbet.
- Application Insights övervakar programmet, identifierar programavvikelser som dåliga prestanda och fel och skickar telemetri till Azure-portalen.
Programmets prestanda beror på tillgängligheten och prestandan för de underliggande kvantberäkningsmålen. Information om prestanda och skalbarhet för klassiska komponenter finns i typiska designmönster för skalbarhet och checklistan prestandaeffektivitet.
Den här artikeln underhålls av Microsoft. Den skrevs ursprungligen av följande deltagare.
Huvudförfattare:
- Holger Sirtl | Senior Technical Architect på Microsoft Technology Center
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
- En översikt över Microsoft Quantum, ett ekosystem för kvantberäkning med öppen molnmiljö, finns i Microsoft Quantum och slutföra quantum computing-grunderna utbildningsväg.
- Mer information om Azure Quantum-tjänsten finns i Azure Quantum.
- Allmän information om Azure Quantum-jobbhantering finns i Arbeta med Azure Quantum-jobb.
- Information om hur du kör algoritmer på kvantmaskinvara finns i modulen Kör algoritmer på kvantmaskinvara med hjälp av Azure Quantum.