Share
Embed
Transcript
41 slides
-
Ricardo Rocha Engenheiro de Computação no CERN Containers, Kubernetes e
Networking GPUs e outros aceleradores, Machine Learning Passado: Armazenamento de dados, grelha de computação do LHC -
Fundado em 1954 De que é feita 96% da matéria
do universo? Ciência Fundamental Porque não vemos anti-matéria no universo? Qual era o estado da matéria logo após o Big Bang? -
Containers Simplificação da Infra-estrutura Monitorização, Ciclo e Manutenção, Alarmes Simplificacao
do Deployment API Uniforme, Replicação, Load Balancing, Configuração Picos periódicos de utilização Conferências internacionais, Campanhas de Reprocessamento -
Provisionamento Deployment Atualização Infra-estrutura Fisica Dias ou Semanas Minutos ou
Horas Minutos ou Horas Utilização Fraca Manutenção Muito Intrusivo Virtualização e Cloud Minutos Minutos ou Horas Minutos ou Horas Boa Possivelmente Menos Intrusivo Containers Segundos Segundos Segundos Muito Boa Menos Intrusivo -
Lingua franca da cloud Oferta na maior parte das clouds
publicas Múltiplas opções para deployment privado API declarativa para toda a infra-estrutura : computação, armazenamento, networking Ecosistema com vários produtos para funcionalidade adicional Kubernetes -
Exemplos de Utilização Filtros dos detectores das experiências Spark as
a Service, Spark clusters em Kubernetes KubeFlow e ML distribuído Sistemas Batch em Kubernetes WebLogic e outros serviços internos Experiências com DR para a Oracle Cloud -
1 PB / seg < 10 GB / seg Tradicionalmente
separada em filtros de Hardware e Software ( a mudar gradualmente ) 40 milhões de colisões / segundo ~3000 nós multi core ~30.000 aplicações a monitorizar Sistema critico, falha significa perda de dados Melhorias para a Run 4? Estudo 2017, Mattia Cadeddu, Giuseppe Avolio Kubernetes 1.5.x Primeiro deployment este ano com 1.18.x ATLAS Event Filter -
1 PB / seg < 10 GB / seg Tradicionalmente
separada em filtros de Hardware e Software ( a mudar gradualmente ) 40 milhões de colisões / segundo ~3000 nós multi-core ~30.000 aplicações a monitorizar Sistema critico, falha significa perda de dados Melhorias para a Run 4? Estudo 2017, Mattia Cadeddu, Giuseppe Avolio Kubernetes 1.5.x Primeiro deployment este ano ATLAS Event Filter -
Simulação é um dos principais workloads x100 no proximo upgrade
para HL-LHC Simulação Rápida com Deep Learning Como reduzir o tempo de treino dos modelos? Sofia Vallecorsa, CERN OpenLab Konstantinos Samaras-Tsakiris -
Sched Negotiator Collector Host StartD ... StartD ... StartD ...
kubefed init fed --host-cluster-context=condor-host ... kubefed join --context fed tsystems \ --host-cluster-context condor-host --cluster-context tsystems Federação v1 - May 2018 Cloud Bingo? kind: DaemonSet ... hostNetwork: true containers: - name: condor-startd image: .../cloud/condor-startd command: ["/usr/sbin/condor_startd", "-f"] securityContext: privileged: true livenessProbe: exec: command: - condor_who -
Virtual Kubelet Implementação com um backend para a Kubernetes API
Burst para qualquer outro cluster Kubernetes, interno ou externo CPU CPU CPU GPU VK CERN -
Architecture Stack actual no CERN Integração focada nestes components Standard
na maior parte dos deployments Incluindo os das clouds publics E deployments de Rancher / k3s Usar uma stack comum facilita a manutenção Master Kubelet cri-containerd containerd Master Kubelet -
Automação e GitOps Já fazíamos GitOps antes com Puppet e
Ansible Git como única “source of truth” para configuração Múltiplos modelos de deployment possíveis 1 ⇢ 1: Actualmente o mais popular: uma aplicação, um cluster 1 ⇢ *: Uma aplicação, múltiplos clusters (HA, Blast Radius, Rolling Upgrades) * ⇢ *: Melhoria de utilização dos recursos Meta Chart git push FluxCD git pull Helm Release CRD Helm Operator -
Mais do que gestão da infra-estrutura Melhoria na utilização e
exploração de recursos externos para análise Challenge: Re-processamento da análise do Higgs em menos de 10min Processamento de um dataset de ~70TB e ~25000 ficheiros Criação do Cluster Pre-Pull da Imagem Stage-In dos Dados Process amento 5 min 4 min 4 min 90 sec Kubernetes para Análise de Dados -
Acesso rápido ao software, lazy loading Download das imagens docker
pode demorar muito tempo ~75% do tempo total de lançamento de um container -
Acesso rápido ao software, lazy loading Remote Snapshotter + stargz
stargz (seekable stargz), tar de ficheiros tar Imagens compatíveis com runtimes actuais estargz (enhanced stargz) Melhoramento com pre-fetch dos dados Usa o entrypoint para escolher esses dados Tempo de start do container: sempre < 6 segs https://medium.com/nttlabs/startup-containers-in-lightning-speed-with-lazy-image-distribution-on-containerd-243d94522361 -
Desafios e Futuro Necessidade de fazer mais com os mesmos
recursos High Luminosity Large Hadron Collider - HL-LHC x7 colisões por segundo, x10 mais dados e computação Machine Learning Simulacao rapida, filtros nos detetores, deteção de anomalias, … Melhorar a integração com GPUs, utilização de TPUs, IPUs, FPGAs, ... -
Kubernetes Integration Master CPU AZ-A CPU AZ-B GPUs Relying on
node groups/pools to get heterogeneous clusters Different flavor for each node group: m2.xlarge, g1.xlarge, ... Automated detection and configuration of GPUs Managed by a Helm chart https://gitlab.cern.ch/helm/charts/cern/tree/master/nvidia-gpu Alternative with the GPU operator https://github.com/NVIDIA/gpu-operator https://github.com/NVIDIA/k8s-device-plugin -
Kubernetes Integration GPUs are already treated as first class resources
in Kubernetes apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: mycontainer image: "mycontainerimage:tag" resources: limits: nvidia.com/gpu: 1 # no fractions possible $ kubectl get nodes NAME STATUS ROLES AGE VERSION ... hub-001-gpu-nvi...7iz-node-0 Ready gpu 63d v1.15.3 hub-001-gpu-nvi...7iz-node-1 Ready gpu 63d v1.15.3 Scheduling Quotas Monitoring Sharing NUMA Performance License Yes Yes Yes No Yes Best x -
Kubernetes Integration Monitoring is done with a Nvidia Prometheus exporter
Metrics for temperature, SM/Memory clocks, power usage, throughput, ... https://github.com/NVIDIA/gpu-monitoring-tools/