大模型,尤其是近年来流行的GPT、Llama等大语言模型,已经在各种应用中取得了令人瞩目的效果。然而,随之而来的是模型大小的飞速增长,导致普通开发者和研究者难以在本地环境中运行这些模型。对于许多初学者和非专业人士来说,这无疑是一个巨大的挑战。那么,如何在本地CPU上运行这些大模型,而不是依赖昂贵的GPU或云计算资源呢?
为了在本地CPU上运行,我们可以构建一个mini-LLM(轻量级语言模型)。这种模型将模仿大模型的基本结构,但参数数量会大大减少。通过减少模型的深度或宽度,我们可以得到一个在本地环境中运行得相对轻量的模型。
以Baichuan2(https://github.com/baichuan-inc/Baichuan2)为例,可修改为以下配置:
{ "architectures": [ "BaichuanForCausalLM" ], "auto_map": { "AutoConfig": "configuration_baichuan.BaichuanConfig", "AutoModelForCausalLM": "modeling_baichuan.BaichuanForCausalLM" }, "tokenizer_class": "BaichuanTokenizer", "bos_token_id": 1, "eos_token_id": 2, "hidden_act": "silu", "hidden_size": 8, "initializer_range": 0.02, "intermediate_size": 16, "max_position_embeddings": 4096, "model_max_length": 4096, "model_type": "baichuan", "num_attention_heads": 4, "num_hidden_layers": 1, "pad_token_id": 0, "rms_norm_eps": 1e-06, "_from_model_config": true, "tie_word_embeddings": false, "torch_dtype": "bfloat16", "transformers_version": "4.29.2", "use_cache": true, "vocab_size": 125696 }
这里将num_hidden_layers改为了1,num_attention_heads改为了4,intermediate_size改为了16,hidden_size改为了8。接下来需要修改代码中和cuda相关代码,修改后就能愉快地在本地运行代码了。
完整的代码放在了这里: