
Compartilhando convidados:
Inteligência Yang Linsan-Huixi
Sobre a Inteligência Huixi:
Huixi Intelligence é uma empresa start-up que fabrica chips para direção autônoma, fundada em 2022. Comprometida em construir uma plataforma inovadora de computação inteligente para veículos, ela fornece chips de direção inteligente de ponta, cadeias de ferramentas abertas fáceis de usar e soluções completas de direção autônoma para ajudar as montadoras a alcançar produção em massa de condução autônoma eficiente e de alta qualidade e entrega, e criar recursos de iteração automatizados, de baixo custo e em grande escala, liderando viagens inteligentes de alto nível na era orientada por dados.
Compartilhe o esboço:
- Como usar o Alluxio em uma startup?
- O processo de utilização do Alluxio de 0 a 1 (pesquisa-implantação na produção).
- Compartilhamento de experiências práticas.
A seguir está a versão em texto completo do conteúdo compartilhado
Compartilhar tópico:
“Aplicação e Implantação do Alluxio no Treinamento de Modelos de Condução Autônoma”
Ciclo fechado de dados de direção autônoma

Primeiro, deixe-me compartilhar como construir um ciclo fechado de dados na direção autônoma. Todos podem conhecer esse processo de negócios. A direção autônoma incluirá uma variedade de tipos de veículos, como veículos de mineração de dados e carros circulando na estrada com algoritmos. A coleta de dados consiste em coletar vários dados do carro autônomo durante o processo de execução: por exemplo, os dados da câmera são imagens e os dados lidar são nuvens de pontos.
Quando os dados do sensor são coletados, um carro pode gerar vários terabytes de dados todos os dias. Esse tipo de dados é armazenado como um todo por meio do disco base ou outros métodos de upload e transferido para o armazenamento de objetos. Depois que os dados originais forem armazenados, haverá um pipeline para análise e pré-processamento de dados, como cortá-los em quadros de dados, um quadro de cada vez, e operações de sincronização e alinhamento podem ser realizadas entre diferentes dados do sensor em cada quadro.
Depois de concluir a análise dos dados, é hora de investigá-los mais. Crie conjuntos de dados um por um. Porque seja em algoritmo, simulação ou teste, um conjunto de dados deve ser construído. Por exemplo, se quisermos dados sobre uma determinada noite em um dia chuvoso, em um determinado cruzamento ou em algumas áreas densamente povoadas, teremos um grande número desses requisitos de dados em todo o sistema e precisaremos rotular os dados e adicione alguns rótulos. Por exemplo, no portão leste da Universidade de Tsinghua, você precisa obter a longitude e a latitude deste local e analisar os POIs circundantes. Em seguida, rotule os dados extraídos. As anotações comuns incluem: objetos, pedestres, tipos de objetos, etc.
Esses dados rotulados serão usados para treinamento. As tarefas típicas incluem detecção de alvos, detecção de linhas de faixa ou modelos maiores de ponta a ponta. Depois que o modelo for treinado, algumas verificações de simulação precisam ser feitas. Após a verificação, implante-o no carro, execute os dados e colete mais dados com base nisso. É um grande ciclo, enriquecendo constantemente os dados e construindo constantemente modelos com melhor desempenho. Isto é o que todo o ciclo fechado de treinamento e dados precisa fazer, e é também o elemento central na atual pesquisa e desenvolvimento de direção autônoma.
Treinamento de algoritmo: NAS
Nosso foco é o treinamento de modelos: o treinamento de modelos obtém principalmente dados por meio de mineração de dados para gerar um conjunto de dados. O conjunto de dados é internamente um arquivo pkl, incluindo dados, canal e local de armazenamento. Finalmente, os alunos que treinam em algoritmos de dados escreverão seus próprios scripts de download para extrair os dados do armazenamento de objetos para o local.

