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:
Creación, enumeración y cancelación de trabajos cuánticos
Enumerar el estado y las cuotas del proveedor
Código fuente | Documentación de referencia de API | Documentación del producto | Ejemplos
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
- Node.js versión 8.x.x o posterior
- Suscripción de Azure
- Área de trabajo de Azure Quantum
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:
- Identificador de suscripción : es similar a XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX y se puede encontrar en la lista de suscripciones de Azure.
- Nombre del grupo de recursos : un contenedor que contiene recursos relacionados para una solución de Azure
- Nombre del área de trabajo : una colección de recursos asociados a la ejecución de aplicaciones cuánticas o de optimización
- Ubicación : elija el mejor centro de datos por región geográfica.
- Nombre del contenedor de almacenamiento : el almacenamiento de blobs
- Credencial: se usa para autenticarse
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
- Visite nuestra documentación del producto para más información sobre Azure Quantum.
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.
Azure SDK for JavaScript