人工智能学习

Gemini中的批量预测生成

本文主要是介绍Gemini中的批量预测生成,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

大型语言模型(LLM)在按需生成内容方面表现出色,但如果不受控制,你可能会在一天结束时发现账单很高。在我的文章《使用上下文缓存控制大模型成本》里,我讨论了如何通过这种技术来限制成本。批量生成内容是另一种可以节省时间和成本的方法。

判断什么是批量生成呢?

Gemini中的批量生成允许您批量发送多个生成AI请求,而不是逐一发送,并且可以异步接收响应,响应可以存储在云存储桶或BigQuery表里。这不仅简化了大规模数据集的处理流程,还节省了时间和金钱,因为批量请求并行处理,享有标准请求50%的折扣。

想象一下一个在线书店,里面拥有数千本书。与其一本本生成每本书的描述,这将非常耗时,Gemini 批量生成工具可以并行生成所有描述。这不仅降低了成本,还缩短了整体处理时间。

让我们来看看如何使用批处理功能。

创建云存储空间(Bucket)

你可以使用 Cloud Storage 或 BigQuery 来准备并保存批处理任务的结果。在这里,我们将用到 Cloud Storage。

首先,让我们创建一个存储桶来存放批处理请求的输入文件。

    PROJECT_ID=your-project-id  
    INPUT_BUCKET_URI=gs://$PROJECT_ID-批处理输入桶  
    gsutil mb $INPUT_BUCKET_URI

你也需要一个桶来存储批量请求的结果哦。

    PROJECT_ID=你的项目ID(project ID)  
    OUTPUT_BUCKET_URI=gs://$PROJECT_ID-输出存储桶URI  
    # 使用gsutil创建存储桶,如果目标读者不熟悉gsutil,可以添加解释说明  
    gsutil mb $OUTPUT_BUCKET_URI
准备批量生成的输入文件

接下来,你需要准备一些用于批预测的jsonl文件。

比如说,看看 batch_request_text_input.jsonl,文本提示信息来生成各种蛋糕的食谱:

    {  
      "request": {  
        "contents": [  
          {  
            "parts": {  
              "text": "给我一个香蕉面包的食谱。"  
            },  
            "role": "user"  
          }  
        ]  
      }  
    }  
    {  
      "request": {  
        "contents": [  
          {  
            "parts": {  
              "text": "给我一个做巧克力蛋糕的食谱。"  
            },  
            "role": "user"  
          }  
        ]  
      }  
    }  
    ...  
    {  
      "request": {  
        "contents": [  
          {  
            "parts": {  
              "text": "给我一个做磅蛋糕的食谱。"  
            },  
            "role": "user"  
          }  
        ]  
      }  
    }

你也可以使用包含文本、图片和视频的多模态提示信息来批量生成内容,如下所示:batch_request_multimodal_input.jsonl

{  
  "request": {  
    "contents": [  
      {  
        "role": "user",  
        "parts": [  
          {  
            "text": "列出此图像中的对象。"  
          },  
          {  
            "file_data": {  
              "file_uri": "gs://cloud-samples-data/generative-ai/image/office-desk.jpeg",  
              "mime_type": "image/jpeg"  
            }  
          }  
        ]  
      }  
    ]  
  }  
}{  
  "request": {  
    "contents": [  
      {  
        "role": "user",  
        "parts": [  
          {  
            "text": "列出此图像中的对象。"  
          },  
          {  
            "file_data": {  
              "file_uri": "gs://cloud-samples-data/generative-ai/image/gardening-tools.jpeg",  
              "mime_type": "image/jpeg"  
            }  
          }  
        ]  
      }  
    ]  
  }  
}{  
  "request": {  
    "contents": [  
      {  
        "role": "user",  
        "parts": [  
          {  
            "text": "这视频和图片有什么联系吗?"  
          },  
          {  
            "file_data": {  
              "file_uri": "gs://cloud-samples-data/generative-ai/video/animals.mp4",  
              "mime_type": "video/mp4"  
            }  
          },  
          {  
            "file_data": {  
              "file_uri": "gs://cloud-samples-data/generative-ai/image/cricket.jpeg",  
              "mime_type": "image/jpeg"  
            }  
          }  
        ]  
      }  
    ]  
  }  
}

将两个文件,上传到输入文件夹:

将批量请求的文本输入文件复制到输入存储桶中
gsutil cp batch_request_text_input.jsonl $INPUT_BUCKET_URI  
将批量请求的多模态输入文件复制到输入存储桶URI: $INPUT_BUCKET_URI
gsutil cp batch_request_multimodal_input.jsonl $INPUT_BUCKET_URI
运行批处理生成任务

要运行批处理预测任务,您需要提交一个 BatchPredictionJob,并指定输入文件和输出存储桶

    vertexai.init(project=args.project_id, location="us-central1")  # 初始化vertexai,设置项目和位置

    # 使用Gemini模型提交批量预测任务
    batch_prediction_job = BatchPredictionJob.submit()  # 或 BatchPredictionJob的submit方法
    batch_prediction_job = BatchPredictionJob.submit(
        source_model="gemini-1.5-flash-002",
        input_dataset=args.input_dataset_uri,
        output_uri_prefix=args.output_bucket_uri,
    )

然后,你需要等批处理完成。

在批次预测任务结束之前:
打印当前任务状态: {batch_prediction_job.state.name}
等待10秒
刷新任务状态

运行文本提示的批量生成。

python main.py --project_id $PROJECT_ID \  
  --input_dataset_uri $INPUT_BUCKET_URI/batch_request_text_input.jsonl \  
  --output_bucket_uri $OUTPUT_BUCKET_URI

在运行过程中,你可以在云控制台上看到其状态:

运行多模态提示的批量生成:

python main.py --project_id $PROJECT_ID # 项目ID
--input_dataset_uri $INPUT_BUCKET_URI/batch_request_multimodal_input.jsonl # 输入数据集URI
--output_bucket_uri $OUTPUT_BUCKET_URI # 输出桶URI \
# 表示命令可以跨多行书写 \
# 表示命令可以跨多行书写 \
# 表示命令可以跨多行书写

最后,你会发现两个批处理任务都已经完成,

你将在桶里看到包含提示和LLM(大型语言模型)回复的输出文件。这里有几个例子:

  • 例如:文本输出文件 batch_request_text_output.jsonl
  • 比如:多模态输出文件 batch_request_multimodal_output.jsonl

真棒!

结论部分

批处理生成方式是更稳健地使用生成AI处理大型数据集的一种方式,这可以节省时间和金钱。以下是一些进一步阅读的资源供参考。

  • 批量内容生成教程
  • 批量文本生成指南
  • 使用Gemini API进行批量预测的入门教程
  • 批量预测的Python脚本示例

    _发布在https://atamel.dev _.

这篇关于Gemini中的批量预测生成的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!