Antes de escolhermos o Alluxio, usávamos o sistema NAS para atuar como cache, puxando os dados de armazenamento de objetos para o NAS e, por fim, utilizamos diferentes modelos para carregar os dados para treinamento. Este é o processo aproximado de treinamento antes de usar o Alluxio.
Um dos maiores problemas do NAS:
- O desempenho da simultaneidade é relativamente baixo - podemos entender o NAS como um disco rígido grande, o que é suficiente quando apenas algumas tarefas estão sendo executadas juntas. No entanto, quando há dezenas de tarefas de treinamento sendo executadas simultaneamente e muitos modelos estão sendo treinados, muitas vezes ocorrem travamentos. Houve um tempo em que estávamos muito presos e a equipe de P&D reclamava todos os dias. Está tão travado que a disponibilidade e o desempenho de simultaneidade são muito ruins.
- Dificuldade de gerenciamento - cada um usa seu próprio script baixado e depois baixa os dados desejados para seu próprio diretório. Outra pessoa pode baixar outra pilha de dados sozinha e colocá-la em outro diretório do NAS. Isso dificultará a limpeza quando o espaço do NAS estiver cheio. Naquela época, nos comunicávamos basicamente pessoalmente ou em grupos do WeChat. Por um lado, a eficiência é extremamente baixa e a dependência do gerenciamento de mensagens em grupo ficará para trás. Por outro lado, a remoção manual também pode levar a alguns riscos. Tivemos situações em que conjuntos de dados de outras pessoas foram excluídos durante a remoção de dados. Isso também causará erros na área de tarefas online, que é outro ponto problemático.
- Desperdício de espaço - Os dados baixados por diferentes pessoas são colocados em diretórios diferentes. É possível que o mesmo quadro de dados apareça em vários conjuntos de dados, resultando em um sério desperdício de espaço.
- É muito complicado de usar - porque os formatos de arquivo no pkl são diferentes, a lógica de download também é diferente e cada um tem que escrever o programa de download separadamente.
Estas são algumas das dificuldades e problemas que enfrentamos antes ao usar o NAS. Para resolver esses problemas, fizemos pesquisas. Após pesquisas, focamos no Alluxio. Descobri que o Alluxio pode fornecer um cache relativamente unificado. O cache pode melhorar nossa velocidade de treinamento e reduzir custos de gerenciamento. Também utilizaremos o sistema Alluxio para lidar com o problema das salas duplas de computadores. Através de namespaces e métodos de acesso unificados, por um lado, o design do nosso sistema pode ser simplificado e, por outro lado, a implementação do código também se tornará muito simples.

Treinamento de algoritmo introduzido no Alluxio

Quando substituímos o NAS pelo Alluxio, o Alluxio pode resolver especificamente alguns dos problemas que acabamos de mencionar:
- Em termos de simultaneidade: o NAS em si não é um sistema totalmente distribuído, mas o Alluxio é. Quando o IO acessado pelo NAS atinge uma determinada velocidade, ele irá congelar. Pode começar a congelar quando atingir vários G/s. O limite superior do Alluxio é muito alto. Abaixo temos testes especiais para ilustrar este ponto.
- A limpeza ou gerenciamento manual será muito problemático: o Alluixo configura a política de remoção de cache. Geralmente através do LRU, quando atinge um limite (como 90%), ele irá automaticamente despejar e limpar o cache. O efeito disso:
- A eficiência é bastante melhorada;
- Pode evitar problemas de segurança causados por exclusão acidental;
- Resolvido o problema de dados duplicados.
No Alluxio, um arquivo no UFS corresponde a um caminho no Alluxio. Quando todos acessam esse caminho, podem obter os dados correspondentes, para que não haja problema de duplicação de dados. Além disso, usar o acima é relativamente simples. Só precisamos acessá-lo através da interface FUSE e não precisamos mais baixar arquivos.
O que foi dito acima resolve os vários problemas dos quais acabamos de falar em um nível lógico. Vamos falar sobre todo o nosso processo de implementação, como realizar o Alluxio de 0 a 1, desde o teste inicial do POC, passando pela verificação dos diversos desempenhos, até a implantação final, operação e manutenção. Algumas de nossas experiências práticas.
Implantação Alluxio: sala única de computadores

