第四次课&第五次课:大语言模型入门
part1
part1:大语言模型应用
准备工作
注册云算力平台:https://growthdata.virtaicloud.com/t/NA
创建项目,选择B1.medium规格服务器
选择CUDA12.1 PyTorch2.1.1的镜像
在模型中搜索Qwen2-0.5B-Instruct
点击启动后,进入环境,先准备安装库与包。
在/gemini/code中存放代码,/gemini/pretrain中是我们刚刚挂载的模型
我们在本地解压大模型应用.zip,得到5个文件,进入/gemini/code目录,将文件拖入窗口完成上传
首先是test.py(最基础的大模型)
#此test.py文件是用来测试大语言模型的,可以将自己的输入作为提示词,让模型生成回复。
from transformers import AutoModelForCausalLM, AutoTokenizer #导入模型和分词器
device = "cuda" # the device to load the model onto
model = AutoModelForCausalLM.from_pretrained(#加载大模型,此处为Qwen2-0.5B-Instruct
"Qwen2-0.5B-Instruct",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen2-0.5B-Instruct")#加载分词器,token的作用是将文本转换为模型可以理解的数字形式
#大模型理解token 就跟我们阅读理解一个字一个字读
# 模型预测
prompt = "你是谁?"#提示词,随意输入
messages = [
{"role": "system", "content": "You are a helpful assistant."},#系统回复(你希望你的随意输入 系统会如何给你回答)
{"role": "user", "content": prompt}#用户输入
]
text = tokenizer.apply_chat_template(
messages, #将刚才的messages用tokenizer转换为模型可以理解的数字形式,并导入text中
tokenize=False,#不分词,直接将文本输入模型
add_generation_prompt=True #添加提示词
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)#将text输入模型,并将输入转为tensor
#此步骤是将文本转化为模型可以理解的数字形式,并将输入转为tensor,以便模型进行推理
#生成回复
generated_ids = model.generate( #
model_inputs.input_ids, #输入的文本,将qwen2模型导入
max_new_tokens=512 #生成的回复长度,一个token大约为2-3个字符,所以512个token大约为128个字符,可以适当调整,如果ai回复太短,可能因为max_token设置太少
)
#将生成的回复转换为文本
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]#将生成的回复与输入文本分开,因为模型输入的文本中可能有提示词,所以需要将生成的回复与输入文本分开
#防止生成的回复中有提示词,所以需要将生成的回复与输入文本分开
#将生成的回复转换为文本,解码
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]#将生成的token回复转换为文本,并解码
print(response)
其次为流式输出:
part2
part2:stable diffusion model 应用
下面这张图里面,不选B1.small,选B1.medium
镜像和数据集选择完毕之后,点击 "立即启动"
进入环境后在网页终端输入以下命令:
tar xf /gemini/data-1/stable-diffusion-webui.tar -C /gemini/code/
chmod +x /root/miniconda3/lib/python3.10/site-packages/gradio/frpc_linux_amd64_v0.2
cd /stable-diffusion-webui && python launch.py --deepdanbooru --share --xformers --listen
添加新端口进入如下界面:
其中:
①:txt2ming 为以语言为单位输出
②:negative:描述语言中不想要什么,在此输入
③:Sampling method:选择生成图片语言模型
④:Sampling steps:生成图片步骤,越大与你所生成想要的越接近