智能家居切肉机设计

核心内容摘要

Hunyuan-MT-7B与内网穿透技术结合的私有化部署方案
揭秘MySQL:探索那些鲜为人知的数据类型宝藏

基于Python+Web的公务员信息查询系统

在人工智能浪潮席卷全球的当下大模型算法工程师已然成为驱动技术突破与产业升级的核心角色更是当下高薪、高需求的热门赛道。

无论是刚入门、想跨界切入AI领域的程序员小白还是有一定开发基础、计划转型深耕大模型方向的开发者想要高效上岸、少走弯路一套系统、可落地的备考方案必不可少。

本文精心整理了大模型算法工程师备考完整指南涵盖核心知识点拆解、实战技巧点拨、分阶段备考计划额外补充部署运维、前沿技术跟踪及面试冲刺要点兼顾理论与实操助力所有备考者高效备战成功跻身大模型赛道

核心知识点筑牢备考根基拒绝盲目刷题大模型算法工程师的知识体系如同建筑地基需兼顾数学底层、机器学习基础与大模型专项技术三者环环相扣、缺一不可。

对于小白而言无需追求“一口吃成胖子”循序渐进夯实每一块知识才能为后续实战与面试筑牢基础。

一数学基础深度学习的“内功心法”小白也能听懂数学是大模型技术的核心工具所有模型的原理推导、训练优化都离不开以下四大模块无需死记硬背公式重点理解应用场景即可线性代数作为深度学习的“骨架”神经网络各层计算本质就是矩阵运算——矩阵乘法、加法、转置支撑着前向传播与反向传播的全流程。

特征值分解与SVD奇异值分解是数据降维、结构分析的关键比如PCA降维就依赖SVD原理张量运算则专门应对图像、视频等多维数据处理。

举个小白能懂的实战案例在LLAMA-2 70B模型参数压缩中当奇异值保留率超过95%时压缩比可达到4:1能大幅降低GPU显存占用和计算成本相当于“给模型瘦身但不丢核心能力”。

概率论与统计学生成式模型的理论基石也是语言模型能“说人话”的核心原因。

贝叶斯推断是概率图模型构建的核心最大似然估计MLE是模型参数求解的主流方法高斯分布则是扩散模型、变分自编码器VAE等生成模型的基础分布。

通俗来讲ChatGPT、文心一言等模型能生成连贯文本核心逻辑就是通过学习海量文本精准预测下一个单词的出现概率这背后全是概率论的应用。

优化理论直接决定模型训练的效率与效果也是小白调参时最容易踩坑的地方。

梯度下降及其变种SGD、Adam、RMSprop是模型参数更新的核心算法二阶优化方法如自然梯度则适用于海量数据与大规模参数场景分布式优化算法更是解决千亿级参数模型训练的关键。

这里分享一个小白必记的调参核心公式损失函数Hessian矩阵的最大特征值λ_max决定了最优学习率即η2/λ_max掌握这一原理能少走80%的调参弯路。

信息论为AI系统的信息处理提供理论支撑看似抽象实则应用广泛。

熵用于量化随机变量的不确定性广泛应用于决策树特征选择KL散度衡量两个概率分布的差异是VAE、GAN等生成模型的核心损失函数设计依据互信息则是特征筛选与表示学习的重要指标能帮助提升模型特征的有效性让模型“学对重点”。

二机器学习与深度学习基础从入门到进阶的桥梁程序员可快速衔接对于有编程基础的开发者而言这部分内容可快速衔接现有知识小白则需重点吃透基础概念配合简单实操巩固记忆。

机器学习基础先掌握监督学习、无监督学习、半监督学习、强化学习的核心概念再深入理解决策树、支持向量机、朴素贝叶斯、随机森林等经典算法的原理与应用场景。

这些传统算法虽不直接用于大模型训练但在数据预处理、特征工程、小样本任务中仍发挥着不可替代的作用是小白入门的必经之路也是程序员转型时的“知识衔接点”。

神经网络基础从最基础的神经元模型感知机入手理解多层感知机MLP的结构与激活函数的作用。

重点攻克前向传播与反向传播的计算逻辑——反向传播如何通过链式求导计算梯度再通过梯度下降更新参数这是所有深度学习模型训练的核心机制必须吃透建议配合PyTorch简单代码实操理解更深刻。

深度学习框架实战至少精通一款主流框架PyTorch或TensorFlow二选一即可新手优先学PyTorch重点推荐。

PyTorch的动态计算图特性调试更友好且与Hugging Face生态深度兼容大模型开发场景中应用更广泛程序员上手也更快。

