大模型的使用和Prompt-Tuning学习笔记

大模型的使用和Prompt-Tuning

如何使用通义千问大模型

详情: 阿里云文档链接

获取API-KEY

配置API

通过环境变量设置API-KEY

在代码中显式配置API-KEY

python 复制代码
import dashscope
dashscope.api_key="YOUR_DASHSCOPE_API_KEY"

使用DashScope SDK调用通义千问模型

安装DashScope SDK

python 复制代码
pip install dashscope
python 复制代码
pip install dashscope --upgrade

多轮对话

python 复制代码
from dashscope import Generation

def get_response(messages):
    response = Generation.call(model="qwen-turbo",
                               messages=messages,
                               # 将输出设置为"message"格式
                               result_format='message')
    return response


messages = [{'role': 'system', 'content': 'You are a helpful assistant.'}]

# 您可以自定义设置对话轮数,当前为3
for i in range(3):
    user_input = input("请输入:")
    messages.append({'role': 'user', 'content': user_input})
    assistant_output = get_response(messages).output.choices[0]['message']['content']
    messages.append({'role': 'assistant', 'content': assistant_output})
    print(f'用户输入:{user_input}')
    print(f'模型输出:{assistant_output}')
    print('\n')

使用HTTP接口调用通义千问模型

提交接口调用

python 复制代码
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation

多轮对话

python 复制代码
import requests
import os

api_key = os.getenv("DASHSCOPE_API_KEY")
url = 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation'
headers = {'Content-Type': 'application/json',
           'Authorization': f'Bearer {api_key}'}

messages = [
    {
        "role": "system",
        "content": "You are a helpful assistant."
    }
]

# 封装模型的响应函数
def get_response(last_messages):
    body = {
        'model': 'qwen-turbo',
        "input": {
            "messages": last_messages
        },
        "parameters": {
            "result_format": "message"
        }
    }
    response = requests.post(url, headers=headers, json=body)
    return response.json()

# 您可以在此修改对话轮数,当前为3轮对话
for i in range(3):
    UserInput = input('请输入:')
    messages.append({
        "role": "user",
        "content": UserInput
    })
    response = get_response(messages)
    assistant_output = response['output']['choices'][0]['message']
    print("用户输入:", UserInput)
    print(f"模型输出:{assistant_output['content']}\n")
    messages.append(assistant_output)

Prompt-Ttuning

详情: 大模型微调原理与代码实战案例(一):Prompt Tuning

第一步,引进必要的库

如:Prompt Tuning 配置类 PromptTuningConfig

python 复制代码
from peft import get_peft_config, get_peft_model, PromptTuningInit, PromptTuningConfig, TaskType, PeftType

第二步,创建 Prompt Tuning 微调方法对应的配置

python 复制代码
peft_config = PromptTuningConfig(
    task_type=TaskType.CAUSAL_LM,
    prompt_tuning_init=PromptTuningInit.TEXT,
    num_virtual_tokens=8,
    prompt_tuning_init_text="Classify if the tweet is a complaint or not:",
    tokenizer_name_or_path=model_name_or_path,
)

第三步,通过调用 get_peft_model 方法包装基础模型

python 复制代码
model = AutoModelForCausalLM.from_pretrained(model_name_or_path)
model = get_peft_model(model, peft_config)
model.print_trainable_parameters()

第四步,保存高效微调部分的模型权重以供模型推理

模型训练的其余部分均无需更改,当模型训练完成之后,保存高效微调部分的模型权重以供模型推理即可。

python 复制代码
peft_model_id = f"{model_name_or_path}_{peft_config.peft_type}_{peft_config.task_type}"
model.save_pretrained(peft_model_id)

相关推荐
摇滚侠1 天前
如何选择 nodejs 版本,nodejs 版本号详解
学习
醇氧1 天前
【学习】IP地址:数字世界的“门牌号”怎么读?
网络协议·学习·tcp/ip
Hello_Embed1 天前
嵌入式上位机开发入门(三):TCP 编程 —— Server 端实现
笔记·单片机·网络协议·tcp/ip·嵌入式
talen_hx2961 天前
《零基础入门Spark》学习笔记 Day 11
笔记·学习·spark
ZhiqianXia1 天前
gem5 模拟器学习笔记(1):核心术语整理
笔记·学习
GHL2842710901 天前
MCP学习
学习·ai
凌波粒1 天前
D2L学习笔记:安装、张量与数据处理
笔记·python·学习·pandas
taoqick1 天前
FIPO粗读笔记
笔记
chools1 天前
Java后端拥抱AI开发之个人学习路线 - - Spring AI【第一期】
java·人工智能·学习·spring·ai