目录:
知识点
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 或命令行工具,方便开发者和非技术人员使用
数据集(.GUFF)
GUFF 是 Meta 为 LLaMA 系列模型开发过程中使用的一种训练数据集名称
大模型微调的概念
大模型微调(Fine-Tuning)是基于预训练的大型语言模型(如 LLaMA、GPT)进行特定任务或领域优化的一种技术。其核心概念如下:
目的
过程
加载预训练模型:
使用一个已经通过海量通用数据预训练的语言模型。
准备目标数据:
准备高质量的领域数据,数据集通常包含输入和期望的输出(如问答对、代码示例)。
调整参数:
通过监督学习或强化学习的方法,调整模型参数,使其能够适应新任务。
验证和评估:
在验证集或实际场景中测试微调后的模型,评估其效果并进一步调整
然后安装好后退出ollama 系统环境变量新建OLLAMA_ORIGINS 值设为 *
此时就可以在全局启动
然后我们执行命令
ollama run llama3
他会自动下载llama3数据集
然后再运行就可以正常启动了
接下来我测试添加更大的数据集
from写自己的数据集路径
FROM /LLM/Ollama/llama3-zh.F16.gguf
TEMPLATE """
{{ 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 24
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>
PARAMETER stop assistant
PARAMETER stop Assistant
然后保存为Modelfile
运行ollama create test -f Modelfile
运行ollama list
发现就可以选择数据集启动了
2.中文微调
1.windows
首先我们要给ollama在环境变量上加入这几个:
OLLAMA_HOST 端口。
OLLAMA_MODELS 模型保存位置。
OLLAMA_ORIGINS 绑定ip。
访问https://github.com/hiyouga/LLaMA-Factory下载源码然后解压在解压的目录下执行
pip install -e ".[torch,metrics]"来安装
安装完成后执行llamafactory-cli webui来启动webui
命令行显示这个之后就会弹出浏览器,显示如下画面
即可进行微调。
2.linux
同第一步在linux 上安装好后开始配置(在autoDL云上部署)
访问https://github.com/hiyouga/LLaMA-Factory下载源码然后解压在解压的目录下执行
pip install -e ".[torch,metrics]"来安装
然后使用screen 让ollama serve跑在后台
然后使用screen 让llamafactory-cli webui跑在后台 启动ui
然后在本地打开vscode
点击
启用
安装插件
点开这个
新建远程连接
输入
输入密码
点击端口,转发端口
输入启动webui的返回端口
点击在浏览器打开
成功启动
3.中间层
因为在我的后期构想里我想让ai帮我实现一部分功能,所以我需要让他和我电脑融为一体,于是我打算构建一个中间层的demo来辅助我思考
在AI和我的电脑之间是不能直接交互的,于是来使用中间层来把我或者ai的指令解析成电脑指令
我们在ollama的下载后会发现两个文件夹 一个是.ollama 一个是ollama
.ollama在C:Usersyou_user.ollama目录
我发现有一个history文件是记录你的每一次对话命令的
于是我思考 让脚本去检测history的bit变化 如果变化证明有新的命令 然后读取最后一行 如果有指令:"打开命令行" 脚本匹配就打开我们电脑的命令行
import subprocess
import time
import os
history_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(上)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论