#4734 #4730 新增脑海开源页面、#4554 大模型基地可动态增加新模型并优化样式

Merged
ychao_1983 merged 11 commits from dev-csh into V20230912 7 months ago
  1. BIN
      public/img/model/PC-Mind-home.jpg
  2. BIN
      public/img/model/mind.png
  3. +12
    -0
      routers/modelapp/mind.go
  4. +1
    -0
      routers/routes/routes.go
  5. +8
    -0
      templates/model/mind/index.tmpl
  6. +2
    -2
      web_src/vuepages/apis/modules/modelbase.js
  7. +649
    -0
      web_src/vuepages/pages/model/mind/index.vue
  8. +8
    -0
      web_src/vuepages/pages/model/mind/vp-model-mind.js
  9. +3
    -3
      web_src/vuepages/pages/modelbase/create/index.vue
  10. +156
    -250
      web_src/vuepages/pages/modelbase/home/index.vue
  11. +3
    -3
      web_src/vuepages/pages/modelbase/model/index.vue

BIN
public/img/model/PC-Mind-home.jpg View File

Before After
Width: 1920  |  Height: 580  |  Size: 267 KiB

BIN
public/img/model/mind.png View File

Before After
Width: 580  |  Height: 330  |  Size: 310 KiB

+ 12
- 0
routers/modelapp/mind.go View File

@@ -0,0 +1,12 @@
package modelapp

import (
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context"
)

var modelMindTpl base.TplName = "model/mind/index"

func MindPage(ctx *context.Context) {
ctx.HTML(200, modelMindTpl)
}

+ 1
- 0
routers/routes/routes.go View File

