大模型.safetensors文件

文章目录

.safetensors(安全张量)是大模型中的权重配置文件,本身是二进制,不可直接修改。

如果想看内容的话,txt打开可以看到头部内容便于理解。

如果直接修改了里面的内容,启动大模型会报错,因为二进制文件会损坏。

如果把模型比作一个人:

  • config.json 是这个人的骨架结构(身高、臂长、关节数)。
  • tokenizer 是这个人的语言能力(懂中文还是英文)。
  • .safetensors 就是这个人的"大脑"和"记忆"(所有的知识、经验、性格)。

生成示例文件

不太好找,直接用代码生成比较方便。
1、安装依赖:

bash 复制代码
pip install torch safetensors

2、用代码生成文件

python 复制代码
import torch
import os
from safetensors.torch import save_file


# 1. 创建一些模拟的模型权重数据
# 假设这是一个小型的神经网络,包含嵌入层和两个线性层
tensors = {
    # 嵌入层权重 (词汇表大小 1000, 隐藏层维度 128)
    "model.embed_tokens.weight": torch.randn(1000, 128, dtype=torch.float32),

    # 第一层线性变换 (输入 128, 输出 256)
    "model.layers.0.self_attn.q_proj.weight": torch.randn(256, 128, dtype=torch.float16),
    "model.layers.0.self_attn.q_proj.bias": torch.zeros(256, dtype=torch.float16),

    # 第二层线性变换 (输入 256, 输出 10)
    "model.lm_head.weight": torch.randn(10, 256, dtype=torch.float32),
}

# 2. 定义元数据 (可选,但推荐)
metadata = {
    "format": "pt",
    "created_by": "user_demo",
    "description": "这是一个用于演示的示例 safetensors 文件"
}

# 3. 保存文件
output_filename = "original_model.safetensors"
save_file(tensors, output_filename, metadata=metadata)

print(f"✅ 成功生成文件: {output_filename}")
print(f"📂 文件大小: {os.path.getsize(output_filename) / 1024:.2f} KB")

打印文件内容

代码:

python 复制代码
# 4. 验证:读取刚刚生成的文件
from safetensors import safe_open
output_filename="original_model.safetensors"
print("\n🔍 文件内容验证:")
with safe_open(output_filename, framework="pt", device="cpu") as f:
    for key in f.keys():
        tensor = f.get_tensor(key)
        print(f" - {key}: 形状 {tensor.shape}, 类型 {tensor.dtype}")

修改并保存示例

代码:

python 复制代码
from safetensors import safe_open
from safetensors.torch import save_file
import torch

# 1. 读取
tensors = {}
with safe_open("original_model.safetensors", framework="pt", device="cpu") as f:
    for key in f.keys():
        tensors[key] = f.get_tensor(key)

# 2. 修改 (例如:把第一层的权重全部乘以 2)
first_layer_key = list(tensors.keys())[0]
tensors[first_layer_key] = tensors[first_layer_key] * 2

# 3. 保存为新文件 (原文件不变,生成新文件)
save_file(tensors, "modified_model.safetensors")
print("修改完成!生成了新文件。")

调用之前的查看代码查看内容,记得替换文件名为modified_model.safetensors。

相关推荐
Rocky Ding*2 分钟前
深入浅出Xiaomi-Lens-0技术解析:像素监督如何改变视觉推理
论文阅读·人工智能·深度学习·机器学习·aigc·多模态·ai-native
万岳软件开发小城7 分钟前
AI数字人系统源码如何实现批量视频生成?任务队列与自动化生产流程解析
人工智能·自动化·语音识别·ai数字人小程序·ai数字人系统源码·ai数字人软件开发·ai数字人平台开发
默|笙16 分钟前
【AI应用】认识机器学习与深度学习
人工智能·深度学习·机器学习
TangGeeA16 分钟前
数据库、SQL 与 DB AI
数据库·人工智能·sql
火山引擎开发者社区18 分钟前
案例实践 | 让检索为 Agent 而生:ContextSearch 重构企业售前知识库
人工智能
青蓝智慧马老师19 分钟前
大模型应用落地,到底靠什么?RAG、智能体和上下文工程一次讲清
人工智能
JAVA_AI人工智能项目实战31 分钟前
深度学习实验笔记
人工智能·深度学习·语言模型·自然语言处理
forest_0933 分钟前
当 AI 搜索开始「自我进化」,谁来进化它的核实?——「已核实」结论复核器:3 条结论挖出 2 个洞(附可运行代码)
人工智能·python·机器学习·prompt·agi
金海星科技33 分钟前
船舶交通管理中心的人工智能值守:从“听、说、读、写“看人机协同
人工智能·macos·xcode
释厄62334 分钟前
AI 军备竞赛悖论——为 AI 卖游戏但 AI 需要游戏母场景
人工智能·游戏·kotlin