llm学习-1(包含如何使用github的codespace):

news2024/11/23 17:06:39

本文学习参考:datawhalechina/llm-universe: 本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/


一些可使用的大模型地址:

Claude 使用地址

PaLM 官方地址

Gemini 使用地址

文心一言使用地址

星火大模型使用地址


开源大模型:

1:Llama

LLaMA 开源地址:

LLaMA 系列模型是 Meta 开源的一组参数规模 从 7B 到 70B 的基础语言模型。LLaMA 于2023 年 2 月发布,2023 年 7 月发布了 LLaMA2 模型,并于 2024 年 4 月 18 日发布了 LLaMA3 模型。

2:Qwen

通义千问开源地址:

通义千问由阿里巴巴基于“通义”大模型研发,于 2023 年 4 月正式发布。2023 年 9 月,阿里云开源了 Qwen(通义千问)系列工作。2024 年 2 月 5 日,开源了 Qwen1.5(Qwen2 的测试版)。并于 2024 年 6 月 6 日正式开源了 Qwen2。 Qwen2 是一个 decoder-Only 的模型,采用 SwiGLU 激活RoPEGQA的架构。中文能力相对来说非常不错的开源模型。

目前,已经开源了 5 种模型大小:0.5B、1.5B、7B、72B 的 Dense 模型和 57B (A14B)的 MoE 模型;所有模型均支持长度为 32768 token 的上下文。并将 Qwen2-7B-Instruct 和 Qwen2-72B-Instruct 的上下文长度扩展至 128K token

3:ChatGLM

ChatGLM 开源地址:

GLM 系列模型清华大学和智谱 AI 等合作研发的语言大模型。2023 年 3 月 发布了 ChatGLM。6 月发布了 ChatGLM 2。10 月推出了 ChatGLM3。2024 年 1 月 16 日 发布了 GLM4,并于 2024 年 6 月 6 日正式开源。

GLM-4-9B-Chat 支持多轮对话的同时,还具备网页浏览、代码执行、自定义工具调用(Function Call)和长文本推理(支持最大 128K 上下文)等功能。

开源了对话模型 GLM-4-9B-Chat基础模型 GLM-4-9B长文本对话模型 GLM-4-9B-Chat-1M(支持 1M 上下文长度)、多模态模型GLM-4V-9B 等全面对标 OpenAI

4:Baichuan

百川开源地址:

Baichuan 是由百川智能开发的开源可商用的语言大模型。其基于Transformer 解码器架构(decoder-only)

2023 年 6 月 15 日发布了 Baichuan-7B 和 Baichuan-13B。百川同时开源了预训练对齐模型,预训练模型是面向开发者的“基座”,而对齐模型则面向广大需要对话功能的普通用户

Baichuan2 于 2023年 9 月 6 日推出。发布了 7B、13B 的 Base 和 Chat 版本,并提供了 Chat 版本的 4bits 量化

2024 年 1 月 29 日 发布了 Baichuan 3。但是目前还没有开源


