(Atualização 10/23/2022) Lançamos Godel v1.1, que é treinado em 551m de diálogos de várias turnos do tópico de discussão do Reddit e 5M de instrução e conhecimento fundamentados. Ele mostrou resultados significativamente melhores em nossa referência, especialmente na configuração de tiro zero.
Confira nossos cartões de modelo no repositório de Transformers do Huggingface. Com várias linhas de código, deve ser bastante direto conversar com Godel. Uma demonstração ao vivo é mostrada aqui.
Modelo básico: https://huggingface.co/microsoft/godel-v1_1-base-seq2seq
Modelo grande: https://huggingface.co/microsoft/godel-v1_1-large-seq2seq
Este repositório mostra a caixa de diálogo dirigida por objetivos usando Godel e contém o conjunto de dados, código-fonte e modelo pré-treinado para o seguinte artigo:
Godel: pré-treinamento em larga escala para diálogo direcionado a gols
Baolin Peng, Michel Galley, Pengcheng He, Chris Brockett, Lars Liden, Elnaz Nouri, Zhou Yu, Bill Dolan, Jianfeng Gao 
Godel é um modelo pré-treinado em larga escala para diálogos direcionados a objetivos. Ele é parametrizado com um modelo de codificador-decodificador baseado em transformador e treinado para geração de respostas fundamentada em texto externo, o que permite um ajuste fino mais eficaz nas tarefas de diálogo que requerem condicionamento da resposta sobre informações externas à conversa atual (por exemplo, um documento recuperado). O modelo pré-treinado pode ser eficientemente ajustado e adaptado para realizar uma nova tarefa de diálogo com um punhado de diálogos específicos de tarefas.
Este repositório é baseado em transformadores de Hugginface. Alguns scripts de avaliação e conjunto de dados são adaptados da modeling DSTC7-End-T-end-Modeling, Dialogpt, UnifiedQa, Marco, Multiwoz, dados guiados por esquema, etc.
Os scripts incluídos podem ser usados para reproduzir os resultados relatados no artigo. Página da web do projeto e demo: https://aka.ms/godel
Requer a interface interativa requer Node.js e NPM . Consulte aqui para instalação.
Use os comandos abaixo para criar o ambiente, clonar o repositório e instalar os pacotes necessários.
conda create -n godel-env python=3.8
conda activate godel-env
conda install nodejs
git clone https://github.com/microsoft/GODEL.git
cd GODEL
pip install -r requirements.txt
export PYTHONPATH="`pwd`"
Busque e descompacte o modelo pré -terenciado com base no qual continuar o Finetune seus próprios dados.
wget https://bapengstorage.blob.core.windows.net/fileshare/godel_base.tar.gz
tar -zxvf godel_base.tar.gzFormato de dados
{
"Context" : " Please remind me of calling to Jessie at 2PM. " ,
"Knowledge" : " reminder_contact_name is Jessie, reminder_time is 2PM " ,
"Response" : " Sure, set the reminder: call to Jesse at 2PM "
},Usamos o formato JSON para representar um exemplo de treinamento. Como mostrado no exemplo acima, ele contém os seguintes campos:
Afinação
DATA_NAME={path_of_data}
OUTPUT_DIR={path_of_fine-tuned_model}
MODEL_PATH={path_of_pre-trained_model}
EXP_NAME={experiment_name}
python train.py --model_name_or_path ${MODEL_PATH}
--dataset_name ${DATA_NAME}
--output_dir ${OUTPUT_DIR}
--per_device_train_batch_size=16
--per_device_eval_batch_size=16
--max_target_length 512
--max_length 512
--num_train_epochs 50
--save_steps 10000
--num_beams 5
--exp_name ${EXP_NAME} --preprocessing_num_workers 24Geração
DATA_NAME = { path_of_data }
OUTPUT_DIR = { path_to_save_predictions }
MODEL_PATH = { path_of_fine - tuned_model }
python generate . py - - model_name_or_path ${ MODEL_PATH }
- - dataset_name ${ DATA_NAME }
- - output_dir ${ OUTPUT_DIR }
- - per_device_eval_batch_size = 16
- - max_target_length 128
- - max_length 512
- - preprocessing_num_workers 24
- - num_beams 5 Interação
Fornecemos uma interface de demonstração para conversar com modelos FinetUned. O servidor de back-end é baseado no Flask e a interface é baseada em Vue , Bootstrap-Vue e BasicVuechat .
Inicie o servidor de back -end:
# Please create the backend server refering to e.g., dstc9_server.py
python EXAMPLE_server.py # start the sever and expose 8080 Comece a servir a página de front -end:
cd GODEL/html
npm install
npm run serve Open localhost: 8080 No seu navegador da web, você verá a página a seguir. Observe que a porta de back -end deve ser consistente com a porta usada em html/componentes/chat.vue.
Uma demonstração ao vivo é mostrada aqui.
Lançamos a Godel v1.1, que é treinada em 551 milhões de diálogos de várias turnos do tópico de discussão do Reddit e 5M de instrução e diálogos fundamentados no conhecimento. Mais modelos serão lançados mais tarde.
Lançamos três modelos de ajuste fino, que podem ser mais ajustados no conjunto de dados de baixo peso ao usuário. Os parâmetros totais nesses modelos variam de 117m a 2,7b.
| Modelo | Cartões de modelo Huggingface |
|---|---|
| Base | Microsoft/Godel-V1_1-BASE-SEQ2SEQ |
| Grande | Microsoft/Godel-V1_1-Large-Seq2Seq |
22/05/2023: Os modelos de Godel pré -treinos com nossa base de código não são mais suportados, mas os modelos de Godel permanecem disponíveis. Veja aqui para obter detalhes.
Godel é ajustado e avaliado em quatro tarefas. Fornecemos scripts para criar dados de treinamento e teste em nosso formato. Consulte Create_downstream_dataset.sh para baixar os dados originais e executar o seguinte CMD.
cd scripts
./create_downstream_dataset.shGROUNDED_CHECKPOINT={path_to_saved_checkpoint}
OUTPUT_DIR={path_to_save_predictions}
TASK=wow
accelerate launch --config_file configs/G16_config.yaml train.py
--model_name_or_path ${GROUNDED_CHECKPOINT}
--dataset_name ./datasets_loader/ ${TASK} _dataset.py
--output_dir ${OUTPUT_DIR}
--per_device_train_batch_size=16
--per_device_eval_batch_size=16
--max_target_length 256
--max_length 512
--num_train_epochs 10
--preprocessing_num_workers 24
--num_beams 5
--exp_name ${TASK}
--learning_rate 5e-5
--save_every_checkpoint
--save_steps 50000 Neste tutorial, você criará um modelo de diálogo fundamentado baseado em Godel para a tarefa DSTC9. Informações detalhadas podem ser encontradas aqui.
Primeiramente, baixe os dados e converta -os em formato Godel.
cd examples/dstc9
./create_data.shFinetune com o modelo Godel pré-treinado
cd GODEL
GODEL_MODEL={path_to_pre-trained_model}
python train.py
--model_name_or_path ${GODEL_MODEL}
--dataset_name ../examples/dstc9/dstc9_dataset.py
--output_dir ../examples/dstc9/ckpt
--per_device_train_batch_size=16
--per_device_eval_batch_size=16
--max_target_length 128
--max_length 512
--num_train_epochs 50
--save_steps 10000
--num_beams 5
--exp_name wow-test
--preprocessing_num_workers 24
--save_every_checkpoint Interagir com o modelo acima treinado
cd examples/dstc9
# replace model path in dstc9_server with a trained ckpt in line 49
python dstc9_server.py
cd GODEL/html
npm install
npm run serveEste repositório visa facilitar a pesquisa em uma mudança de paradigma da construção de bots de tarefas em escala. Este kit de ferramentas contém apenas parte da maquinaria de modelagem necessária para realmente produzir um arquivo de peso de modelo em uma caixa de diálogo em execução. Por si só, este modelo fornece apenas informações sobre os pesos de vários períodos de texto; Para que um pesquisador realmente o use, ele precisará trazer dados de conversação internos próprios para futuros pré-treinamento e decodificar a geração de respostas do sistema pré-treinado/FinetUned. A Microsoft não é responsável por nenhuma geração da utilização de terceiros do sistema pré -treinado.
Se você usar este código e dados em sua pesquisa, cite nosso artigo ARXIV:
@misc{peng2022godel,
author = {Peng, Baolin and Galley, Michel and He, Pengcheng and Brockett, Chris and Liden, Lars and Nouri, Elnaz and Yu, Zhou and Dolan, Bill and Gao, Jianfeng},
title = {GODEL: Large-Scale Pre-training for Goal-Directed Dialog},
howpublished = {arXiv},
year = {2022},
month = {June},
url = {https://www.microsoft.com/en-us/research/publication/godel-large-scale-pre-training-for-goal-directed-dialog/},
}
Este projeto recebe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA) declarando que você tem o direito e, na verdade, concede -nos os direitos de usar sua contribuição. Para detalhes, visite https://cla.opensource.microsoft.com.
Quando você envia uma solicitação de tração, um BOT do CLA determina automaticamente se você precisa fornecer um CLA e decorar o PR adequadamente (por exemplo, verificação de status, comentar). Simplesmente siga as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta Open Microsoft. Para obter mais informações, consulte o Código de Conduta Perguntas frequentes ou entre em contato com [email protected] com quaisquer perguntas ou comentários adicionais.
Este projeto pode conter marcas comerciais ou logotipos para projetos, produtos ou serviços. O uso autorizado de marcas comerciais ou logotipos da Microsoft está sujeito e deve seguir as diretrizes de marca registrada e marca da Microsoft. O uso de marcas comerciais da Microsoft ou logotipos em versões modificadas deste projeto não deve causar confusão ou implicar o patrocínio da Microsoft. Qualquer uso de marcas comerciais ou logotipos de terceiros estão sujeitas às políticas de terceiros.