学习重点包括模型构建nn.Module、数据加载DataLoader、训练循环编写、模型评估与保存建议结合手写数字识别、简单文本分类等小项目实操巩固每天练30分钟一周就能入门。

三大模型专项技术备考核心重点拉开竞争力差距这部分是大模型算法工程师的核心竞争力也是面试高频考点需结合论文与实战深入理解小白可先掌握核心逻辑再逐步深入细节。

Transformer架构当前所有主流大模型GPT、LLaMA、文心一言等的基础核心是自注意力机制也是备考的重中之重。

需拆解自注意力的三大步骤查询Q-键K矩阵乘法计算相似度、Softmax归一化转化为权重分布、值V矩阵加权求和生成新特征这一步完美融合了线性代数与概率论知识。

同时要掌握Transformer的整体结构包括编码器Encoder的特征提取能力、解码器Decoder的生成能力以及位置编码解决序列顺序丢失问题的实现逻辑。

建议小白精读原始论文《Attention Is All You Need》的中文解读版配合PyTorch手动实现简化版Transformer加深理解无需实现完整复杂版本掌握核心逻辑即可。

预训练与微调技术预训练是大模型“积累通用知识”的过程微调是让模型“适配具体任务”的关键两者结合才能让大模型发挥实际价值。

需了解主流预训练目标如NLP领域的掩码语言模型MLM、自回归语言模型CLMCV领域的对比学习、预训练数据集的处理逻辑数据清洗、分词/图像预处理、批量构建。

微调则需掌握全参数微调适合资源充足场景、部分参数微调如LoRA、Adapter资源有限时首选的原理与实现重点学习超参数学习率、批次大小、训练轮数的调优逻辑小白可先从LoRA微调入手操作简单、资源消耗低容易出成果。

提示工程Prompt Engineering大模型应用的核心技巧也是小白最快能上手的大模型相关技能通过设计精准提示引导模型输出符合需求的结果无需深入模型底层。

需掌握提示设计的核心原则清晰性、具体性、引导性以及常见技巧零样本提示、少样本提示、思维链CoT、思维树ToT。

比如在文本分类任务中通过“请判断以下文本的情感倾向{文本}选项正面/负面”的提示能大幅提升模型分类准确率程序员可结合自身开发场景设计提示词实现简单的代码生成、bug修复实操性极强。

实战技巧从理论到落地的关键小白也能快速上手大模型算法工程师不仅要懂理论更要能落地很多小白和程序员栽在“只会背公式、不会做项目”上。

以下实战技巧的能帮你提升项目效率规避常见坑点快速实现从理论到实操的跨越。

一数据处理模型性能的“生命线”细节决定成败很多新手误以为“模型越复杂越好”实则数据质量直接决定模型上限垃圾数据训练不出优质模型这一步再耗时也值得。

数据清洗拿到数据先“去噪”——删除重复数据、错误标注、无意义文本如乱码处理缺失值填充、删除或插值。

推荐用Matplotlib、Seaborn绘制数据分布直方图、箱线图快速识别异常值对于文本数据可通过正则表达式过滤特殊字符、停用词小白可直接套用网上现成的正则模板。

这里提醒一句新手无需自己从零构建数据集可优先使用公开数据集如GLUE、COCO节省时间。

数据标注标注质量直接决定模型学习目标的准确性新手可先从简单标注任务入手如情感分类标注。

需制定清晰的标注规范如情感分类的标注标准、实体识别的边界定义采用“多人标注交叉审核”的模式减少误差对于复杂任务如多轮对话标注可借助LabelStudio等开源标注工具提升效率降低标注难度。

数据增强解决数据量不足、模型泛化能力差的问题新手必学实操简单且效果显著。

文本任务可采用同义词替换用WordNet、同义词词林小白可直接用Python库调用、句子重组、随机插入/删除词语、回译中文→英文→中文图像任务可采用翻转、缩放、裁剪、添加高斯噪声、MixUp等。

实战证明合理的数据增强能让模型准确率提升5%-15%是新手提升项目效果的“捷径”。

二模型训练高效调优的核心方法规避新手常见坑超参数调优超参数直接影响模型性能新手无需掌握复杂的调优方法重点掌握三种实用技巧网格搜索适合参数少、范围小穷举所有组合简单易操作、随机搜索参数多、范围大时效率更高、贝叶斯优化利用历史结果预测最优参数适合资源有限场景。

调优时建议固定其他参数只调整一个参数观察性能变化同时绘制学习曲线判断模型是否过拟合/欠拟合辅助调整超参数新手可借助TensorBoard自动生成学习曲线。