Em primeiro lugar, podemos implantá-lo em uma única sala de computadores, o que significa que deve estar próximo à GPU e implantado no nó da GPU. Ao mesmo tempo, o SSD, que antes era raramente usado na GPU, foi usado para utilizar cada nó e, em seguida, o FUSE e os trabalhadores foram implantados juntos. FUSE é equivalente ao cliente e o trabalhador é equivalente a um pequeno cluster de cache com comunicação intranet para fornecer serviços FUSE. Finalmente, o trabalhador se comunica com o próprio armazenamento de objetos subjacente.
Implantação do Alluxio: em salas de informática
Mas por vários motivos, ainda teremos salas entre máquinas. Existem agora duas salas de computadores, e cada sala de computadores terá serviços S3 correspondentes e nós de computação GPU correspondentes. Basicamente iremos implantar um Alluxio em cada sala de informática. Ao mesmo tempo, também devemos prestar atenção a este processo. Pode haver dois armazenamentos de objetos Alluxio em uma sala de computadores. Se outra sala de computadores também precisar montar o S3, tente fazer um plano unificado para os nomes dos buckets, e não o faça. sobrecarregar os dois. Por exemplo, se houver o balde 1 aqui e o balde 1 ali, isso causará alguns problemas quando o Alluxio for montado.

Observe também que para endpoints diferentes, preste atenção na distinção entre a rede interna e a rede externa. Por exemplo, o Alluxio do cluster 1 monta a rede interna do endpoint do cluster 1, e a rede externa fica do outro lado. , o desempenho será bastante reduzido. Após a montagem, podemos acessar os dados de diferentes buckets em diferentes clusters através do mesmo caminho, de modo que toda a arquitetura se tornará muito simples. Isso ocorre em termos de implantação entre salas de máquinas.
Teste Alluxio: funcionalidade

Se você deseja realmente substituir seu NAS pelo Alluxio, você precisa fazer muitos testes funcionais antes da implantação. O objetivo desse tipo de teste funcional é fazer com que o processo do algoritmo existente seja minimamente modificado para que os alunos do algoritmo também possam usá-lo. Isso pode depender da sua situação real. Fizemos quase 2 a 3 semanas de verificação POC com Alluxio, que envolveu, por exemplo:
- Configuração de acesso ao PVC no K8S;
- Como o conjunto de dados está organizado;
- Configuração de envio de trabalhos;
- Substituição de vias de acesso;
- A interface de script foi finalmente acessada.
Muitos dos problemas encontrados acima podem precisar ser verificados. Pelo menos precisamos selecionar uma tarefa típica através dele, e então fazer algumas modificações e, finalmente, substituir o NAS pelo Alluxio de forma relativamente tranquila.
Teste Alluxio: Desempenho

A seguir, com base nisso, serão feitos alguns testes de desempenho. Neste processo, realizamos testes relativamente suficientes, seja uma única máquina ou várias máquinas. Em uma única máquina, o desempenho do Alluxio e do NAS original é basicamente o mesmo.

Na verdade, o que realmente incorpora as vantagens do Alluxio são as suas capacidades multi-host e distribuídas. Você pode ver o NAS ou nosso exemplo de QTS, que tem um ponto muito óbvio: instabilidade. A flutuação entre os testes 3G e 10G será relativamente grande. Ao mesmo tempo, há um gargalo óbvio. Quando atinge cerca de 7/8G, é basicamente estável.
Na verdade, o que realmente incorpora as vantagens do Alluxio são as suas capacidades multi-host e distribuídas. Você pode ver o NAS ou nosso exemplo de QTS, que tem um ponto muito óbvio: instabilidade. A flutuação entre os testes 3G e 10G será relativamente grande. Ao mesmo tempo, há um gargalo óbvio. Quando atinge cerca de 7/8G, é basicamente estável.
Quanto ao Alluxio, durante todo o processo de teste, à medida que o número de instâncias em execução aumenta, o nó pode atingir um limite superior muito alto. Quando definimos para 20GB/s, ele ainda apresentou uma tendência de aumento. Isto mostra que o desempenho geral simultâneo e distribuído do Alluxio é muito bom.
Pouso Alluxio: ajustando parâmetros e adaptando o ambiente

