Outras Maneiras de Executar Jobs

Você pode usar jobs de várias maneiras, como usar ambientes conda e arquivos zip.

Usando Arquivos zip ou tar compactados

Você pode usar jobs para executar um projeto Python inteiro que você compacta em um único arquivo.

os arquivos zip ou tar compactados executados como job podem utilizar os ambientes conda do serviço Data Science e os ambientes conda personalizados.

Para a execução do job, você aponta para o arquivo de entrada principal usando a variável de ambiente JOB_RUN_ENTRYPOINT. Essa variável só é usada com jobs que usam artefatos de job zip ou tar compactados.

Usando um Ambiente Conda do Serviço Data Science

Você pode usar um dos ambientes conda do serviço Data Science que estão incluídos no serviço.

Um ambiente conda encapsula todas as dependências Python de terceiros (como Numpy, Dask ou XGBoost) exigidas pela execução de job. Os ambientes conda do serviço Data Science são incluídos e mantidos no serviço. Se você não especificar um ambiente conda como parte das configurações de job e execução de job, um ambiente conda não será usado porque não há padrão.

O código de job está incorporado em um ambiente conda do serviço Data Science:

Mostra como o código de job está incorporado em um conda, em uma forma e em uma execução de job do serviço Data Science. E o slug do conda no cartão do conda.

  1. Encontre o conda do Data Science que deseja usar e selecione em:
  2. Crie um job e adicione essa variável de ambiente personalizada para especificar o conda do serviço Data Science:
    CONDA_ENV_TYPE => "service"
    CONDA_ENV_SLUG = <service_conda_environment_slug>
  3. Inicie uma execução de job e, para usar outro ambiente conda para a execução do job, use as variáveis de ambiente personalizadas para substituir a configuração do job.

Usando um Ambiente Conda Personalizado

Você pode usar jobs de um arquivo zip e tar compactados com ambientes conda personalizados ou ambientes conda do serviço Data Science.

Um ambiente conda encapsula todas as dependências Python de terceiros (como Numpy, Dask ou XGBoost) exigidas pela execução de job. Você cria, publica e mantém ambientes conda personalizados. Se você não especificar um ambiente conda como parte das configurações de job e execução de job, um ambiente conda não será usado porque não há padrão

O código de job está incorporado em um ambiente conda personalizado como este:

Mostra como o código de job está incorporado em um conda personalizado, uma forma e uma execução de job. E o slug do conda no cartão do conda.

  1. Crie um ambiente conda personalizado.
  2. Publique-o no Object Storage.
  3. Configure políticas que permitam que o recurso de execução de job acesse os ambientes conda publicados que são armazenados no bucket de Armazenamento de Objetos da tenancy.
  4. Crie um job e defina estas variáveis de ambiente (a região será opcional se estiver na mesma região da execução de job):
    CONDA_ENV_TYPE => "published"
    CONDA_ENV_OBJECT_NAME => <full_path_object_storage_name>
    CONDA_ENV_REGION => <object_storage_region>
    CONDA_ENV_NAMESPACE => <object_storage_namespace>
    CONDA_ENV_BUCKET => <object_storage_bucket_name>
    Importante

    O job e a execução do job devem ser configurados com uma sub-rede que tenha um gateway de serviço para acessar o ambiente conda publicado no bucket de Armazenamento de Objetos da tenancy.

  5. Inicie uma execução de job.

    (Opcional) Para usar um ambiente conda diferente para execuções de job individuais, defina variáveis de ambiente personalizadas para substituir a configuração de job.

  6. (Opcional) Se você usou o registro em log, poderá revisá-lo para ver os valores de execução de job.

Usando um Arquivo YAML de Runtime

Você pode usar um arquivo YAML de runtime para configurar variáveis de ambiente de job em vez de usar a Console ou o SDK.

Antes de começar:

Faça download, descompacte e revise os arquivos de amostra jobruntime.yaml e conda_pack_test.py para criar e testar seu projeto de job.

