gemma环境配置
gemma 依赖keras3.0及以上版本,keras_nlp和keras3.0的版本适配目前做的不是很完善。需要keras 3.0.5
tensorflow 2.15.0.post1
keras-nlp 0.8.2
pyhon=3.10
可通过如下命令在linux下配置
conda create -y -n gemma python=3.10
pip install -U keras-nlp
pip install -U keras
安装keras-nlp会导致keras版本回滚至2.15。应该如官方所述先安装keras-nlp在安装keras。本人不经常用tensorflow对此没有做深入探索在amd处理器的windos机器上安装有些问题还没深究。
目前发布的torch版本的gemma模型有些不稳定,在kaggle平台上测式keras版本的模型结果明显比torch版本的要稳定。而官方给出的例子:
LLM = keras_nlp.models.GemmaCausalLM.from_preset('gemma_instruct_2b_en')
LLM.generate("Keras is a", max_length=30)
是从kaggle下载权重参数,并完成模型的实例化,省去了中间过程。容易遇到网络问题。可以通过kaggle下载权重文件按照如下方式导入tokenizer权重文件实例化preprocessor。实例化backbone导入weight权重文件,创建LLM
import keras
import keras_nlp
import json
tokenizer = keras_nlp.models.GemmaTokenizer(
proto="gemma_instruct_2b_en/2/assets/tokenizer/vocabulary.spm",
)
preprocessor = keras_nlp.models.GemmaCausalLMPreprocessor(
tokenizer=tokenizer,
sequence_length=128,
)
config_path = 'gemma_instruct_2b_en/2/config.json'
with open(config_path) as config_file:
config = json.load(config_file)
cls = keras.saving.get_registered_object(config["registered_name"])
config["config"] = {**config["config"], **{}}
backbone = keras.saving.deserialize_keras_object(config)
wp = 'gemma_instruct_2b_en/2/model.weights.h5'
backbone.load_weights(wp)
LLM = keras_nlp.models.GemmaCausalLM(backbone,preprocessor=preprocessor)
LLM.compile(sampler=keras_nlp.samplers.BeamSampler(num_beams=2))
LLM.generate("I want to say", max_length=30)
res1 = LLM.generate(["pyhthon and julia","which is better in AI"],max_length=100)
print(res1[0])
gemma在keras的实现由preprocessor和gemmabackbone两部分构成,由GemmaCausalLM继承至GenerativeTask。generate进行生成推理。本人对kera不是很熟悉,上述也是看了一些源码理解上可能有问题。如下是gemma 对python和Julia评价的一个例子