Contents

Seu guia para explorar a IA da Apple no Apple Silicon Mac!

A IA está na boca de todos neste momento, e se a Apple ainda não comunicou oficialmente sobre a integração de novas funções dentro de seus sistemas, já é possível dar uma olhada no seu trabalho, e até rodar seu modelo Ferret em um Apple Silicon Mac , desde que você tenha uma máquina com boa quantidade de RAM.

/images/801a7e970c_tuto-comment-essayer-ferret-ia-apple-sur-un-mac-apple-silicon.png

Experimente o Ferret, a IA da Apple, no seu Mac

Lembrando que Ferret é um MLLM (para Multimodal Large Language Model, ou grande modelo de linguagem multimodal) publicado no GitHub capaz de processar textos e imagens. A página oficial afirma claramente que Ferret está atualmente reservado para pesquisa e não pode ser comercializado, mas ainda é inteiramente possível lançá-lo em um Apple Silicon Mac.

Nosso leitor e consultor DevOps Jean-Jérôme Lévy publicou em seu blog um tutorial completo para instalar e testar o Ferret em um Mac equipado com um chip Apple Silicon. Com o seu acordo (agradecemos), oferecemos-lhe abaixo. Observe que você precisará de uma boa quantidade de memória unificada para aproveitá-la ao máximo, tendo o autor do tutorial lançado em um MacBook Pro M1 Max com 64 GB de RAM.

Tutorial para instalar e testar o Ferret

, Desenvolvido em colaboração com a Cornell University, a Apple apresentou discretamente seu primeiro modelo LLM, Ferret, no GitHub. Bem depois do OpenAI, do Meta e até do Google, a Apple, por sua vez, está se lançando na corrida do LLM. No entanto, a abordagem é diferente. De código aberto e multimodal, este modelo combina visão computacional e processamento de linguagem natural, oferecendo capacidades únicas em termos de compreensão e análise de textos e imagens. Mais poderoso que o GPT-4 da OpenAI segundo a Apple, esse avanço promete enriquecer os dispositivos da empresa, principalmente melhorando a interpretação dos dados e talvez até do Siri.

Ironicamente, embora a Apple tenha parado de usar e oferecer suporte aos produtos NVidia desde 2016, seu modelo Ferret foi desenvolvido usando placas gráficas de alto desempenho da NVidia, a A100. O código-fonte disponível no GitHub, portanto, não funciona em produtos Apple.

Vamos ver como consertar isso e testar os recursos e a capacidade de resposta desta primeira versão do Ferret em nossas máquinas “Designed by Apple”.

CUDA, MPS e pré-requisitos

A maior aderência do código de Ferret é o uso de CUDA, a estrutura de GPU da NVidia. Felizmente, a biblioteca usada é PyTorch, que foi portada e otimizada para GPUs Apple Silicon. Migrar para a arquitetura Metal da Apple será ainda mais simples.

O outro ponto a ser observado é a documentação resumida sobre a instalação e uso do Ferret no site GitHub, prova, se alguma vez existiu, de que a Apple reserva seu modelo LLM apenas para pesquisadores conforme especificado em seus termos de uso. usar.

Então, vamos descobrir juntos como executar este Ferret em nossos Macs. Para fazer isso, lembre-se de que é necessária uma quantidade substancial de memória da GPU. Nossos testes foram realizados em um MacBook Pro com 64 GB de memória.

Instalação de furão

Etapa 1: configurar o Git

Comece instalando o Git Large File Storage (LFS) para lidar com os tamanhos de arquivo grandes que precisaremos:

brew install git-lfsgit lfs install

Etapa 2: Baixe o código-fonte do Ferret

O código oficial do Ferret está disponível em https://github.com/apple/ml-ferret. Adaptei este código para processadores Silicon e para o framework Metal Performance Shaders (MPS) da Apple, disponível em https://github.com/jeanjerome/ml-ferret/tree/silicon-furão/árvore/silício):

• A ramificação contém o código original da Apple. • Ramo de silicone contém minha versão adaptada.

Essa estruturação facilita a comparação entre as duas versões. Para clonar o código:

git clone https://github.com/jeanjerome/ml-ferretcd ml-ferretgit switch silicon

Etapa 3: Crie um ambiente virtual Python

Ferret usa Python, então vamos criar um ambiente virtual com Conda para isolar dependências:

conda create -n ferret python=3.10 -yconda activate ferret

Em seguida instale as dependências necessárias:

pip install --upgrade pippip install -e .pip install pycocotoolspip install protobuf==3.20.0

Etapa 4: instalar o modelo Vicuna

Coloque o modelo Vicuna no diretório./model na raiz do projeto:

mkdir -p ./modelgit lfs installgit clone https://huggingface.co/lmsys/vicuna-13b-v1.3 model/vicuna-13b-v1.3

Aguarde enquanto o modelo é baixado.

Etapa 5: Baixe pesos de furões

A Apple disponibiliza um arquivo com as diferenças entre os pesos da Vicuna e do Furão. Baixe-os:

mkdir -p ./deltacurl -o ./delta/ferret-13b-delta.zip https://docs-assets.developer.apple.com/ml-research/models/ferret/ferret-13b/ferret-13b-delta.zipunzip ./delta/ferret-13b-delta.zip -d ./delta

Esta etapa pode demorar um pouco.

Passo 6: Transforme Vicuna em Furão

Para aplicar as alterações do Ferret na Vicuna:

python -m ferret.model.apply_delta \ --base ./model/vicuna-13b-v1.3 \ --target ./model/ferret-13b-v1-3 \ --delta ./delta/ferret-13b-delta

Siga os registros para confirmar a conclusão bem-sucedida da operação:

/opt/homebrew/Caskroom/miniconda/base/envs/ferret/lib/python3.10/site-packages/bitsandbytes/cextension.py:34: UserWarning: The installed version of bitsandbytes was compiled without GPU support. 8-bit optimizers, 8-bit multiplication, and GPU quantization are unavailable.warn("The installed version of bitsandbytes was compiled without GPU support. "'NoneType' object has no attribute 'cadam32bit_grad_fp32'Loading base modelLoading checkpoint shards: 100%|██████████████████████████████████████████████████████| 3/3 [00:04<00:00, 1.57s/it]Loading deltaLoading checkpoint shards: 100%|██████████████████████████████████████████████████████| 3/3 [00:08<00:00, 2.94s/it]Applying deltaApplying delta: 100%|█████████████████████████████████████████████████████████████| 421/421 [00:16<00:00, 26.04it/s]Saving target model

Você acabou de instalar o Ferret no seu Mac.

Lançamento da demonstração Ferret

A demonstração fornecida pela Apple permite apreciar as capacidades do novo modelo através de uma interface web.

Este demonstrador inclui um controlador, um servidor web Gradio e um modelo de trabalho que carrega os pesos e realiza inferência.

Inicie a demonstração com estes comandos em três terminais separados:

Etapa 7: primeiro terminal

Inicie o controlador:

conda activate ferretpython-m ferret.serve.controller--host 0.0.0.0--port 10000

Aguarde a mensagem de que o controlador está operacional: Uvicorn rodando em http://0.0.0.0:10000 (Pressione CTRL\+C para sair)

/images/49d472c428_demarrage-du-controleur.jpg Iniciando o controlador

Etapa 8: Segundo Terminal

Inicie o servidor web:

conda activate ferretpython -m ferret.serve.gradio_web_server --controller http://localhost:10000 --model-list-mode reload --add_region_feature

Aguarde a linha aparecer Executando na URL local: http://0.0.0.0:7860:

/images/80589d8b0f_demarrage-de-l-interface-web.jpg Iniciando a interface da web

Etapa 9: Terceiro Terminal

Execute o trabalhador modelo:

conda activate ferretpython -m ferret.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path ./model/ferret-13b-v1-3 --add_region_feature

Monitore os logs para verificar se tudo está funcionando corretamente: Uvicorn rodando em http://0.0.0.0:40000 (pressione CTRL\+C para sair)

/images/0a58aeb083_demarrage-du-modele.jpg Iniciando o Modelo

Passo 10: Acesse a demonstração

Clique no endereço http://localhost:7860/para acessar a interface web de demonstração.

/images/7192ef5281_interface-du-demonstrateur-ferret.jpg Interface de demonstrador de furões

Testando a demonstração

A Apple incluiu testes com imagens e prompts pré-preenchidos para avaliar Ferret.

Vamos testá-los!

Teste 1: O cachorro e os furões

• Selecione a primeira imagem (o cachorro branco) em Exemplos. • Em Tipo de entrada de referência, escolha Esboço. • Desenhe o cachorro e o furão em Imagem e Esboço. • Por fim clique no botão Enviar na frente do prompt Qual é a relação entre o objeto [região0] e o objeto [região1]?

/images/de5f149970_test-du-chien-et-des-furets.jpg Testes de cães e furões

As respostas variam, mas permanecem consistentes com a imagem e provavelmente dependem dos pixels selecionados:

• Tentativa 1: O objeto [497, 303, 791, 658] é um cachorro e está ao lado de outro cachorro [307, 507, 459, 690]. Eles parecem estar aproveitando o tempo juntos na neve. • Teste 2: O objeto [457, 283, 817, 701] é um cachorro e o objeto [318, 498, 464, 707] é um furão. O cachorro e o furão parecem estar sentados juntos na neve, sugerindo uma interação amigável ou companheirismo.

Limitações:

O Ferret pode consumir muita memória e pode ser necessário reiniciar o modelo entre os testes. No meu MacBook M1 Max e seus 64 GB, foram usados ​​62 GB de RAM, 2 GB de arquivos em cache e 20 GB para o arquivo de paginação.

Teste 2: O pontão no lago

• Selecione a segunda imagem (o pontão). • Sem desenhar, envie a solicitação clicando no botão Enviar na frente da solicitação. Quais são as coisas que devo ter cuidado ao visitar aqui? Diga-me as coordenadas em resposta.

/images/746047a45d_test-du-ponton-sur-le-lac.jpg Testando o pontão no lago

• Resultado: quando você estiver no banco dos réus [218, 535, 810, 993], você deve estar atento a algumas coisas. Em primeiro lugar, a água [0, 518, 998, 997] é um aspecto crucial, e deve-se ter cuidado para não chegar muito perto da borda [731, 543, 998, 591]. Em segundo lugar, as árvores circundantes [875, 366, 940, 510] [707, 385, 757, 535] [650, 393, 695, 529] [512, 420, 540, 526] [775, 375, 818, 522] pode representar um perigo se você não for cauteloso. Finalmente, é importante estar ciente do caminho [218, 535, 810,] para garantir que você permaneça no caminho certo e evite quedas ou lesões não intencionais.

Teste 3: A sala de estar

• Escolha a terceira imagem (a sala). • Envie o prompt sem desenho clicando no botão Enviar na frente do prompt Descreva a imagem em detalhes. • Ferret começa a nos responder…

/images/e1618c24cb_test-du-salon.jpg Teste de sala de estar

Resultado:

• Ferret escreve lentamente a sua resposta. Sentimos que parece apertado nos 64 GB de RAM. • Ele ainda consegue escrever isto: A imagem mostra uma aconchegante sala de estar [12, 1, 982, 989] com vários móveis [490, 588, 709, 883] e decorações [244, 27, 394, 110] [ 247, 28, 274, 109] [378, 43, 411, 108]. No centro, há um tapete colorido e multicolorido [90, 689, 746, 994] no chão. Uma TV de tela plana [1, 394, 93, 723] está montada na parede esquerda, com controles remotos [5, 679, 60, 734] colocados próximos. Duas camadas [513, 421, 938, 769] [501, 577, 993, 995] estão dispostas na sala, uma ao longo da parede direita e outra na extremidade da sala. Algumas cadeiras também estão presentes, espalhadas pela sala. Uma mesa de jantar [710, 392, 954, 511] [ • Antes de plantar miseravelmente com ERRO DE REDE DEVIDO A ALTO TRÁFEGO. POR FAVOR REGENERE OU ATUALIZE ESTA PÁGINA. (código_erro: 1) • Nos logs, podemos ler: Caught Unknown Error MPS back-end sem memória (MPS alocado: 26,50 GB, outras alocações: 55,14 GB, máximo permitido: 81,60 GB). Classificado para alocar 10,00 KB no pool privado. Use PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 para desabilitar o limite superior para alocações de memória (pode causar falha no sistema).

Nenhuma solução portanto para o meu MacBook Pro, os 80 GB ocupados pelo Ferret não são suficientes…

Conclusão

Concluindo, a integração do Ferret, o mais recente modelo LLM da Apple, em máquinas equipadas com processadores Apple Silicon, representa um avanço notável no campo da inteligência artificial. Apesar de alguns desafios inerentes à adaptação do código inicial, que foi projetado para GPUs NVidia, o esforço de portabilidade para a arquitetura Metal da Apple foi muito simples.

Instalar e implantar o Ferret, embora exija em termos de memória e recursos, abre oportunidades interessantes para usuários de Mac. As demonstrações fornecidas com o código-fonte ilustram o poder e a versatilidade do Ferret, capaz de analisar e interpretar dados visuais e textuais em profundidade.

É importante notar que esta implementação do Ferret, apesar do seu poder, continua a consumir muitos recursos, especialmente em RAM. Não há dúvida de que a Apple irá agora adaptar o seu novo modelo às suas máquinas e em particular aos iPhones. Seu potencial para melhorar aplicativos existentes e criar novos é imenso, e espera-se que sua próxima evolução traga ainda mais inovações e recursos. ,

*️⃣ Link da fonte:

publicado no GitHub , um tutorial completo para instalar e testar o Ferret em um Mac equipado com um chip Apple Silicon , https://github.com/apple/ml-ferret , https://github.com/jeanjerome/ml-ferret/tree/silicon ,