我如何构建部署本地的AI(上)

admin 2024年11月24日11:54:43评论6 views字数 3317阅读11分3秒阅读模式

目录:

知识点

1.部署本地基础模型

2.中文微调

3.中间层构思

总字数:2039 (对不起大家我的排版原因全乱套了,我给原文获取方式)

pdf原文获取私信公众号: AI上pdf

首先我们了解一些知识点

LLaMA (Large Language Model Meta AI)

开发者: Meta(Facebook 母公司)。

性质: 它是一个大型语言模型(如 LLaMA 1 和 LLaMA 2)。

目标: 提供一个强大的开源语言模型框架,供研究人员和开发者构建自然语言处理应用。

特点:

    • LLaMA 模型是开源或部分开源的。

    • 设计更轻量化,专注于高效的性能和更小的计算资源需求。

    • 提供不同大小的模型(如 7B、13B、70B 参数),以适应不同的任务和硬件配置。

    • 模型文件和权重通常需要申请许可使用。

    使用场景:

    • 构建聊天机器人。

    • 文本生成、翻译、总结。

    • 集成到应用程序中或用于学术研究。

ollama

开发者: 一家公司(非 Meta),通常是专注于开发语言模型的实际应用工具。

性质: 一种平台或框架,用于管理和运行像 LLaMA 这样的语言模型。

目标: 提供简单的方式来本地运行和使用语言模型。