RAG:检索增强生成(Retrieval-Augmented Generation

RAG 是一个完整的系统,其工作流程可以简单地分为数据处理、检索、增强和生成四个阶段:

1:微调和RAG的对比:

提到rag肯定会提到langchian:

2:LangChain 主要由以下 6 个核心组件组成:

  • 模型输入/输出(Model I/O):与语言模型交互的接口
  • 数据连接(Data connection):与特定应用程序的数据进行交互的接口
  • 链(Chains):将组件组合实现端到端应用。比如后续我们会将搭建检索问答链来完成检索问答。
  • 记忆(Memory):用于链的多次运行之间持久化应用程序状态;
  • 代理(Agents):扩展模型的推理能力。用于复杂的应用的调用序列;
  • 回调(Callbacks):扩展模型的推理能力。用于复杂的应用的调用序列;

langchain的结构:Langchain-rag小demo-CSDN博客

3:langchain的生态:


大模型开发:


实践:

1:首先建立一个虚拟环境然后拷贝项目

  1. 新建虚拟环境 conda create -n llm-universe python=3.10
  2. 激活虚拟环境 conda activate llm-universe
  3. 在希望存储项目的路径下克隆当前仓库 git clone git@github.com:datawhalechina/llm-universe.git(下载的时候可能出现需要匹配秘钥:解决git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Pleas-CSDN博客,如果还是不行就用这个:git clone https://github.com/datawhalechina/llm-universe.git)

2:配置环境

在llm-universe下进行环境配置

pip install -r requirements.txt

如果下载得很慢的话:
 这里列出了常用的国内镜像源,镜像源不太稳定时,大家可以按需切换: 清华:Simple Index 阿里云:Simple Index 中国科技大学:Simple Index 华中科技大学:http://pypi.hustunique.com/simple/ 上海交通大学:https://mirror.sjtu.edu.cn/pypi/web/simple/ 豆瓣:http://pypi.douban.com/simple


Prompt:

具体来说,在使用 ChatGPT API 时,你可以设置两种 Prompt:一种是 System Prompt,该种 Prompt 内容会在整个会话过程中持久地影响模型的回复,且相比于普通 Prompt 具有更高的重要性;另一种是 User Prompt,这更偏向于我们平时提到的 Prompt,即需要模型做出回复的输入

我们一般设置 System Prompt 来对模型进行一些初始化设定,例如,我们可以在 System Prompt 中给模型设定我们希望它具备的人设如一个个人知识库助手等。System Prompt 一般在一个会话中仅有一个。在通过 System Prompt 设定好模型的人设或是初始设置后,我们可以通过 User Prompt 给出模型需要遵循的指令。例如,当我们需要一个幽默风趣的个人知识库助手,并向这个助手提问我今天有什么事时,可以构造如下的 Prompt:

{
    "system prompt": "你是一个幽默风趣的个人知识库助手,可以根据给定的知识库内容回答用户的提问,注意,你的回答风格应是幽默风趣的",
    "user prompt": "我今天有什么事务?"
}

通过如上 Prompt 的构造,我们可以让模型以幽默风趣的风格回答用户提出的问题。


使用 LLM API:

llm-universe/docs/C2/2. 使用 LLM API.md at main · datawhalechina/llm-universe (github.com)

例子:

文心一言----千帆 SDK

通过文心千帆平台调用文心一言 API,要去百度智能云获取AK和SK


1:创建.env文件

2:将密钥加载到环境变量中

import os  
from dotenv import load_dotenv, find_dotenv  
  
# 寻找并定位 .env 文件的路径  
dotenv_path = find_dotenv()  
if dotenv_path:  
    print(f"Found .env file at {dotenv_path}")  
else:  
    print("No .env file found")  
  
# 读取该 .env 文件,并将其中的环境变量加载到当前的运行环境中  
load_dotenv(dotenv_path)  
  
# 检查环境变量是否已经被加载  
qianfan_ak = os.getenv('QIANFAN_AK')  
qianfan_sk = os.getenv('QIANFAN_SK')  
  
if qianfan_ak and qianfan_sk:  
    print(f"QIANFAN_AK: {qianfan_ak}")  
    print(f"QIANFAN_SK: {qianfan_sk}")  
    print("Environment variables loaded successfully.")  
else:  
    print("Environment variables not found in the environment.")

3:使用sdk封装一下,然后进行使用

import qianfan

def gen_wenxin_messages(prompt):
    '''
    构造文心模型请求参数 messages

    请求参数:
        prompt: 对应的用户提示词
    '''
    messages = [{"role": "user", "content": prompt}]
    return messages


def get_completion(prompt, model="ERNIE-Bot", temperature=0.01):
    '''
    获取文心模型调用结果

    请求参数:
        prompt: 对应的提示词
        model: 调用的模型,默认为 ERNIE-Bot,也可以按需选择 ERNIE-Bot-4 等其他模型
        temperature: 模型输出的温度系数,控制输出的随机程度,取值范围是 0~1.0,且不能设置为 0。温度系数越低,输出内容越一致。
    '''

    chat_comp = qianfan.ChatCompletion()
    message = gen_wenxin_messages(prompt)

    resp = chat_comp.do(messages=message, 
                        model=model,
                        temperature = temperature,
                        system="你是一名个人助理-小鲸鱼")

    return resp["result"]

result = get_completion("你好,介绍一下你自己", model="Yi-34B-Chat")
print(result)

备注:想要使用其他大模型的api可以参考:llm-universe/docs/C2/2. 使用 LLM API.md at main · datawhalechina/llm-universe (github.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1878110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

24年hvv前夕,微步也要收费了,情报共享会在今年结束么?

一个人走的很快,但一群人才能走的更远。吉祥同学学安全https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247483727&idx1&sndb05d8c1115a4539716eddd9fde4e5c9&scene21#wechat_redirect这个星球🔗里面已经沉淀了: 《Ja…

机械拆装-基于Unity-总体设计

前言 在工业设计和制造领域,零部件的拆装技术是一个重要的应用场景,比如我们在工程训练课程中经历的摩托车发动机拆装课程,是机械类学生的必修课程。虚拟拆装系统模拟和仿真了模型的拆装过程,虽然SolidWorks等机械设计软件能够解决…

apipost的安装和测试添加接口能否正常使用

1.进入官网,点击免费使用(我是windows 64位,选合适自己的配置) 2.开始安装 选仅为我安装——下一步 选择自己的安装目录——点安装 等待 运行——完成 3.apipost一些基本操作——实现添加内容 (1)新建接口…

【05】从0到1构建AI生成思维导图应用 -- 前端交互实现

【05】从0到1构建AI生成思维导图应用 – 前端交互实现 大家好!最近自己做了一个完全免费的AI生成思维导图的网站,支持下载,编辑和对接微信公众号,可以在这里体验:https://lt2mind.zeabur.app/ 上一章:http…

5_Clark变换Simulink仿真详细步骤

一、Clark变换的计算过程 根据投影定理: Iα由Ia、Ib、Ic共同投影决定,根据几何原理,IαIa-cos(60)*Ib-cos(60)*Ic,即是IαIa-0.5*Ib-0.5*Ic Iβ由Ib、Ic共同投影决定,根据几何原理,Iβsin(60&a…

下一代的JDK - GraalVM

GraalVM是最近几年Java相关的新技术领域不多的亮点之一, 被称之为革命性的下一代JDK,那么它究竟有什么神奇之处,又为当前的Java开发带来了一些什么样的改变呢,让我们来详细了解下 下一代的JDK 官网对GraalVM的介绍是 “GraalVM 是…

【Python机器学习】模型评估与改进——交叉验证

交叉验证是一种评估泛化性能的统计学方法,它比单次划分训练集和测试集的方法更稳定、前面。在交叉验证中,数据被多次划分,并且需要训练多个模型。最常用的交叉验证是k折交叉验证,其中k是由用户指定的数字,通常取5或10,…

MySQL高级-InnoDB引擎-事务日志- redo log(事务持久性的保证)

文章目录 1、redo log1.1、重做日志缓冲(redo log buffer)1.2、重做日志文件(redo log file) 2、如果没有redo log,可能会存在什么问题的?2.2、我们一起来分析一下。 2.2、那么,如何解决上述的问…

240629_昇思学习打卡-Day11-Vision Transformer中的self-Attention

240629_昇思学习打卡-Day11-Transformer中的self-Attention 根据昇思课程顺序来看呢,今儿应该看Vision Transformer图像分类这里了,但是大概看了一下官方api,发现我还是太笨了,看不太明白。正巧昨天学SSD的时候不是参考了太阳花的…

Databend db-archiver 数据归档压测报告

Databend db-archiver 数据归档压测报告 背景准备工作Create target databend table启动 small warehouse准备北京区阿里云 ECSdb-archiver 的配置文件准备一亿条源表数据开始压测 背景 本次压测目标为使用 db-archiver 从 MySQL 归档数据到 Databend Cloud, 归档的…

qt 开发笔记 动态链接库应用

1.概要 1.1 需求 库有两种,动态库和静态库,这里说的是动态库;动态库的加载方式有两种,一直是静态的一种是动态的,这里的静态加载是指静态加载动态,是一种加载动态库的方式。也有一种动态加载的方式&#…

衣服、帽子、鞋子相关深度学习数据集大合集(1)

最近收集了一大波关于衣物深度学习数据集,主要有衣服、帽子、鞋子、短裤、短袖、T恤等。 1、运动裤、短裤图片数据集 数据格式:图片 是否标注:已标注 标注格式:yolov8 图片数量:915张 查看地址:https…

# Sharding-JDBC从入门到精通(2)- Sharding-JDBC 介绍

Sharding-JDBC从入门到精通(2)- Sharding-JDBC 介绍 一、概述-分库分表所带来的问题 1、分库分表带来的问题 分库分表能有效的缓解了单机和单库带来的性能瓶颈和压力,突破网络 IO、硬件资源、连接数的瓶颈,同时也带来了一些问题…

容器进程

一、容器进程和宿主机进程的关系 容器在进程空间上和宿主机是隔离的,每创建一个容器,该容器都有一个独属的进程空间简称PID NameSpace。但是容器本质也是一个进程,自然是由其父进程创建的,这个可以使用ps aux命令验证。 | 容器视…

Thinger.io 支持多协议、插件化100%开源 IoT 企业级物联网平台

项目源码,文末联系小编 Thinger.io 是一个开源插件化物联网平台,提供了设备原型、扩展和设备连接管理所需的一切工具。我们的目标是使物联网的使用民主化,使其可供全世界使用,并简化大型物联网项目的开发。 01 Thinger.io 物联网平…

【C++】哈希表 --- 闭散列版本的实现

在无人问津日子里 正是登峰造极的好时机 ——《人民日报》 哈希表 --- 闭散列版本的实现 1 C中的哈希表2 哈希表底层2.1 功能2.1 哈希冲突2.3 开散列与闭散列 3 闭散列版本的实现3.1 框架搭建3.2 仿函数设计3.3 插入函数3.4 查找函数3.5 删除函数 Thanks♪(・ω&a…

windows 10 安装tcping 使用教程

1 官网下载:tcping下载 2 复制tcping 到win10系统目录C:\Windows\System32 3 tcping 网址测试,可以指定端口 4 tcping 测试端口联通 5 tcping http模式

LeetCode 算法: 合并 K 个升序链表 c++

原题链接🔗:合并 K 个升序链表 难度:困难⭐️⭐️⭐️ 题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists […

Hugging Face Accelerate 两个后端的故事:FSDP 与 DeepSpeed

社区中有两个流行的零冗余优化器 (Zero Redundancy Optimizer,ZeRO)算法实现,一个来自DeepSpeed,另一个来自PyTorch。Hugging FaceAccelerate对这两者都进行了集成并通过接口暴露出来,以供最终用户在训练/微调模型时自主选择其中之…

Python | Leetcode Python题解之第191题位1的个数

题目: 题解: class Solution:def hammingWeight(self, n: int) -> int:ret 0while n:n & n - 1ret 1return ret