在kaggle部署运行文心4.5开源大模型

发布于:2025-07-05 ⋅ 阅读:(13) ⋅ 点赞:(0)

在kaggle部署运行文心4.5开源大模型

首先到huggingface找到文心4.5开源大模型,可以在镜像找:baidu/ERNIE-4.5-0.3B-PT · HF Mirror

这里以0.3B模型为例。用这个模型主要是因为这个模型小巧,耗费资源少。

直接点右边Use this model:

选择Kaggle,然后就自动打开了Kaggle的项目.

内如容下:

安装transformers库

!pip install -U transformers

初始推理(失败)

# Use a pipeline as a high-level helper
from transformers import pipeline

pipe = pipeline("text-generation", model="baidu/ERNIE-4.5-0.3B-PT", trust_remote_code=True)
messages = [
    {"role": "user", "content": "Who are you?"},
]
pipe(messages)

选好设备,比如P100,然后选择运行:

不行,有报错

# Use a pipeline as a high-level helper
from transformers import pipeline

pipe = pipeline("text-generation", model="baidu/ERNIE-4.5-0.3B-PT", trust_remote_code=True)
messages = {
    "text": "Who are you?",  # 或使用ERNIE特定格式
    "history": []
}
result = pipe(messages, max_length=50)
print(result[0]['generated_text'])


messages = [
    {"role": "user", "content": "Who are you?"},
]
pipe(messages)

还是有报错。

这样就没法用省事的办法了....

到官网,拿官方的例子代码。 

CPU推理

用这个方法

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "baidu/ERNIE-4.5-0.3B-PT"

# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)

# prepare the model input
prompt = "Give me a short introduction to large language model."
messages = [
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], add_special_tokens=False, return_tensors="pt").to(model.device)

# conduct text completion
generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=1024
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()

# decode the generated ids
generate_text = tokenizer.decode(output_ids, skip_special_tokens=True).strip("\n")
print("generate_text:", generate_text)

速度有点慢,用gpu试试

GPU推理

GPU推理,只需要在模型加上,device_map="cuda"参数即可

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "baidu/ERNIE-4.5-0.3B-PT"

# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True, device_map="cuda")
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True,  device_map="cuda")

# prepare the model input
prompt = "Give me a short introduction to large language model."
messages = [
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], add_special_tokens=False, return_tensors="pt").to(model.device)

# conduct text completion
generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=1024
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()

# decode the generated ids
generate_text = tokenizer.decode(output_ids, skip_special_tokens=True).strip("\n")
print("generate_text:", generate_text)

回答很不错:

generate_text: # 无头CMS(Strapi)介绍

## 一、无头CMS(Strapi)简介

无头CMS(Headless CMS)是一种完全无头部署的开源CMS平台,它允许您在不依赖传统CMS框架的情况下构建和发布网站。与传统的CMS相比,无头CMS具有以下显著优势:

### 1. **无头架构**
   - **完全无头**:完全不依赖任何框架或模板引擎,所有功能由代码定义,无需服务器渲染。
   - **响应式设计**:支持响应式设计,适配不同设备尺寸。
   - **主题定制**:完全开放主题,您可以通过自定义CSS、图片、字体等实现个性化设计。

### 2. **高性能**
   - **轻量级**:代码体积极小,仅包含核心功能,无不必要的依赖。
   - **低延迟**:与服务器渲染结合,确保内容快速加载。
   - **快速部署**:部署简单,无需服务器管理。

### 3. **安全**
   - **无框架依赖**:完全免受框架安全漏洞的影响。
   - **安全配置**:通过白名单或自定义白名单限制用户权限。
   - **代码审计**:内置代码审查和安全扫描工具。

### 4. **扩展性**
   - **插件生态**:支持丰富的插件和扩展,满足不同需求。
   - **主题和模板**:可自由选择主题和模板,无需重复开发。
   - **CMS扩展**:支持自定义主题、插件和功能扩展。

### 5. **社区支持**
   - **活跃社区**:拥有大量开发者、贡献者和教程,持续更新和优化。
   - **文档和资源**:丰富的文档和教程,帮助开发者快速上手。
   - **论坛和社区**:活跃的论坛和社区,提供问题解答和灵感交流。

## 二、Strapi无头CMS的核心功能

Strapi无头CMS的核心功能包括:

### 1. **内容管理**
   - **模板系统**:支持模板文件(`.tpl`、`.vue`)的创建和编辑。
   - **主题系统**:提供主题管理、编辑、删除等基本功能。
   - **插件系统**:可轻松添加插件,增强功能。

### 2. **后台管理**
   - **站点管理**:配置站点、用户、权限等。
   - **主题管理**:完全自定义主题,无需模板。
   - **内容管理**:配置内容模板、发布、编辑等。

### 3. **内容分发**
   - **动态内容**:内容自动更新,无需手动维护。
   - **搜索功能**:内置搜索功能,支持关键词过滤和排序。
   - **分类和标签**:支持分类和标签管理,便于内容分类和标签优化。

### 4. **SEO优化**
   - **SEO配置**:通过`strapi.config.seo`文件配置SEO参数。
   - **元数据管理**:自动生成和更新元数据,辅助SEO。

### 5. **性能优化**
   - **缓存机制**:自动缓存静态资源,减少服务器压力。
   - **缓存策略**:支持分布式缓存,提高性能。
   - **压缩和优化**:自动压缩和优化内容,减少加载时间。

### 6. **安全与合规**
   - **安全配置**:通过白名单和自定义白名单限制用户权限。
   - **安全审计**:内置安全审计和日志,便于安全监控。
   - **合规性**:支持GDPR、CCPA等合规性要求。

## 三、使用无头CMS的步骤

### 1. 创建Strapi项目
   - 安装Strapi CLI:`pip install strapi`
   - 创建项目目录并初始化Strapi:`strapi init`

### 2. 配置无头CMS
   - 安装主题:`npm install strapi-theme`
   - 配置主题:通过`strapi config`文件或主题管理工具(如Gatsby、Next.js)

### 3. 构建和发布网站
   - 创建模板:使用Strapi模板引擎创建HTML文件
   - 配置后台:使用Strapi后台管理工具或CMS插件
   - 部署到服务器:通过Strapi的API或部署工具(如Docker)

### 4. 高级功能扩展
   - 添加自定义插件:通过Strapi插件系统添加新功能
   - 自定义主题:通过主题管理工具完全自定义主题

应该说回答的很不错!

 

调试

运行有报错'NoneType' object has no attribute 'apply_chat_template'

/usr/local/lib/python3.11/dist-packages/transformers/pipelines/text_generation.py in preprocess(self, prompt_text, prefix, handle_long_generation, add_special_tokens, truncation, padding, max_length, continue_final_message, **generate_kwargs)
    343             if continue_final_message is None:
    344                 continue_final_message = prompt_text.messages[-1]["role"] == "assistant"
--> 345             inputs = self.tokenizer.apply_chat_template(
    346                 prompt_text.messages,
    347                 add_generation_prompt=not continue_final_message,

AttributeError: 'NoneType' object has no attribute 'apply_chat_template'

没搞定...