帮助文档
This commit is contained in:
parent
895257074e
commit
97ff6dad94
@ -3,8 +3,6 @@ import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
|
||||
import Layout from "@/components/Layout.vue";
|
||||
import { Components } from "ant-design-vue/es/date-picker/generatePicker";
|
||||
|
||||
|
||||
|
||||
const routes: RouteRecordRaw[] = [
|
||||
{
|
||||
path: "/",
|
||||
@ -26,6 +24,54 @@ const routes: RouteRecordRaw[] = [
|
||||
name: "NotFound",
|
||||
component: () => import("@/views/404.vue"),
|
||||
},
|
||||
{
|
||||
path: "/document",
|
||||
name: "document",
|
||||
component: () => import("@/views/document/index.vue"),
|
||||
redirect: "/document/introdution",
|
||||
children: [
|
||||
{
|
||||
path: "introdution",
|
||||
name: "introdution",
|
||||
component: () => import("@/views/document/introdution.vue"),
|
||||
},
|
||||
{
|
||||
path: "start",
|
||||
name: "start",
|
||||
component: () => import("@/views/document/start.vue"),
|
||||
},
|
||||
{
|
||||
path: "video",
|
||||
name: "video",
|
||||
component: () => import("@/views/document/video.vue"),
|
||||
},
|
||||
{
|
||||
path: "study",
|
||||
name: "study",
|
||||
component: () => import("@/views/document/study.vue"),
|
||||
},
|
||||
{
|
||||
path: "select",
|
||||
name: "select",
|
||||
component: () => import("@/views/document/select.vue"),
|
||||
},
|
||||
{
|
||||
path: "ceshi",
|
||||
name: "ceshi",
|
||||
component: () => import("@/views/document/ceshi.vue"),
|
||||
},
|
||||
{
|
||||
path: "summary",
|
||||
name: "summary",
|
||||
component: () => import("@/views/document/summary.vue"),
|
||||
},
|
||||
{
|
||||
path: "jupyterLab",
|
||||
name: "jupyterLab",
|
||||
component: () => import("@/views/document/jupyterLab.vue"),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/layout",
|
||||
name: "Layout",
|
||||
@ -95,38 +141,45 @@ const routes: RouteRecordRaw[] = [
|
||||
{
|
||||
path: "contract",
|
||||
name: "contract",
|
||||
component: () => import("@/views/admin/account/cost/contract/index.vue"),
|
||||
component: () =>
|
||||
import("@/views/admin/account/cost/contract/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "costDetail",
|
||||
name: "costDetail",
|
||||
component: () => import("@/views/admin/account/cost/costDetail/index.vue"),
|
||||
component: () =>
|
||||
import("@/views/admin/account/cost/costDetail/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "coupon",
|
||||
name: "coupon",
|
||||
component: () => import("@/views/admin/account/cost/coupon/index.vue"),
|
||||
component: () =>
|
||||
import("@/views/admin/account/cost/coupon/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "flow",
|
||||
name: "flow",
|
||||
component: () => import("@/views/admin/account/cost/flow/index.vue"),
|
||||
component: () =>
|
||||
import("@/views/admin/account/cost/flow/index.vue"),
|
||||
},
|
||||
{
|
||||
{
|
||||
path: "invoice",
|
||||
name: "invoice",
|
||||
component: () => import("@/views/admin/account/cost/invoice/index.vue"),
|
||||
component: () =>
|
||||
import("@/views/admin/account/cost/invoice/index.vue"),
|
||||
},
|
||||
|
||||
{
|
||||
{
|
||||
path: "myOrder",
|
||||
name: "myOrder",
|
||||
component: () => import("@/views/admin/account/cost/myOrder/index.vue"),
|
||||
component: () =>
|
||||
import("@/views/admin/account/cost/myOrder/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "voucher",
|
||||
name: "voucher",
|
||||
component: () => import("@/views/admin/account/cost/voucher/index.vue"),
|
||||
component: () =>
|
||||
import("@/views/admin/account/cost/voucher/index.vue"),
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
1078
src/views/document/ceshi.vue
Normal file
1078
src/views/document/ceshi.vue
Normal file
File diff suppressed because it is too large
Load Diff
144
src/views/document/index.css
Normal file
144
src/views/document/index.css
Normal file
@ -0,0 +1,144 @@
|
||||
/* 标题优化 */
|
||||
h1, h2, h3 {
|
||||
margin-bottom: 0.8em;
|
||||
font-weight: 600;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.2em;
|
||||
border-bottom: 2px solid #eee;
|
||||
padding-bottom: 0.4em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.6em;
|
||||
color: #3498db;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.3em;
|
||||
color: #7f8c8d;
|
||||
}
|
||||
|
||||
/* 段落间距 */
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
/* 链接样式 */
|
||||
a {
|
||||
color: #3498db;
|
||||
text-decoration: none;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #1a5276;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* 引用块美化 */
|
||||
blockquote {
|
||||
margin: 1.2em 0;
|
||||
padding: 14px 20px;
|
||||
background-color: #f8f9fa;
|
||||
border-left: 4px solid #3498db;
|
||||
border-radius: 0 6px 6px 0;
|
||||
font-style: italic;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
blockquote p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* 列表样式 */
|
||||
ul {
|
||||
padding-left: 24px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
ul li {
|
||||
margin-bottom: 6px;
|
||||
list-style-type: circle;
|
||||
}
|
||||
|
||||
/* 代码块高亮区域 */
|
||||
.highlight {
|
||||
margin: 1.2em 0;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
|
||||
}
|
||||
|
||||
.highlight pre {
|
||||
margin: 0;
|
||||
padding: 16px;
|
||||
background-color: #2d2d2d !important;
|
||||
color: #f8f8f2;
|
||||
font-family: 'Fira Code', 'Consolas', monospace;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
overflow-x: auto; /* 允许横向滚动 */
|
||||
}
|
||||
|
||||
/* 美化代码块滚动条(仅该区域)*/
|
||||
.highlight pre::-webkit-scrollbar {
|
||||
height: 8px;
|
||||
}
|
||||
.highlight pre::-webkit-scrollbar-track {
|
||||
background: #1e1e1e;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.highlight pre::-webkit-scrollbar-thumb {
|
||||
background: #555;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.highlight pre::-webkit-scrollbar-thumb:hover {
|
||||
background: #777;
|
||||
}
|
||||
|
||||
/* 图片居中 & 最大宽度限制 */
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
margin: 1em auto;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
||||
}
|
||||
ul, ol {
|
||||
padding-left: 20px;
|
||||
}
|
||||
li {
|
||||
margin: 8px 0;
|
||||
}
|
||||
/* headerlink 样式微调(锚点符号)*/
|
||||
.headerlink {
|
||||
opacity: 0;
|
||||
margin-left: 8px;
|
||||
color: #aaa;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
h1:hover .headerlink,
|
||||
h2:hover .headerlink,
|
||||
h3:hover .headerlink {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.headerlink:hover {
|
||||
color: #3498db;
|
||||
}
|
||||
|
||||
/* 响应式适配 */
|
||||
@media (max-width: 768px) {
|
||||
.md-content {
|
||||
padding: 16px;
|
||||
}
|
||||
h1 { font-size: 1.8em; }
|
||||
h2 { font-size: 1.4em; }
|
||||
}
|
||||
149
src/views/document/index.vue
Normal file
149
src/views/document/index.vue
Normal file
@ -0,0 +1,149 @@
|
||||
<template>
|
||||
<div class="gx_layout">
|
||||
<div :class="isHome ? 'gx_layout_header_home' : 'gx_layout_header_noHome'" class="gx_layout_header">
|
||||
<div class="logo">GxDL算力云</div>
|
||||
</div>
|
||||
<div class="gx_layout_content">
|
||||
<div>
|
||||
<a-menu id="dddddd" v-model:selectedKeys="selectedKeys" style="width: 256px;height: 100%;" mode="inline"
|
||||
:items="menuItems" @click="({ key }) => handleMenuClick(key)"></a-menu>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contain"
|
||||
style="background-color: #ffffff;padding: 20px;overflow: auto;height: 100%;border-radius: 6px;">
|
||||
<router-view />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, watch } from 'vue'
|
||||
import { useRouter, useRoute } from 'vue-router'
|
||||
import { UserOutlined } from '@ant-design/icons-vue';
|
||||
import avatar from '@/assets/avator.png'
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
const isHome = ref(true)
|
||||
const selectedKeys = ref(['/document/introdution']);
|
||||
const menuItems = [
|
||||
{ key: '/document/introdution', label: '简介' },
|
||||
{ key: '/document/start', label: '快速开始' },
|
||||
{ key: '/document/video', label: '视频教程' },
|
||||
{ key: '/document/study', label: '学术资源加速' },
|
||||
{
|
||||
key: '', label: '如何选择GPU',
|
||||
children: [
|
||||
{ key: '/document/select', label: 'GPU选型' },
|
||||
{ key: '/document/ceshi', label: '性能实测' },
|
||||
]
|
||||
},
|
||||
{
|
||||
key: '', label: '容器实例',
|
||||
children: [
|
||||
{ key: '/document/summary', label: '概要' },
|
||||
{ key: '/document/jupyterLab', label: 'JupyterLab' },
|
||||
]
|
||||
},
|
||||
];
|
||||
// 点击菜单跳转
|
||||
const handleMenuClick = (key) => {
|
||||
console.log(key)
|
||||
// 否则按照正常方式在当前标签页跳转
|
||||
router.push(key);
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.gx_layout {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
|
||||
.gx_layout_header_home {
|
||||
background-color: #cfe7fe;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.gx_layout_header_noHome {
|
||||
border-bottom: 1px solid rgb(216 216 216);
|
||||
}
|
||||
|
||||
.gx_layout_header {
|
||||
z-index: 999;
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
flex: 1;
|
||||
|
||||
.logo {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.user-info {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.menu {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
|
||||
&>ul:first-child {
|
||||
width: 100%;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
&>ul {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.gx_layout_content {
|
||||
margin-top: 60px;
|
||||
height: calc(100% - 60px);
|
||||
background-color: rgba(240, 240, 240, 1);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
&>div:first-child {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
&>div:last-child {
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
padding: 20px;
|
||||
// overflow: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 自定义菜单主题 */
|
||||
.custom-menu {
|
||||
/* 背景色 */
|
||||
background: #cfe7fe !important;
|
||||
}
|
||||
|
||||
/* 选中项文字颜色 + 左侧竖条(horizontal 模式下是底部横线) */
|
||||
.custom-menu :deep(.ant-menu-item-selected) {
|
||||
color: #2563eb !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* hover 效果 */
|
||||
.custom-menu :deep(.ant-menu-item:hover) {
|
||||
color: #2563eb !important;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
@import './index.css';
|
||||
</style>
|
||||
40
src/views/document/introdution.vue
Normal file
40
src/views/document/introdution.vue
Normal file
@ -0,0 +1,40 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
<h1 id="_1">简介<a class="headerlink" href="#_1" title="Permanent link">¶</a></h1>
|
||||
<blockquote>
|
||||
<p>严肃声明: 严禁挖矿,一经发现一律封号</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<p>🎉 现在注册即送<code>炼丹会员</code>(有效期1个月),<a href="student/">认证学生</a>直接升级炼丹会员, <a
|
||||
href="member/">了解会员及认证</a>🎉</p>
|
||||
<p>👉 <a href="https://www.autodl.com"
|
||||
target="_blank">AutoDL</a>的目标是为用户提供稳定可靠、价格公道的GPU算力,让GPU不再是您成为数据科学家道路上的拦路石。</p>
|
||||
<p>👉 观看官方录制的官方<a href="video/">使用视频</a></p>
|
||||
<p>👉必看文档:</p>
|
||||
<ol>
|
||||
<li><a href="quick_start/">快速开始</a></li>
|
||||
<li><a href="price/">计费说明</a></li>
|
||||
<li><a href="invoice/">开具发票</a></li>
|
||||
<li><a href="instance_data/">实例数据保留说明</a></li>
|
||||
<li><a href="daemon/">开守护进程</a></li>
|
||||
</ol>
|
||||
<p>👉常用文档:</p>
|
||||
<ol>
|
||||
<li><a href="gpu/">如何选择GPU</a></li>
|
||||
<li><a href="scp/">上传数据</a></li>
|
||||
<li><a href="down/">下载数据</a></li>
|
||||
<li><a href="base_config/">配置环境</a></li>
|
||||
<li><a href="netdisk/">公网网盘(强烈推荐)</a></li>
|
||||
<li><a href="vscode/">VSCode</a></li>
|
||||
<li><a href="pycharm/">PyCharm</a></li>
|
||||
<li><a href="member/">炼丹会员</a></li>
|
||||
<li><a href="student/">学生认证</a></li>
|
||||
</ol>
|
||||
<p>扫码添加客服微信,邀您加入用户群不定时发放福利: </p>
|
||||
<p><img src="http://autodl-public.ks3-cn-beijing.ksyun.com/docs/cs_qrcode_167.png"></p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
46
src/views/document/jupyterLab.vue
Normal file
46
src/views/document/jupyterLab.vue
Normal file
@ -0,0 +1,46 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="jupyterlab">JupyterLab<a class="headerlink" href="#jupyterlab" title="Permanent link">¶</a></h1>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p>⚠️JupyterLab的工作目录为<code>/root</code>目录,而非<code>/</code>系统根目录。如需查看根目录<code>/</code>,可以进入终端使用命令行操作。</p>
|
||||
</blockquote>
|
||||
<h2 id="_1">基本功能介绍<a class="headerlink" href="#_1" title="Permanent link">¶</a></h2>
|
||||
<p>进入jupyterlab,控制台 -> 容器实例 -> Jupyterlab</p>
|
||||
<p><img alt="image_20250307155430" src="../jupyterlab.assets/image_20250307155430.png"></p>
|
||||
<p>JupyterLab界面说明</p>
|
||||
<p><img alt="image_20250307162801" src="../jupyterlab.assets/image_20250307162801.png"></p>
|
||||
<p>上传文件</p>
|
||||
<p><img alt="image_20250307161341" src="../jupyterlab.assets/image_20250307161341.png"></p>
|
||||
<p>使用Notebook</p>
|
||||
<p><img alt="image_20250307161509" src="../jupyterlab.assets/image_20250307161509.png"></p>
|
||||
<p>打开新终端</p>
|
||||
<p><img alt="image_20250307161553" src="../jupyterlab.assets/image_20250307161553.png"></p>
|
||||
<p><img alt="image_20250307161635" src="../jupyterlab.assets/image_20250307161635.png"></p>
|
||||
<p>访问打开的终端或Notebook(JupyterLab在关闭终端/Notebook选项卡后默认不会终止,仍然在运行)</p>
|
||||
<p><img alt="image_20250307161714" src="../jupyterlab.assets/image_20250307161714.png"></p>
|
||||
<p>文件管理</p>
|
||||
<p><img alt="image-20210820115753524" src="../jupyterlab.assets/image-20210820115753524.png"></p>
|
||||
<h2 id="_2">附:使用常见问题<a class="headerlink" href="#_2" title="Permanent link">¶</a></h2>
|
||||
<p>如果用Notebook跑程序的同学会发现,隔了一段时间Notebook的日志不更新了。此时可以使用「日志控制台」的功能查看日志,演示一遍过程:</p>
|
||||
<p>如下一段程序执行起来后,刷新网页此时会发现日志不再更新</p>
|
||||
<p><img alt="image_20250307161831" src="../jupyterlab.assets/image_20250307161831.png"></p>
|
||||
<p>打开日志控制台:</p>
|
||||
<p><img alt="image-20221028152841811" src="../jupyterlab.assets/image-20221028152841811.png"></p>
|
||||
<p><img alt="image-20221028152930038" src="../jupyterlab.assets/image-20221028152930038.png"></p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
202
src/views/document/select.vue
Normal file
202
src/views/document/select.vue
Normal file
@ -0,0 +1,202 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="gpu">GPU选型<a class="headerlink" href="#gpu" title="Permanent link">¶</a></h1>
|
||||
<blockquote>
|
||||
<p>如何排查性能瓶颈参考<a
|
||||
href="../perf/">文档</a>。此外需注意3060、3090、3080Ti、4090、4090D、A4000、A5000、A40、A100、A800、L20、H20、H800等安培架构的卡需要<strong>cuda11.1</strong>及以上才能使用(TitanXp、1080Ti、2080Ti、P40、V100没有要求),请使用较高版本的框架。
|
||||
</p>
|
||||
</blockquote>
|
||||
<p>AutoDL平台分配GPU、CPU、内存的机制为:按租用的GPU数量成比例分配CPU和内存,算力市场显示的CPU和内存均为每GPU分配的CPU和内存,如果租用两块GPU,那么CPU和内存就x2。此外GPU非共享,每个实例对GPU是独占的。
|
||||
</p>
|
||||
<h2 id="cpu">一. 选择CPU<a class="headerlink" href="#cpu" title="Permanent link">¶</a></h2>
|
||||
<p>CPU非常重要!尽管CPU并不直接参与深度学习模型计算,但CPU需要提供大于模型训练吞吐的数据处理能力。比如,一台8卡NVIDIA V100的DGX服务器,训练ResNet-50
|
||||
ImageNet图像分类的吞吐就达到8000张图像/秒,而扩展到16卡V100的DGX2服务器却没达到2倍的吞吐,说明这台DGX2服务器的CPU已经成为性能瓶颈了。</p>
|
||||
<p><img alt="image-20220105174346711" src="../gpu.assets/image-20220105174346711.png"></p>
|
||||
<p>我们通常为每块GPU分配固定数量的CPU逻辑核心。理想情况下,模型计算吞吐随GPU数量线性增长,单GPU的合理CPU逻辑核心数分配可以直接线性扩展到多GPU上。AutoDL平台的算力实例提供了多种CPU分配规格。每块GPU应配备至少4~8核心的CPU,以满足多线程的异步数据读取。分配更多的核心通常不会再有很大的收益,此时的数据读取瓶颈通常源于Python的多进程切换与数据通信开销(如使用PyTorch
|
||||
DataLoader)。那么怎么省钱克服数据读取瓶颈呢,不妨在AutoDL平台试试C++和CUDA编写的<strong>NVIDIA
|
||||
DALI</strong>数据读取加速库吧。在我们的测试中,单核CPU实例的数据读取能力就超过了基于Python的八核心实例,真正做到了为模型训练保驾护航。</p>
|
||||
<p>AutoDL机器均为高性能CPU,其中相对来说更高性能的CPU有:</p>
|
||||
<ol>
|
||||
<li>北京A区 H20-NVLink 用到的 AMD EPYC 9K84 CPU</li>
|
||||
<li>北京B区 4090 用到的 Xeon(R) Gold 6430 CPU</li>
|
||||
<li>内蒙A区 A100 用到的 AMD EPYC 7763 CPU</li>
|
||||
<li>内蒙B区 4090 用到的 Xeon(R) Platinum 8352V、Xeon(R) Platinum 8358P、Xeon(R) Gold 6430 CPU</li>
|
||||
<li>重庆A区 4090D 用到的 Xeon(R) Platinum 8474C、Xeon(R) Platinum 8481C CPU</li>
|
||||
<li>西北B区 4090和4090D 用到的 AMD EPYC 9654 CPU、AMD EPYC 9754 CPU</li>
|
||||
<li>L20专区 L20、H20-NVLink 用到的 Xeon(R) Platinum 8457C CPU</li>
|
||||
</ol>
|
||||
<blockquote>
|
||||
<p>服务器的CPU一般不如桌面CPU的主频高,但是核心数量多。因此您从以前使用桌面CPU切换到服务器CPU上后,需要充分利用多核心的性能,否则无法发挥服务器CPU的性能。如何利用<a
|
||||
href="../perf/">请戳</a></p>
|
||||
</blockquote>
|
||||
<h2 id="gpu_1">二. 选择GPU<a class="headerlink" href="#gpu_1" title="Permanent link">¶</a></h2>
|
||||
<p>AutoDL平台上提供的GPU型号很多。我们按照GPU架构大致分为五类:</p>
|
||||
<ol>
|
||||
<li>NVIDIA Pascal架构的GPU,如TitanXp,GTX 10系列等。
|
||||
这类GPU缺乏低精度的硬件加速能力,但却具备中等的单精度算力。由于价格便宜,适合用来练习训练小模型(如Cifar10)或调试模型代码。</li>
|
||||
<li>NVIDIA Volta/Turing架构的GPU,如GTX 20系列, Tesla V100等。
|
||||
这类GPU搭载专为低精度(int8/float16)计算加速的TensorCore, 但单精度算力相较于上代提升不大。我们建议在实例上启用深度学习框架的混合精度训练来加速模型计算。
|
||||
相较于单精度训练,混合精度训练通常能够提供2倍以上的训练加速。</li>
|
||||
<li>NVIDIA Ampere架构的GPU,如GTX 30系列,Tesla A40/A100等。
|
||||
这类GPU搭载第三代TensorCore。相较于前一代,支持了TensorFloat32格式,可直接加速单精度训练
|
||||
(PyTorch已默认开启)。但我们仍建议使用超高算力的float16半精度训练模型,可获得比上一代GPU更显著的性能提升。</li>
|
||||
<li>寒武纪 MLU 200系列加速卡。
|
||||
暂不支持模型训练。使用该系列加速卡进行模型推理需要量化为int8进行计算。
|
||||
并且需要安装适配寒武纪MLU的深度学习框架。</li>
|
||||
<li>华为 Ascend 系列加速卡。
|
||||
支持模型训练及推理。但需安装MindSpore框架进行计算。</li>
|
||||
</ol>
|
||||
<p>GPU型号的选择并不困难。对于常用的深度学习模型,根据GPU对应精度的算力可大致推算GPU训练模型的性能。AutoDL平台标注并排名了每种型号GPU的算力,方便大家选择适合自己的GPU。</p>
|
||||
<p>GPU的数量选择与训练任务有关。一般我们认为模型的一次训练应当在24小时内完成,这样隔天就能训练改进之后的模型。以下是选择多GPU的一些建议:</p>
|
||||
<ul>
|
||||
<li>1块GPU。适合一些数据集较小的训练任务,如Pascal VOC等。</li>
|
||||
<li>2块GPU。同单块GPU,但是你可以一次跑两组参数或者把Batchsize扩大。</li>
|
||||
<li>4块GPU。适合一些中等数据集的训练任务,如MS COCO等。</li>
|
||||
<li>8块GPU。经典永流传的配置!适合各种训练任务,也非常方便复现论文结果。</li>
|
||||
<li>我要更多!用于训练大参数模型、大规模调参或超快地完成模型训练。</li>
|
||||
</ul>
|
||||
<h2 id="_1">三. 选择内存<a class="headerlink" href="#_1" title="Permanent link">¶</a></h2>
|
||||
<p>内存在充足的情况下一般不影响性能,但是由于AutoDL的实例相比本地电脑对内存的使用有更严格的上限限制(本地电脑内存不足会使用硬盘虚拟内存,影响是速度下降),比如租用的实例分配的内存是64GB,程序在训练时最后将要使用64.1GB,此时超过限制的这一时刻进程会被系统<strong>Kill</strong>导致程序中断,因此如果对内存的容量要求大,请选择分配内存更多的主机或者租用多GPU实例。如果不确定内存的使用,那么可以在实例监控中观察内存使用情况。<img
|
||||
alt="image_20250304112009" src="../gpu.assets/image_20250304112009.png"></p>
|
||||
<h2 id="gpu_2">附GPU型号简介<a class="headerlink" href="#gpu_2" title="Permanent link">¶</a></h2>
|
||||
<div class="md-typeset__scrollwrap">
|
||||
<div class="md-typeset__table">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>型号</th>
|
||||
<th>显存</th>
|
||||
<th>单精(FP32)</th>
|
||||
<th>半精(FP16)</th>
|
||||
<th>详细参数</th>
|
||||
<th>说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Tesla P40</td>
|
||||
<td>24GB</td>
|
||||
<td>11.76 T</td>
|
||||
<td>11.76 T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/tesla-p40.c2878">查看</a></td>
|
||||
<td>比较老的Pascal架构GPU,对于cuda11.x之前且对大显存有需求的算法是非常不错的选择</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TITAN Xp</td>
|
||||
<td>12GB</td>
|
||||
<td>12.15 T</td>
|
||||
<td>12.15 T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/titan-xp.c2948">查看</a></td>
|
||||
<td>比较老的Pascal架构GPU,用作入门比较合适</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1080 Ti</td>
|
||||
<td>11GB</td>
|
||||
<td>11.34 T</td>
|
||||
<td>11.34 T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/geforce-gtx-1080-ti.c2877">查看</a>
|
||||
</td>
|
||||
<td>和TITANXp同时代的卡,同样适合入门,但是11GB的显存偶尔会比较尴尬</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2080Ti</td>
|
||||
<td>11GB</td>
|
||||
<td>13.45 T</td>
|
||||
<td>53.8 T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/geforce-rtx-2080-ti.c3305">查看</a>
|
||||
</td>
|
||||
<td>图灵架构GPU,性能还不错,老一代型号中比较适合做混合精度计算的GPU。性价比高</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>V100</td>
|
||||
<td>16/32GB</td>
|
||||
<td>15.7 T</td>
|
||||
<td>125 T</td>
|
||||
<td><a
|
||||
href="https://www.techpowerup.com/gpu-specs/tesla-v100s-pcie-32-gb.c3467">查看</a>
|
||||
</td>
|
||||
<td>老一代专业计算卡皇,半精性能高适合做混合精度计算</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3060</td>
|
||||
<td>12GB</td>
|
||||
<td>12.74 T</td>
|
||||
<td>约24T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/geforce-rtx-3060.c3682">查看</a>
|
||||
</td>
|
||||
<td>如果1080Ti的显存正好尴尬了,3060是不错的选择,适合新手。需要使用cuda11.x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>A4000</td>
|
||||
<td>16GB</td>
|
||||
<td>19.17 T</td>
|
||||
<td>约76T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/rtx-a4000.c3756">查看</a></td>
|
||||
<td>显存和算力都比较均衡,适合进阶过程使用。需要使用cuda11.x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3080Ti</td>
|
||||
<td>12GB</td>
|
||||
<td>34.10 T</td>
|
||||
<td>约70T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/geforce-rtx-3080-ti.c3735">查看</a>
|
||||
</td>
|
||||
<td>性能钢炮,如果对显存要求不高则是非常合适的选择。需要使用cuda11.x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>A5000</td>
|
||||
<td>24GB</td>
|
||||
<td>27.77T</td>
|
||||
<td>约117T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/rtx-a5000.c3748">查看</a></td>
|
||||
<td>性能钢炮,如果觉得3080Ti的显存不够用A5000是合适的选择,并且半精算力高适合混合精度。需要使用cuda11.x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3090</td>
|
||||
<td>24GB</td>
|
||||
<td>35.58 T</td>
|
||||
<td>约71T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/geforce-rtx-3090.c3622">查看</a>
|
||||
</td>
|
||||
<td>可以看做3080Ti的扩显存版。性能和显存大小都非常够用,适用性非常强,性价比首选。需要使用cuda11.x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>A40</td>
|
||||
<td>48GB</td>
|
||||
<td>37.42 T</td>
|
||||
<td>149.7 T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/a40-pcie.c3700">查看</a></td>
|
||||
<td>可以看做是3090的扩显存版。算力和3090基本持平,因此根据显存大小进行选择。需要使用cuda11.x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>A100 SXM4</td>
|
||||
<td>40/80GB</td>
|
||||
<td>19.5 T</td>
|
||||
<td>312 T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/a100-sxm4-80-gb.c3746">查看</a>
|
||||
</td>
|
||||
<td>新一代专业计算卡皇,除了贵没缺点。显存大,非常适合做半精计算,因为有NVLink加持,多卡并行加速比非常高。需要使用cuda11.x</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4090</td>
|
||||
<td>24G</td>
|
||||
<td>82.58 T</td>
|
||||
<td>165.2 T</td>
|
||||
<td><a href="https://www.techpowerup.com/gpu-specs/geforce-rtx-4090.c3889">查看</a>
|
||||
</td>
|
||||
<td>新一代游戏卡皇,除显存比较小和多机多卡并行效率低的缺点外,性价比非常高</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
54
src/views/document/start.vue
Normal file
54
src/views/document/start.vue
Normal file
@ -0,0 +1,54 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
<h1 id="_1">快速开始<a class="headerlink" href="#_1" title="Permanent link">¶</a></h1>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p>AutoDL实例中的数据(包括环境)在关机后将全部保存,开机后无需再次配置和上传数据。总而言之,实例在数据在,但是连续关机15天实例将被释放。详见<a
|
||||
href="../instance_data/">实例数据保留说明</a>。</p>
|
||||
</blockquote>
|
||||
<h2 id="_2">创建实例<a class="headerlink" href="#_2" title="Permanent link">¶</a></h2>
|
||||
<p>注册后进入控制台,在我的实例菜单下,点击「租用新实例」。</p>
|
||||
<p><img alt="image_20250226144908" src="../quick_start.assets/image_20250226144908.png"></p>
|
||||
<p>在租用实例页面:选择<strong>计费方式</strong>、<strong>地区</strong>、<strong>GPU型号</strong>、<strong>GPU数量</strong>,然后选择合适的<strong>空闲主机</strong>和<strong>镜像</strong>(内置了不同的深度学习框架的基础镜像和社区镜像),最后创建即可。
|
||||
</p>
|
||||
<blockquote>
|
||||
<p>如果你需要更大的硬盘用于存放数据,那么请留意「硬盘」这列「可扩容」大小。数据盘的路径请参考<a href="../env/">文档</a>。</p>
|
||||
</blockquote>
|
||||
<p><img alt="image_20250226145836" src="../quick_start.assets/image_20250226145836.png">
|
||||
<img alt="image_20250306103333" src="../quick_start.assets/image_20250306103333.png">
|
||||
</p>
|
||||
<p>创建完成后等待自动开机,今后主要用到的操作入口见截图中。</p>
|
||||
<blockquote>
|
||||
<p>请注意实例状态显示「运行中」开始计费,如不使用请及时关机停止计费。计费规则详见<a href="../price/">计费说明</a>。</p>
|
||||
</blockquote>
|
||||
<p><img alt="image_20250226153436" src="../quick_start.assets/image_20250226153436.png"></p>
|
||||
<h2 id="_3">上传数据<a class="headerlink" href="#_3" title="Permanent link">¶</a></h2>
|
||||
<p>开机后在这个正在运行中的实例上找到快捷工具:「JupyterLab」,点击打开,在下面的截图中找到上传按钮,即可上传数据。如需上传文件夹或更高级的上传方式等,请查阅<a
|
||||
href="../scp/">上传数据文档</a></p>
|
||||
<p><img alt="image_20250226153633" src="../quick_start.assets/image_20250226153633.png"></p>
|
||||
<h2 id="_4">终端训练<a class="headerlink" href="#_4" title="Permanent link">¶</a></h2>
|
||||
<p>在打开的JupyterLab页面中打开终端。如需使用其他IDE远程开发,请参考<a href="../vscode/">VSCode(推荐)</a>和<a
|
||||
href="../pycharm/">PyCharm</a></p>
|
||||
<p><img alt="image_20250226153713" src="../quick_start.assets/image_20250226153713.png"></p>
|
||||
<p>在终端中执行您的Python命令等完成训练</p>
|
||||
<p><img alt="image_20250226153804" src="../quick_start.assets/image_20250226153804.png"></p>
|
||||
<h2 id="_5">进阶<a class="headerlink" href="#_5" title="Permanent link">¶</a></h2>
|
||||
<ol>
|
||||
<li><a href="../gpu/">如何选择GPU</a></li>
|
||||
<li><a href="../base_config/">配置环境</a></li>
|
||||
<li><a href="../filezilla/">FileZilla上传数据</a></li>
|
||||
<li><a href="../netdisk/">公网网盘(强烈推荐)</a></li>
|
||||
<li><a href="../vscode/">VSCode</a></li>
|
||||
<li><a href="../pycharm/">PyCharm</a></li>
|
||||
<li><a href="../daemon/">开守护进程</a></li>
|
||||
<li><a href="../git/">Git克隆代码</a></li>
|
||||
<li><a href="../linux/">Linux基础</a></li>
|
||||
<li><a href="../qa/">常见问题</a></li>
|
||||
</ol>
|
||||
<p><br></p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
59
src/views/document/study.vue
Normal file
59
src/views/document/study.vue
Normal file
@ -0,0 +1,59 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
<h1 id="_1">学术资源加速<a class="headerlink" href="#_1" title="Permanent link">¶</a></h1>
|
||||
<h2 id="_2">公开服务<a class="headerlink" href="#_2" title="Permanent link">¶</a></h2>
|
||||
<p>点击访问网址,站点内有具体教程。</p>
|
||||
<p>Github: <a href="https://ghproxy.link/" target="_blank">https://ghproxy.link/</a>
|
||||
(点击后查看当前可用的域名地址,然后点击地址跳转查看文档)</p>
|
||||
<p>HuggingFace镜像站:<a href="https://hf-mirror.com/" target="_blank">https://hf-mirror.com/</a></p>
|
||||
<h2 id="autodl">AutoDL内置服务<a class="headerlink" href="#autodl" title="Permanent link">¶</a></h2>
|
||||
<blockquote>
|
||||
<p>声明:限于学术使用github和huggingface网络速度慢的问题,以下为方便用户学术用途使用相关资源提供的加速代理,不承诺稳定性保证。此外如遭遇恶意攻击等,将随时停止该加速服务</p>
|
||||
</blockquote>
|
||||
<p>以下为可以加速访问的学术资源地址:</p>
|
||||
<ul>
|
||||
<li>github.com</li>
|
||||
<li>githubusercontent.com</li>
|
||||
<li>githubassets.com</li>
|
||||
<li>huggingface.co</li>
|
||||
</ul>
|
||||
<p>如果在终端中使用:</p>
|
||||
<div class="highlight">
|
||||
<pre><span></span><code>source /etc/network_turbo
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>如果是在Notebook中使用:</p>
|
||||
<div class="highlight">
|
||||
<pre><span></span><code tabindex="0">import subprocess
|
||||
import os
|
||||
|
||||
result = subprocess.run('bash -c "source /etc/network_turbo && env | grep proxy"', shell=True, capture_output=True, text=True)
|
||||
output = result.stdout
|
||||
for line in output.splitlines():
|
||||
if '=' in line:
|
||||
var, value = line.split('=', 1)
|
||||
os.environ[var] = value
|
||||
</code></pre>
|
||||
</div>
|
||||
<p><strong>取消学术加速</strong>,如果不再需要建议关闭学术加速,因为该加速可能对正常网络造成一定影响。</p>
|
||||
<div class="highlight">
|
||||
<pre><span></span><code>unset http_proxy && unset https_proxy
|
||||
</code></pre>
|
||||
</div>
|
||||
<h3 id="_3">速度对比<a class="headerlink" href="#_3" title="Permanent link">¶</a></h3>
|
||||
<p>未使用加速:</p>
|
||||
<p><img alt="image-20220902184957292" src="../Untitled.assets/image-20220902184957292.png"></p>
|
||||
<p>使用加速:</p>
|
||||
<p><img alt="image-20220902185038755" src="../Untitled.assets/image-20220902185038755.png"></p>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
81
src/views/document/summary.vue
Normal file
81
src/views/document/summary.vue
Normal file
@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="_1">概述<a class="headerlink" href="#_1" title="Permanent link">¶</a></h1>
|
||||
<hr>
|
||||
<blockquote>
|
||||
<p>实例的系统盘与数据盘一般为本地SSD磁盘,少量为云盘,本地数据盘性能好但是无冗余副本,受限于本地磁盘的固有寿命,有概率出现故障,重要的数据请定期备份到<a href="../fs/">文件存储</a>或本地,AutoDL对于此类存储产品不提供可靠性承诺与服务。</p>
|
||||
</blockquote>
|
||||
<h2 id="_2">容器实例是什么?<a class="headerlink" href="#_2" title="Permanent link">¶</a></h2>
|
||||
<p>容器实例是使用Docker技术进行资源划分与隔离的Container,拥有相比虚机实例性能损失少,效率高等优点。</p>
|
||||
<blockquote>
|
||||
<p>容器实例内不支持使用Docker,如需使用Docker请联系客服租用裸金属服务器。(裸金属服务器整机包月起租。)</p>
|
||||
</blockquote>
|
||||
<h2 id="gpucpu">实例GPU/CPU/内存的分配<a class="headerlink" href="#gpucpu" title="Permanent link">¶</a></h2>
|
||||
<p>在AutoDL租用GPU的方式为:选择物理主机,然后在该物理主机上创建有N块GPU卡的实例。而内存和CPU配置的分配逻辑为按GPU的数量成倍数分配,比如在主机上看到的CPU和内存分配规则为:32GB/GPU、8核/GPU,那么租用1块GPU时实例的配置为<code>1卡GPU; 8核CPU; 32GB内存</code>,租用2块GPU时实例的配置为<code>2卡GPU; 16核CPU; 64GB内存</code>,依此类推。因此在您租用实例时,根据您的需要选择合适的物理主机,然后选择需要的GPU数量。</p>
|
||||
<h2 id="_3">实例中的目录<a class="headerlink" href="#_3" title="Permanent link">¶</a></h2>
|
||||
<p>在实例中查看磁盘使用情况请在终端中执行:<code>source /root/.bashrc</code></p>
|
||||
<div class="md-typeset__scrollwrap"><div class="md-typeset__table"><table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>名称</th>
|
||||
<th>路径</th>
|
||||
<th>大小</th>
|
||||
<th>性能</th>
|
||||
<th>说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>系统盘</td>
|
||||
<td>根目录/ 及其以下所有路径<br>(以下特殊路径除外)</td>
|
||||
<td>30GB</td>
|
||||
<td>本地盘<br>快</td>
|
||||
<td>实例关机数据不会丢失。一般系统依赖以及Python安装包都会安装在系统盘下,也可以存放代码等小容量的数据;<br>在<a href="../migrate_instance_2/">迁移实例</a>时会进行迁移,<a href="../save_image/">保存镜像</a>时会保存至镜像中。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>数据盘</td>
|
||||
<td>/root/autodl-tmp</td>
|
||||
<td>50GB起<br>可扩容</td>
|
||||
<td>本地盘<br>快</td>
|
||||
<td>实例关机数据不会丢失。可存放读写IO要求高的数据。但<strong>不能</strong>保存至镜像中。<br>如果需要将数据盘的数据进行迁移,请参考<a href="../migrate_instance_2/">迁移实例(同地区)</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>AutoDL文件存储</td>
|
||||
<td>/root/autodl-fs</td>
|
||||
<td>免费20GB<br>超出容量计费</td>
|
||||
<td>网络盘<br>一般</td>
|
||||
<td>可以实现同一地区不同实例间的文件同步共享。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>公共数据</td>
|
||||
<td>/root/autodl-pub</td>
|
||||
<td>只读</td>
|
||||
<td>网络盘<br>慢</td>
|
||||
<td>平台常用公共数据、公共模型的存放目录。只读、不支持写文件</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div></div>
|
||||
<p><strong>系统盘再说明</strong></p>
|
||||
<p>Linux操作系统中,几乎所有的东西都以文件夹或文件形式存在,这些文件夹/文件有一个共同的根目录<code>/</code>。如果我们在某块磁盘A上(无其他分区)安装了Linux操作系统后,那么根目录下将会有此类默认的系统目录:</p>
|
||||
<div class="highlight"><pre><span></span><code>$ ls /
|
||||
bin etc lib mnt proc run tmp var boot dev home root srv sys usr
|
||||
</code></pre></div>
|
||||
<p>在默认状态下向无论哪个目录下写入文件,最终都是写入了磁盘A,AutoDL实例中的系统盘指的就是安装了系统的这块硬盘A,在根目录<code>/</code>下的任何一个地方写入文件都是写入了系统盘。但是有例外,比如还有一块全新的硬盘B,如果我们想在Linux系统下使用硬盘B,那么可以将这个硬盘设备挂载到某个目录(假设挂载的目录就是/root/autodl-tmp),此时如果向/root/autodl-tmp这个目录写入文件夹/文件,意味着是向硬盘B中写入,而不再是向硬盘A写入。到这里,您应该了解了AutoDL系统盘和数据盘的界限在哪里,如在AutoDL实例中安装的系统软件以及用内置的miniconda安装的python依赖,都是安装在了系统盘中。</p>
|
||||
<h2 id="jupyterlab">JupyterLab的工作目录<a class="headerlink" href="#jupyterlab" title="Permanent link">¶</a></h2>
|
||||
<p>JupyerLab的工作路径是<code>/root</code>,数据盘、网盘、公共数据目录都在<code>/root</code>目录下,因此进入JupyterLab后可直接看到这些平台默认创建的目录。如需查看根目录<code>/</code>,可以进入终端使用命令行操作。</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
30
src/views/document/video.vue
Normal file
30
src/views/document/video.vue
Normal file
@ -0,0 +1,30 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
<h1 id="_1">视频教程<a class="headerlink" href="#_1" title="Permanent link">¶</a></h1>
|
||||
<ol>
|
||||
<li>AutoDL基本使用介绍:<a href="https://www.bilibili.com/video/BV14a411Y753?spm_id_from=333.999.0.0"
|
||||
target="_blank">观看B站视频</a></li>
|
||||
<li>租用GPU与实例计费:<a href="https://www.bilibili.com/video/BV1MY411u7ia?spm_id_from=333.999.0.0"
|
||||
target="_blank">观看B站视频</a></li>
|
||||
<li>使用SSH登录实例:<a href="https://www.bilibili.com/video/BV1mv4y1g7ik" target="_blank">观看B站视频</a></li>
|
||||
<li>实例的更多操作:<a href="https://www.bilibili.com/video/BV17A4y1d7Kw?spm_id_from=333.999.0.0"
|
||||
target="_blank">观看B站视频</a></li>
|
||||
<li>PyCharm配置远程开发:<a href="https://www.bilibili.com/video/BV1m34y1h7kN?spm_id_from=333.999.0.0"
|
||||
target="_blank">观看B站视频</a></li>
|
||||
<li>VSCode配置远程开发:<a href="https://www.bilibili.com/video/BV12a411f77Q?spm_id_from=333.999.0.0"
|
||||
target="_blank">观看B站视频</a></li>
|
||||
<li>配置环境:<a href="https://www.bilibili.com/video/BV1N94y1m7r5?spm_id_from=333.999.0.0"
|
||||
target="_blank">观看B站视频</a></li>
|
||||
<li>SSH隧道使用:<a href="https://www.bilibili.com/video/BV1Pk4y1w7Pk/?spm_id_from=333.999.0.0"
|
||||
target="_blank">观看B站视频</a></li>
|
||||
<li>私有云部署:<a href="https://www.bilibili.com/video/BV1jN411t7qb/?spm_id_from=333.999.0.0"
|
||||
target="_blank">观看B站视频</a></li>
|
||||
<li>常见问题解决:<a href="https://www.bilibili.com/video/BV1YW4y167Kv" target="_blank">观看B站视频</a></li>
|
||||
<li>其他视频陆续更新中~</li>
|
||||
</ol>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -74,7 +74,7 @@ watch(() => route.path, () => {
|
||||
if (current.value == '/home') {
|
||||
isHome.value = true
|
||||
} else {
|
||||
isHome.value = false
|
||||
isHome.value = true
|
||||
}
|
||||
})
|
||||
|
||||
@ -88,12 +88,16 @@ const rightRoutes = ref([
|
||||
{ key: '/document', label: '用户文档' },
|
||||
{ key: '/admin/home', label: '控制台' }
|
||||
])
|
||||
|
||||
// 点击菜单跳转
|
||||
const handleMenuClick = (key) => {
|
||||
// key 如 "/admin" → 拼成 "/layout/admin"
|
||||
const fullPath = `/layout${key}`
|
||||
router.push(fullPath)
|
||||
if (key === '/document') {
|
||||
|
||||
window.open(key, '_blank');
|
||||
} else {
|
||||
// 否则按照正常方式在当前标签页跳转
|
||||
const fullPath = `/layout${key}`;
|
||||
router.push(fullPath);
|
||||
}
|
||||
}
|
||||
const logout = () => {
|
||||
router.replace('/login')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user