MAC 似乎游戏 Intel 大模型微调来自AI KIMI TAG

在Intel Mac上进行大模型微调,您可以遵循以下步骤:

  1. 安装Homebrew
  • Homebrew是macOS上的包管理器,用于简化软件包的安装和管理。在终端中输入以下命令安装Homebrew:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • 参考链接:Homebrew安装指南
  1. 安装Miniforge
  • Miniforge是为ARM架构设计的Conda发行版,适合在Intel Mac上使用。下载并运行Miniforge安装脚本:
    curl -LO https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-x86_64.sh bash Miniforge3-MacOSX-x86_64.sh
  • 按照提示完成安装。
  1. 创建并激活Conda环境
  • 创建一个新的Conda环境,例如名为tensorflow_2
    conda create --name tensorflow_2 python=3.9
  • 激活环境:
    conda activate tensorflow_2
  1. 安装TensorFlow
  • 在Conda环境中,使用pip安装TensorFlow:
    pip install tensorflow-macos
  • 这将安装适用于Intel Mac的TensorFlow版本。
  1. 验证TensorFlow安装
  • 打开Python解释器并运行以下代码以验证TensorFlow是否正确安装:
    import tensorflow as tf print("TensorFlow version:", tf.__version__) print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
  • 如果能够看到输出TensorFlow版本和GPU信息,说明TensorFlow已成功安装。
  1. 准备数据集
  • 准备您的数据集,例如JSON格式的数据集,其中包含问题和答案:
    json [ { "instruction": "你好", "input": "", "output": "皇上好,我是甄嬛,家父是大理寺少卿甄远道。" }, { "instruction": "你不愿意见我?", "input": "", "output": "不该相见自然不愿见,还望王爷尊重我的意愿。" } ]
  1. 选择模型并开始微调
  • 选择一个适合您任务的预训练模型,例如LLM-Research/Meta-Llama-3-8B-Instruct,并开始微调。您可以修改train.py文件中的model_id变量来选择不同的模型。
  • 开始微调,执行以下命令:
    python train.py
  1. 测试微调后的模型
  • 微调完成后,您可以使用ChatBot进行对话测试,执行以下命令:
    streamlit run chat.py
  • 这将启动一个Web界面,您可以在其中与微调后的模型进行交互。

以上步骤提供了在Intel Mac上进行大模型微调的详细指南,帮助您充分利用现有的硬件资源和软件工具。

TAG

来自KIMI

MAC下的大模型微调 数据格式 三种 chat completion text(CoT)

要义 MLX 针对mac的ARM处理器优化的大模型训练架构

看了那么多资料主要还是PIP安装 huggingface_hub mlx-lm transformers torch numpy

然后对应大模型文件微调

针对数据 Completion(问答类型,一问一答) chat(角色问答) text(单文本类型,训练特定文本) 三种类型 都是JSON格式

chat解析:

{
  "messages": [
    {
      "role": "user",
      "content": "How do I use this product?"
    },
    {
      "role": "assistantA",
      "content": "To use this product, first insert the batteries and then press the power button."
    },
    {
      "role": "assistantB",
      "content": "To operate this product, make sure it's charged, and then follow the instructions in the manual."
    }
  ]
}

message包裹下为信息,role为user的content为询问,assistantB和assistantA给出不同的content

completion解析

[{
  "prompt": "What is the capital of France?",
  "completion": "Paris."
},
{
  "prompt": "A?",
  "completion": "BBBB"
}]

TEXT格式

{"text": "table: 1-1000181-1\ncolumns: State/territory, Text/background colour, Format, Current slogan, Current series, Notes\nQ: Tell me what the notes are for South Australia \nA: SELECT Notes FROM 1-1000181-1 WHERE Current slogan = 'SOUTH AUSTRALIA'"}

部署

部署

四要素

人员:组建服务团队,培训教程库的建设和知识的转移方法

内部调岗(谈判),外部招聘 关注人员的能力 经验 知识

资源:
服务台的初始化,工具的部署上线,备件库的初始化,知识库的初始化 。

工具:工具清单, 测试环境 测试,试运行,参数的调整和优化,正式的部署上线

技术

技术手册的发布,SOP操作规范的制定,应急方案的制定,知识的转移

技术手册, 发布流程 审核 ,保存到配置库中 ,发布管理员 通过邮件的形式将技术手册的相关详细的描述信息,使用场景,下载地址等

过程

过程的制定与发布,过程的电子化与数据的初始化定义,体系试运营

过程的电子化与数据的初始化定义 将已经制定的工作流程过程通过IT系统的方式进行电子化,流程的初始化定义 重点关注以下事项

与其他工具互联互通    服务器来电后请求后自动生成事件

与其他过程做好接口   在某一时间大量同类事情制动生成问题

与过程KPI结合   IT服务系统可以自动生成服务的电子数据表格

过程与知识库关联     事件处理后自动生成一条相关的知识

2 IT服务部署的方法

部署一触而就的,需要经历以下三个阶段

服务部署实施计划阶段

生成一个计划,sla协议和服务部署设计方案    编写计划   服务部署的实施目标,里程碑,岗位职责 验收标准开会确认。

服务部署实施 执行阶段

启动会   明确工作任务和重点,搭建测试环境;工具 流程测试 工作,备件库 服务台 知识库 流程数据的初始化。做了管理工作;质量保证 风险识别 ; 为验收提供保障

服务部署实施验收阶段

服务部署实施的成功移交给运营团队进入运营

工具 知识库 流程 技术文档等。

成功交付后,总结大会,实施绩效 遇到的问题解决方案 遗留的问题 形成 IT服务部署实施报告

双方签字确认,部署工作的完成,正式进入运营

使用浏览器下载合并PDF

<script src='https://unpkg.com/pdf-lib/dist/pdf-lib.js'></script>
<script src='https://unpkg.com/pdf-lib/dist/pdf-lib.min.js'></script>

    <script>
        async function mergeAllPDFs(urls) {
            const pdfDoc = await PDFLib.PDFDocument.create();
            const numDocs = urls.length;

            for (var i = 0; i < numDocs; i++) {
                const donorPdfBytes = await fetch(urls[i]).then(res => res.arrayBuffer());
                const donorPdfDoc = await PDFLib.PDFDocument.load(donorPdfBytes);
                const docLength = donorPdfDoc.getPageCount();
                for (var k = 0; k < docLength; k++) {
                    const [donorPage] = await pdfDoc.copyPages(donorPdfDoc, [k]);
                    pdfDoc.addPage(donorPage);
                }
            }

            const pdfBytes = await pdfDoc.save();
            const blob = new Blob([pdfBytes], { type: 'application/pdf' });
            const url = URL.createObjectURL(blob);

            // 创建一个下载链接
            const downloadLink = document.createElement('a');
            downloadLink.href = url;
            downloadLink.download = 'merged.pdf'; // 指定下载文件名
            document.body.appendChild(downloadLink); // 将链接添加到页面中
            downloadLink.click(); // 模拟点击以下载文件
            document.body.removeChild(downloadLink); // 下载后移除链接
            URL.revokeObjectURL(url); // 释放创建的URL对象
        }

    </script>

调用:

mergeAllPDFs([“/file/save/2024-10-31-fdad0790-bef7-4d0c-bc0f-988c056fe489.pdf”,”/file/save/2024-10-31-22c2e761-a2e2-4459-b5a6-a67f78c1ce25.pdf”])

mergeAllPDFs([“bc089.pdf”,”5.pdf”])两个文件合并下载