训练监控与评估用TensorBoard或Weights BiasesWB实时监控训练过程重点关注训练集/验证集的损失值、准确率、F1值等指标。

新手常见坑只关注训练集损失忽略验证集损失导致模型过拟合。

这里给出判断标准若训练集损失下降但验证集损失上升说明过拟合需及时采用正则化、早停等策略若两者损失都不下降可能是学习率过高、数据量不足或模型结构不合理。

评估时需选择合适的指标分类任务用准确率、召回率、F1值生成任务用BLEU、ROUGE、Perplexity困惑度小白可直接套用开源项目中的评估代码。

模型加速与优化应对大模型训练/推理的资源瓶颈新手无需掌握复杂的优化算法重点掌握这些实用技巧混合精度训练用FP16计算、FP32保存参数在不损失精度的前提下提升

倍训练速度PyTorch可直接通过一行代码开启、数据并行多GPU分摊数据计算新手可先用Colab的免费GPU练习、剪枝删除冗余参数、量化将FP32转为INT8减少显存占用。

新手可先从混合精度训练和数据并行入手快速提升训练效率避免因显存不足导致训练中断。

三问题排查新手必备的避坑指南遇到问题不慌训练故障排查遇到损失不下降按“数据→模型→超参数”的顺序排查新手可直接套用这个流程先检查数据是否标注错误、数据分布是否合理比如训练集和验证集分布差异过大再检查模型是否梯度消失/爆炸、激活函数选择是否合适新手优先用ReLU激活函数避免梯度消失最后检查超参数学习率是否过高/过低、批次大小是否合理新手建议批次大小设为8或16。

梯度消失可通过使用ReLU替代Sigmoid、残差连接解决梯度爆炸可采用梯度裁剪。

开源资源利用不要闭门造车GitHub上有大量优质开源项目如Hugging Face Transformers、LLaMA Factory新手可直接参考其数据处理、模型实现、训练脚本无需从零编写代码遇到问题可去Stack Overflow、CSDN、知乎搜索解决方案也可加入大模型学习社区如Hugging Face论坛、国内AI技术社群交流很多大佬会分享实操经验比自己埋头钻研高效得多。

分阶段备考计划

个月高效通关小白/程序员可直接套用结合新手学习规律制定分阶段备考计划可根据自身基础调整时长小白建议按8个月推进有编程/AI基础的程序员可压缩至6个月拒绝盲目学习确保每一步都有收获。

一基础阶段

个月夯实数学与ML基础打牢地基数学知识攻坚参考经典教材公开课组合学习小白无需精读完整教材重点学习核心知识点线性代数看《线性代数及其应用》Gilbert Strang MIT

1

06公开课中文字幕版概率论看《概率论与随机过程》Sheldon Ross精简版优化理论看《Convex Optimization》Boyd Stanford CS229数学基础部分信息论看《信息论基础》Cover核心章节。

每学一个知识点用NumPy/PyTorch实现简单实验如矩阵运算、梯度下降避免死记硬背重点理解应用场景。

ML/DL入门读《机器学习》周志华西瓜书掌握ML核心理论小白可配合西瓜书解读版学习避免看不懂读《深度学习》Goodfellow花书理解神经网络基础配合中文教材《神经网络与深度学习》邱锡鹏兼顾理论与实践。

用Scikit-learn实现线性回归、逻辑回归、决策树等模型用PyTorch实现MLP掌握数据加载、模型训练的基本流程每天保证

小时实操时间。

二进阶阶段

个月深耕大模型核心技术突破重点Transformer与大模型理论精读《Attention Is All You Need》论文小白看中文解读版程序员可尝试读原版配合《深度学习进阶自然语言处理》斋藤康毅理解Transformer实现细节学习预训练、微调、提示工程的核心原理关注李沐老师的《动手学深度学习》第二版大模型章节加深理论认知每天花30分钟梳理知识点形成笔记方便后续复盘。

框架实战强化聚焦PyTorch深入学习掌握自定义数据集、模型封装、迁移学习等高级功能用Hugging Face Transformers库实操完成文本分类、情感分析等简单NLP任务熟悉预训练模型如BERT、RoBERTa的调用与微调流程程序员可结合自身开发场景尝试用大模型实现简单的代码生成功能提升实操能力。

三实战阶段2个月项目驱动能力提升积累面试筹码实战项目演练选择