O uso de um arquivo jobruntime.yaml facilita a definição de variáveis de ambiente personalizadas no projeto.

  1. Altere o arquivo de amostra jobruntime.yaml para especificar os valores.

    Adicione variáveis que deseja usar durante a execução de job. Você pode adicionar variáveis de ambiente específicas de execução de job como CONDA_ENV_TYPE ou CONDA_ENV_SLUG e pares de chaves personalizadas.

    Por exemplo:

    CONDA_ENV_TYPE: service
    CONDA_ENV_SLUG: dataexpl_p37_cpu_v2
    JOB_RUN_ENTRYPOINT: conda_pack_test.py
    KEY1: value1
    KEY2: 123123
    Importante

    Não há suporte para variáveis aninhadas.

    Observe como o JOB_RUN_ENTRYPOINT do projeto é incluído no YAML do runtime , de modo que você não precisará fazer isso manualmente quando executar o job.

  2. Crie um projeto simples com um único arquivo python e o arquivo jobruntime.yaml no diretório raiz de um projeto.
  3. No arquivo python, leia as variáveis de ambiente e imprima-as para testar se estão acessíveis.

    Por exemplo:

    print("Executing job artifact")
    print(os.getenv("CONDA_PREFIX"))
    print(os.getenv("CONDA_ENV_SLUG"))
    print(os.getenv("JOB_RUN_ENTRYPOINT"))
    print(os.getenv("KEY1"))
    print(os.getenv("KEY2"))
    print(os.getenv("spec"))
  4. Arquive o diretório raiz do projeto em um arquivo zip ou tar compactado.

    Por exemplo, para compactar um arquivo em um Mac, você pode usar:

    zip -r zip-runtime-yaml-artifact.zip zip-runtime-yaml-artifact/ -x ".*" -x "__MACOSX"
  5. Na Console, crie um novo job e faça upload do arquivo compactado do job.
  6. Execute o job para ver se ele funciona.

    Observe que você não precisa fornecer nenhuma variável de ambiente na execução do job porque elas estão definidas no arquivo .yaml.

  7. Monitore a execução do job para obter uma conclusão bem-sucedida.
  8. (Opcional) Se você usou o registro em log, poderá revisá-lo para ver os valores de execução de job.

Usando um Vault

Você pode integrar o serviço Vault do OCI aos jobs do serviço Data Science usando controladores de recursos.

Antes de começar:

  • Para que o controlador de recursos no job tenha acesso a um vault, certifique-se de ter um grupo dinâmico no compartimento que especifique a instância ou o controlador de recursos. Por exemplo, você pode usar o controlador de recursos e um grupo dinâmico com esta regra:

    all {resource.type='datasciencejobrun',resource.compartment.id='<compartment_ocid>'}
  • Para que o job seja executado, você deve garantir que possa, pelo menos, gerenciar a família de segredos no grupo dinâmico. Por exemplo:

    Allow dynamic-group <dynamic_group_name> to manage secret-family in compartment <compartment_name>

    O post no blog Usando os Controladores de Instância e o Vault do OCI com Python para recuperar um Segredo fornece detalhes úteis.

  • Faça download, descompacte e revise o arquivo de amostra zipped_python_job.zip que mostra o seguinte:

    • Inicializando o cliente vault no job usando o Python SDK
    • Lê um segredo usando o OCID do segredo.
    • Decodifica o pacote de segredos e mostra o conteúdo do segredo real.

    Como os jobs têm acesso ao controlador de recursos, você pode inicializar todos os clientes do Vault disponíveis no Python SDK.

  • Crie um vault que tenha uma chave principal, um segredo e adicione a instrução de política a todos os controladores de recursos do job para manage secret-family.

  1. Na Console, crie um novo job.
  2. Execute o job para ver se ele funciona.
  3. Monitore a execução do job para obter uma conclusão bem-sucedida.
  4. (Opcional) Se você usou o registro em log, poderá revisá-lo para ver os valores de execução de job.