Nesta postagem de blog, vou guiá-lo passo a passo pelo processo de execução do concorrente do MosaicML, MPT-7B, em sua própria instância do AWS SageMaker. ChatGPT Você está animado com os recursos do ChatGPT, mas está preocupado em expor seus dados confidenciais ao OpenAI? Felizmente, existem alternativas que você pode executar em sua própria infraestrutura. Uma dessas alternativas é o MPT-7b da MosaicML, um concorrente do ChatGPT, que exploraremos nesta postagem do blog. Introdução ao MosaicML e MPT-7B A MosaicML, recentemente , vem causando sensação na comunidade ML com seu modelo MPT-7B, um suposto concorrente do ChatGPT. Apesar de sua promessa, a execução desse modelo pode ser assustadora devido à documentação esparsa e seus pesados requisitos de recursos. No entanto, é possível executar o MPT-7B no AWS SageMaker em um notebook Jupyter, um ambiente amigável para iniciantes e altamente flexível para iteração rápida. Essa configuração permite que você teste a viabilidade do modelo e os requisitos de hardware antes de decidir passar para a produção. adquirida pela Databricks por US$ 1,3 bilhão Executando MPT-7B no AWS SageMaker A execução do MPT-7B em um notebook Jupyter no AWS SageMaker oferece vários benefícios. Não apenas você pode pagar apenas pelo que usa e desligá-lo quando terminar, mas também a capacidade de executar novamente partes de seu código facilmente sem precisar recarregar o modelo economiza tempo durante o desenvolvimento iterativo. Mas cuidado! Se você esquecer de parar suas instâncias de notebook, as cobranças podem aumentar rapidamente. Embora esse método seja relativamente conveniente, há algumas considerações que você deve levar em conta. Em primeiro lugar, carregar o modelo pode levar até 20 minutos mesmo em uma GPU de alto desempenho, tornando esse processo um tanto demorado. Além disso, o custo é um fator a ser considerado, pois o custo operacional é de pelo menos US$ 4 por hora. Você precisará executar o MPT-7B em pelo menos uma instância ; qualquer coisa menor não parece viável. Se você optar pelo EC2 em vez do SageMaker, terá que pedir permissão à AWS para usar uma instância . p3.2xlarge p3.2xlarge Nas próximas seções, mostrarei passo a passo como executar o modelo MPT-7B em seu próprio notebook SageMaker jupyter: Etapa 1 - Abra o console do SageMaker Abra o Console AWS e procure por SageMaker: Etapa 2 - Criar uma instância de bloco de anotações No menu do lado esquerdo, selecione : Notebook->Notebook instances Clique no botão : Criar instância de notebook Especifique um nome de instância. Escolha o tipo de instância . Infelizmente, parece que uma instância tão poderosa quanto é necessária, ou então sua instância pode ficar sem memória ou levar muito tempo para responder até mesmo às perguntas mais simples. No entanto, observe que essa instância custará aproximadamente US$ 4/hora, por isso é importante monitorar seu uso com cuidado. m1.p3.2xlarge m1.p3.2xlarge Crie uma nova função do IAM: Se seu ambiente de teste não tiver dados particularmente confidenciais, você poderá conceder acesso a . Caso contrário, você precisará ser mais explícito. Any S3 bucket Clique no botão : Criar instância de notebook O bloco de anotações ficará então em um status . Isso provavelmente durará cerca de 10 minutos: Pendente Enquanto isso, faremos o download de um notebook para que possamos carregá-lo depois que a instância do AWS SageMaker terminar o provisionamento. Passo 3 - Baixe o notebook Acesse o notebook em e faça o download: MPT-7B no AWS SageMaker.ipynb Neste bloco de anotações, você observará dois blocos de código principais. O primeiro bloco carrega o tokenizador e modelo MPT-7B: from torch import cuda, bfloat16 from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig device = f'cuda:{cuda.current_device()}' if cuda.is_available() else 'cpu' tokenizer = AutoTokenizer.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True) config={"init_device": "meta"} model = AutoModelForCausalLM.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True, config=config, torch_dtype=bfloat16) print(f"device={device}") print('model loaded') O tokenizador é usado para codificar a pergunta enviada ao modelo e decodificar a resposta do modelo. Além disso, obtemos a especificação do dispositivo para nossa GPU para que possamos configurar o modelo para utilizá-lo posteriormente: import time from IPython.display import Markdown import torch from transformers import StoppingCriteria, StoppingCriteriaList # mtp-7b is trained to add "<|endoftext|>" at the end of generations stop_token_ids = [tokenizer.eos_token_id] # Define custom stopping criteria object. # Source: https://github.com/pinecone-io/examples/blob/master/generation/llm-field-guide/mpt-7b/mpt-7b-huggingface-langchain.ipynb class StopOnTokens(StoppingCriteria): def __call__(self, input_ids: torch.LongTensor,scores: torch.FloatTensor, **kwargs) -> bool: for stop_id in stop_token_ids: if input_ids[0][-1] == stop_id: return True return False stopping_criteria = StoppingCriteriaList([StopOnTokens()]) def ask_question(question, max_length=100): start_time = time.time() # Encode the question input_ids = tokenizer.encode(question, return_tensors='pt') # Use the GPU input_ids = input_ids.to(device) # Generate a response output = model.generate( input_ids, max_new_tokens=max_length, temperature=0.9, stopping_criteria=stopping_criteria ) # Decode the response response = tokenizer.decode(output[:, input_ids.shape[-1]:][0], skip_special_tokens=True) end_time = time.time() duration = end_time - start_time display(Markdown(response)) print("Function duration:", duration, "seconds") Observe o uso de , que é necessário, caso contrário, o modelo começará a tagarelar, mesmo depois de responder à nossa pergunta. stopping_critera Veja se você quiser explorar as diferentes opções. o modelo gerar parâmetros Agora, vamos carregar este bloco de anotações no SageMaker. Etapa 4 - Carregar o bloco de anotações Esperamos que, a essa altura, sua instância de bloco de anotações do SageMaker tenha terminado de ser provisionada. Quando tiver, clique no link : Open Jupyter Em seguida, clique no botão no canto superior direito da tela e selecione o notebook que você acabou de baixar: Upload Defina o kernel como : conda_python3 Etapa 5 - Execute o notebook Selecione : Célula -> Executar tudo Um logotipo de ampulheta aparecerá na guia do navegador: Você precisará aguardar cerca de 10 minutos para que o modelo seja baixado: Após a execução, você verá a resposta para a pergunta : Explique-me a diferença entre fissão e fusão nuclear Como o model e o tokenizer já foram carregados acima, você pode simplesmente modificar o bloco de código e clicar no botão para fazer qualquer outra pergunta. Isso evitará que você gaste 10 minutos cada vez que quiser testar uma nova pergunta. ask_question Run Passo 6 - Pare o notebook Assim que terminar de testar o modelo, volte para sua lista de instâncias de notebook e interrompa-o. Se não o fizer, $ 4 / hora aumentará muito rapidamente 💸 Comparação de desempenho Em termos de desempenho, meus testes preliminares sugerem que os resultados do MPT-7B podem não ser tão bons quanto os do ChatGPT. Ele faz um trabalho decente respondendo a perguntas como: , Qual é a capital da França? Explique-me a diferença entre fissão e fusão nuclear . Escreva um código python que converta um csv em pdf Mas para perguntas como_Qual é a capital de Belize?_ falha terrivelmente: No momento, estou coletando mais dados e conduzirei uma análise comparativa abrangente em uma postagem de blog de acompanhamento. Nessa postagem, compararei o desempenho de perguntas e respostas de MPT-7B, MPT-30B, Falcon-40b e ChatGPT usando o histórico de conversação real. Do teste à produção Assim que estiver pronto para fazer a transição do teste para a produção, o SageMaker oferece um benefício adicional - a capacidade de criar um endpoint para seu modelo. Com o SageMaker, você pode dimensionar automaticamente com base na demanda para o endpoint, otimizando seus recursos. Dicas Adicionais Esteja ciente de que é fácil para o seu processo ser bifurcado durante a execução em um notebook Jupyter e ficar sem memória. Se isso acontecer, simplesmente desligue o kernel e execute todos os comandos novamente. Se você está curioso para executar este modelo em uma plataforma diferente da AWS, o Google Colab Pro é outra opção viável por US$ 9/mês. No entanto, com base em nossos testes, descobrimos que esgotamos os créditos fornecidos em apenas algumas horas. 😳 Outro desafio que você pode enfrentar é a incapacidade de utilizar a no SageMaker devido a uma incompatibilidade de versão CUDA. Infelizmente, as instâncias P3 atuais da AWS não incluem uma versão CUDA recente. Portanto, se você deseja utilizar a otimização do Triton, precisará criar um contêiner EC2 com acesso à linha de comando. No entanto, é importante observar que você também precisará de permissão especial do AWS Support para executar uma instância com 8 VCPUs. Em uma postagem futura, fornecerei um guia detalhado sobre como integrar o Triton e utilizar um provedor de nuvem de GPU mais econômico, como o . otimização Triton Lambda Labs Pensamentos finais Embora o MPT-7B da MosaicML ofereça uma alternativa viável ao ChatGPT da OpenAI, ele apresenta seu próprio conjunto de desafios. Executar o modelo pode ser demorado, caro e falta a documentação disponível. No entanto, a capacidade de manter o modelo interno e proteger seus dados da exposição ao OpenAI pode ser atraente para determinados casos de uso. O SageMaker oferece grande conveniência para testar rapidamente o modelo e oferece flexibilidade para fazer a transição para a produção quando você estiver pronto. Se você está apenas começando com o MPT-7B ou já o usa há algum tempo, esperamos que este guia tenha fornecido informações valiosas. Fique atento à nossa próxima postagem no blog, onde nos aprofundaremos nas comparações de desempenho entre MPT-7B, MPT-30B, Falcon-40b e ChatGPT. Consulte os links a seguir se estiver interessado em aprender mais sobre ou sua variante maior, . o MPT-7B MPT-30B E lembre-se, esteja você trabalhando com ChatGPT ou MPT-7B, a chave é garantir que seu caso de uso seja atendido sem comprometer a privacidade dos dados e a economia. Feliz mexer! Quer uma solução pronta para usar MPT ou ChatGPT com seus dados? Em , oferecemos ChatGPT para empresas. Se você estiver interessado em alavancar ChatGPT, MPT ou outros modelos com os dados da sua empresa, entre em contato conosco. MindfulDataAI.com