个经典项目实操推荐新手友好型方向难度由低到高①基于LoRA的大模型微调如微调LLaMA-2实现特定领域对话如技术问答、文案生成②RAG检索增强生成系统搭建如ChatPDF实现PDF文档问答实操性强、面试高频③文本生成任务如小说续写、代码生成适合程序员发挥优势。

可在Kaggle、天池参与大模型相关竞赛积累项目经验小白无需追求竞赛获奖重点掌握项目完整流程。

项目

总结复盘每个项目完成后梳理技术难点与解决方案如微调时如何解决过拟合、RAG中如何提升检索准确率形成技术博客发布在CSDN既能巩固知识也能为简历加分面试时可直接展示自己的博客和项目代码竞争力翻倍。

总结时重点突出自己的思考和解决问题的过程而非单纯罗列代码。

四冲刺阶段1个月面试与考试备战精准发力知识点复盘整理核心知识点思维导图数学基础、Transformer、预训练/微调、实战技巧查漏补缺重点复习实战中高频用到的技术点如LoRA原理、数据增强方法、超参数调优小白可将重点知识点整理成笔记每天花1小时背诵记忆程序员可重点复盘项目中的技术难点。

面试与模拟考试收集大模型算法工程师面试高频题参考下文“面试高频问题解析”提前准备答案重点练习表达能力确保能清晰、有条理地讲解技术知识点和项目经验进行模拟面试可找同学、社群伙伴互助锻炼表达能力若需参加考试针对性刷真题熟悉题型与考试节奏新手可重点刷基础题和实操题避免纠结难题。

大模型部署与运维从训练到落地的最后一公里提升竞争力优秀的大模型算法工程师需兼顾训练与落地部署与运维是必备技能也是面试时的加分项新手无需掌握复杂的部署方案重点掌握基础部署逻辑和实操方法即可。

一部署环境搭建硬件选型中小型模型如BERT、LLaMA-2 7B可选单GPU服务器NVIDIA A

V

3090超大规模模型千亿参数级需多GPU集群或专用AI芯片Google TPU、华为昇腾。

新手选型时重点关注显存容量大模型训练需至少24GB显存可先用Colab、AutoDL等云GPU练习无需直接购买硬件节省成本。

软件环境配置优先选择Linux系统Ubuntu

2

04/

2

04安装深度学习框架PyTorch/TensorFlow、CUDA/cuDNN加速库以及依赖包如Transformers、Accelerate。

推荐用Docker容器打包环境避免“本地能跑、部署崩了”的兼容性问题也可使用Anaconda管理虚拟环境隔离不同项目依赖新手可直接套用网上现成的环境配置脚本无需手动安装所有依赖。

二模型部署策略离线部署适用于实时性要求低、数据量大的场景如批量文本分析、日志处理将模型部署到本地服务器通过批处理方式处理数据生成分析报告。

新手可尝试将自己训练的简单模型如文本分类模型部署到本地熟悉部署流程。

在线部署满足实时响应需求如智能客服、实时翻译、API服务将模型部署到云端阿里云、腾讯云、AWS通过FastAPI、Flask封装为API接口供调用。

需配置负载均衡Nginx、缓存Redis提升服务稳定性用Kubernetes实现容器编排应对高并发场景。

程序员可结合自身开发经验尝试将模型封装为API接口小白可重点了解核心流程。

三运维与监控性能监控用PrometheusGrafana监控CPU、GPU、内存利用率以及模型响应时间、吞吐量等指标设置告警阈值如GPU利用率超过90%、响应时间超过1秒告警及时排查问题。

新手可先熟悉监控工具的基本使用无需深入配置复杂的告警规则。

模型迭代与故障恢复定期用新数据重新训练模型采用增量学习减少训练成本建立故障排查流程通过日志分析ELK栈定位问题如服务器宕机、网络中断、模型异常制定应急预案确保服务快速恢复。

新手重点掌握模型迭代的基本逻辑遇到故障时能快速定位并解决简单问题。

前沿技术跟踪保持竞争力的核心持续学习不落后大模型领域技术迭代快备考不是终点持续跟踪前沿动态才能保持竞争力新手可利用碎片化时间关注无需投入大量精力。

一学术研究动态顶会论文跟踪重点关注NeurIPS、ICML、ICLRAI顶会、ACL、EMNLPNLP顶会、CVPR、ICCVCV顶会通过arXivhttps://arxiv.org/、Papers With Codehttps://paperswithcode.com/获取最新论文重点关注模型架构创新、训练方法优化、高效推理技术。

新手可关注论文的中文解读无需精读原版论文。

