ollama加载多个相同模型(二)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

ollama加载多个相同模型(二)


前言

上一篇手动复制太慢,写了一个脚本用来快速复制ollama模型


代码

代码如下(示例):

import os
import json
import shutil
import random
import string
import hashlib


def generate_random_string(length=10):
    """生成一个指定长度的随机字符串"""
    letters = string.ascii_letters + string.digits  # 包括字母和数字
    return ''.join(random.choice(letters) for i in range(length))

def calculate_sha256(input_string):
    """计算给定字符串的SHA-256哈希值"""
    sha256_hash = hashlib.sha256(input_string.encode()).hexdigest()
    return sha256_hash

def copy_file(copyed_file_path, copy_file_path):
    """
    copyed_file_path: 被拷贝文件路径
    copy_file_path: 拷贝文件路径
    """
    if not os.path.exists(copyed_file_path):
        print(f"被拷贝文件路径:{copyed_file_path} 不存在")
    else:
        # 创建目录(如果不存在)
        os.makedirs(os.path.dirname(copy_file_path), exist_ok=True)
        
        shutil.copy2(copyed_file_path, copy_file_path)
        print(f"文件:{copyed_file_path} 拷贝到文件:{copy_file_path} 成功")
    

# 模型存储的位置路径 
model_save = "/usr/share/ollama/.ollama/models" # TODO 根据自己的系统替换

# 被选择的模型名
selected_model_name = "llama3.1:latest" # TODO

# 复制后的模型名
copy_model_name = "l2:latest" # TODO

# 被选择的模型信息文件路径
selected_model_info_file_path = os.path.join(model_save, "manifests/registry.ollama.ai/library", "/".join(selected_model_name.split(":")))
# 获得被选择模型的信息,里面有保存模型的数据文件名
selected_model_info = json.load(open(selected_model_info_file_path))

# 1.复制模型文件
selected_model_info_config = selected_model_info["config"]
selected_model_info_layers = selected_model_info["layers"]

raw_digest = selected_model_info_config["digest"] # 原始名获取
generate_digest = calculate_sha256(generate_random_string(10)) # 拷贝的文件名生成
copy_file(os.path.join(model_save, "blobs", raw_digest.replace(":", "-")), os.path.join(model_save, "blobs", f"sha256-{generate_digest}")) # 开始拷贝
selected_model_info["config"]["digest"] = f"sha256:{generate_digest}" # 替换生成的文件名
for index, selected_model_info_layer in enumerate(selected_model_info_layers):
    raw_digest = selected_model_info_layer["digest"] # 原始名获取
    generate_digest = calculate_sha256(generate_random_string(10)) # 拷贝的文件名生成
    copy_file(os.path.join(model_save, "blobs", raw_digest.replace(":", "-")), os.path.join(model_save, "blobs", f"sha256-{generate_digest}")) # 开始拷贝
    selected_model_info["layers"][index]["digest"] = f"sha256:{generate_digest}" # 替换生成的文件名

# 2.将复制的模型信息写入信息文件
# 创建目录(如果不存在)
os.makedirs(os.path.join(model_save, "manifests/registry.ollama.ai/library", copy_model_name.split(":")[0]), exist_ok=True)
# 写入文件
json.dump(selected_model_info, open(os.path.join(model_save, "manifests/registry.ollama.ai/library", "/".join(copy_model_name.split(":"))), "w"), ensure_ascii=False)

TODO就是需要修改的参数

注意

还是那个问题,如果ollama list没找到,那就看看权限是否正确

### 训练 Ollama加载的 DeepSeek 本地模型 对于已经在 Ollama 平台上加载的 DeepSeek 本地模型,训练过程涉及多个方面,包括环境准备、数据集整理以及具体的训练指令执行。 #### 环境配置 为了确保能够顺利地对 DeepSeek 模型进行微调或继续训练,在开始之前需确认已安装并正确设置了必要的依赖项和工具链。通常情况下,Ollama 提供了一个较为完整的开发环境支持,但仍建议检查官方文档获取最新的环境搭建指南[^1]。 #### 数据预处理 有效的训练离不开高质量的数据输入。针对特定应用场景收集足够的标注样本,并按照目标框架的要求对其进行清洗、转换等操作是非常重要的一步。这可能涉及到文本清理、分词、向量化等一系列NLP任务前置工作。具体到DeepSeek模型,应当遵循其设计之初所采用的数据格式标准来进行准备。 #### 启动训练流程 当一切就绪之后,可以通过命令行界面启动实际的训练进程: ```bash ollama train deepseek-v3 \ --data_path /path/to/your/dataset \ --output_dir ./results \ --num_train_epochs 3 \ --per_device_train_batch_size 8 \ --save_steps 500 \ --logging_steps 100 ``` 上述命令展示了如何指定参数来控制训练行为,比如设置迭代次数(`--num_train_epochs`)、批次大小(`--per_device_train_batch_size`)以及其他监控选项。请注意替换`/path/to/your/dataset`为真实路径位置。 #### 验证与评估 完成一轮或多轮次的训练后,应该利用测试集合验证改进效果,并通过各种指标衡量性能变化情况。此阶段有助于判断是否达到了预期目的或是还需要进一步调整优化策略。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值