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),
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.
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
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
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.
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