Keras深度学习实战:Gemma大模型本地部署与应用

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])
权重文件解压后的文件结构
kaggle权重文件
kaggle权重文件

 gemma在keras的实现由preprocessor和gemmabackbone两部分构成,由GemmaCausalLM继承至GenerativeTask。generate进行生成推理。本人对kera不是很熟悉,上述也是看了一些源码理解上可能有问题。如下是gemma 对python和Julia评价的一个例子

gemma模型​​​​​​输出结果
  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值