Embora o detector OpenAI tenha sido útil na identificação de conteúdo criado pelo ChatGPT e outros modelos baseados em OpenAI, à medida que o uso aumenta (especialmente por usuários aqui nos sites do Stack Exchange), ele tem caído cada vez com mais frequência.
Depois de instalá-lo localmente de acordo com o projeto README , recebo o seguinte erro ao tentar executá-lo no diretório repo usando python -m detector.server ../gpt-2-models/detector-base.pt
:
Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/home/ntd/src/gpt-2-output-dataset/detector/server.py", line 120, in <module>
fire.Fire(main)
File "/home/ntd/src/venv/openai-detector/lib/python3.10/site-packages/fire/core.py", line 141, in Fire
component_trace = _Fire(component, args, parsed_flag_args, context, name)
File "/home/ntd/src/venv/openai-detector/lib/python3.10/site-packages/fire/core.py", line 475, in _Fire
component, remaining_args = _CallAndUpdateTrace(
File "/home/ntd/src/venv/openai-detector/lib/python3.10/site-packages/fire/core.py", line 691, in _CallAndUpdateTrace
component = fn(*varargs, **kwargs)
File "/home/ntd/src/gpt-2-output-dataset/detector/server.py", line 89, in main
model.load_state_dict(data['model_state_dict'])
File "/home/ntd/src/venv/openai-detector/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1671, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for RobertaForSequenceClassification:
Missing key(s) in state_dict: "roberta.embeddings.position_ids".
Unexpected key(s) in state_dict: "roberta.pooler.dense.weight", "roberta.pooler.dense.bias".
Tentei mudar transformers==2.9.1
por comentários nesta edição , mas pip install -r requirements.txt
também falhe.
O principal problema aqui parece ser resolvido usando
transformers==2.5.1
para mim (em oposição a 2.9.1), mas também precisei do compilador Rust (ebuild-essential
) para construí-lo. A maior parte disso, pelo menos começando com a etapa 11, também pode ser aplicável a um Ubuntu não WSL. No entanto, também existem algumas dependências adicionais para CUDA (e não posso ter certeza de quais, já que não tenho um sistema de GPU Ubuntu puro para testar).Aqui estão as etapas completas que usei para instalar no Ubuntu 22.04 no WSL. Observe que você pode simplificá-lo um pouco, não configurando uma distribuição especial para o detector, não configurando um Python
venv
ou até mesmo ignorando ambos. Honestamente, fazer os dois é um exagero em termos de "isolamento", mas as etapas estão todas aqui, dependendo de como você deseja lidar com isso:Registrou uma nova distribuição Ubuntu 22.04 WSL com
ubuntu2204.exe
do PowerShell. Nenhum existia anteriormente, por razões que você verá abaixo.Adicionado nome de usuário e senha quando solicitado.
Executei o arquivo
sudo apt update && sudo apt upgrade -y
.Defina o nome de usuário padrão usando
/etc/wsl.conf
minha resposta aqui .Saiu do Ubuntu
wsl --shutdown
Criei um diretório para minha instância "openai-detector":
Copiou a instância recém-criada do Ubuntu 22.04 para uma nova distribuição chamada
openai-detector
:Removida a
ubuntu-22.04
distribuição, pois sempre posso criar outra sob demanda quando necessário (como acima). No entanto, faça isso apenas se tiver certeza de que este é o que você acabou de criar e que não há arquivos que você precise dele. Esta é uma operação irreversível e destrutível. Sinceramente, fico um pouco nervoso toda vez que faço isso, pois há a chance de usar acidentalmente o nome de distribuição errado. Apenas... cuidado :Iniciada a nova
openai-detector
distribuição criada acima:Instalado
rustup
ebuild-essential
:Configurar ambiente virtual:
Clone o detector e baixe os arquivos do modelo:
Modifique os requisitos para usar Transformers 2.5.1:
Altere a
transformers
linha para:Requisitos de instalação:
Correr:
Após a instalação inicial, tudo o que deve ser necessário no futuro para iniciar é:
Uma cópia local do OpenAI Detector deve estar em execução no
localhost:8080
.