스크립트
00:00:00este modelo de 35 bilhões de parâmetros está rodando diretamente no meu iPhone. Consigo gerar 11 tokens por
00:00:06segundo através de uma engenharia inteligente para a qual esse modelo nunca foi projetado, e neste vídeo eu
00:00:11vou te mostrar exatamente como fazer o mesmo. O que estou rodando aqui é um modelo de mistura de especialistas (MoE).
00:00:21São 35 bilhões de parâmetros, que em um arquivo normal de 4 bits ocupam cerca de 20 GB e teriam que ficar na RAM.
00:00:28Mas, através de várias técnicas como o streaming de especialistas do SSD sob demanda, os pesos que realmente
00:00:33precisam ficar na memória caem para apenas 1,4 GB. Vou explicar como tudo isso funciona e depois
00:00:39vamos passar pela configuração do iPhone em si. A maioria dos modelos fica inteiramente na RAM, mas o legal da mistura
00:00:45de especialistas é que apenas uma pequena parte fica ativa de cada vez. Isso significa que as partes inativas
00:00:51do modelo podem simplesmente ficar no SSD esperando a sua hora de brilhar. O truque para rodar modelos maiores
00:00:56com memória limitada é carregar via streaming apenas os especialistas necessários na memória. Estamos rodando o Qwen
00:01:023.5, a variante de 35 bilhões de parâmetros, e o “a3b” no final significa que apenas cerca de 3 bilhões desses parâmetros
00:01:10estão ativos para qualquer token. Ele tem 40 camadas, cada uma com 256 pequenos especialistas mais um especialista compartilhado. Um roteador
00:01:19escolhe oito desses especialistas por token, então um único token executa apenas cerca de 3 bilhões dos 35 bilhões
00:01:26de parâmetros totais. Agora, o modelo inteiro em si é dividido. Normalmente ele ficaria todo na memória, mas isso não
00:01:32caberia num iPhone. Em vez disso, as partes que cada token precisa — como os embeddings, a atenção, os roteadores
00:01:39e o especialista compartilhado — são carregadas apenas uma vez e permanecem residentes na RAM o tempo todo, totalizando cerca de
00:01:441,4 GB. Já os especialistas — 40 arquivos de cerca de 300 MB cada, somando 12 gigabytes — ficam no SSD. Assim, para cada token,
00:01:53a atenção roda na GPU, o roteador escolhe 8 especialistas e o motor lê esses 8 direto do SSD
00:02:00para a memória da GPU e os executa junto com o próprio especialista compartilhado. Isso acontece em cada uma
00:02:06daquelas 40 camadas, gerando 320 pequenas leituras para cada token. E se você não está familiarizado com atenção,
00:02:14é a parte do modelo que analisa tudo o que foi dito na conversa até agora e identifica
00:02:19quais palavras anteriores são importantes para prever a próxima. A atenção roda para cada token, não importa
00:02:25o que aconteça, por isso tem que ficar na memória. Os especialistas são a parte que faz o raciocínio real sobre o token assim que
00:02:31a atenção processa o contexto. Mas como apenas oito desses especialistas são usados, podemos simplesmente deixar
00:02:36o restante no disco. Não há cache de especialistas no aplicativo; cada leitura passa pelo sistema operacional
00:02:42e o iOS mantém os especialistas usados recentemente em seu próprio cache de página, desde que tenha RAM livre. Os autores
00:02:49chegaram a construir seu próprio cache de 9,8 GB e depois o deletaram, o que deixou as coisas 38% mais rápidas porque,
00:02:55em um Mac ou iPhone, qualquer RAM que o app aloca é RAM tirada tanto da GPU quanto do cache de página,
00:03:03e esse cache está fazendo a maior parte do trabalho aqui. A 11 tokens por segundo, se cada especialista viesse do flash,
00:03:09o celular precisaria de mais de 5 gigabytes por segundo de leitura, e o flash do iPhone só atinge cerca de 1,6 por
00:03:15segundo. Portanto, a maioria dos especialistas vem da RAM que o SO gerencia para nós. O próximo truque é a quantização
00:03:22em camadas. A quantização comprime os pesos de um modelo para ocuparem menos espaço, mas também reduz
00:03:29a precisão desses pesos e, consequentemente, afeta a inteligência. Mas com este modelo, cerca de 25% dos
00:03:35especialistas lidam com cerca de 80% do trabalho, então os especialistas mais ativos permanecem em 4 bits e os menos ativos são
00:03:41quantizados para 2 bits, tornando-os 44% menores. O arquivo inteiro reduz 34%, caindo de cerca de 19 GB para
00:03:5013 GB, o que significa que mais partes cabem no cache de página. No meu iPhone 17, isso roda a 11 tokens por segundo com o
00:03:57modelo em modo de raciocínio. Devo dizer, porém, que o celular esquenta bastante; literalmente por dizer “olá”, eu já pude sentir
00:04:03o celular esquentar na minha mão, então tente não explodir o aparelho quando for testar isso. Na verdade, estou
00:04:08com um pouco de medo de digitar algo muito complexo, pois isso pode acabar derretendo a minha mão.
00:04:14O motor específico que estamos rodando é um projeto chamado Flash MoE, criado por Dan Woods. Ele foi escrito para
00:04:19MacBook e há uma pequena adaptação para iOS chamada Flash iOS, que envolve esse mesmo motor em um app de iPhone,
00:04:26e é isso que me permite rodar tudo no meu celular. No início, também encontrei um bug onde o raciocínio
00:04:31do modelo ficava preso em um loop. Ele começava bem e, depois de umas 10 palavras, simplesmente repetia
00:04:35os dois mesmos tokens para sempre. Para corrigir isso, atualizei uma função chamada async pre-read weight para que ela verifique
00:04:41a leitura de cada especialista contra o próprio tamanho dele. Especialistas de 2 bits têm metade do tamanho dos de 4 bits,
00:04:48então, antes da correção, todos os especialistas de 2 bits falhavam na verificação de tamanho e eram ignorados. O modelo estava efetivamente
00:04:54rodando com metade dos especialistas e por isso entrava em loop. E se vocês estão gostando do vídeo, pessoal, nos ajudaria
00:04:59demais se se inscrevessem no canal para podermos continuar criando conteúdo gratuito todos os dias. Agora, para
00:05:05configurar isso no seu celular, você precisa clonar o repositório, aplicar a correção de pré-leitura que mencionei em
00:05:11metal infer/infer.m, e apontar o projeto do Xcode para sua equipe e ID do pacote (Bundle ID). Você precisará de uma conta
00:05:18paga de desenvolvedor Apple para isso. Faça a compilação de release e instale no seu iPhone. Baixe o modelo
00:05:24quantizado em camadas pré-empacotado, que tem cerca de 13 GB, e transfira para o app via USB, o que deve levar cerca de sete minutos.
00:05:30No celular, abra o app Flash MoE, toque no modelo e comece a conversar. E se você quiser tentar rodar
00:05:36modelos locais no seu Mac para obter ainda mais tokens por segundo, confira este próximo vídeo. Aqui é o Warren da
00:05:43Better Stack, muito obrigado por assistir e, claro, vejo você no próximo!
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기