在kaggle部署运行文心4.5开源大模型
首先到huggingface找到文心4.5开源大模型,可以在镜像找:baidu/ERNIE-4.5-0.3B-PT · HF Mirror
这里以0.3B模型为例。用这个模型主要是因为这个模型小巧,耗费资源少。
直接点右边Use this model:

选择Kaggle,然后就自动打开了Kaggle的项目.
内如容下:
安装transformers库
python
!pip install -U transformers
初始推理(失败)
python
# 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,然后选择运行:
不行,有报错
python
# 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推理
用这个方法
python
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"参数即可
python
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)
回答很不错:
python
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'
没搞定...