@@ -377,6 +377,7 @@ func RegisterRoutes(m *macaron.Macaron) {

m.Group("/extension", func() {
// m.Get("", modelapp.ModelMainPage)
m.Get("/mind", modelapp.MindPage)
m.Get("/tuomin/upload", modelapp.ProcessImageUI)
m.Post("/tuomin/upload", reqSignIn, modelapp.ProcessImage)
m.Get("/wenxin", modelapp.WenXinPage)


+ 8
- 0
templates/model/mind/index.tmpl View File

@@ -0,0 +1,8 @@
{{template "base/head" .}}
<link rel="stylesheet" href="{{StaticUrlPrefix}}/css/vp-model-mind.css?v={{MD5 AppVer}}"/>
<div>
<div id="isSignd" data-sign="{{$.IsSigned}}" style="display: none;"></div>
<div id="__vue-root"></div>
</div>
<script src="{{StaticUrlPrefix}}/js/vp-model-mind.js?v={{MD5 AppVer}}"></script>
{{template "base/footer" .}}

+ 2
- 2
web_src/vuepages/apis/modules/modelbase.js View File

@@ -25,7 +25,7 @@ export const setFinetuneCreate = (data) => {
method: 'post',
params: {},
data: {
type: data.type, // 0为盘古2.6模型
type: data.type, // 0为脑海(盘古2.6模型)
display_job_name: data.display_job_name,
description: data.description,
attachment: data.attachment,
@@ -80,7 +80,7 @@ export const setFinetuneService = (data) => {
method: 'post',
params: {},
data: {
type: data.type, // 0为盘古2.6模型
type: data.type, // 0为脑海(盘古2.6模型)
job_id: data.jobId,
sample_dataset_type: data.sample_dataset_type, // 1文本分类, 2中英翻译, 3开放问答, 0自定义
},


+ 649
- 0
web_src/vuepages/pages/model/mind/index.vue View File

@@ -0,0 +1,649 @@
<template>
<div>
<div class="header">
<div class="title">鹏城 · 脑海</div>
<div class="descr">两千亿参数规模大语言模型,期待与您共同书写脑海大模型的新篇章!</div>
</div>
<div class="top">
<div class="ui container content">
<div class="content-title">鹏城 · 脑海大模型开源计划</div>
<div class="content-c">
<div class="content-l">
<div class="">
<p>在信息爆炸的时代,开源大模型的力量无以估量。</p>
<p>我们很荣幸面向全社会开源两千亿参数规模的大语言模型基座—“鹏城·脑海”,它不仅具备广泛的应用前景,更是开启了一个充满无限可能的创新之门。</p>
<p>
一路上,它虽不尽善尽美,我们坚信开源的力量会让脑海模型得到真正的成长与繁荣。为此,我们邀请各方贤达基于脑海模型开展进一步研究,挖掘无限可能,共同推动人工智能的进步。我们将向开源联合体开放“鹏城·脑海”多参数版本及其成长生命期各个阶段版本,期待与您共同书写脑海大模型的新篇章!
</p>
<p style="text-align: right;">——鹏城实验室脑海大模型研究组</p>
</div>
<div class="apply-c">
<a class="apply-btn" download
href="https://openi.pcl.ac.cn/OpenIOSSG/promote/raw/branch/master/%e9%b9%8f%e5%9f%8e%e8%84%91%e6%b5%b7%e6%a8%a1%e5%9e%8b%e7%94%b3%e8%af%b7%e8%a1%a8.docx">申请体验</a>
</div>
<div class="apply-descr">下载表格,填写后发送到:secretariat@openi.org.cn</div>
</div>
<div class="content-r"></div>
</div>
</div>
</div>
<div class="ui container">
<div class="models">
<div class="model-card-c">
<div class="model-card" v-for="(item, index) in models" :key="index">
<div class="model-name-1">{{ item.name1 }}</div>
<div class="model-name-2">{{ item.name2 }}</div>
<div class="model-status">
<div class="status" v-if="item.status.indexOf(1) > -1">
<svg xmlns="http://www.w3.org/2000/svg"
class="styles__StyledSVGIconPathComponent-sc-gbp7ch-0 iVwQlg svg-icon-path-icon fill"
viewBox="0 0 32 32" width="16" height="16" fill="rgb(22, 132, 252)">
<defs data-reactroot=""></defs>
<g>
<path
d="M16 29.333c-7.364 0-13.333-5.969-13.333-13.333s5.969-13.333 13.333-13.333 13.333 5.969 13.333 13.333-5.969 13.333-13.333 13.333zM16 26.667c5.891 0 10.667-4.776 10.667-10.667s-4.776-10.667-10.667-10.667v0c-5.891 0-10.667 4.776-10.667 10.667s4.776 10.667 10.667 10.667v0zM14.671 21.333l-5.657-5.657 1.885-1.885 3.772 3.772 7.541-7.543 1.887 1.885-9.428 9.428z">
</path>
</g>
</svg>
<span>可申请</span>
</div>
<div class="status" v-if="item.status.indexOf(2) > -1">
<svg xmlns="http://www.w3.org/2000/svg"
class="styles__StyledSVGIconPathComponent-sc-gbp7ch-0 iVwQlg svg-icon-path-icon fill"
viewBox="0 0 32 32" width="16" height="16" fill="rgb(22, 132, 252)">
<defs data-reactroot=""></defs>
<g>
<path
d="M16 2.667c0.004 0 0.009 0 0.014 0 4.147 0 7.852 1.897 10.292 4.871l0.019 0.023-8.439 8.439 8.439 8.439c-2.459 2.997-6.163 4.895-10.31 4.895-0.005 0-0.009 0-0.014 0h0.001c-7.364 0-13.333-5.969-13.333-13.333s5.969-13.333 13.333-13.333zM16 5.333c-5.89 0.001-10.665 4.776-10.665 10.667s4.776 10.667 10.667 10.667c2.353 0 4.527-0.762 6.291-2.052l-0.030 0.021 0.277-0.209-8.427-8.427 8.427-8.428-0.277-0.208c-1.627-1.194-3.648-1.94-5.839-2.022l-0.019-0.001-0.404-0.008zM16 6.667c1.105 0 2 0.895 2 2s-0.895 2-2 2v0c-1.105 0-2-0.895-2-2s0.895-2 2-2v0z">
</path>
</g>
</svg>
<span>持续训练中</span>
</div>
</div>
<div class="model-descr-c">
<template v-for="(descr, descrIndex) in item.descr">
<div class="descr" :key="descrIndex">
<div v-if="descr[0]" class="descr-l1">{{ descr[0] }}</div>
<div v-if="descr[1]" class="descr-l2">{{ descr[1] }}</div>
<div v-if="descr[2]" class="descr-l3">{{ descr[2] }}</div>
</div>
<div class="line" v-if="descrIndex != item.descr.length - 1" :key="descrIndex + 100"></div>
</template>
</div>
<div class="ops">
<a :href="op.link" v-for="(op, opIndex) in item.ops" :key="opIndex">{{ op.text }}</a>
</div>
</div>
</div>
</div>
</div>
<div class="ui container">
<div class="model-tab">
<div class="tab-item" v-for="(item, index) in tabList" :key="index" :class="activeTab == index ? 'active' : ''"
@click="changeTab(index)">
{{ item }}
</div>
</div>
<div class="model-tab-content">
<div class="descr">
{{ tabContent[activeTab].descr }}
</div>
<div class="life-stage">
<div class="title">成长生命期阶段版本</div>
<div class="descr">您提交的申请体验通过审核后,我们将提供中间 checkpoints 供您研究使用;随着训练的推进,我们将提供对应阶段的 checkpoints 。</div>
<div class="stage-c">
<div class="stage" v-for="(item, index) in tabContent[activeTab].stage" :key="index">
<div class="stage-item" v-if="item.name">
<div class="name">{{ item.name }}</div>
<div class="tokens">{{ item.tokens }}</div>
</div>
<div v-else class="stage-item">······</div>
<div class="stage-arr">
<svg xmlns="http://www.w3.org/2000/svg" style="overflow: visible; filter: none;" view-box="0 0 32 32"
width="32" height="9">
<path d="M 0 0.5 L 32 0.5" stroke="rgba(22,132,252,1)" stroke-width="1px"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" style="margin-left:-13px;" fill="rgba(22,132,252,1)"
viewBox="0 0 32 32" width="17" height="17">
<defs data-reactroot=""></defs>
<g>
<path d="M17.563 16l-6.6-6.6 1.885-1.885 8.485 8.485-8.485 8.485-1.885-1.885z"></path>
</g>
</svg>
</div>
</div>
<div class="stage">
<div class="stage-item">······</div>
</div>
</div>
</div>
<div class="data-distribution" v-if="tabContent[activeTab].chart.length">
<div class="title">训练数据分布</div>
<div class="chart-el" :class="`chart-el-${index}`" v-for="(item, index) in tabContent[activeTab].chart"
:key="index"></div>
</div>
</div>
</div>
</div>
</template>

<script>

import * as echarts from "echarts";

const templateOptions = {
title: {
text: '',
left: 'center',
},
grid: {
top: 48
},
tooltip: {
show: true,
formatter: '{b0}: {c0}%'
},
xAxis: {
type: 'category',
axisLabel: { interval: 0, rotate: 30 },
data: [],
},
yAxis: {
type: 'value',
axisLabel: {
formatter: '{value}%'
},
},
dataZoom: [{
type: 'inside',
start: 0,
end: 100
}],
series: [{
data: [],
type: 'bar',
itemStyle: {
color: '#188df0',
},
label: {
show: false,
position: 'top',
rotate: 30,
formatter: '{c}%'
}
}]
};

const chartHandlers = [];

export default {
data() {
return {
models: [{
name1: '鹏城·脑海两千亿参数',
name2: 'PC-Mind 200B',
status: [1, 2], // 1-可申请、2-持续训练中
descr: [
['基于', '鹏城云脑Ⅱ', '算力网枢纽节点'],
['切片', '3456'],
['基于', 'MindSpore'],
],
ops: [],
}, {
name1: '鹏城·脑海七十亿参数',
name2: 'PC-Mind 7B',
status: [1, 2],
descr: [
['基于', '中国算力网', '西安、成都、大连节点'],
['支持', 'NPU转换GPU'],
['基于', 'MindSpore'],
],
ops: [],
}],
activeTab: 0,
tabList: ['PC-Mind 200B', 'PC-Mind 7B'],
tabContent: [{
descr: `鹏城·脑海200B 模型是基于Transformer 架构的2010亿参数自回归式语言模型。\n模型全流程基于(中国算力网枢纽节点)“鹏城云脑Ⅱ”自主安全可控的全国产软硬件平台进行开发和训练,基于MindSpore框架实现在大规模集群上长期稳定的多维分布式并行训练。模型保存为3456个切片,训练模型容量约7.6TB,推理模型保存成16个切片,容量约375GB,支持4096上下文窗口长度,主要聚焦中文核心能力,兼顾英文和部分多语言语种数据,目前训练1T token数据,模型持续训练迭代中。\n大模型的开发成长充满未知和探索性挑战,跟随着中国算力网的不断壮大,通过模型训练全流程的开源开放,希望鹏城·脑海200B 模型作为算力网上一个种子吸引产学研界更多人参与到通用大语言模型的研究和应用。`,
stage: [
{ name: '第一阶段', tokens: '100B Tokens', },
{ name: '第二阶段', tokens: '200B Tokens', },
{ name: '第三阶段', tokens: '300B Tokens', },
{ name: '', tokens: '', },
{ name: '第八阶段', tokens: '800B Tokens', },
{ name: '第九阶段', tokens: '900B Tokens', },
{ name: '第十阶段', tokens: '1T Tokens', },
],
chart: [{
title: '0-150B token数据分布',
x: ['文学', '经济', '其他', '法律', '教育学', '医学', '政治', '历史', '体育', '游戏娱乐', '影视影评', '心理学', '休闲旅游', '计算机科学', '艺术', '食品科学', '农业科学', '电子商务', '电子信息科学', '管理学', '交通运输', '能源科学', '军事', '轻工业', '环境科学', '安全科学与消防工程', '哲学', '生物科学', '城市规划与建设', '地理', '材料科学', '广告营销', '宗教', '天文学', '气象学', '化学科学', '物理科学', '数学科学', '重工业', '通信技术'],
y: [37.04, 11.98, 7.27, 7.03, 4.83, 4.8, 2.83, 2.67, 2.06, 1.89, 1.83, 1.41, 1.24, 1.06, 1.02, 0.98, 0.89, 0.85, 0.77, 0.7, 0.65, 0.64, 0.48, 0.47, 0.46, 0.43, 0.43, 0.41, 0.4, 0.4, 0.37, 0.3, 0.26, 0.24, 0.23, 0.18, 0.17, 0.13, 0.13, 0.07],
}, {
title: '150-330B token数据分布',
x: ['文学', '其他', '经济', '法律', '医学', '历史', '教育学', '游戏娱乐', '政治', '体育', '影视影评', '休闲旅游', '心理学', '计算机科学', '艺术', '食品科学', '电子信息科学', '农业科学', '电子商务', '管理学', '军事', '交通运输', '轻工业', '能源科学', '环境科学', '材料科学', '安全科学与消防工程', '生物科学', '哲学', '地理', '宗教', '广告营销', '化学科学', '城市规划与建设', '天文学', '气象学', '物理科学', '通信技术', '数学科学', '重工业'],
y: [28.42, 9.98, 9.59, 7.44, 5.53, 4.23, 3.59, 3.18, 2.87, 2.74, 2.26, 1.75, 1.45, 1.35, 1.33, 1.29, 1.23, 1.11, 0.89, 0.84, 0.84, 0.83, 0.69, 0.6, 0.6, 0.56, 0.54, 0.54, 0.53, 0.53, 0.52, 0.36, 0.33, 0.33, 0.26, 0.24, 0.18, 0.16, 0.15, 0.14],
}, {
title: '330-530B token数据分布',
x: ['文学', '其他', '经济', '法律', '医学', '教育学', '历史', '政治', '游戏娱乐', '体育', '影视影评', '休闲旅游', '计算机科学', '艺术', '食品科学', '心理学', '电子商务', '农业科学', '电子信息科学', '交通运输', '轻工业', '管理学', '军事', '环境科学', '能源科学', '安全科学与消防工程', '地理', '材料科学', '生物科学', '宗教', '哲学', '广告营销', '城市规划与建设', '化学科学', '气象学', '天文学', '重工业', '物理科学', '数学科学', '通信技术'],
y: [24.94, 10.49, 10.29, 7.73, 5.17, 3.97, 3.73, 3.2, 3.2, 3.09, 2.2, 2.01, 1.72, 1.41, 1.36, 1.34, 1.29, 1.24, 1.21, 0.94, 0.91, 0.89, 0.78, 0.71, 0.69, 0.62, 0.51, 0.5, 0.5, 0.5, 0.46, 0.45, 0.37, 0.31, 0.27, 0.27, 0.2, 0.19, 0.17, 0.17],
}]
}, {
descr: `PC-Mind 7B 脑海模型,它是基于中国算力网训练,可跨算力中心迁移的70亿参数量生成式大语言模型,具有强大的语言理解和生成能力。\n该模型可以用于多种自然语言处理任务,如文本生成、机器翻译、问答系统等。它在提供高质量的文本生成方面表现出色,并且可以自动生成连贯、合理的语句。此外,它还拥有较高的推理能力,可以对输入的文本进行深入的理解和分析。\nPC-Mind 7B 在NLP领域具有广泛的应用前景,可以帮助加速自然语言处理任务的研究和开发过程。同时支持该模型到GPU版本的转换。`,
stage: [
{ name: '第一阶段', tokens: '100B Tokens', },
{ name: '第二阶段', tokens: '200B Tokens', },
{ name: '第三阶段', tokens: '300B Tokens', },
{ name: '', tokens: '', },
{ name: '第八阶段', tokens: '800B Tokens', },
{ name: '第九阶段', tokens: '900B Tokens', },
{ name: '第十阶段', tokens: '1T Tokens', },
],
chart: [{
title: '0-36.5B token数据分布',
x: ['文学', '经济', '其他', '法律', '历史', '教育学', '政治', '体育', '医学', '游戏娱乐', '影视影评', '艺术', '农业科学', '休闲旅游', '食品科学', '计算机科学', '电子信息科学', '心理学', '交通运输', '电子商务', '军事', '地理', '管理学', '生物科学', '安全科学与消防工程', '环境科学', '能源科学', '轻工业', '哲学', '城市规划与建设', '宗教', '材料科学', '广告营销', '化学科学', '气象学', '天文学', '数学科学', '通信技术', '物理科学', '重工业'],
y: [15.38, 13.63, 11.81, 6.64, 4.72, 4.67, 4.15, 4.1, 3.86, 3.1, 2.64, 1.96, 1.94, 1.78, 1.73, 1.59, 1.47, 1.42, 1.32, 1.18, 1.13, 1.05, 1.01, 0.79, 0.74, 0.73, 0.65, 0.58, 0.56, 0.53, 0.47, 0.43, 0.39, 0.36, 0.33, 0.3, 0.25, 0.25, 0.23, 0.13],
}, {
title: '36.5-123.5B token数据分布',
x: ['文学', '其他', '经济', '历史', '医学', '教育学', '法律', '政治', '影视影评', '体育', '游戏娱乐', '心理学', '休闲旅游', '艺术', '食品科学', '农业科学', '计算机科学', '管理学', '交通运输', '军事', '电子信息科学', '地理', '电子商务', '宗教', '哲学', '生物科学', '环境科学', '安全科学与消防工程', '轻工业', '能源科学', '城市规划与建设', '广告营销', '材料科学', '气象学', '天文学', '化学科学', '物理科学', '数学科学', '通信技术', '重工业'],
y: [20.93, 11.48, 11.42, 5.48, 5.02, 4.91, 3.73, 3.12, 3.11, 2.98, 2.78, 2.49, 2.46, 1.96, 1.93, 1.56, 1.24, 1.09, 1.07, 1.06, 1.03, 0.92, 0.86, 0.83, 0.82, 0.61, 0.6, 0.6, 0.58, 0.52, 0.44, 0.42, 0.38, 0.31, 0.29, 0.25, 0.21, 0.19, 0.18, 0.13],
}, {
title: '123.5-197.5B token数据分布',
x: ['文学', '经济', '其他', '法律', '政治', '医学', '教育学', '体育', '游戏娱乐', '历史', '计算机科学', '休闲旅游', '影视影评', '电子商务', '电子信息科学', '艺术', '食品科学', '轻工业', '农业科学', '心理学', '管理学', '交通运输', '能源科学', '环境科学', '安全科学与消防工程', '广告营销', '军事', '材料科学', '地理', '宗教', '哲学', '生物科学', '城市规划与建设', '重工业', '化学科学', '气象学', '天文学', '通信技术', '物理科学', '数学科学'],
y: [19.42, 11.95, 10.82, 8.62, 5.43, 4.82, 3.79, 3.76, 3.06, 2.92, 2.37, 2.11, 2.09, 1.89, 1.37, 1.34, 1.31, 1.25, 1.07, 1.03, 1, 0.99, 0.89, 0.81, 0.65, 0.59, 0.58, 0.53, 0.49, 0.45, 0.37, 0.37, 0.36, 0.29, 0.28, 0.24, 0.24, 0.19, 0.15, 0.12],
}, {
title: '197.5-284.5B token数据分布',
x: ['文学', '法律', '其他', '经济', '医学', '历史', '政治', '教育学', '游戏娱乐', '体育', '影视影评', '休闲旅游', '计算机科学', '心理学', '电子商务', '艺术', '食品科学', '电子信息科学', '管理学', '轻工业', '农业科学', '交通运输', '能源科学', '环境科学', '哲学', '军事', '安全科学与消防工程', '宗教', '材料科学', '广告营销', '地理', '生物科学', '城市规划与建设', '化学科学', '天文学', '重工业', '气象学', '物理科学', '通信技术', '数学科学'],
y: [29.72, 20.27, 7.48, 7.29, 3.47, 3.44, 3.14, 2.77, 2.61, 2.33, 1.66, 1.43, 1.38, 1.06, 1.02, 1, 0.94, 0.83, 0.78, 0.74, 0.74, 0.57, 0.52, 0.51, 0.5, 0.5, 0.41, 0.39, 0.38, 0.37, 0.29, 0.24, 0.22, 0.19, 0.17, 0.17, 0.16, 0.13, 0.11, 0.09],
}, {
title: '284.5-344.5B token数据分布',
x: ['文学', '法律', '其他', '经济', '教育学', '政治', '医学', '体育', '游戏娱乐', '历史', '休闲旅游', '计算机科学', '影视影评', '电子商务', '食品科学', '艺术', '轻工业', '心理学', '电子信息科学', '农业科学', '管理学', '环境科学', '交通运输', '能源科学', '安全科学与消防工程', '军事', '广告营销', '宗教', '材料科学', '哲学', '城市规划与建设', '重工业', '地理', '生物科学', '气象学', '天文学', '化学科学', '通信技术', '物理科学', '数学科学'],
y: [18.27, 12.97, 11.54, 10.65, 4.16, 4.12, 4.1, 3.43, 3.17, 2.84, 2.26, 2.2, 2.09, 1.8, 1.39, 1.38, 1.31, 1.15, 1.14, 1.1, 1.02, 0.83, 0.83, 0.77, 0.65, 0.61, 0.58, 0.54, 0.49, 0.37, 0.33, 0.3, 0.3, 0.25, 0.25, 0.21, 0.2, 0.17, 0.12, 0.1],
}]
}]
};
},
components: {},
methods: {
changeTab(index) {
this.activeTab = index;
this.$nextTick(() => {
this.drawChart();
})
},
disposeChart() {
for (let i = 0, iLen = chartHandlers.length; i < iLen; i++) {
const chartHandler = chartHandlers[i];
chartHandler && chartHandler.dispose();
}
chartHandlers.splice(0);
},
resize() {
for (let i = 0, iLen = chartHandlers.length; i < iLen; i++) {
const chartHandler = chartHandlers[i];
chartHandler && chartHandler.resize();
}
},
drawChart() {
this.disposeChart();
const charts = this.tabContent[this.activeTab].chart || [];
for (let i = 0, iLen = charts.length; i < iLen; i++) {
const chart = charts[i];
const options = JSON.parse(JSON.stringify(templateOptions));
options.title.text = chart.title;
options.xAxis.data = chart.x.slice(0);
options.series[0].data = chart.y.slice(0);
const chartHandler = echarts.init(document.querySelector(`.chart-el-${i}`));
chartHandler.setOption(options);
chartHandlers.push(chartHandler);
}
},
},
mounted() {
this.changeTab(0);
window.addEventListener('resize', this.resize);
},
beforeDestroy() {
this.disposeChart();
window.removeEventListener('resize', this.resize);
},
};
</script>

<style scoped lang="less">
.header {
height: 580px;
background: url('/img/model/PC-Mind-home.jpg') center center no-repeat;
background-size: cover;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;

.title {
font-weight: 700;
font-size: 48px;
line-height: 48px;
color: rgb(16, 16, 16);
margin-top: -100px;
margin-bottom: 32px;
text-align: center;
}

.descr {
font-weight: 400;
font-size: 28px;
color: rgba(16, 16, 16, 0.5);
line-height: 36px;
text-align: center;
padding: 0 10px;
}
}

.top {
background-color: #f7f7f7;
padding: 40px 0 40px 0;

.content {
.content-title {
text-align: center;
font-weight: 500;
font-size: 28px;
line-height: 32px;
color: rgb(16, 16, 16);
margin-bottom: 40px;
}

.content-c {
display: flex;
flex-wrap: wrap;

.content-l {
flex: 1;
font-weight: 400;
font-size: 16px;
color: rgb(16, 16, 16);
line-height: 30px;
padding-left: 20px;
padding-right: 20px;
min-width: 420px;
margin-bottom: 20px;


p {
margin-bottom: 15px;
}

.apply-btn {
display: inline-block;
height: 40px;
border-color: rgb(22, 132, 252);
border-width: 1px;
border-style: solid;
color: rgb(22, 132, 252);
border-radius: 5px;
font-size: 16px;
padding: 0 18px;
text-align: center;
line-height: 38px;
margin: 4px 0 20px 0;
}

.apply-descr {
font-size: 14px;
color: rgba(16, 16, 16, 0.5);
line-height: 20px;
}
}

.content-r {
min-width: 420px;
flex: 1;
background: url('/img/model/mind.png') center top no-repeat;
background-size: contain;
min-height: 300px;
margin-bottom: 20px;
}
}
}
}


.models {
padding: 40px 0;
background-color: white;

.model-card-c {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;

.model-card {
width: 540px;
height: 270px;
border-color: rgba(201, 188, 234, 0.4);
border-width: 1px;
border-style: solid;
box-shadow: rgba(157, 197, 226, 0.2) 0px 5px 10px 0px;
color: rgb(16, 16, 16);
border-radius: 10px;
font-size: 14px;
padding: 25px;
line-height: 20px;
margin: 10px 40px;
background: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%221%22%20x1%3D%220%22%20x2%3D%221%22%20y1%3D%220%22%20y2%3D%220%22%20gradientTransform%3D%22matrix(-0.41100000000000014%2C%201.129%2C%20-0.9908929639889198%2C%20-0.41100000000000014%2C%200.911%2C%20-0.129)%22%3E%3Cstop%20stop-color%3D%22%23f1ebff%22%20stop-opacity%3D%221%22%20offset%3D%220.005%22%3E%3C%2Fstop%3E%3Cstop%20stop-color%3D%22%23eef2ff%22%20stop-opacity%3D%221%22%20offset%3D%220.19%22%3E%3C%2Fstop%3E%3Cstop%20stop-color%3D%22%23ffffff%22%20stop-opacity%3D%221%22%20offset%3D%220.59%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22url(%231)%22%3E%3C%2Frect%3E%3C%2Fsvg%3E");

.model-name-1 {
font-size: 18px;
color: rgb(16, 16, 16);
line-height: 26px;
text-align: left;
margin-bottom: 10px;
}

.model-name-2 {
font-size: 24px;
color: rgba(99, 102, 241, 1);
line-height: 35px;
text-align: left;
}

.model-status {
display: flex;
align-items: center;
margin: 14px 0 8px 0;

.status {
font-size: 14px;
color: rgba(22, 132, 252, 1);
line-height: 20px;
margin-right: 20px;
display: flex;
align-items: center;

span {
margin-left: 4px;
}

&.waiting {
color: rgba(16, 16, 16, 0.5);
}
}
}

.model-descr-c {
display: flex;
margin-top: 20px;

.descr {
flex: 1;

.descr-l1 {
font-weight: 400;
font-size: 14px;
color: rgba(16, 16, 16, 0.5);
line-height: 20px;
margin-bottom: 8px;
}

.descr-l2 {
font-weight: 700;
font-size: 20px;
color: rgb(16, 16, 16);
line-height: 29px;
margin-bottom: 8px;
}

.descr-l3 {
font-weight: 400;
font-size: 14px;
color: rgb(16, 16, 16);
line-height: 20px;
}
}

.line {
height: 86px;
width: 1px;
background-color: rgba(16, 16, 16, 0.1);
margin: 0 16px;
}
}

.ops {
a {
display: inline-block;
color: rgb(22, 132, 252);
border-radius: 5px;
font-size: 16px;
padding: 8px 16px;
text-align: center;
line-height: 20px;
background: rgba(1, 145, 255, 0.1);
}
}
}
}
}

.model-tab {
display: flex;
align-items: center;
justify-content: center;

.tab-item {
display: flex;
align-items: center;
justify-content: center;
width: 320px;
height: 78px;
border-width: 1px;
border-style: solid;
color: rgba(16, 16, 16, 0.5);
border-color: transparent;
border-radius: 10px 10px 0px 0px;
text-align: center;
font-weight: 500;
font-size: 24px;
line-height: 35px;
cursor: pointer;

&.active {
color: rgba(99, 102, 241, 1);
border-color: rgb(201, 188, 234);
border-bottom-color: white;
background-color: white;
}
}
}

.model-tab-content {
margin-top: -1px;
border-color: rgb(201, 188, 234);
border-width: 1px;
border-style: solid;
box-shadow: rgba(157, 197, 226, 0.2) 0px 5px 10px 0px;
color: rgb(16, 16, 16);
border-radius: 0 0 10px 10px;
font-size: 14px;
padding: 32px;
padding-top: 16px;

.descr {
white-space: pre-line;
font-size: 16px;
color: #101010;
line-height: 24px;
}

.data-distribution,
.life-stage {
.title {
font-weight: 700;
font-size: 24px;
color: rgb(16, 16, 16);
line-height: 35px;
margin-top: 32px;
margin-bottom: 18px;
}

.descr {
font-size: 16px;
color: rgb(16, 16, 16);
line-height: 24px;
}

.stage-c {
display: flex;
align-items: center;
margin: 20px 0;
padding: 0 20px;
flex-wrap: wrap;

.stage {
display: flex;
align-items: center;
margin-bottom: 10px;

.stage-item {
width: 125px;
height: 70px;
color: rgb(16, 16, 16);
border-radius: 5px;
font-size: 16px;
background: rgba(1, 145, 255, 0.1);
text-align: center;
margin-left: -6px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;

.name {
margin-bottom: 4px;
}

.tokens {
font-size: 14px;
}
}

.stage-arr {
margin-top: 4px;
}
}
}
}

.chart-el {
height: 400px;
margin-bottom: 40px;
}
}

@media only screen and (min-width: 1200px) {
.model-tab-content {
border-radius: 10px;
}
}
</style>

+ 8
- 0
web_src/vuepages/pages/model/mind/vp-model-mind.js View File

@@ -0,0 +1,8 @@
import Vue from 'vue';
import { i18n } from '~/langs';
import App from './index.vue';

new Vue({
i18n,
render: (h) => h(App),
}).$mount('#__vue-root');

+ 3
- 3
web_src/vuepages/pages/modelbase/create/index.vue View File

@@ -1,7 +1,7 @@
<template>
<div>
<div class="ui container area">
<div class="area-title">新建鹏城·盘古大模型微调任务</div>
<div class="area-title">新建鹏城·脑海(原鹏城·盘古)大模型微调任务</div>
<div v-if="alreadyMsgBoxShow">
<div class="err-msg-box-already">
<div class="msg-content">
@@ -22,7 +22,7 @@
<div class="main-title">基本信息:</div>
<div class="row">
<div class="row-title"><span>模型名称</span></div>
<div class="row-content" style="padding-top:6px;"><span>鹏城 · 盘古</span></div>
<div class="row-content" style="padding-top:6px;"><span>鹏城 · 脑海(原鹏城 · 盘古)</span></div>
</div>
<div class="row">
<div class="row-title"><span class="required">模型规模</span></div>
@@ -135,7 +135,7 @@ export default {
if (r1 && r2 && r3 && r4) {
const subData = {
userName: this.userName,
type: 0, // 盘古2.6模型
type: 0, // 0为脑海(盘古2.6模型)
model_size: this.modelSize,
display_job_name: this.$refs.taskNameRef.taskName,
description: this.descr.trim(),


+ 156
- 250
web_src/vuepages/pages/modelbase/home/index.vue View File

@@ -4,21 +4,27 @@
<div class="title">
<div class="title-1">大模型基地</div>
<div class="tab-c">
<div class="tab" :class="tabIndex == '1' ? 'focused' : ''" @click="changeTab(1)">大模型</div>
<div class="tab" :class="tabIndex == '2' ? 'focused' : ''" @click="changeTab(2)">相关工具系统</div>
<div class="tab" :class="tabIndex == '1' ? 'focused' : ''" @click="changeTab(1)">自然语言处理模型</div>
<div class="tab" :class="tabIndex == '2' ? 'focused' : ''" @click="changeTab(2)">计算机视觉模型</div>
<div class="tab" :class="tabIndex == '3' ? 'focused' : ''" @click="changeTab(3)">相关工具系统</div>
</div>
</div>
</TopHeader>
<div v-if="tabIndex == '1'">
<div class="model-category-c" :class="index % 2 == 0 ? 'model-category-c-bg' : ''" v-for="(item, index) in list"
:key="index">
<div v-if="tabIndex == '1' || tabIndex == '2'">
<div class="model-category-c model-category-c-bg">
<div class="catalog-c ui container ">
<a class="catalog-item" v-for="(item, index) in models" :key="index" :href="`#model-category-${index}`">
{{ item.category }}
</a>
</div>
</div>
<div class="model-category-c" :class="index % 2 == 1 ? 'model-category-c-bg' : ''"
v-for="(item, index) in models " :key="index">
<div class="model-category ui container">
<a :name="`model-category-${index}`"></a>
<div class="model-sum">
<div class="model-sum-head">
<div v-if="item.logo" class="model-sum-logo">
<img :src="item.logo" />
</div>
<div class="model-sum-title">{{ item.name }}</div>
<div class="model-sum-title">{{ item.category }}</div>
</div>
<div class="model-sum-descr">{{ item.descr }}</div>
<div class="model-sum-op">
@@ -27,48 +33,47 @@
</div>
</div>
<div class="model-list">
<div class="model-item" v-for="(_item, _index) in item.models" :key="index + '-' + _index">
<div class="model-title">{{ _item.name }}</div>
<div class="model-item" :class="_item.recommend ? 'highlight' : ''" v-for="(_item, _index) in item.models"
:key="index + '-' + _index">
<div class="model-title">
<div class="tit">{{ _item.name }}</div>
<div>
<div v-if="_item.recommend" class="recommend-tip">推荐体验</div>
</div>
</div>
<div class="model-descr" :title="_item.descr">{{ _item.descr }}</div>
<div class="model-op" :class="_item.class ? _item.class : ''">
<div class="model-op-btn model-op-coming-soon" v-if="_item.comingSoon">
<i class="el-icon-stopwatch"></i>
<span>敬请期待</span>
<div class="model-op" :class="_item.ops.length > 1 ? 'justify-content-space-between' : ''">
<div class="model-op-btn-c" v-for="(op, opIndex) in _item.ops"
:key="index + '-' + _index + '-' + opIndex">
<a v-if="op.url" class="model-op-btn" target="_blank" :href="op.url">
<i v-if="op['left-icon']" :class="op['left-icon']"></i>
<span>{{ op.label }}</span>
<i v-if="op['right-icon']" :class="op['right-icon']"></i>
</a>
<div v-else class="model-op-btn">
<i v-if="op['left-icon']" :class="op['left-icon']"></i>
<span>{{ op.label }}</span>
<i v-if="op['right-icon']" :class="op['right-icon']"></i>
</div>
</div>
<a class="model-op-btn model-op-experience-now" v-if="_item.experienceNow" target="_blank"
:href="_item.experienceUrl">
<span>立即体验</span>
<i class="el-icon-right"></i>
</a>
<a class="model-op-btn model-op-can-use" v-if="_item.canUse" :href="_item.useUrl">
<span>定制个性化大模型</span>
<i class="el-icon-right"></i>
</a>
<a class="model-op-btn model-op-download" v-if="_item.download">
<span>立即下载</span>
<i class="el-icon-download"></i>
</a>
<a class="model-op-btn model-op-download" v-if="_item.detail" target="_blank" :href="_item.detailUrl">
<span>详情</span>
<i class="el-icon-right"></i>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="model-category-c" :class="list.length % 2 == 0 ? 'model-category-c-bg' : ''">
<div class="model-category-c" :class="models.length % 2 == 0 ? 'model-category-c-bg' : ''">
<div class="ui container model-category-more">
<div class="more-model">更多大模型接入中...</div>
<div v-if="loading" class="more-model">数据加载中...</div>
<div v-else class="more-model">更多大模型接入中...</div>
</div>
</div>
</div>
<div v-if="tabIndex == '2'">
<div v-if="tabIndex == '3'">
<div class="tool-c">
<div class="tool-list ui container">
<div class="model-tool-list">
<a class="model-tool" :class="`tool-bg-${index + 1}`" :href="item.href" target="_blank"
v-for="(item, index) in tools">
v-for="(item, index) in tools" :key="index">
<div class="tool-title">{{ item.name }}</div>
</a>
</div>
@@ -85,200 +90,14 @@

<script>
import TopHeader from '../components/TopHeader.vue';
import { getPromoteData } from '~/apis/modules/common';

export default {
data() {
return {
tabIndex: '1',
list: [{
name: '鹏城·盘古大模型',
logo: 'https://openi.pcl.ac.cn/repo-avatars/34812-90a3a6045581fa11522237766a4db6b3',
descr: '以中文为核心的鹏城·盘古大语言模型,更强的任务理解与处理能力。',
homeUrl: '',
models: [{
name: '鹏城·盘古',
descr: '业界首个2000亿参数以中文为核心的预训练生成语言模型。',
canUse: true,
useUrl: '/extension/modelbase/pangufinetune',
comingSoon: false,
experienceNow: false,
experienceUrl: 'https://pangu-alpha.pcl.ac.cn/index_params3_usingJiebaPrint_addLoginTimeout_hu.html',
download: false,
// class: 'justify-content-space-between',
}, {
name: '鹏城·盘古多任务增强版',
descr: '以中文为核心的鹏城·盘古大语言模型,更强的任务理解与处理能力。',
canUse: false,
comingSoon: true,
experienceNow: false,
experienceUrl: 'https://pangu-alpha.pcl.ac.cn/index_params3_usingJiebaPrint_addLoginTimeout_pangu_upgrade.html',
download: false,
}, {
name: '鹏城·盘古多语言',
descr: '2.6B预训练多语言模型+2.6B一带一路53种语言机器翻译模型,单模型支持53种语言任意两种语言间的互译。',
canUse: false,
comingSoon: true,
experienceNow: false,
download: false,
}, {
name: '鹏城·盘古对话',
descr: '大规模开放域对话生成模型,可控、可靠可信、有智慧的自然人机对话模型。',
canUse: false,
comingSoon: true,
experienceNow: false,
download: false,
}]
}, {
name: '文心大模型',
logo: '',
descr: '文心大模型,AI应用场景全覆盖',
homeUrl: 'https://wenxin.baidu.com/',
models: [{
name: 'ERNIE-ViLG 2.0',
descr: '全球规模最大的中文跨模态生成模型,可通过自然语言实现图像生成与编辑,由鹏城云脑Ⅱ提供算力支持 。',
canUse: false,
comingSoon: false,
experienceNow: true,
experienceUrl: 'https://openi.pcl.ac.cn/extension/wenxin',
download: false,
}, {
name: '鹏城-百度·文心',
descr: '全球首个知识增强超大模型,参数规模2600亿,在60多项典型任务中取得了世界领先效果,在各类AI应用场景中均具备极强的泛化能力。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/PCLNLP/ernie3.0_torch',
}, {
name: 'ERNIE 3.0-xbase-zh',
descr: '280M参数重量级通用模型。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/ERNIE-3.0',
}]
}, {
name: 'CLIP模型',
logo: '',
descr: 'CLIP模型的中文版本,使用大规模中文数据进行训练,可用于图文检索和图像、文本的表征提取,应用于搜索、推荐等应用场景',
repoUrl: 'https://openi.pcl.ac.cn/FoundationModel/Chinese-CLIP',
models: [{
name: 'Chinese-CLIP ViT-L/14@336px',
descr: 'CLIP模型的中文版本,使用大规模中文数据进行训练(~2亿图文对),旨在帮助用户快速实现中文领域的图文特征&相似度计算、跨模态检索、零样本图片分类等任务。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/Chinese-CLIP/modelmanage/model_readme_tmpl?name=CN-CLIP_ViT-L%2F14%40336px',
}, {
name: 'Chinese-CLIP_ViT-H/14',
descr: 'CLIP模型的中文版本,使用大规模中文数据进行训练(~2亿图文对),旨在帮助用户快速实现中文领域的图文特征&相似度计算、跨模态检索、零样本图片分类等任务。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/Chinese-CLIP/modelmanage/model_readme_tmpl?name=Chinese-CLIP_ViT-H%2F14',
}, {
name: 'Chinese-CLIP_ViT-L/14',
descr: 'CLIP模型的中文版本,使用大规模中文数据进行训练(~2亿图文对),旨在帮助用户快速实现中文领域的图文特征&相似度计算、跨模态检索、零样本图片分类等任务。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/Chinese-CLIP/modelmanage/model_readme_tmpl?name=Chinese-CLIP_ViT-L%2F14',
}]
}, {
name: '悟道大模型',
logo: '',
descr: '由清华大学和北京智源提供的系列开源模型成果',
reopUrl: 'https://openi.pcl.ac.cn/BAAI/WuDao-Model',
homeUrl: 'https://flagopen.baai.ac.cn/#/home',
models: [{
name: 'CogView',
descr: 'CogView参数量为40亿,模型可实现文本生成图像,经过微调后可实现国画、油画、水彩画、轮廓画等图像生成。目前在公认MS COCO文生图任务上取得了超过OpenAI DALL·E的成绩,获得世界第一。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/CogView',
}, {
name: 'GLM',
descr: 'GLM是以英文为核心的预训练语言模型系列,基于新的预训练范式实现单一模型在语言理解和生成任务方面取得了最佳结果,并且超过了在相同数据量进行训练的常见预训练模型(例如BERT,RoBERTa和T5),目前已开源1.1亿、3.35亿、4.10亿、5.15亿、100亿参数规模的模型。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/GLM/',
}, {
name: 'Transformer-XL',
descr: 'Transformer-XL是以中文为核心的预训练语言生成模型,参数规模为29亿,目前可支持包括文章生成、智能作诗、评论/摘要生成等主流NLG任务。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/Chinese-Transformer-XL',
}, {
name: 'EVA',
descr: 'EVA是一个开放领域的中文对话预训练模型,是目前最大的汉语对话模型,参数量达到28亿,并且在包括不同领域14亿汉语的悟道对话数据集(WDC)上进行预训练。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/EVA',
}, {
name: 'Lawformer',
descr: 'Lawformer是世界首创法律领域长文本中文预训练模型,参数规模达到1亿。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/LegalPLMs',
}]
}, {
name: '封神榜模型',
logo: '',
descr: '中文语言预训练模型',
homeUrl: 'https://fengshenbang-doc.readthedocs.io/zh/latest/index.html',
models: [{
name: '二郎神系列',
descr: '处理理解任务,拥有开源时最大的中文bert模型,2021登顶FewCLUE和ZeroCLUE。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/Erlangshen-MegatronBert-1.3B/modelmanage/show_model',
}, {
name: '太乙系列',
descr: '太乙系列模型主要应用于跨模态场景,包括文本图像生成,蛋白质结构预测, 语音-文本表示等。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/taiyi/modelmanage/show_model',
}, {
name: '闻仲系列',
descr: '专注于生成任务,提供了多个不同参数量的生成模型,例如GPT2等。',
canUse: false,
comingSoon: false,
experienceNow: false,
download: false,
detail: true,
detailUrl: 'https://openi.pcl.ac.cn/FoundationModel/Wenzhong/modelmanage/show_model',
}]
}],
allModels: {},
models: [],
tools: [{
name: '启智飞轮标注系统',
href: 'https://pangu-alpha.pcl.ac.cn/dialog',
@@ -286,16 +105,48 @@ export default {
name: '盘古适配GCU',
href: 'https://openi.pcl.ac.cn/Enflame/GCU_Pytorch_pangu',
}],
loading: false,
};
},
components: { TopHeader, },
methods: {
changeTab(tab) {
this.tabIndex = tab;
if (tab == '1') {
this.models = this.allModels.NLP || [];
} else if (tab == '2') {
this.models = this.allModels.CV || [];
}
},
getModels() {
this.loading = true;
getPromoteData('/model/modelbase.json').then(res => {
this.loading = false;
try {
const data = JSON.parse(res.data);
this.allModels = data || {};
this.models = data.NLP || [];
} catch (err) {
console.log(err);
}
}).catch(err => {
console.log(err);
this.loading = false;
})
},
},
beforeMount() {
this.getModels();
},
mounted() {
const hash = window.location.hash;
if (hash) {
const ele = document.querySelector(`a[href="${hash}"]`);
if (ele) {
ele.click();
}
}
},
beforeMount() { },
mounted() { },
beforeDestroy() { },
};
</script>
@@ -351,20 +202,14 @@ export default {
}

.model-category-c {
display: flex;
align-items: center;
padding: 65px 0;
padding: 25px 0 35px 0;

.model-category {
display: flex;
align-items: center;

.model-sum {
width: 320px;
margin-right: 20px;
align-self: baseline;
margin-top: 20px;
padding-left: 40px;
padding-top: 10px;
padding-left: 12px;

.model-sum-head {
display: flex;
@@ -406,13 +251,12 @@ export default {
}

.model-list {
flex: 1;
display: flex;
flex-wrap: wrap;

.model-item {
width: 318px;
margin: 10px 10px 16px 10px;
width: 332px;
margin: 10px 12px 16px 12px;
border-color: rgba(157, 197, 226, 0.4);
border-width: 1px;
border-style: solid;
@@ -423,10 +267,23 @@ export default {
background: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%221%22%20x1%3D%220%22%20x2%3D%221%22%20y1%3D%220%22%20y2%3D%220%22%20gradientTransform%3D%22matrix(6.123233995736766e-17%2C%201%2C%20-0.2531545429373838%2C%206.123233995736766e-17%2C%200.5%2C%200)%22%3E%3Cstop%20stop-color%3D%22%23eef2ff%22%20stop-opacity%3D%221%22%20offset%3D%220%22%3E%3C%2Fstop%3E%3Cstop%20stop-color%3D%22%23ffffff%22%20stop-opacity%3D%221%22%20offset%3D%221%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22url(%231)%22%3E%3C%2Frect%3E%3C%2Fsvg%3E");

.model-title {
font-weight: 510;
font-size: 16px;
color: rgb(16, 16, 16);
text-align: center;
display: flex;
justify-content: space-between;

.tit {
font-weight: 510;
font-size: 16px;
color: rgb(16, 16, 16);
text-align: left;
}

.recommend-tip {
border-radius: 4px;
font-size: 12px;
color: rgb(255, 255, 255);
background: rgb(255, 98, 0);
padding: 0px 4px;
}
}

.model-descr {
@@ -447,22 +304,43 @@ export default {
display: flex;
justify-content: center;
align-items: center;

.model-op-coming-soon {
font-size: 14px;
color: rgba(136, 136, 136, 1);
flex-wrap: wrap;

.model-op-btn-c {
width: 50%;
display: flex;
justify-content: center;
align-items: center;
margin: 3px 0 0 0;
}

.model-op-can-use,
.model-op-experience-now,
.model-op-download {
a.model-op-btn {
color: rgb(50, 145, 248);
}

div.model-op-btn {
font-size: 14px;
color: rgba(136, 136, 136, 1);
}

&.justify-content-space-between {
justify-content: space-between;

.model-op-btn-c:nth-child(2n + 1) {
justify-content: flex-start;
padding-left: 8px;
}

.model-op-btn-c:nth-child(2n) {
justify-content: flex-end;
padding-right: 8px;
}
}
}

&.highlight {
background: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%221%22%20x1%3D%220%22%20x2%3D%221%22%20y1%3D%220%22%20y2%3D%220%22%20gradientTransform%3D%22matrix(6.123233995736766e-17%2C%201%2C%20-0.210790712392706%2C%206.123233995736766e-17%2C%200.5%2C%200)%22%3E%3Cstop%20stop-color%3D%22%23cffff0%22%20stop-opacity%3D%221%22%20offset%3D%220%22%3E%3C%2Fstop%3E%3Cstop%20stop-color%3D%22%23ffffff%22%20stop-opacity%3D%221%22%20offset%3D%221%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22url(%231)%22%3E%3C%2Frect%3E%3C%2Fsvg%3E");
}
}
}
}
@@ -470,6 +348,34 @@ export default {
&.model-category-c-bg {
background: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%221%22%20x1%3D%220%22%20x2%3D%221%22%20y1%3D%220%22%20y2%3D%220%22%20gradientTransform%3D%22matrix(0.11899999999999993%2C%201.217%2C%20-0.0901857098765432%2C%200.11899999999999993%2C%200.269%2C%20-0.22)%22%3E%3Cstop%20stop-color%3D%22%23ffffff%22%20stop-opacity%3D%220.47%22%20offset%3D%220%22%3E%3C%2Fstop%3E%3Cstop%20stop-color%3D%22%23e5e7eb%22%20stop-opacity%3D%220.3%22%20offset%3D%221%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22url(%231)%22%3E%3C%2Frect%3E%3C%2Fsvg%3E");
}

.catalog-c {
padding-left: 10px;
display: flex;
align-items: center;
flex-wrap: wrap;

.catalog-item {
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
padding: 0 20px;
height: 40px;
border-color: rgb(229, 231, 235);
border-width: 1px;
border-style: solid;
color: rgb(16, 16, 16);
border-radius: 5px;
font-size: 16px;
text-align: center;
line-height: 23px;
font-weight: normal;
font-style: normal;
background: rgb(249, 250, 251);
margin-top: 10px;
}
}
}

.model-category-more {


+ 3
- 3
web_src/vuepages/pages/modelbase/model/index.vue View File

@@ -2,8 +2,8 @@
<div>
<TopHeader>
<div class="title">
<div class="title-1">鹏城·盘古大模型</div>
<div class="title-2">以中文为核心的鹏城·盘古大语言模型,更强的任务理解与处理能力。</div>
<div class="title-1">鹏城·脑海(原鹏城·盘古)大模型</div>
<div class="title-2">以中文为核心的鹏城·脑海大语言模型,更强的任务理解与处理能力。</div>
<div class="title-3">
<a target="_blank" href="https://openi.pcl.ac.cn/PCL-Platform.Intelligence/pcl_pangu">项目主页</a>
</div>
@@ -12,7 +12,7 @@
<div class="type-list-container">
<div class="ui container">
<div class="content-tips">
<span>* 社区提供了三个示例场景,用户可以使用提供的示例数据集新建微调任务,也可以上传自己的数据集,定制符合自己的应用场景的鹏城·盘古大模型。</span>
<span>* 社区提供了三个示例场景,用户可以使用提供的示例数据集新建微调任务,也可以上传自己的数据集,定制符合自己的应用场景的鹏城·脑海大模型。</span>
<a target="_blank"
href="https://openi.pcl.ac.cn/PCL-Platform.Intelligence/pcl_pangu/src/branch/master/docs/README_DATASET.md">如何构造数据集</a>
</div>


Loading…
Cancel
Save