Após concluir a verificação funcional e os testes de desempenho, é hora de realmente implantar o cluster Alluxio. Após a implantação, é necessário um processo de ajuste e adaptação de parâmetros. Pois durante o teste foram utilizadas apenas algumas tarefas típicas. Depois de realmente utilizar o ambiente Alluxio, você descobrirá que conforme as tarefas aumentam, haverá um processo de ajuste e adaptação de parâmetros. É necessário combinar os parâmetros correspondentes no Alluxio com o ambiente operacional real antes que seu desempenho possa ser totalmente utilizado. Portanto, haverá um processo de execução, operação e manutenção e ajuste de parâmetros.
Passamos por alguns processos típicos de ajuste de parâmetros, como:
- Os nós do ETCD estão listados aqui. É 1 no início e depois muda para 3. Isso garante que seja um ETCD que esteja desligado e que todo o cluster não seja desligado.
- Existem também aqueles relacionados ao S3. Por exemplo, quando o Alluxio for implementado, ele permitirá que o S3 gere um caminho de acesso relativamente longo e escreva alguns espaços em branco por padrão nos nós do caminho intermediário para proporcionar melhor desempenho. Mas neste caso, o S3 sob nossa tarefa de treinamento tem controle de permissão e não tem permissão para gravar este tipo de dados. Diante desse tipo de conflito, também é necessário ajuste de parâmetros.
- Existem também recursos como a intensidade de simultaneidade que o próprio nó FUSE pode tolerar. Incluindo o tamanho da memória direta usada, ela realmente tem muito a ver com a intensidade real de simultaneidade de todo o negócio. Na verdade, tem muito a ver com a quantidade de dados que podem ser acessados de uma só vez. Há também um processo de ajuste de parâmetros e assim por diante. Diferentes problemas podem ser encontrados em diferentes ambientes. Este também é o motivo para escolher o Alluxio Enterprise Edition. Como o Alluxio terá um suporte muito forte durante a versão empresarial, ele pode se ajustar e cooperar ao encontrar problemas 24 horas por dia, 7 dias por semana. Somente com ciclos mutuamente coordenados todo o cluster poderá funcionar de maneira mais suave.
Implementação Alluxio: operação e manutenção
O primeiro colega de operação e manutenção da nossa equipe tinha apenas uma pessoa, que era responsável por grande parte da manutenção de infra-estrutura e trabalhos relacionados. Quando eu quis implantar o Alluxio, os recursos do lado de operação e manutenção na verdade não eram suficientes, então era equivalente. para mim também fazendo trabalho de meio período. Do ponto de vista de operação e manutenção de algo por conta própria, é importante manter muitos registros e conhecimentos sobre operação e manutenção, especialmente para um novato. Por exemplo, como resolver melhor o problema da próxima vez e se você já teve essa experiência antes.