研究机构成果跟踪DeepMind、OpenAI、Google Brain、百度研究院、华为诺亚方舟实验室、阿里达摩院等机构的动态其发布的开源模型如GPT-

LLaMA系列、文心大模型和技术报告往往引领行业方向。

新手可尝试使用这些开源模型熟悉其功能和特点提升实操能力。

二产业应用进展行业

案例分析学习大模型在金融风险预测、智能投顾、医疗病历分析、影像诊断、教育个性化辅导、题库生成、交通路径规划、自动驾驶等领域的应用

案例分析模型选型、技术难点与落地效果为自己的项目提供参考。

程序员可结合自身所处行业关注大模型在行业内的应用寻找转型机会。

开源工具与产品关注Hugging Face开源模型与工具库、LangChain大模型应用开发框架、vLLM大模型高效推理框架等工具的更新这些工具能大幅降低开发门槛同时关注科技公司的云服务如AWS Bedrock、阿里云通义千问服务了解产业级部署方案。

新手可尝试使用这些开源工具提升项目开发效率。

面试高频问题解析针对性备战面试不慌整理大模型算法工程师面试高频问题分理论知识类和实战经验类帮你精准备考小白可直接背诵答案框架程序员可结合自身项目经验补充细节提升面试通过率。

一理论知识类问题1Transformer与RNN的核心区别答①并行计算能力Transformer基于自注意力机制可并行处理序列数据训练效率高RNN是递归结构需按顺序处理序列难以并行训练速度慢。

②长距离依赖捕捉Transformer通过自注意力直接计算序列中所有位置的关联能有效捕捉长距离依赖如长文本理解RNN因梯度消失/爆炸处理长序列效果差。

③结构复杂度Transformer包含编码器与解码器结构更复杂需更多数据与计算资源RNN结构简单适合小规模任务。

问题2预训练模型微调的原理是什么有哪些常见的微调策略答原理预训练模型在大规模无标注数据上学习到通用知识如语言规律、图像特征微调通过特定任务的标注数据调整模型参数或部分参数使模型适配具体任务充分利用预训练知识减少任务数据量需求提升训练效率。

常见策略①全参数微调调整所有模型参数效果好但资源消耗大适合GPU资源充足场景②部分参数微调仅调整顶层分类器或新增适配器Adapter、LoRA资源消耗小适合小样本场景新手首选③冻结预训练层仅训练顶层分类器适用于数据量极少的情况。

二实战经验类问题1如何解决大模型训练中的过拟合问题答①数据层面增加训练数据量、采用数据增强技术如文本同义词替换、图像翻转、引入外部数据集②模型层面使用正则化L1/L2正则、Dropout、减少模型参数量、采用早停策略验证集性能下降时停止训练③训练层面降低学习率、增大批次大小、使用混合精度训练避免梯度震荡。

新手可重点回答数据层面和模型层面的方法实操性强问题2资源有限如只有单张3090 GPU时如何训练高性能大模型答①模型层面选择小参数版本模型如7B代替70B、采用模型压缩技术剪枝、量化、知识蒸馏②训练层面使用LoRA/Adapter等部分参数微调方法、采用梯度累积Gradient Accumulation模拟大批次训练、开启混合精度训练FP16减少显存占用③工具层面用Accelerate库优化显存分配、用vLLM提升推理效率④数据层面精简数据集保留高质量数据减少冗余计算。

小白可重点记忆LoRA微调、混合精度训练这两个简单易操作的方法最后大模型算法工程师备考是一个循序渐进的过程无需急于求成。

小白要注重基础循序渐进程序员要发挥自身优势重点突破实战与面试。

收藏本文跟着计划一步步推进相信你一定能顺利上岸在大模型领域实现自己的职业目标如果觉得本文对你有帮助欢迎点赞、收藏、转发关注我持续分享大模型备考与实操干货如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。

但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。

这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。

我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。

那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。

我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2025 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《AI大模型入门进阶学习资源包》下方扫码获取~① 全套AI大模型应用开发视频教程包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点② 大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。

正确的学习路线可以为你节省时间少走弯路方向不对努力白费。

这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通③ 大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。

④ AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。

⑤ 大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。

⑥ 大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。

在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。

以上资料如何领取为什么大家都在学大模型最近科技巨头英特尔宣布裁员2万人传统岗位不断缩减但AI相关技术岗疯狂扩招有

年经验大厂薪资就能给到50K*20薪不出1年“有AI项目经验”将成为投递简历的门槛。

风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。

本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。

以上全套大模型资料如何领取

无情扌畐喿辶终得之-无情扌畐喿辶终得之应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123