赞
踩
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评价的一个例子
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。