特点:

    Ollama 更像是一个工具或服务,用于运行语言模型,而不是模型本身。

    它可能内置了支持运行 LLaMA 模型的功能(或类似的语言模型)。

    注重用户友好的界面和易于集成的环境。

    可能包含模型管理功能,比如轻松切换、更新和优化使用的模型。

    使用场景:

    快速部署语言模型。

    本地运行 AI 模型,避免依赖云服务。

    提供一个简化的 API 或命令行工具,方便开发者和非技术人员使用

    我如何构建部署本地的AI(上)

    数据集(.GUFF)

    GUFF 是 Meta 为 LLaMA 系列模型开发过程中使用的一种训练数据集名称

    大模型微调的概念

    大模型微调(Fine-Tuning)是基于预训练的大型语言模型(如 LLaMA、GPT)进行特定任务或领域优化的一种技术。其核心概念如下:

    目的

      • 将通用大模型的能力应用于特定任务,如情感分析、代码生成或医学问答。

      • 优化模型在目标任务上的性能,同时避免从头训练模型,节约计算资源。

      过程

      加载预训练模型:

      使用一个已经通过海量通用数据预训练的语言模型。

      准备目标数据:

      准备高质量的领域数据,数据集通常包含输入和期望的输出(如问答对、代码示例)。

      调整参数:

      通过监督学习或强化学习的方法,调整模型参数,使其能够适应新任务。

      验证和评估:

      在验证集或实际场景中测试微调后的模型,评估其效果并进一步调整

    1.部署本地基础模型
    在ollama官网:https://ollama.com/下载ollama

    然后安装好后退出ollama 系统环境变量新建OLLAMA_ORIGINS 值设为 *

    此时就可以在全局启动

    我如何构建部署本地的AI(上)

    然后我们执行命令

    ollama run llama3

    他会自动下载llama3数据集

    然后再运行就可以正常启动了

    我如何构建部署本地的AI(上)

    接下来我测试添加更大的数据集

    from写自己的数据集路径

    FROM /LLM/Ollama/llama3-zh.F16.ggufTEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>{{ .Response }}<|eot_id|>"""SYSTEM ""PARAMETER num_keep 24PARAMETER stop <|start_header_id|>PARAMETER stop <|end_header_id|>PARAMETER stop <|eot_id|>PARAMETER stop assistantPARAMETER stop Assistant

    然后保存为Modelfile

    运行ollama create test -f Modelfile

    运行ollama list

    我如何构建部署本地的AI(上)

    发现就可以选择数据集启动了

    我如何构建部署本地的AI(上)

    2.中文微调

    1.windows

    首先我们要给ollama在环境变量上加入这几个:

    OLLAMA_HOST 端口。

    OLLAMA_MODELS 模型保存位置。

    OLLAMA_ORIGINS 绑定ip。

    我如何构建部署本地的AI(上)

    访问https://github.com/hiyouga/LLaMA-Factory下载源码然后解压在解压的目录下执行

    pip install -e ".[torch,metrics]"来安装

    我如何构建部署本地的AI(上)

    安装完成后执行llamafactory-cli webui来启动webui

    我如何构建部署本地的AI(上)

    命令行显示这个之后就会弹出浏览器,显示如下画面

    我如何构建部署本地的AI(上)

    即可进行微调。

    2.linux

    同第一步在linux 上安装好后开始配置(在autoDL云上部署)

    访问https://github.com/hiyouga/LLaMA-Factory下载源码然后解压在解压的目录下执行

    pip install -e ".[torch,metrics]"来安装

    我如何构建部署本地的AI(上)

    然后使用screen 让ollama serve跑在后台

    我如何构建部署本地的AI(上)

    然后使用screen 让llamafactory-cli webui跑在后台 启动ui

    我如何构建部署本地的AI(上)

    然后在本地打开vscode

    点击

    我如何构建部署本地的AI(上)

    启用

    安装插件

    我如何构建部署本地的AI(上)

    点开这个

    我如何构建部署本地的AI(上)

    新建远程连接

    我如何构建部署本地的AI(上)

    输入

    我如何构建部署本地的AI(上)

    输入密码

    我如何构建部署本地的AI(上)

    点击端口,转发端口

    我如何构建部署本地的AI(上)

    输入启动webui的返回端口

    我如何构建部署本地的AI(上)

    我如何构建部署本地的AI(上)

    点击在浏览器打开

    我如何构建部署本地的AI(上)

    成功启动

    我如何构建部署本地的AI(上)

    3.中间层

    因为在我的后期构想里我想让ai帮我实现一部分功能,所以我需要让他和我电脑融为一体,于是我打算构建一个中间层的demo来辅助我思考

    在AI和我的电脑之间是不能直接交互的,于是来使用中间层来把我或者ai的指令解析成电脑指令

    我们在ollama的下载后会发现两个文件夹 一个是.ollama 一个是ollama

    我如何构建部署本地的AI(上)

    .ollama在C:Usersyou_user.ollama目录

    我发现有一个history文件是记录你的每一次对话命令的

    我如何构建部署本地的AI(上)

    于是我思考 让脚本去检测history的bit变化 如果变化证明有新的命令 然后读取最后一行 如果有指令:"打开命令行" 脚本匹配就打开我们电脑的命令行

    import subprocessimport timeimport oshistory_file_path = r"C:Usersyou_user.ollamahistory"def open_new_cmd():    # 使用 start 命令打开新的命令行窗口    subprocess.Popen("start cmd.exe", shell=True)    print("已打开命令行窗口")def size():    # 获取当前文件的大小    return os.path.getsize(history_file_path)def monitor_file():    last_size = size()  # 初始时文件大小    while True:        time.sleep(1)  # 每秒检查一次文件大小        current_size = size()        if current_size != last_size:  # 文件大小发生变化            print(f"文件大小变化 detected, 新文件大小: {current_size}字节")            last_size = current_size  # 更新文件大小            # 读取文件内容            with open(history_file_path, 'r', encoding='utf-8') as file:                lines = file.readlines()                print("当前文件内容:")                for line in lines:                    print(line.strip())  # 输出文件内容                # 读取最后一行并检查是否包含“打开命令行”                last_line = lines[-1].strip() if lines else ""                print(f"最后一行内容: {last_line}")                if last_line == "打开命令行":                    print("检测到指令:打开命令行")                    open_new_cmd()def main():    monitor_file()if __name__ == "__main__":    main()

    于是如下效果就实现了

    我如何构建部署本地的AI(上)

    说出打开命令行

    我如何构建部署本地的AI(上)

    发现成功交互

    下一篇文章我将完善中间层和微调步骤及其等等

原文始发于微信公众号(秋风的安全之路):我如何构建部署本地的AI(上)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月24日11:54:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   我如何构建部署本地的AI(上)https://cn-sec.com/archives/3429804.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息