Potato 2.14: treine modelos com as suas próprias anotações
O Potato 2.14 treina modelos com os rótulos de um estudo, com 38 treinadores, pontua cada execução em itens reservados e mostra as predições aos anotadores como pré-rótulos.
O Potato 2.14 treina modelos com as próprias anotações de um estudo. Uma execução ajusta um dos 38 treinadores aos rótulos que os anotadores deram, pontua o modelo em itens reservados do treinamento e grava de volta nos itens as predições do modelo como pré-rótulos que os anotadores confirmam ou corrigem. A versão 2.13.1 tinha um único treinador, sklearn-text. A versão também importa arquivos de diarização RTTM, exporta turnos de fala corrigidos, executa o WhisperX para transcrição local e corrige vários bugs que alteravam números de concordância e exportações, então leia as notas de atualização antes de instalar.
pip install --upgrade potato-annotationNotas de atualização
Execute potato validate config.yaml --strict em cada configuração primeiro. As mudanças a seguir podem alterar o que um estudo que funciona na 2.13 faz:
assignment_strategy: llm_confidenceagora ordena a fila. A estratégia serve primeiro o pré-rótulo de menor confiança e depois os itens sem pré-rótulo. As versões anteriores aceitavam o valor e atribuíam os itens ao acaso.model_trainingé verificado na validação e na inicialização. Uma chave desconhecida emwritebackouauto_retrain, uma divisão com nome diferente detrain,valouteste uma entrada dewriteback.schemasque não é um esquema são erros que impedem o servidor de iniciar.- A página Training informa uma pontuação em itens reservados. A coluna de pontuação mostrava a acurácia no treinamento. A pontuação de uma execução da 2.13 não é comparável com uma pontuação em itens reservados da 2.14.
- Links, cadeias e eventos aparecem nas exportações. As respostas de
span_link,coreferenceeevent_annotationnão apareciam em nenhuma exportação, e CSV e TSV agora acrescentam as colunas<scheme>._linkse<scheme>._events. - O Potato não lista mais
ujsoneminstall_requires. Um script seu que importaujsondo ambiente do Potato precisa depip install ujson.
Treinamento de modelos
O treinamento de modelos serve a um estudo com mais itens do que os anotadores vão rotular, em que um modelo treinado nos primeiros rótulos pode propor o resto. O ciclo tem três etapas. Primeiro, uma execução resolve os rótulos de cada item em uma resposta e divide os itens em train, val e test. Segundo, o treinador ajusta um modelo na divisão train em um processo separado, e a execução pontua o modelo nos itens val e test. Terceiro, a gravação de volta mostra as predições do modelo aos anotadores como pré-rótulos, e as respostas que os anotadores salvam viram rótulos para a próxima execução.
Para ligar o ciclo em um estudo com um esquema sentiment, adicione este bloco à configuração do estudo:
model_training:
enabled: true
writeback:
schemas: [sentiment]
include_unlabeled: true
min_confidence: 0.6Os anotadores não veem nada de uma execução até que um esquema seja nomeado em writeback.schemas. include_unlabeled: true faz predições nos itens que ninguém rotulou, e min_confidence mantém fora da página as predições abaixo de 0,6. Reinicie o servidor, abra /admin/training com a chave de administrador, escolha um treinador e um esquema e clique em Train now.

O projeto de exemplo do Potato em examples/ai-assisted/model-training/ tem 160 avaliações de produtos e executa sklearn-text, que não precisa de GPU nem de nada além de uma instalação simples. A documentação de treinamento de modelos relata uma execução ali, com 120 avaliações rotuladas, que obteve 0,84 de macro-F1 nas avaliações de validação e gravou 80 pré-rótulos. Um novo anotador então vê cada uma dessas avaliações com a resposta do modelo já selecionada:

Treine o seu primeiro modelo percorre o exemplo passo a passo.
Treinadores para cada tipo de anotação
A página Training oferece a cada esquema apenas os treinadores que se ajustam a ele. O catálogo de treinadores lista os 38 treinadores com os comandos de instalação, e a lista abaixo nomeia os principais grupos:
- Texto.
hf-text-classification,setfitesklearn-textclassificam itens.hf-token-classificationmarca trechos,hf-relationliga trechos em relações, eventos e cadeias de correferência, ebyt5-glosssegmenta e glosa palavras para a glosa interlinear. - Imagens.
torchvision-detecteultralytics-detecttreinam detectores, etorchvision-segment,ultralytics-segmentecellposetreinam segmentadores. As execuções de detecção e segmentação dividem em blocos lâminas inteiras e imagens grandes e treinam em planos de microscopia e mapas GeoTIFF.volume-unetsegmenta volumes 3D,layoutlmv3rotula layouts de página evlm-sftajusta um modelo de visão e linguagem em legendas, ancoragem e passos de interface gráfica. - Áudio e vídeo.
whisper-asrajusta o Whisper em turnos de transcrição corrigidos,diarizationtreina um modelo de falantes em turnos de fala,hf-audio-taggermarca segmentos de áudio evideo-trackacompanha objetos entre quadros. - LLMs e agentes.
llm-sftajusta em respostas de texto livre,llm-dpoem preferências pareadas,reward-modelem respostas pareadas, de ranqueamento e de melhor-pior, eprm-rewardem avaliações de passos de traços de agentes. - Ciência.
rdkit-propertyprevê respostas sobre moléculas,peak-cnnprevê posições de picos em espectros,signal-cnnrotula intervalos de sinais de séries temporais eepisode-modelrotula episódios de robôs.
Os treinadores ultralytics são AGPL-3.0, e os pesos do LayoutLMv3 são CC BY-NC-SA 4.0. Uma execução de qualquer um dos dois pede que você aceite a licença primeiro. pip install "potato-annotation[train]" instala o que os treinadores de texto, imagem, áudio e LLM precisam, e o catálogo nomeia as instalações separadas.
Pontuações em itens reservados e pré-rótulos
Cada execução pontua suas predições nos itens val e test com uma métrica adequada ao esquema, como macro-F1 para rótulos, mAP50 para caixas, taxa de erro de palavras para transcrições e Dice para volumes. Um item com rótulo e sem predição conta como erro, e um número de cobertura informa a fração de itens que receberam uma predição. Itens da divisão train nunca recebem um pré-rótulo, e um item que um revisor corrigiu sempre vai para a divisão train das execuções seguintes.
Um pré-rótulo só se torna a resposta do anotador quando o anotador o edita ou passa para o próximo item, e a gravação de volta nunca altera um rótulo humano. A fila de revisão de modelos serve os pré-rótulos do menos confiante para o mais confiante, e o relatório de revisão nomeia a execução por trás de cada pré-rótulo. O modelo no ciclo cobre o fluxo de revisão.
Treinamento em um servidor com GPU ou em um cluster
Uma execução roda em um backend. O backend local treina no servidor do Potato e escolhe CUDA, o Metal da Apple ou a CPU. Um backend ssh inicia a execução em um servidor com GPU que o Potato alcança e transmite de volta o progresso e o modelo. Um backend slurm envia a execução a um nó de computação com sbatch a partir do nó de login e precisa apenas de sbatch, squeue e scancel. Um backend agent atende uma máquina que o Potato não alcança, que executa potato training agent e consulta o servidor em busca de trabalhos. Antes de uma execução em um backend ssh, potato training check <backend> config.yaml informa o Python remoto, as GPUs remotas e os pacotes de treinamento ausentes. Treine em um servidor com GPU, cluster SLURM ou máquina atrás de NAT configura cada backend.
Escolher o que perguntar em seguida
hf-text-classification e hf-image-classification aceitam um parâmetro acquisition que grava uma pontuação em cada predição, por margem, entropia, BALD ou distância de core-set. assignment_strategy: llm_confidence então serve primeiro a pontuação mais alta. auto_retrain inicia uma nova execução a cada 25 novas anotações por padrão, e cada execução repontua os itens não rotulados. O aprendizado ativo compara esse ciclo com o bloco active_learning do Potato.
Modelos que você já tem
Cinco treinadores não ajustam nada e pontuam um modelo que roda em outro lugar: label-studio-ml para um backend de ML do Label Studio, openai-vlm-boxes para um modelo de visão e linguagem atrás de uma API compatível com a OpenAI, hf-inference para um Hugging Face Inference Endpoint, roboflow e cvat-nuclio para uma função serverless do CVAT. As predições desses modelos recebem a mesma pontuação em itens reservados, gravação de volta e revisão que as de um modelo treinado. Pré-rótulos e pontuações em itens reservados de um modelo que você já executa cobre cada ponte.
Publicar um modelo
A página de uma execução envia o modelo ao Hugging Face Hub com um cartão do modelo que nomeia o treinador, o modelo base, os esquemas, os tamanhos das divisões e a pontuação em itens reservados. Você digita o nome do repositório duas vezes, o repositório é privado por padrão e o token vem de uma variável de ambiente no servidor. As predições e os dados de treinamento ficam no servidor. A mesma página guarda a divisão de uma execução e os rótulos humanos da divisão como uma versão do conjunto de dados, para comparar modelos posteriores nos mesmos itens.
Transcrições, importação e exportação
- WhisperX.
potato transcripts --transcribeusa o WhisperX quando ele está instalado, com tempos de palavra do alinhamento forçado em--asr-word-timestamps, e recorre ao faster-whisper caso contrário. Uma execução dewhisper-asrgrava uma cópia CTranslate2 do modelo ajustado que--asr-modelcarrega. - Importação RTTM.
potato import -f rttmtransforma um arquivo de diarização, ou uma pasta de arquivos de diarização, em um item por gravação com os turnos de fala a corrigir.--speaker-maprenomeia os falantes. - Exportação
segments. O formato grava uma linha JSONL por segmento de áudio ou vídeo e um arquivo RTTM por anotador. - Dependências CoNLL-U. HEAD e DEPREL vêm de um esquema
span_linkdirigido sobre os trechos exportados. As duas colunas eram sempre_antes.
Correções que afetam resultados
O changelog lista todas as correções. As correções abaixo poderiam ter alterado números que você relatou:
- Um empate de ranqueamento escrito como
B,D=A,Cera lido como um único item chamadoD=A, então o tau de Kendall e o footrule de Spearman deixavam de fora os dois itens empatados. - Pré-rótulos de slider, de rótulo suave e de escala pareada eram salvos como a resposta do anotador quando a página carregava, então um item contava como concluído antes de qualquer pessoa responder. Abrir um item
grounding_evalsalvava o item da mesma forma. /admin/iaalistava correferência, links de trechos e eventos como trechos sem pontuação. O relatório agora pontua os três tipos pela média do F1 entre pares.- Mesclar ou dividir um código no livro de códigos não reapontava nenhuma codificação, porque nada ligava as anotações salvas aos ids dos códigos.
- Os manifestos de snapshot congelavam números de concordância nulos e agora registram o kappa e a concordância percentual.
- A revisão de modelos contava um veredito
rejectcomo erro em vez de contá-lo contra o pré-rótulo que o veredito retirou, e a precisão do relatório de revisão saía errada. Um par anotador-item reservado também mantinha o campo de gravação de volta nos dados do item quandowriteback.fielddiferia depre_annotation.field, e os dados do item para esse par agora omitem os dois campos.
Instalando a 2.14
Atualize, valide cada configuração e instale os treinadores de que você precisa:
pip install --upgrade potato-annotation
potato validate config.yaml --strict
pip install "potato-annotation[train]"Treinamento de modelos é o lugar para começar, e Novidades lista o resto da versão.