如何免费在Google Colab上运行LLM
Published on
如果你一直想尝试大型语言模型但又担心它们通常伴随的高昂价格,对于喜欢科技的人来说,有好消息。Cheatsheet.md的Grace Smith在这里与渴望深入研究大型语言模型世界的技术爱好者分享一些建议来节省金钱。
介绍Google Colab
Grace建议的第一种节省成本的方法是使用Google Colab,这是一个免费的基于云的Jupyter笔记本环境。只要拥有一个Google账户,您就可以在云中编写和运行Python代码,无需担心计算机的处理能力。而且,Google Colab还支持GPU加速,使训练大型模型更快更容易。
探索语言模型提供商
尽管很多人熟悉OpenAI作为大型语言模型的提供商,Grace还推荐了另一个选择:Azure OpenAI。Azure OpenAI专为企业用户设计,是一个可靠的备选方案。除了这些提供商,还有其他开源平台,如Hugging Face和Fireworks AI,提供了各种高质量的模型供您选择。
在Google Colab上运行大型模型
好奇如何利用Google Colab运行大型语言模型?Grace提供了一份逐步指南:
- 如果您还没有Google账号,请创建一个。
- 访问提供的链接:
https://colab.research.google.com/
,以访问Google Colab界面。 - 在"Files"菜单中,选择"New Notebook"创建一个新的Jupyter笔记本。
- 在继续之前,您需要将Google Drive挂载到Colab,以确保您的文件被保存。如果不进行这一步骤,在笔记本中下载的任何文件都将是临时文件,在会话之间不会持久保存。运行以下代码片段来挂载您的Google Drive:
from google.colab import drive
drive.mount('/content/drive')
- 要利用GPU加速,点击菜单中的"Runtime"选项,选择"Change Runtime Type"。在"Hardware Accelerator"下,选择"GPU"。Google Colab提供免费的15G T4 GPU。
- 要验证您是否在GPU环境中,运行以下代码片段:
import tensorflow as tf
tf.test.gpu_device_name()
! /opt/bin/nvidia-smi
- 现在您可以使用开源模型了。Hugging Face是一个受欢迎的选择,提供了多种基于transformers的模型。只需向
HuggingFaceEmbedding
类提供模型名称,它将处理模型的下载、加载和文本嵌入计算。
Grace提供了一个使用Hugging Face和Llama 2开源模型进行智能搜索和大规模知识库应用程序的示例代码片段。该代码展示了加载预训练模型、对文本进行编码、从知识库中检索类似信息和生成响应的过程。
使用Google Colab逐步运行LLM的示例代码
使用Stable Diffusion和Google Flan T5 XL等LLM创建应用程序需要一种逐步方法,特别是当利用Google Colab的免费GPU的强大能力时。本指南将带您逐步设置一个Flask应用程序,集成这些模型,使您能够根据用户输入生成图像和文本。这个过程涉及使用Python编码,利用Flask作为Web框架,并使用ngrok部署应用程序以实现公共访问。
步骤1:设置您的环境
在开始编码之前,请确保您有一个Google账号,以访问Google Colab。Google Colab是一个强大的平台,它允许您通过浏览器编写、运行和分享Python代码。
步骤2:创建一个Flask应用程序
Flask是一个轻量级的Python WSGI Web应用程序框架。它的设计是为了让您可以快速轻松地入门,并能够扩展到复杂的应用程序。首先设置您的Flask应用程序结构:
from flask import Flask, render_template, request
from flask_ngrok import run_with_ngrok
app = Flask(__name__)
run_with_ngrok(app) # 运行应用程序时启动ngrok
步骤3:集成LLM
对于此项目,您将使用两个模型:Stable Diffusion用于生成图像,Google Flan T5 XL用于文本生成。这些模型需要特定的库:transformers
、diffusers
和torch
。
import torch
from diffusers import StableDiffusionPipeline
from transformers import T5Tokenizer, T5ForConditionalGeneration
# 加载Flan-T5-XL模型
tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-xl")
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-xl").to("cuda")
# 加载Stable Diffusion模型
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
revision="fp16",
torch_dtype=torch.float16
).to("cuda")
步骤4:设计您的应用程序
为您的应用程序创建一个基本的HTML模板。此模板将包含一个表单,用户可以输入AI模型的提示。将此模板保存为index.html
,并将其放在Flask项目目录中的templates
文件夹中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>LLM Flask App</title>
</head>
<body>
<form action="/submit-prompt" method="post">
<input type="text" name="prompt-input" placeholder="输入您的提示">
<button type="submit">生成</button>
</form>
</body>
</html>
步骤 5: 处理请求
回到您的 Flask 应用程序,在路由中设置处理请求的功能。当用户提交一个提示时,您的应用程序将使用 LLMs 根据该提示生成一张图像和文本。
from flask import Flask, render_template, request, jsonify
from io import BytesIO
import base64
@app.route('/')
def index():
return render_template('index.html')
@app.route('/submit-prompt', methods=['POST'])
def generate():
prompt = request.form['prompt-input']
# 使用 Stable Diffusion 生成图像
image = pipe(prompt=prompt).images[0]
buffered = BytesIO()
image.save(buffered, format="PNG")
img_str = base64.b64encode(buffered.getvalue()).decode()
# 使用 Flan-T5-XL 生成文本
input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to("cuda")
generated_output = model.generate(input_ids, max_length=512)
generated_text = tokenizer.decode(generated_output[0], skip_special_tokens=True)
return render_template('index.html', generated_image=img_str, generated_text=generated_text)
步骤 6: 使用 Ngrok 进行部署
Ngrok 可以将位于 NAT 和防火墙后面的本地服务器暴露给公共 Internet,并通过安全隧道连接。安装 ngrok 后,请使用您的令牌进行身份验证:
!ngrok authtoken <YOUR_AUTHTOKEN_HERE>
运行 Flask 应用程序,ngrok 将提供一个公共 URL 以访问它:
!python app.py
步骤 7: 在 Google Colab 中运行
在 Google Colab 中运行整个设置,您将克隆包含 Flask 应用程序的 GitHub 存储库并执行它。Google Colab 允许您从笔记本中安装必要的库、验证 ngrok 并运行您的 Flask 应用程序。
- 克隆您的存储库:
!git clone https://github.com/yourusername/yourrepository.git
- 切换到您的应用程序的目录:
import os
os.chdir("your repository")
- 安装所需的 Python 包:
!pip install flask flask_ngrok torch diffusers transformers
- 验证 ngrok:
!ngrok authtoken YOUR_NGROK_AUTHTOKEN
- 执行 Flask 应用程序。此命令运行 Flask 应用程序,并通过 ngrok 提供的公共 URL 使其可访问:
!python app.py
在 Google Colab 中运行 Flask 应用程序后,您将看到一个输出,其中包含一个指向您的 ngrok 公共 URL 的链接。这个 URL 可以访问您的 Flask 应用程序,现在可以从任何地方访问。
步骤 8: 与您的应用程序交互
导航到提供的 ngrok URL 以查看您的 Flask 应用程序。在表单中输入提示并提交它。后端 Flask 应用程序使用 Stable Diffusion 和 Google Flan T5 XL 模型处理此输入,生成图像和文本。然后,这些结果在同一页上显示,展示这些大型语言模型的能力。
步骤 9: 进一步探索
本项目只是展示了对 LLMs 和云计算的一瞥。考虑增加其他功能来增强您的应用程序,例如:
- 自定义选项:允许用户指定图像和文本生成的参数,如模型的创造性水平或要生成的图像类型。
- 处理较大负载:实施队列系统以高效处理多个请求,确保您的应用程序与用户需求相适应。
- 高级模型使用:探索其他模型及其独特的功能。例如,您可以集成专门用于特定领域的模型,如医疗咨询或法律分析。
结论
使用 Flask 应用程序运行 Stable Diffusion 和 Google Flan T5 XL 等大型语言模型,并使用 Google Colab 和 ngrok 进行部署,展示了现代 AI 技术的易用性和强大性。开发人员只需要几个步骤,就可以在浏览器中创建利用最先进模型的交互式应用程序。本指南不仅突出了这些模型的实际应用,也鼓励进一步探索 AI 在改变行业和创造性工作中的潜力。
在深入研究 AI 开发时,请记住伦理考虑的重要性,特别是在生成尊重版权、隐私和公平性的内容方面。AI 和机器学习之旅充满了创造有影响力、创新的应用的机会,并尊重这些原则。
Google Colab 在语言模型中的威力
通过将 Google Colab 的免费云环境与 sentence-transformers 和 Llama 2 开源模型等库结合使用,技术爱好者可以轻松深入研究语义检索和问答任务。这种方法不仅节省了宝贵的硬件资源,还能创建更智能、更个性化的问答系统。
通过 Google Colab,开发人员可以探索大型语言模型的可能性,而不会花费太多的费用。Grace 鼓励读者尝试自己探索更多令人兴奋的应用。欢迎留言并分享您的成就!
总之,Grace Smith 是一位独立的开源软件开发者和 SolidUI 作者,对新技术特别是 AI 和数据领域充满热情。如果您觉得她的文章有用和有趣,请别忘了点赞和收藏。
记住:要保持好奇心,继续探索令人着迷的技术世界!