news 2026/7/14 15:31:27

1小时微调 Gemma 3 270M 端侧模型与部署全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1小时微调 Gemma 3 270M 端侧模型与部署全流程

Gemma 3 270M是 Google 推出的一款虽小但能力惊人的开放模型。它属于 Gemma 家族,本质上是将 Gemini 模型中使用的相同技术带入了轻量级、可定制的形式中。

你可以在 不到一小时内完成微调,并将其大小压缩到 300MB 以下,让他直接在你的浏览器中运行。

在这篇文章中,我将展示我是如何使用 Gemma 创建我自己的 emoji 翻译器的——这是一个将文本转换为表情符号并在本地运行的小型模型。

第一步:教 Gemma “用 Emoji 思考”

Gemma 是一个通才。如果你让它把文本翻译成表情符号,它会表现得有点太客气了。

Prompt:

“Translate this text into emojis: what a fun party”

Model:

“Sure! Here is your emoji: 🥳🎉🎈”

这不完全是我想要的目标。对于我的应用我想要 只有表情符号——不要单词,不要“Sure!”,只要有趣的东西。

所以我们可以对他进行微调

构建一个微型数据集

从一个简单的 JSON 文件开始——输入文本,输出表情符号。

[ { "input": "what a fun party", "output": "🥳🎉🎈" }, { "input": "good morning sunshine", "output": "☀️🌻😊" }, { "input": "so tired today", "output": "😴💤" } ]

在 Colab 中微调

以前微调需要 A100 GPU 和时间,现在不需要了。使用 QLoRA(仅更新少量参数)在 Google Colab 的 免费 T4 GPU 上就可以微调。

from transformers import ( AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments, DataCollatorForLanguageModeling ) from peft import LoraConfig, get_peft_model from datasets import load_dataset model_name = "google/gemma-3-270m" tokenizer = AutoTokenizer.from_pretrained(model_name) # 关键:为 Gemma 设置 pad_token if tokenizer.pad_token is None: tokenizer.pad_token = tokenizer.eos_token model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype="auto", # 可选:使用 auto dtype 以提高效率 device_map="auto" # 可选:如果可用,自动映射到 GPU ) dataset = load_dataset("json", data_files="emoji_dataset.json") # 可选:如果序列很长,进行预分词和截断(Trainer 可以处理原始文本,但这样更明确) # def tokenize_function(examples): # return tokenizer(examples["text"], truncation=True, max_length=512) # dataset = dataset.map(tokenize_function, batched=True, remove_columns=dataset["train"].column_names) lora_config = LoraConfig( r=8, lora_alpha=32, target_modules=[ "q_proj", "k_proj", "v_proj", "o_proj", # Attention 层 "gate_proj", "up_proj", "down_proj" # MLP 层 ], lora_dropout=0.05, task_type="CAUSAL_LM" # 为了清晰起见显式指定 ) model = get_peft_model(model, lora_config) training_args = TrainingArguments( output_dir="./gemma-emoji", num_train_epochs=3, per_device_train_batch_size=4, save_steps=100, logging_steps=10, # 可选:更频繁地记录日志 evaluation_strategy="no", # 如果你有 eval_dataset,请在此添加 # group_by_length=True, # 可选:将相似长度分组以提高效率 # max_steps=-1, # 可选:运行完整的 epoch ) # 关键:适用于 CLM 的正确整理器 (collator) data_collator = DataCollatorForLanguageModeling( tokenizer=tokenizer, mlm=False # 因果语言模型 (Causal LM),非掩码 ) trainer = Trainer( model=model, args=training_args, train_dataset=dataset["train"], tokenizer=tokenizer, # 如果未预分词,则启用自动分词 data_collator=data_collator ) trainer.train()

就是这样,训练后模型可以只生成表情符号。

第二步:让它足够小以适应 Web

微调后s模型仍然约有 1GB,按 LLM 标准来看很小但对于浏览器来说还是很大。

为了在本地运行它,我使用 LiteRT 将其量化为 4-bit(如果你更喜欢 Transformers.js,也可以选择 ONNX)。

