Prática de implantação da versão quantitativa de Baichuan13B de 8 bits

Este artigo é destinado a alunos cujo ambiente operacional é inferior a 40G de memória (não memória GPU) Meu ambiente é a versão gratuita do host de nuvem A10 da plataforma Aliyun pai (32G de memória, 24G de memória).

O oficial ainda não divulgou o modelo quantizado de 8 bits. O link divulgado no github é atualmente um 404 (a partir de 20230802 14:45),
A partir de 20230802 14:45, ainda é o caso
mas para quantificar online, de acordo com a resposta oficial, o ambiente com pelo menos 46G de memória é já preparado. Desista, mas felizmente encontrei uma versão quantificada de 8 bits lançada por um alquimista desconhecido no huggingface. O
endereço é o seguinte: https://huggingface.co/trillionmonster/Baichuan-13B-Chat-8bit
Obrigado às pessoas gentis! ! !

Faça o download e implante, comece de acordo com as instruções de pesquisa e, em seguida, relate um erro sem acidente.
insira a descrição da imagem aqui
Veja a descrição de que existem poucos parâmetros e, em seguida, role para cima e descubra que há um prompt no estágio de carregamento do modelo. Em resumindo, o
insira a descrição da imagem aqui
modelo atual e o modelo referenciado pela versão quantizada naquele momento já possuem Ajuste, há alteração de parâmetro, conforme o prompt, deveria ser para especificar a versão ao carregar o modelo, mas o site oficial não possui uma lista de versões do modelo, e o autor da quantificação não sabe, e está em um impasse.Neste momento, contando com o instinto de movedores de tijolos experientes, preencha manualmente o Qi chant.

Portanto, modifique diretamente o código do arquivo de relatório de erro. No diretório de cache do huggingface local, há um prompt na mensagem de erro. Basta fornecer um valor padrão de 0 de acordo com a lógica.

Continue rodando, então outro erro é relatado
insira a descrição da imagem aqui
desta vez porque o user_token_id não pode ser encontrado, bom, tenho que compensar, desta vez a dificuldade é: olha o nome, não basta dar apenas 0 ou 1, o valor não está certo, estima-se que será executado mais tarde, algo deu errado.
Pensando que esse é um parâmetro do modelo baichuan13b, para determinar seu valor inicial, você tem que voltar ao github oficial para pesquisar. Eu realmente fiz uma pergunta semelhante: https://github.com/baichuan-inc/Baichuan- 13B/issues /67 , até agora o obstáculo foi removido.
O trecho de código de inicialização do modelo é o seguinte

 print("========= 开始初始化8bit量化模型")
    print("========= 进行分词预处理")
    tokenizer = AutoTokenizer.from_pretrained("trillionmonster/Baichuan-13B-Chat-8bit", use_fast=False, trust_remote_code=True)
    print("========= 加载模型")
    model = AutoModelForCausalLM.from_pretrained("trillionmonster/Baichuan-13B-Chat-8bit",  device_map="auto", trust_remote_code=True)
    print("========= 生成配置")
    model.generation_config = GenerationConfig.from_pretrained("trillionmonster/Baichuan-13B-Chat-8bit")
    model.generation_config.max_new_tokens=500
    model.generation_config.user_token_id=195
    model.generation_config.assistant_token_id=500

Os parâmetros das últimas 3 linhas estão concluídos. Após o ajuste, o diálogo pode ser concluído.
insira a descrição da imagem aqui
Meu cenário de teste é fornecer um conteúdo de texto para permitir que o modelo classifique com um intervalo de classificação limitado.

A propósito, compartilhe um api.py que modifiquei com referência a chatglm2 para suportar chamadas http https://download.csdn.net/download/windywolf301/88148705

Acho que você gosta

Origin blog.csdn.net/windywolf301/article/details/132062314
Recomendado
Clasificación