Share via


Biblioteca cliente de trabajos de Azure Quantum para JavaScript: versión 1.0.0-beta.1

Este paquete contiene un SDK isomórfico para QuantumJobClient.

Azure Quantum es un servicio de Microsoft Azure que puede usar para ejecutar programas de computación cuántica o resolver problemas de optimización en la nube. Con las herramientas de Azure Quantum y los SDK, puede crear programas cuánticos y ejecutarlos en diferentes simuladores cuánticos y máquinas. Puede usar la @azure/quantum-jobs biblioteca cliente para:

Introducción

En esta sección se incluye todo lo que un desarrollador necesita instalar y crear su primera conexión de cliente muy rápidamente.

Instalar el paquete

Instale la biblioteca cliente de trabajos de Azure Quantum para Javascript con npm:

npm install @azure/quantum-jobs

Requisitos previos

Autenticar el cliente

Para autenticarse con el servicio, puede usar DefaultAzureCredential desde la @azure/identity biblioteca. Esto probará diferentes mecanismos de autenticación basados en el entorno (por ejemplo, Variables de entorno, ManagedIdentity, CachedTokens) y, por último, se revertirá a InteractiveBrowserCredential.

El cliente también permite al usuario invalidar el comportamiento anterior pasando sus propias implementaciones de TokenCredential.

TokenCredential es el mecanismo de autenticación predeterminado que usan los SDK de Azure.

Conceptos clave

QuantumJobClient es la clase raíz que se va a usar para autenticar y crear, enumerar y cancelar trabajos.

JobDetails contiene todas las propiedades de un trabajo.

ProviderStatus contiene información de estado para un proveedor.

QuantumJobQuota contiene propiedades de cuota.

Ejemplos

Creación del cliente

Cree una instancia de QuantumJobClient pasando estos parámetros:

    const credential = new DefaultAzureCredential();

    // Create a QuantumJobClient
    const subscriptionId = "your_subscription_id";
    const resourceGroupName = "your_resource_group_name";
    const workspaceName = "your_quantum_workspace_name";
    const storageContainerName = "mycontainer";
    const location = "westus"; //"your_location";
    const endpoint = "https://" + location + ".quantum.azure.com";

    const quantumJobClient = new QuantumJobClient(
      credential,
      subscriptionId,
      resourceGroupName,
      workspaceName,
      {
        endpoint: endpoint,
        credentialScopes: "https://quantum.microsoft.com/.default"
      }
    );

Obtención del URI de SAS de contenedor

Cree un contenedor de almacenamiento para colocar los datos.

    // Get container Uri with SAS key
    const containerUri = (
      await quantumJobClient.storage.sasUri({
        containerName: storageContainerName
      })
    ).sasUri;

    // Create container if not exists
    const containerClient = new ContainerClient(containerUri);
    await containerClient.createIfNotExists();

Cargar datos de entrada

Con el URI de SAS, cargue los datos de entrada json en el cliente de blobs. Contiene los parámetros que se van a usar con optimizaciones de inspiración cuántica.

    // Get input data blob Uri with SAS key
    const blobName = "myjobinput.json";
    const inputDataUri = (
      await quantumJobClient.storage.sasUri({
        containerName: storageContainerName,
        blobName: blobName
      })
    ).sasUri;

    // Upload input data to blob
    const blobClient = new BlockBlobClient(inputDataUri);
    const problemFilename = "problem.json";
    const fileContent = fs.readFileSync(problemFilename, "utf8");
    await blobClient.upload(fileContent, Buffer.byteLength(fileContent));

Crear el trabajo

Ahora que ha cargado la definición del problema en Azure Storage, puede usar jobs.create para definir un trabajo de Azure Quantum.

    const randomId = `${Math.floor(Math.random() * 10000 + 1)}`;

    // Submit job
    const jobId = `job-${randomId}`;
    const jobName = `jobName-${randomId}`;
    const inputDataFormat = "microsoft.qio.v2";
    const outputDataFormat = "microsoft.qio-results.v2";
    const providerId = "microsoft";
    const target = "microsoft.paralleltempering-parameterfree.cpu";
    const createJobDetails = {
      containerUri: containerUri,
      inputDataFormat: inputDataFormat,
      providerId: providerId,
      target: target,
      id: jobId,
      inputDataUri: inputDataUri,
      name: jobName,
      outputDataFormat: outputDataFormat
    };
    const createdJob = await quantumJobClient.jobs.create(jobId, createJobDetails);

Obtener trabajo

GetJob recupera un trabajo específico por su identificador.

    // Get the job that we've just created based on its jobId
    const myJob = await quantumJobClient.jobs.get(jobId);

Obtener trabajos

Para enumerar todos los trabajos del área de trabajo, use el jobs.list método .

    let jobListResult = await quantumJobClient.jobs.list();
    let listOfJobs = await jobListResult.next();
    while (!listOfJobs.done) {
      let job = listOfJobs.value;
      console.log(`  ${job.name}`);
      listOfJobs = await jobListResult.next();
    }

Pasos siguientes

Contribuciones

Consulte la CONTRIBUTING.md para obtener más información sobre la compilación, las pruebas y la contribución a esta biblioteca.

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más información, visite cla.microsoft.com.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.

Solución de problemas

Todas las operaciones del servicio Trabajos cuánticos producirán una excepción RequestFailedException en caso de error con códigos de error útiles. Muchos de estos errores son recuperables.

Impresiones