这个较小的版本非常适合 MediaPipe 或 Transformers.js,两者都利用 WebGPU 来访问你的设备硬件。所以是它实际上是在你的浏览器中运行的。

第三步:在浏览器中运行模型

有趣的部分来了——没有服务器,没有 API,无需等待。

使用 MediaPipe 的 GenAI Tasks 直接在浏览器中加载并运行模型。

const genai = await FilesetResolver.forGenAiTasks( 'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm' ); const llmInference = await LlmInference.createFromOptions(genai, { baseOptions: { modelAssetPath: 'path/to/yourmodel.task' } }); const prompt = "Translate this text to emoji: what a fun party!"; const response = await llmInference.generateResponse(prompt); console.log(response);

一旦缓存,它完全离线运行。零延迟。完全隐私。甚至在飞行模式下也能工作。

更小的模型意味着加载更快的应用和更好的最终用户体验。

总结

这个项目从开始到结束花了我不到一个小时,测试时它甚至使用我最喜欢的表情符号。如果你一直想尝试本地 AI从小处着手,选择一个简单的任务,微调 Gemma将其量化,然后让它直接在你的浏览器中运行。

因为 AI 的未来不仅仅是云端的大型模型——还有那些存在于你口袋里的小型模型。

https://avoid.overfit.cn/post/8e8e6d615ea1480385c1e56d39952dd1
Civil Learning

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/12 18:02:14

LLM + 领域 KG 的神级融合!NRAG 让神经外科诊断 AI 有了 “临床思维”

大型语言模型(LLMs)在多个领域已达到最先进的性能,但其临床部署面临关键障碍,尤其是在复杂场景中推理不足和解释性有限。这些挑战在门诊和急诊的神经外科诊断中尤为突出,因为时间敏感的决策、数据碎片化和复杂的共病使…

作者头像 李华
网站建设 2026/7/13 8:29:30

stata陈强习题第七章7.2和7.3第八章8.3第十章10.5和10.6

7.2do命令 异方差检验之前先估计方程 接着bp检验 显著性<0.05&#xff0c;拒绝原假设&#xff0c;说明存在异方差。 使用解释变量进行检验&#xff0c;在option中加入rhs,显著性<0.05&#xff0c;拒绝原假设&#xff0c;说明存在异方差。 怀特检验&#xff0c;显著性<…

作者头像 李华
网站建设 2026/7/14 1:56:14

基于python的交通旅游计划飞机订票系统_i97c87u0--论文

文章目录系统截图项目技术简介可行性分析主要运用技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统截图 基于python的交通旅游计划飞机订票系统_i97c87u0–论文 项目技术简介 Python版本&#xff…

作者头像 李华
网站建设 2026/7/14 17:20:38

生成式AI与社会共生:在机遇与挑战中探寻治理之道

“用AI生成营销文案&#xff0c;团队创意聚焦率提升40%&#xff1b;借助AI家教&#xff0c;偏远地区学生数学平均分提高15分&#xff1b;通过AI辅助诊断&#xff0c;基层医疗机构误诊率下降22%”——这些真实数据勾勒出当下生成AI赋能社会的生动图景。作为人工智能的核心分支&a…

作者头像 李华
网站建设 2026/7/14 23:25:09

至【牛客tracker 每日一题】

至 时间限制&#xff1a;1秒 空间限制&#xff1a;1024M 网页链接 牛客tracker 牛客tracker & 每日一题&#xff0c;完成每日打卡&#xff0c;即可获得牛币。获得相应数量的牛币&#xff0c;能在【牛币兑换中心】&#xff0c;换取相应奖品&#xff01;助力每日有题做&a…

作者头像 李华
网站建设 2026/7/11 4:28:10

50、Windows系统备份、恢复与问题解决全攻略

Windows系统备份、恢复与问题解决全攻略 系统保护机制与恢复点概述 系统恢复机制自本世纪初就是Windows系统的一部分,虽如今在系统工具集里重要性相对较低,但在快速消除近期导致系统不稳定的更改时很有用。启用该机制后,后台副本服务(Volume Shadow Copy)会定期为指定卷创…

作者头像 李华