Com base no nosso ambiente naquele momento, três documentos serão mantidos.
- Documentos históricos de operação e manutenção : Por exemplo, quais problemas ocorreram em que dia? Qual é a causa raiz desses problemas e qual é a sua solução? Quais são as operações específicas?
- Documentação de operação : por exemplo, se operarmos e mantivermos o K8S, quais são as etapas para reiniciá-lo, quais são as operações, como ler os logs quando ocorrem problemas, como solucionar problemas e quais tarefas e trabalhos devem ser executados para ver os dados correspondentes a FUSE, monitoramento, etc. Estas são algumas operações comumente usadas.
- Mudanças na configuração: Porque o Alluxio está em processo de ajuste de parâmetros. Em momentos diferentes, você pode encontrar diferentes arquivos de configuração e arquivos yaml e pode precisar fazer alguns backups. Você pode usar o Git para gerenciá-lo ou simplesmente usar o gerenciamento de documentos. Dessa forma, é possível rastrear a configuração atual e as versões históricas da configuração.
Nesta base teremos também algumas construções de apoio relacionadas para melhor aproveitamento do Alluxio. Os estudantes de P&D acham que o Alluxio é bastante fácil de usar depois de usado. Mas quando se realiza multitarefas, algumas necessidades de construção de apoio ficam expostas. Por exemplo, precisamos redimensionar a imagem e reduzi-la de 4K de alta definição para 720P para suportar mais cache de tarefas.
O conjunto de dados de treinamento é sincronizado entre clusters para melhor pré-carregamento de dados. Tudo isto centrado na construção sistemática que o Alluxio precisa de fazer.
Aterragem do Alluxio: avançando juntos
À medida que continuamos a usar o Alluxio, também encontraremos algumas áreas que merecem melhorias. Ao dar feedback ao Alluxio, promovemos a iteração de todo o produto.
Dos alunos que desenvolvem algoritmos, o que lhes interessa é:
- Estabilidade: Deve estar estável durante a operação. Não pode atrapalhar o treinamento de todo o sistema por causa de alguma falha no Alluxio. Pode haver algumas dicas de operação e manutenção aqui, como tentar não reiniciar o FUSE tanto quanto possível. Conforme mencionado há pouco, reiniciar o FUSE significa que seu caminho de acesso falhará e ocorrerá um erro de IO ao ler arquivos de dados.
- Determinismo: Por exemplo, Alluxio sugeriu anteriormente que os dados não precisam ser pré-carregados, ou seja, não precisam ser lidos uma vez antes do pré-treinamento, mas apenas precisam ser lidos uma vez durante a primeira época. No entanto, como o P&D tem um ciclo de lançamento, ele precisa saber exatamente quanto tempo levará para pré-carregar. Se ele ler durante a primeira época, será difícil estimar todo o tempo de treinamento. Na verdade, isso também se estende a como armazenar em cache uma lista de arquivos. Isso também impõe algumas exigências ao Alluxio.
- Controlabilidade: Embora o Alluxio possa fornecer remoção de cache e limpeza de cache automatizadas baseadas em LRU. Mas, na verdade, a P&D ainda espera que alguns dados armazenados em cache possam ser limpos proativamente. Então você também pode deixar o Alluxio liberar esses dados fornecendo uma lista de arquivos? Essa também é a nossa necessidade de usar o Alluxio de forma direta e muito controlável além do uso indireto.
Do lado da operação e manutenção, também serão levantados alguns requisitos:
- Centro de configuração: O próprio Alluxio pode fornecer um centro de configuração para salvar o histórico de configuração. Ao adicionar uma função para implementar alterações em itens de configuração, faça um orçamento antecipado do impacto que essa alteração terá;
- Trace rastreia o processo de execução de um comando: Outro requisito mais realista Por exemplo, agora encontramos um problema: o atraso ao acessar um arquivo UFS na parte inferior é relativamente alto. Talvez não consigamos ver o motivo olhando os logs do FUSE, então precisamos olhar os logs dos trabalhadores correspondentes ao local. Na verdade, este é um processo muito demorado e problemático, e muitas vezes o problema não pode ser resolvido, exigindo o atendimento online do Alluxio. O Alluxio pode adicionar um comando Trace para rastrear os problemas demorados de FUSE, trabalho e leitura do UFS ao acessar o link inteiro? Na verdade, isso será de grande ajuda para todo o processo de operação e manutenção ou processo de solução de problemas.
- Monitoramento inteligente: Às vezes, as coisas que monitoramos são coisas que já sabemos. Por exemplo, se houver algum problema com a Memória Direta, vamos configurar um item de monitoramento. Mas da próxima vez que um novo problema aparecer no meu log, pode ser um problema oculto que acontece silenciosamente, sem ninguém saber. Esperamos monitorar automaticamente esta situação.
Fizemos diversas sugestões ao Alluxio através do feedback das ordens de serviço. Espera-se que o Alluxio possa fornecer funções mais poderosas durante o processo de iteração do produto. Torne todos os assuntos de P&D, operação e manutenção mais satisfatórios.
resumo
Primeiro, o Alluxio oferece uma usabilidade muito boa em comparação com o NAS em termos de aceleração de cache para todo o treinamento do modelo de direção autônoma. Para nós também será uma melhoria de cerca de 10x. A redução de custos vem de duas partes:
- O custo de aquisição do produto é baixo;
- NAS pode ter armazenamento redundante de 20% a 30%, o que o Alluxio pode resolver.
Do ponto de vista da manutenção, ele pode limpar os dados automaticamente, o que é mais oportuno e seguro. Em termos de facilidade de uso, ele pode acessar os dados de forma mais conveniente através do FUSE.
Em segundo lugar, também compartilhei como o Huixi implanta o Alluxio de 0 a 1 e opera e mantém um sistema.
O texto acima é meu compartilhamento, obrigado a todos.