大语言模型(一)OLMo

OLMo是AI2发布的开源大语言模型框架,包括训练数据、代码及评估工具。模型基于Transformer Decoder-only架构,引入了SwiGLU激活函数和RoPE旋转位置嵌入,以提高稳定性和性能。此外,还对词汇表进行了优化,以处理个人身份信息。模型架构上,SwiGLU解决了ReLU可能导致的神经元失效问题,RoPE则实现了相对位置编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

OLMo 是由AI2 发布的大语言模型以及构建框架,与大多数之前的尝试只发布模型权重和推理代码不同,OLMo 开源了整个框架,包括训练数据、训练代码以及模型评估代码。

OLMo框架包括构建和研究语言模型所需的工具和资源。对于训练和建模,它包括完整的模型权重、训练代码、训练日志、消融实验、以Weights & Biases日志形式的训练指标,以及推理代码。这次发布包括我们的语言模型在7B规模上的四个变体,对应不同的架构、优化器和训练硬件,以及一个1B规模的模型,所有模型都至少训练了2T token。OLMo 作者还在HuggingFace上作为修订版发布了数百个中间检查点。对于数据集构建和分析,它包括用于这些模型的完整训练数据,包括生成训练数据的代码,来自AI2的Dolma 和用于分析预训练数据的WIMBD。对于评估,它包括AI2的Catwalk 用于下游评估和Paloma 用于基于困惑度的评估。

OLMo 也是基于Transformer Decoder-only 架构,并做了如下主要改变:

  1. 无偏置项,以提高训练稳定性。
  2. 非参数化层归一化,对比参数化层归一化和RMSNorm,OLMo 作者认为这是最安全的选择,也是最快的选择。
  3. SwiGLU激活函数,与LLaMA、PaLM和其他模型一样,使用SwiGLU 代替ReLU。
  4. 旋转
### OLMo OCR 部署指南 OLMo种基于大语言模型 (LLM) 的光学字符识别技术,其部署涉及多个阶段,包括环境准备、模型加载、数据处理以及服务化运行。以下是关于 OLMo OCR 部署的具体说明: #### 环境配置 为了成功部署 OLMo OCR,需先搭建适合的开发与生产环境。推荐使用 Python 和 Docker 来管理依赖项和隔离环境[^1]。 ```bash # 安装必要的软件包 pip install torch torchvision transformers opencv-python-headless Pillow ``` 如果计划在 GPU 上加速推理过程,则需要安装 CUDA 工具链并验证驱动版本兼容性[^2]。 #### 模型加载 OLMo OCR 基于预训练权重文件初始化神经网络结构。下载官方发布的 checkpoint 并通过脚本载入内存中完成实例化操作。 ```python from transformers import AutoTokenizer, AutoModelForTokenClassification tokenizer = AutoTokenizer.from_pretrained("path/to/model") model = AutoModelForTokenClassification.from_pretrained("path/to/model") ``` 上述代码片段展示了如何利用 Hugging Face Transformers 库加载自定义路径下的 tokenizer 和 model 对象。 #### 数据前处理 输入图像通常经过系列变换才能适配到算法框架下执行预测任务。这些步骤可能包含但不限于灰度转换、尺寸调整、二值化处理等标准流程。 ```python import cv2 from PIL import Image def preprocess_image(image_path): img = cv2.imread(image_path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) resized = cv2.resize(gray, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR) _, binary = cv2.threshold(resized, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) pil_img = Image.fromarray(binary).convert('RGB') return pil_img ``` 此函数实现了基本的图片预处理逻辑以便后续传递给 OCR 引擎分析。 #### 推理与后处理 当准备好待检测样本之后即可调用先前建立好的 pipeline 进行推断工作流运转;与此同时还需要设计额外机制来优化最终输出质量比如去除冗余字符或者纠正拼写错误等问题点。 ```python from transformers.pipelines import Pipeline class CustomOCRPipeline(Pipeline): def _sanitize_parameters(self, **kwargs): ... def postprocess(self, model_outputs): predictions = super().postprocess(model_outputs) cleaned_results = [] for pred in predictions: text = self._clean_text(pred['word']) confidence = round(float(pred['score']), 4) bbox = tuple(map(int, pred['box'])) record = {"text": text, "confidence": confidence, "bbox": bbox} cleaned_results.append(record) return cleaned_results @staticmethod def _clean_text(raw_string): normalized = unicodedata.normalize('NFKD', raw_string.strip()).encode('ascii', 'ignore').decode() filtered = re.sub(r'[^\w\s]', '', normalized.lower()) corrected = spellchecker.correction(filtered) return corrected or filtered ``` 这里定义了个继承自 `Pipeline` 类的新类用于实现特定需求导向的功能扩展。 #### API 封装和服务启动 最后步就是把整个流水线打包成 RESTful Web Service 形式对外提供接口访问权限控制等功能支持。 ```python from fastapi import FastAPI, File, UploadFile from pydantic import BaseModel from typing import List app = FastAPI() @app.post("/ocr", response_model=List[BaseModel]) async def ocr(file: UploadFile = File(...)): image = preprocess_image(await file.read()) results = custom_pipeline(image) return results ``` 以上即为完整的 OLMo OCR Deployment Guide 描述文档内容概览。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅唱书令

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值