{"version":3,"file":"parser-C7h1Ho95.js","sources":["../../src/views/runs/environment/_components/icons/LinuxIcon.vue","../../src/views/runs/environment/_components/icons/WindowsIcon.vue","../../src/views/runs/environment/_components/icons/AppleIcon.vue","../../src/views/runs/environment/_components/icons/PythonIcon.vue","../../src/views/runs/environment/_components/icons/GitIcon.vue","../../src/views/runs/environment/_components/icons/IntelIcon.vue","../../src/views/runs/environment/_components/icons/AmdIcon.vue","../../src/views/runs/environment/_components/icons/NvidiaIcon.vue","../../src/views/runs/environment/_components/icons/AscendIcon.vue","../../src/views/runs/environment/_components/icons/KunIcon.vue","../../src/views/runs/environment/_components/parser.ts"],"sourcesContent":["\n \n\n\n\n","\n \n\n\n\n","\n \n\n\n\n","\n \n\n\n\n","\n \n\n\n\n","\n \n\n\n\n","\n \n\n\n\n","\n \n\n\n\n","\n \n\n\n\n","\n \n\n","import type { Experiment } from '@/types/exp'\nimport { type Component, computed, type ComputedRef } from 'vue'\nimport type { AppleSOC, AscendNPU, AscendNPUInfo, Coop, CPU, ExpMetadata, NvidiaGPU } from '@/types/exp-metadata'\nimport SwanLab from '@/components/icons/SwanLab.vue'\nimport LinuxIcon from '@/views/runs/environment/_components/icons/LinuxIcon.vue'\nimport WindowsIcon from '@/views/runs/environment/_components/icons/WindowsIcon.vue'\nimport AppleIcon from '@/views/runs/environment/_components/icons/AppleIcon.vue'\nimport PythonIcon from '@/views/runs/environment/_components/icons/PythonIcon.vue'\nimport GitIcon from '@/views/runs/environment/_components/icons/GitIcon.vue'\nimport { useExpStore } from '@/stores/exp'\nimport IntelIcon from '@/views/runs/environment/_components/icons/IntelIcon.vue'\nimport AmdIcon from '@/views/runs/environment/_components/icons/AmdIcon.vue'\nimport NvidiaIcon from '@/views/runs/environment/_components/icons/NvidiaIcon.vue'\nimport AscendIcon from '@/views/runs/environment/_components/icons/AscendIcon.vue'\nimport KunIcon from '@/views/runs/environment/_components/icons/KunIcon.vue'\nimport { getDuration } from '@/lib/formatter'\n\ninterface OptionalIcon {\n icon: Component | null\n}\n\nexport function parseOverviewInfo(exp: Experiment): OverviewInfo {\n return {\n swanLab: createSwanLab(exp),\n system: createSystem(exp),\n env: createEnv(exp),\n git: createGit(exp)\n }\n}\n\nexport interface OverviewInfo {\n swanLab?: SwanLab\n system?: System\n env?: Env\n git?: Git\n}\nfunction filterEmpty(obj: T, icon: OptionalIcon['icon']): T | undefined {\n if (!obj) return\n if (Object.values(obj).some((v) => v)) {\n return {\n ...obj,\n icon\n }\n }\n}\n\nfunction createSwanLab(exp: Experiment): SwanLab | undefined {\n const swanLab = exp.profile.metadata?.swanlab\n return {\n name: exp.name,\n description: exp.description || '',\n createdAt: new Date(exp.createdAt).toLocaleString(),\n runTime: computed(() => {\n if (exp.finishedAt) return getDuration(exp) as string\n return undefined\n }),\n logdir: swanLab?.logdir,\n version: swanLab?.version,\n icon: SwanLab\n }\n}\n\ninterface SwanLab extends OptionalIcon {\n // 实验名\n name: string\n // 实验描述\n description: string\n // 实验创建时间\n createdAt: string\n // 实验运行时间\n runTime: ComputedRef\n // 日志保存位置\n logdir?: string\n // SwanLab版本\n version?: string\n}\n\nfunction createSystem(exp: Experiment): System | undefined {\n const metadata = exp.profile.metadata\n const os = metadata?.os\n let icon = null\n if (os?.toLowerCase().includes('linux')) icon = LinuxIcon\n if (os?.toLowerCase().includes('windows')) icon = WindowsIcon\n if (os?.toLowerCase().includes('mac')) icon = AppleIcon\n const data = {\n hostname: metadata?.hostname,\n os,\n pid: metadata?.pid,\n icon: null\n }\n return filterEmpty(data, icon)\n}\n\ninterface System extends OptionalIcon {\n // 主机名\n hostname?: string\n // 操作系统\n os?: string\n // pid\n pid?: number\n}\n\nfunction createEnv(exp: Experiment): Env | undefined {\n const metadata = exp.profile.metadata\n const env = {\n pythonVersion: metadata?.python,\n pythonVerbose: metadata?.python_verbose,\n pythonPath: metadata?.executable,\n cwd: metadata?.cwd,\n command: metadata?.command,\n icon: null\n }\n return filterEmpty(env, PythonIcon)\n}\n\ninterface Env extends OptionalIcon {\n pythonVersion?: string\n pythonVerbose?: string\n pythonPath?: string\n cwd?: string\n command?: string\n}\n\nfunction createGit(exp: Experiment): Git | undefined {\n const metadata = exp.profile.metadata\n const git = {\n repo: metadata?.git_remote,\n branch: metadata?.git_info?.[0],\n commit: metadata?.git_info?.[1],\n icon: null\n }\n return filterEmpty(git, GitIcon)\n}\n\ninterface Git extends OptionalIcon {\n repo?: string\n branch?: string\n commit?: string\n}\n\n// 解析合作信息\nexport function parseCoopInfo(): Coop | undefined {\n const { exp } = useExpStore()\n return exp?.profile.metadata?.swanlab?._coop\n}\n\nexport function parseHardwareInfo(metadata: ExpMetadata | null): HardwareInfo {\n if (!metadata) return {}\n const oldGPU = metadata.gpu as NvidiaGPU\n\n return {\n others: createOthers(metadata),\n cpu: createCPU(metadata),\n nvidia: createNvidia(metadata.gpu as { nvidia?: NvidiaGPU }),\n apple: createApple(metadata),\n ascend: createAscend(metadata),\n // 我们认为存在types字段就是老版本的数据\n gpu: oldGPU?.type ? createGPU(oldGPU, null) : undefined\n }\n}\n\nexport interface HardwareInfo {\n cpu?: ParsedCPU\n // nvidia gpu信息\n nvidia?: ParsedNvidiaGPU\n // apple soc信息\n apple?: ParsedAppleSOC\n // 昇腾npu信息\n ascend?: ParsedAscendNPU\n // 其他信息\n others?: { memory: string }\n // 老版本的gpu信息,此信息如果存在说明是老版本的数据,上面的信息作废\n gpu?: ParsedGPU\n}\ntype ParsedCPU = CPU & OptionalIcon\n\ntype ParsedGPU = NvidiaGPU & OptionalIcon & { gpus: [`GPU ${number}`, { memory: string; type: string }][] }\n\ntype ParsedNvidiaGPU = ParsedGPU\n\ntype ParsedAppleSOC = AppleSOC & OptionalIcon\n\ntype ParsedAscendNPU = { driver: AscendNPU['driver']; npu: AscendNPUInfo[]; cann: AscendNPU['cann'] } & OptionalIcon\n\n// ---------------------------------- 其他信息 ----------------------------------\n\nfunction createOthers(metadata: ExpMetadata): HardwareInfo['others'] | undefined {\n const memory = Number(metadata.memory)\n if (memory) return { memory: `${memory} GB` }\n}\n\n// ---------------------------------- CPU ----------------------------------\n\nfunction createCPU(metadata: ExpMetadata): ParsedCPU | undefined {\n const cpu: CPU & OptionalIcon = {\n brand: metadata.cpu?.brand,\n cores: metadata.cpu?.cores,\n icon: null\n }\n const icon = getCPUIcon(metadata.cpu?.brand)\n return filterEmpty(cpu, icon)\n}\n\nfunction getCPUIcon(name?: string): Component | null {\n if (!name) return null\n if (name.toLowerCase().includes('intel')) return IntelIcon\n if (name.toLowerCase().includes('amd')) return AmdIcon\n if (name.toLowerCase().includes('kunpeng')) return KunIcon\n\n // 适配之前的数据,之前把苹果的cpu也写入了cpu字段\n if (name.toLowerCase().includes('apple')) return AppleIcon\n\n return null\n}\n\n// ---------------------------------- 英伟达 ----------------------------------\n\nfunction createNvidia(gpu: { nvidia?: NvidiaGPU }): ParsedNvidiaGPU | undefined {\n const nvidia = gpu?.nvidia\n if (!nvidia) return\n const icon = NvidiaIcon\n return createGPU(nvidia || null, icon)\n}\n\nfunction createApple(metadata: ExpMetadata): ParsedAppleSOC | undefined {\n const apple = metadata.soc?.apple\n if (!apple) return\n const icon = AppleIcon\n return { icon, ...apple, memory: `${apple.memory}GB` }\n}\n\n// ---------------------------------- 昇腾 ----------------------------------\n\nfunction createAscend(metadata: ExpMetadata): ParsedAscendNPU | undefined {\n const ascend = metadata.npu?.ascend\n if (!ascend) return\n const icon = AscendIcon\n const arr: AscendNPUInfo[] = []\n if (ascend.npu) {\n for (const [, npu] of Object.entries(ascend.npu)) {\n for (const [, info] of Object.entries(npu)) {\n arr.push({\n ...info,\n id: 'NPU' + info.id,\n usage: {\n hbm: info.usage.hbm + ' GB'\n }\n })\n }\n }\n }\n return { icon, npu: arr, cann: ascend['cann'], driver: ascend['driver'] }\n}\n\n// ---------------------------------------------- 早期GPU数据结构 ----------------------------------------------\n\nfunction createGPU(gpu: NvidiaGPU | null, icon: OptionalIcon['icon']): ParsedGPU | undefined {\n if (!gpu) return\n const gpus: ParsedGPU['gpus'] = []\n const { type, memory } = gpu\n for (let i = 0; i < type.length; i++) {\n gpus[i] = [`GPU ${i}`, { memory: `${memory[i]}GB`, type: type[i] }]\n }\n if (gpus.length === 0) return\n return {\n icon,\n gpus,\n ...gpu\n }\n}\n"],"names":["_hoisted_1","xmlns","version","_ctx","_cache","_openBlock","_createElementBlock","class","role","viewBox","x","y","width","height","id","_createElementVNode","style","stroke","fill","d","parseOverviewInfo","exp","swanLab","createSwanLab","system","createSystem","env","createEnv","git","createGit","filterEmpty","obj","icon","Object","values","some","v","_a","profile","metadata","swanlab","name","description","createdAt","Date","toLocaleString","runTime","computed","finishedAt","getDuration","logdir","SwanLab","os","toLowerCase","includes","LinuxIcon","WindowsIcon","AppleIcon","hostname","pid","pythonVersion","python","pythonVerbose","python_verbose","pythonPath","executable","cwd","command","PythonIcon","repo","git_remote","branch","git_info","commit","_b","GitIcon","parseCoopInfo","useExpStore","_coop","parseHardwareInfo","oldGPU","gpu","others","createOthers","cpu","createCPU","nvidia","createNvidia","apple","createApple","ascend","createAscend","type","createGPU","memory","Number","brand","cores","_c","IntelIcon","AmdIcon","KunIcon","NvidiaIcon","soc","npu","AscendIcon","arr","entries","info","push","usage","hbm","cann","driver","gpus","i","length"],"mappings":"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"}