背景
随着文本生成图像的语言模型兴起,SolidUI想帮人们快速构建可视化工具,可视化内容包括2D,3D,3D场景,从而快速构三维数据演示场景。SolidUI 是一个创新的项目,旨在将自然语言处理(NLP)与计算机图形学相结合,实现文生图功能。通过构建自研的文生图语言模型,SolidUI 利用 RLHF (Reinforcement Learning Human Feedback) 流程实现从文本描述到图形生成的过程。
项目地址: https://github.com/CloudOrc/SolidUI
项目镜像地址: https://gitee.com/CloudOrc/SolidUI
社区官网: https://cloudorc.github.io/SolidUI-Website
Discord: https://discord.gg/NGRNu2mGeQ
Huggingface Spaces
介绍
Huggingface Spaces是一个基于云的平台,允许用户轻松地构建、训练和部署先进的AI模型。它具有以下主要功能:
- 模型托管 - 用户可以在Spaces上托管预训练或定制的Transformer模型,并与他人共享。这包括各种NLP、计算机视觉和语音模型。
- 训练平台 - Spaces提供了一个基于云的平台,允许用户使用强大的GPU训练他们的模型。它与主要的深度学习框架集成。
- 模型部署 - 用户可以将他们在Spaces上训练的模型作为REST API端点部署,以便轻松地将模型集成到应用程序中。部署支持批量和实时请求。
- 数据集管理 - Spaces允许用户上传和管理数据集,以用于模型的训练和优化。它还提供了基于云的存储。
- 协作 - Spaces具有协作功能,允许团队成员一起训练和部署模型。用户可以分享模型和数据集。
- MLOps工具 - Spaces提供了MLOps功能如模型版本控制、项目管理、CI/CD 管道等来帮助管理机器学习生命周期。
- 免费层 - Spaces提供免费层让用户体验平台。付费层提供更大的计算资源和存储。
总体而言,Huggingface Spaces旨在成为机器学习从研究到生产全流程的一站式平台,降低构建及部署AI应用的门槛。它的目标用户包括机器学习研究人员、数据科学家以及企业。
功能需求
SolidUI Huggingface Spaces 是为了调用代理API和自研模型API。
0.2.0版本实现了一个基于GPT模型的图像生成web应用。主要功能如下:
- 定义了一些辅助函数:
- decode_image:将base64编码的图像解码为PIL Image对象
- get_image_data:从matplotlib figure对象中提取图像数据,并转换为PIL Image对象
- execute_code:执行传入的Python代码,从代码生成的fig对象中提取图像
- gpt_inference函数:
- 构造prompt,向GPT模型询问生成指定图像的Python代码
- 调用OpenAI API,传入prompt、模型名、Key,请求生成代码
- 执行生成的代码,提取fig中的图像数据,编码为base64
- 将base64解码回PIL Image对象并返回
- 使用gradio构建一个简单的web界面
- 输入:代码生成提示、GPT模型名、OpenAI Key
- 输出:生成的图像
- 调用gpt_inference函数实现后端逻辑
总体来说,实现了一个可以通过自然语言描述来让GPT生成图像的web应用 Demo。核心是调用OpenAI API获取生成代码,并执行代码来渲染图像。
示例
https://huggingface.co/spaces/CloudOrc/SolidUI
代码
https://github.com/CloudOrc/SolidUI/blob/dev/soliduimodelui/spacesplugin/app.py
如何成为贡献者
- 官方文档贡献。发现文档的不足、优化文档,持续更新文档等方式参与社区贡献。通过文档贡献,让开发者熟悉如何提交PR和真正参与到社区的建设。参考攻略:https://github.com/CloudOrc/SolidUI/discussions/54
- 代码贡献。我们梳理了社区中简单并且容易入门的的任务,非常适合新人做代码贡献。请查阅新手任务列表:https://github.com/CloudOrc/SolidUI/issues/12
- 内容贡献:发布SolidUI开源组件相关的内容,包括但不限于安装部署教程、使用经验、案例实践等,形式不限,请投稿给小助手。例如:https://github.com/CloudOrc/SolidUI/issues/10
- 社区答疑:积极在社区中进行答疑、分享技术、帮助开发者解决问题等;
- 其他:积极参与社区活动、成为社区志愿者、帮助社区宣传、为社区发展提供有效建议等;