# CSGHub **Repository Path**: aylerh/CSGHub ## Basic Information - **Project Name**: CSGHub - **Description**: CSGHub是一个开源、可信的大模型资产管理平台,可帮助用户治理LLM和LLM应用生命周期中涉及到的资产(数据集、模型文件、代码等)。CSGHub提供类似私有化的Huggingface功能,以类似OpenStack Glance管理虚拟机镜像、Harbor管理容器镜像以及Sonatype Nexus管理制品的方式,实现对LLM资产的管理。欢迎关注反馈和Star⭐️ - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://opencsg.com/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2025-02-11 - **Last Updated**: 2025-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![Unit Tests](https://github.com/OpenCSGs/csghub/actions/workflows/unit_tests.yml/badge.svg)](https://github.com/OpenCSGs/csghub/actions/workflows/unit_tests.yml) [![Join WeChat Slack](https://img.shields.io/badge/wechat-join_chat-white.svg?logo=wechat&style=social)](./docs/images/wechat-assistant-new.png) [![Join OpenCSG Slack](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](https://join.slack.com/t/opencsghq/shared_invite/zt-2fmtem7hs-s_RmMeoOIoF1qzslql2q~A) [![Join OpenCSG Discord](https://img.shields.io/badge/discord-join_chat-white.svg?logo=discord&style=social)](https://discord.gg/bXnu4C9BkR) [![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20CSGHub%20Guru-006BFF?style=social)](https://gurubase.io/g/csghub) **[简体中文](README_zh.md) ∙ [日本語](README_jp.md) ∙ [한국어](README_kr.md) ∙ [Español](README_es.md)** ## CSGHub CSGHub 是一个开源平台,专为管理大语言模型(LLM)资产而设计,提供了高效管理 LLM 及其资产(如数据集、应用空间、代码等)的方式。用户可以通过网页界面、`git` 命令行、自然语言聊天机器人,或 [CSGHub SDK](https://github.com/OpenCSGs/csghub-sdk) 对 LLM 资产进行上传、下载、存储、校验和分发。 此外,CSGHub 提供微服务子模块和标准化 OpenAPI,以便与现有系统无缝集成。CSGHub 为大模型提供了友好的管理平台,并支持本地化部署,确保安全、离线运行。实际上,CSGHub 可以看作是 Huggingface 的私有化本地版本。 ![CSGHub](./docs/images/csghub_framework.png) ### 核心功能 - 统一管理大模型资产 - 灵活兼容的开发生态系统 - 大模型能力扩展 - 应用空间与资产管理助手(Copilot) - 多源数据同步与推荐 - 完善的权限与安全管控 - 支持私有化部署 - 一站式数据处理与智能标注系统 - 高可用与灾难恢复设计 详细信息请参见 [CSGHub 详细介绍](./docs/detailed_intro_zh.md)。 ## 项目组件介绍 CSGHub 项目由多个组件组成,每个组件都承担着特定的职责,共同构成一个高效、可扩展的系统架构。以下是各个组件的简要介绍: csghub_portal: 负责用户界面的管理和展示,提供直观的界面供用户与系统交互。 csghub_server: 提供主要的服务逻辑和 API 接口,处理客户端发送的请求。 csghub_user: 管理用户身份和认证流程,确保用户信息的安全性和隐私保护,支持用户注册、登录及权限管理。 csghub_proxy: 负责部署实例相关的请求转发,例如 space 应用的操作请求转发到 Knative Serving 服务。 csghub_accounting: 计费系统,负责资源使用过程中产生的费用统计。 csghub_mirror: 提供仓库数据的同步服务,负责同步 opencsg.com 模型和数据集到本地。 csghub_runner: 负责在 Kubernetes 集群中部署和管理应用实例,确保应用的快速构建和持续交付。 csghub_builder: 负责构建应用镜像并上传到容器镜像仓库,简化应用的打包和发布流程。 csghub_watcher: 监控 CSGHub 所有 Secret 和 ConfigMap 变动,并更新相关依赖资源。 gitaly: 用于 Git 存储后端,提供高性能的 Git 操作,实现快速、高效的代码版本控制和管理。 gitlab-shell: 提供 Git over SSH 的交互接口,用于安全的 Git 操作,确保数据传输的安全性。 nats: 实现微服务之间的消息传递和事件驱动架构,提供高效的异步通信能力,增强系统的解耦性和响应速度。 minio: 提供高性能的本地对象存储服务。 postgresql: 存储各组件元数据,提供高效的数据查询和更新能力。 registry: 提供容器镜像仓库服务,便于存储、管理和分发容器镜像。 redis: 提供高性能的缓存和数据存储服务。 casdoor: 负责用户身份的验证和授权,配合 csghub_user 完成用户管理。 coredns: 用于解析 CSGHub 的内部 DNS 请求,例如 Knative Serving 中使用的内部域名解析。 Temporal: 异步任务管理服务,用于执行耗时较长任务,比如资源同步任务。 fluentd: 灵活的日志收集和处理框架,聚合和转发各应用程序日志,便于实时监控、分析和故障排除。 ## docker-compose 部署 中文教程:https://opencsg.com/docs/csghub/101/install/compose ### 原属于csghub-docker-compose-v1.3.0的内容: 文件夹:configs: [casdoorcoredns docker fluentd gitaly gitlab-shell nats nginx server] 文件:.env configure docker-compose.yml ### .env -配置文件 ### docker-compose.yml介绍 我会为您创建一个表格,总结所有容器的名称、镜像名和暴露的端口。 | 容器名 | 镜像名 | 暴露端口 | |--------|---------|-----------| | nginx | ${CSGHUB_IMAGE_PREFIX}/nginx:latest | - ${SERVER_PORT:-80}:${SERVER_PORT:-80}
- ${GIT_SSH_PORT:-2222}:2222
- ${REGISTRY_PORT:-5000}:5000
- ${CASDOOR_PORT:-8000}:8000
- ${MINIO_API_PORT:-9000}:9000
- ${MINIO_CONSOLE_PORT:-9001}:9001 | | redis | ${CSGHUB_IMAGE_PREFIX}/redis:7.2.5 | - | | coredns | ${CSGHUB_IMAGE_PREFIX}/coredns/coredns:1.11.1 | - | | registry | ${CSGHUB_IMAGE_PREFIX}/registry:2 | - | | postgres | ${CSGHUB_IMAGE_PREFIX}/csghub/postgres:15.10 | - | | minio | ${CSGHUB_IMAGE_PREFIX}/bitnami/minio:2023 | - | | gitaly | ${CSGHUB_IMAGE_PREFIX}/gitaly:v17.5.0 | - | | gitlab-shell | ${CSGHUB_IMAGE_PREFIX}/gitlab-shell:v17.5.0 | - | | csghub-portal | ${CSGHUB_IMAGE_PREFIX}/csghub_portal:${CSGHUB_VERSION} | - | | csghub-server | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - | | csghub-runner | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - | | csghub-proxy | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - | | csghub-user | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - | | csghub-accounting | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - | | csghub-mirror-repo | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - | | csghub-mirror-lfs | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - | | csghub-db-init | ${CSGHUB_IMAGE_PREFIX}/opencsg/psql:latest | - | | docker-server | ${CSGHUB_IMAGE_PREFIX}/docker:27.3-dind | - | | csghub-space-builder | ${CSGHUB_IMAGE_PREFIX}/csghub_space_builder:latest | - | | nats | ${CSGHUB_IMAGE_PREFIX}/csghub_nats:2.10.16 | - | | casdoor | ${CSGHUB_IMAGE_PREFIX}/casbin/casdoor:v1.733.0 | - | | temporal | ${CSGHUB_IMAGE_PREFIX}/temporalio/auto-setup:1.25.1 | - | | temporal-ui | ${CSGHUB_IMAGE_PREFIX}/temporalio/ui:2.30.3 | - | | fluentd | ${CSGHUB_IMAGE_PREFIX}/fluentd:v1.16-1 | 24224:24224 | 注意: 1. 大多数服务通过 nginx 反向代理对外暴露服务,所以它们自身并不直接暴露端口 2. 所有镜像名都使用了 ${CSGHUB_IMAGE_PREFIX} 变量作为前缀 3. csghub-server 相关的服务都使用相同的基础镜像,但有不同的入口点(entrypoint) ### docker-compose-ayler.yml 不同于docker-compose.yaml:使用自己打包的csghub_server镜像ayler/csghub_server:v1 ### .configure 文件 这个配置文件(configure)是一个 Bash 脚本,主要用于 CSGHub 系统的初始化配置。以下是其主要功能: 1. **基础功能设置** - 定义日志函数(log)支持不同级别(INFO/WARN/ERRO/TIPS)的彩色输出 - 定义重试机制(retry)用于不稳定命令的执行 - 执行初始环境检查(权限、架构、必需变量等) 2. **目录结构初始化** ``` . ├── configs/ # 配置文件目录 │ ├── fluentd/ # 日志收集 │ ├── nginx/ # 反向代理 │ ├── coredns/ # DNS服务 │ ├── registry/ # 容器镜像仓库 │ ├── gitaly/ # Git存储服务 │ ├── gitlab-shell/ # Git SSH访问 │ ├── docker/ # Docker配置 │ ├── nats/ # 消息队列 │ ├── casdoor/ # 认证服务 │ └── server/ # CSGHub服务器 ├── data/ # 数据存储 └── logs/ # 日志存储 ``` 3. **主要配置任务** - Fluentd:配置日志收集服务 - Nginx:配置反向代理,支持 HTTP/HTTPS - CoreDNS:配置内部 DNS 解析 - Minio:对象存储服务配置 - Registry:容器镜像仓库配置 - Gitaly:Git 存储服务配置 - Gitlab-Shell:SSH 访问配置 - CSGHub Space Builder:构建服务配置 - NATS:消息队列配置 - Casdoor:认证服务配置 4. **特殊处理** - K8s 环境配置(如果启用) - SSL 证书配置(HTTPS 模式) - 各种认证信息的生成 - 权限设置(特别是对 Linux 系统) 5. **最终操作** - 使用 docker-compose 启动所有服务 - 显示访问 URL 和服务状态 这个脚本的主要目的是: 1. 确保所有必要的配置文件和目录结构正确创建 2. 根据环境变量渲染各个服务的配置文件 3. 设置正确的权限和认证信息 4. 协调各个服务之间的依赖关系 5. 最终启动完整的 CSGHub 系统 使用场景: - 首次部署 CSGHub 系统时的初始化 - 系统配置更新时的重新配置 - 确保多个服务之间的配置一致性 ### Demo Video To help users get up to speed with CSGHub, we have created a demo video that highlights its key features and how it works. You can watch it below or on [YouTube](https://www.youtube.com/watch?v=6LwGQ07qBxU)/[Bilibili](https://www.bilibili.com/video/BV1ynmxY3EXz/). ### Quick Start - For those looking to quickly explore, experiment with CSGHub's free SaaS version on the [OpenCSG website](https://opencsg.com). Refer to this [brief quick start guide](./docs/csghub_saas_en.md) to handle LLMs/datasets and deploy LLM applications with CSGHub SaaS interface. For more information, please refer to the [OpenCSG Documentation Center](https://opencsg.com/docs/en/intro). - For those seeking a hands-on experience, you can quickly launch CSGHub on your local environment (Linux/MacOS/Windows) using the [Docker one-click deployment guide](https://github.com/OpenCSGs/csghub-installer/tree/main/docker), which allows you to start an all-in-one container with simplified commands and instantly experience the core functionalities of CSGHub. - For those deploying on Kubernetes, refer to the [Helm Chart installation guide](https://github.com/OpenCSGs/csghub-installer/tree/main/helm) for step-by-step instructions. ### Quick Try [![one-click deployment on Ali marketplace](https://img.alicdn.com/imgextra/i1/O1CN01YT0adL1pi2znO6BAJ_!!6000000005393-55-tps-208-40.svg)](https://market.aliyun.com/products/56014009/cmgj00068499.html?source=5176.29345612&userCode=swc743za) ### Roadmap Discover the [roadmap](./docs/roadmap_en.md) outlining CSGHub's future direction. ### Release Notes Refer to [release notes](./docs/release_notes.md) for information on feature improvements. ### Meetings & Contributing We warmly invite you to explore the [OpenCSG Community](https://github.com/OpenCSGs/community), where you'll find comprehensive guides on becoming a vital part of the project. - The process for joining [community meetings](https://github.com/OpenCSGs/community?tab=readme-ov-file#community-meeting), where you can engage with fellow members and share your ideas. - Refer to the [contribution guide](https://github.com/OpenCSGs/community/blob/main/guidelines/CONTRIBUTING_en.md) for strategies on how to contribute to the project. - [Contact us](https://github.com/OpenCSGs/community?tab=readme-ov-file#questions-and-issues) for any questions or issues, ensuring you're always supported throughout your journey with OpenCSG. - Refer to the [development guide](./docs/setup_en.md) for instructions on setting up the development environment.