Com o custo de uma xícara de Starbucks e duas horas do seu tempo, você pode ter seu próprio modelo em larga escala de código aberto treinado. O modelo pode ser ajustado de acordo com diferentes direções de dados de treinamento para aprimorar várias habilidades, como medicina, programação , negociação de ações e conselhos amorosos, tornando seu modelo em grande escala mais “compreensivo” sobre você. Vamos tentar treinar um modelo em larga escala de código aberto habilitado pelo DolphinScheduler de código aberto!
O nascimento do ChatGPT sem dúvida nos encheu de expectativa para o futuro da IA. Sua expressão sofisticada e poderosa capacidade de compreensão de linguagem surpreenderam o mundo. No entanto, como o ChatGPT é fornecido como um Software como Serviço (SaaS), questões de vazamentos de privacidade pessoal e segurança de dados corporativos são preocupações de todos os usuários e empresas. Mais e mais modelos de larga escala de código aberto estão surgindo, possibilitando que indivíduos e empresas tenham seus próprios modelos. No entanto, começar, otimizar e usar modelos de larga escala de código aberto tem grandes barreiras à entrada, tornando difícil para todos usá-los facilmente. Para resolver isso, usamos o Apache DolphinScheduler, que fornece suporte com um clique para treinamento, ajuste e implantação de modelos de grande escala de código aberto. Isso permite que todos treinem seus próprios modelos em larga escala usando seus dados a um custo muito baixo e com conhecimento técnico.
Nosso objetivo não é apenas que engenheiros profissionais de IA, mas também qualquer pessoa interessada em GPT desfrute da alegria de ter um modelo que os “entenda” melhor. Acreditamos que todos têm o direito e a capacidade de moldar seu próprio assistente de IA. O fluxo de trabalho intuitivo do Apache DolphinScheduler torna isso possível. Como bônus, o Apache DolphinScheduler é uma ferramenta de agendamento de big data e IA com mais de 10.000 estrelas no GitHub. É um projeto de alto nível sob a Apache Software Foundation, o que significa que você pode usá-lo gratuitamente e modificar o código sem se preocupar com problemas comerciais.
Seja você um especialista do setor que deseja treinar um modelo com seus próprios dados ou um entusiasta de IA que deseja entender e explorar o treinamento de modelos de aprendizado profundo, nosso fluxo de trabalho fornecerá serviços convenientes para você. Ele resolve etapas complexas de pré-processamento, treinamento de modelo e otimização e requer apenas 1 a 2 horas de operações simples, além de 20 horas de tempo de execução para criar um modelo ChatGPT de grande escala mais “compreensivo”.
Então vamos começar esta jornada mágica! Vamos trazer o futuro da IA para todos.
Primeiro, você precisa de uma placa gráfica 3090. Se você tiver um computador desktop, poderá usá-lo diretamente. Caso contrário, existem muitos hosts para alugar com GPU online. Aqui usamos o AutoDL como exemplo a ser aplicado. Abra https://www.autodl.com/home , registre-se e faça o login. Depois disso, você pode escolher o servidor correspondente no mercado de poder de computação de acordo com as etapas 1, 2 e 3 mostradas na tela.
Aqui, é recomendável escolher a placa gráfica RTX 3090, que oferece uma alta relação custo-desempenho. Após o teste, descobriu-se que uma a duas pessoas podem usar o RTX 3090 para tarefas online. Se você deseja velocidades de treinamento e resposta mais rápidas, pode optar por uma placa gráfica mais poderosa. O treinamento uma vez leva aproximadamente 20 horas, enquanto o teste requer cerca de 2 a 3 horas. Com um orçamento de 40 yuans, você pode fazer isso facilmente.
Clique no espelho da comunidade e digite WhaleOps/dolphinscheduler-llm/dolphinscheduler-llm-0521
na caixa vermelha abaixo. Você pode selecionar a imagem como mostrado abaixo. Atualmente, apenas a versão V1 está disponível. No futuro, conforme novas versões forem lançadas, você poderá escolher a mais recente.
Se você precisar treinar o modelo várias vezes, é recomendável expandir a capacidade do disco rígido para cerca de 100 GB.
Depois de criá-lo, aguarde a conclusão da barra de progresso mostrada na imagem a seguir.
Para implantar e depurar seu próprio modelo de grande escala de código aberto na interface, você precisa iniciar o software DolphinScheduler e precisamos fazer o seguinte trabalho de configuração:
Existem dois métodos disponíveis. Você pode escolher o que mais se adequa a sua preferência:
Clique no botão JupyterLab mostrado abaixo.
A página será redirecionada para o JupyterLab; a partir daí, você pode clicar em “Terminal” para entrar.
2. Login via Terminal (para codificadores):
Podemos obter o comando de conexão SSH no botão mostrado na imagem a seguir.
Em seguida, estabeleça a conexão através do terminal.
No DolphinScheduler, todos os metadados são armazenados no banco de dados, incluindo definições de fluxo de trabalho, configurações de ambiente, informações de inquilino, etc. da tela.
Usando o terminal, navegue até o seguinte diretório:
cd apache-dolphinscheduler-3.1.5-bin
Execute o comando: vim import_ds_metadata.sh
para abrir o arquivo import_ds_metadata.sh
. O conteúdo do arquivo é o seguinte:
Set variables
Hostname
HOST="xxx.xxx.xxx.x"
UsernameUSERNAME="root"PasswordPASSWORD="xxxx"PortPORT=3306Database to import intoDATABASE="ds315_llm_test"SQL filenameSQL_FILE="ds315_llm.sql"mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD -e "CREATE DATABASE $DATABASE;"mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD $DATABASE < $SQL_FILE
Substitua xxx.xxx.xxx.x e xxxx pelos valores de configuração relevantes de um banco de dados MySQL em sua rede pública (você pode solicitar um no Alibaba Cloud, Tencent Cloud ou instalar você mesmo). Então execute:
bash import_ds_metadata.sh
Após a execução, se estiver interessado, você pode verificar os metadados correspondentes no banco de dados (conecte-se ao MySQL e visualize, pule esta etapa se não estiver familiarizado com o código).
Na linha de comando do servidor, abra o seguinte arquivo e modifique a configuração para conectar o DolphinScheduler com o banco de dados previamente importado:
/root/apache-dolphinscheduler-3.1.5-bin/bin/env/dolphinscheduler_env.sh
Modifique a configuração relevante na seção do banco de dados e deixe as outras seções inalteradas. Altere os valores de 'HOST' e 'PASSWORD' para os valores de configuração do banco de dados importado, ou seja, xxx.xxx.xxx.x e xxxx:
export DATABASE=mysqlexport SPRING_PROFILES_ACTIVE=${DATABASE}export SPRING_DATASOURCE_URL="jdbc:mysql://HOST:3306/ds315_llm_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false"export SPRING_DATASOURCE_USERNAME="root"export SPRING_DATASOURCE_PASSWORD="xxxxxx"......
Após configurar, execute (também neste diretório /root/apache-dolphinscheduler-3.1.5-bin):
bash ./bin/dolphinscheduler-daemon.sh start standalone-server
Uma vez executado, podemos verificar os logs usando tail -200f standalone-server/logs/dolphinscheduler-standalone.log
. Neste ponto, DolphinScheduler é lançado oficialmente!
Após iniciar o serviço, podemos clicar em “Custom Services” no console do AutoDL (destacado em vermelho) para sermos redirecionados para uma URL:
Ao abrir a URL, se ela apresentar um erro 404, não se preocupe. Basta anexar o sufixo /dolphinscheduler/ui ao URL:
O módulo AutoDL abre a porta 6006. Depois de configurar a porta do DolphinScheduler para 6006, você pode acessá-la através do ponto de entrada fornecido. No entanto, devido ao redirecionamento de URL, você pode encontrar um erro 404. Nesses casos, você precisa preencher o URL manualmente.
Nome de usuário: admin
Senha: dolphinscheduler123
Após o login, clique em “Gerenciamento de Projetos” para visualizar o projeto pré-definido denominado “vicuna”. Clique em “vicuna” para entrar no projeto.
Ao entrar no projeto Vicuna, você verá três workflows: Training, Deploy e Kill_Service. Vamos explorar seus usos e como configurar modelos grandes e treinar seus dados.
Você pode clicar no botão executar abaixo para executar os fluxos de trabalho correspondentes.
Ao clicar no fluxo de trabalho de treinamento, você verá duas definições. Uma é para ajustar o modelo por meio do Lora (principalmente usando alpaca-lora, https://github.com/tloen/alpaca-lora ) e a outra é mesclar o modelo treinado com o modelo básico para obter o modelo final .
O fluxo de trabalho para implantar modelos grandes (principalmente usando FastChat, https://github.com/lm-sys/FastChat ). Ele primeiro invocará kill_service para eliminar o modelo implantado e, em seguida, iniciará sequencialmente o controlador, adicionará o modelo e, em seguida, abrirá o serviço da Web Gradio.
Os parâmetros iniciais são os seguintes:
Esse fluxo de trabalho é usado para eliminar o modelo implantado e liberar a memória da GPU. Este fluxo de trabalho não tem parâmetros e você pode executá-lo diretamente. Se você precisar interromper o serviço implantado (como quando precisar treinar novamente o modelo ou quando houver memória GPU insuficiente), poderá executar diretamente o fluxo de trabalho kill_service para eliminar o serviço implantado.
Depois de passar por alguns exemplos, sua implantação estará concluída. Agora vamos dar uma olhada na operação prática:
Inicie o fluxo de trabalho diretamente executando o fluxo de trabalho de treinamento e selecionando os parâmetros padrão.
Clique com o botão direito do mouse na tarefa correspondente para visualizar os logs, conforme mostrado abaixo:
Você também pode visualizar o status da tarefa e os logs no painel de instância da tarefa na parte inferior esquerda da barra lateral. Durante o processo de treinamento, você pode monitorar o progresso verificando os logs, incluindo as etapas de treinamento atuais, métricas de perda, tempo restante etc. Há uma barra de progresso indicando a etapa atual, onde etapa = (tamanho dos dados * época) / lote tamanho.
Nossos dados padrão estão em /root/demo-data/llama_data.json
. A fonte de dados atual é Huatuo, um modelo médico ajustado usando dados médicos chineses. Sim, o nosso exemplo é a formação de um médico de família:
Se você tiver dados em um campo específico, poderá apontar para seus próprios dados, o formato dos dados é o seguinte:
Por exemplo:
{"instruction": "calculation", "input": "1+1 equals?", "output": "2"}
Observe que você pode mesclar os campos de instrução e entrada em um único campo de instrução. O campo de entrada também pode ser deixado vazio.
Ao treinar, modifique o parâmetro data_path para executar seus próprios dados.
Observação:
Durante a primeira execução do treinamento, o modelo base será buscado no local especificado, como TheBloke/vicuna-7B-1.1-HF. Haverá um processo de download, portanto, aguarde a conclusão do download. A escolha deste modelo é determinada pelo usuário, e você também pode optar por baixar outros modelos grandes de código aberto (siga as licenças relevantes ao usá-los).
Devido a problemas de rede, o download do modelo base pode falhar no meio da primeira execução do treinamento. Nesses casos, você pode clicar na tarefa com falha e optar por executá-la novamente para continuar o treinamento. A operação é mostrada abaixo:
Para interromper o treinamento, você pode clicar no botão Parar, que liberará a memória da GPU usada para o treinamento.
Na página de definição do fluxo de trabalho, clique no fluxo de trabalho de implantação para executá-lo e implantar o modelo.
Se você não treinou seu próprio modelo, pode executar o fluxo de trabalho de implantação com os parâmetros padrão TheBloke/vicuna-7B-1.1-HF para implantar o modelo vicuna-7b
, conforme mostrado na imagem abaixo:
Se você treinou um modelo na etapa anterior, agora pode implantar seu modelo. Após a implantação, você pode experimentar seu próprio modelo grande. Os parâmetros de inicialização são os seguintes, onde você precisa preencher o output_path
do modelo da etapa anterior:
Em seguida, vamos inserir a instância de fluxo de trabalho implantada. Clique na instância do fluxo de trabalho e, em seguida, clique na instância do fluxo de trabalho com o prefixo “implantar”.
Clique com o botão direito do mouse e selecione “refresh_gradio_web_service” para visualizar os logs de tarefas e encontrar a localização de nosso link de modelo grande.
A operação é mostrada abaixo:
Nos logs, você encontrará um link que pode ser acessado publicamente, como:
Aqui estão dois links. O link 0.0.0.0:7860
não pode ser acessado porque o AutoDL só abre a porta 6006, que já é utilizada pelo dolphinscheduler. Você pode acessar diretamente o link abaixo dele, como [https://81c9f6ce11eb3c37a4.gradio.live.](https://81c9f6ce11eb3c37a4.gradio.live.)
Observe que este link pode mudar toda vez que você implantar, então você precisa encontrá-lo novamente nos logs.
Depois de entrar no link, você verá a página de conversa do seu próprio ChatGPT!
Sim! Agora você tem seu próprio ChatGPT e seus dados só servem para você!
E você gastou apenas menos do que o custo de uma xícara de café~~
Vá em frente e experimente seu próprio ChatGPT privado!
Neste mundo orientado por dados e tecnologia, ter um modelo ChatGPT dedicado tem um valor imensurável. Com o avanço da inteligência artificial e do aprendizado profundo, estamos em uma era em que os assistentes de IA personalizados podem ser moldados. Treinar e implantar seu próprio modelo ChatGPT pode nos ajudar a entender melhor a IA e como ela está transformando nosso mundo.
Em resumo, treinar e implantar um modelo ChatGPT por conta própria pode ajudá-lo a proteger a segurança e a privacidade dos dados, atender a requisitos comerciais específicos, economizar custos de tecnologia e automatizar o processo de treinamento usando ferramentas de fluxo de trabalho como o DolphinScheduler. Ele também permite que você cumpra as leis e regulamentos locais. Portanto, treinar e implantar um modelo ChatGPT por conta própria é uma opção que vale a pena considerar.
Publicado também aqui .