| @@ -832,6 +832,7 @@ modelarts.notebook=Debug Task | |||||
| modelarts.train_job=Train Task | modelarts.train_job=Train Task | ||||
| modelarts.train_job.new_debug= New Debug Task | modelarts.train_job.new_debug= New Debug Task | ||||
| modelarts.train_job.new_train=New Train Task | modelarts.train_job.new_train=New Train Task | ||||
| modelarts.train_job.new_infer=New Inference Task | |||||
| modelarts.train_job.config=Configuration information | modelarts.train_job.config=Configuration information | ||||
| modelarts.train_job.new=New train Task | modelarts.train_job.new=New train Task | ||||
| modelarts.train_job.new_place=The description should not exceed 256 characters | modelarts.train_job.new_place=The description should not exceed 256 characters | ||||
| @@ -838,6 +838,7 @@ modelarts.notebook=调试任务 | |||||
| modelarts.train_job=训练任务 | modelarts.train_job=训练任务 | ||||
| modelarts.train_job.new_debug=新建调试任务 | modelarts.train_job.new_debug=新建调试任务 | ||||
| modelarts.train_job.new_train=新建训练任务 | modelarts.train_job.new_train=新建训练任务 | ||||
| modelarts.train_job.new_infer=新建推理任务 | |||||
| modelarts.train_job.config=配置信息 | modelarts.train_job.config=配置信息 | ||||
| modelarts.train_job.new=新建训练任务 | modelarts.train_job.new=新建训练任务 | ||||
| modelarts.train_job.new_place=描述字数不超过256个字符 | modelarts.train_job.new_place=描述字数不超过256个字符 | ||||
| @@ -39,9 +39,9 @@ | |||||
| </div> | </div> | ||||
| <div class="column right aligned"> | <div class="column right aligned"> | ||||
| {{if .Permission.CanWrite $.UnitTypeCloudBrain}} | {{if .Permission.CanWrite $.UnitTypeCloudBrain}} | ||||
| <a class="ui green button" href="{{.RepoLink}}/modelarts/inference-job/create">{{$.i18n.Tr "repo.modelarts.train_job.new_train"}}</a> | |||||
| <a class="ui green button" href="{{.RepoLink}}/modelarts/inference-job/create">{{$.i18n.Tr "repo.modelarts.train_job.new_infer"}}</a> | |||||
| {{else}} | {{else}} | ||||
| <a class="ui disabled button" >{{$.i18n.Tr "repo.modelarts.train_job.new_train"}}</a> | |||||
| <a class="ui disabled button" >{{$.i18n.Tr "repo.modelarts.train_job.new_infer"}}</a> | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -156,7 +156,7 @@ | |||||
| <!-- 下载 --> | <!-- 下载 --> | ||||
| <div class="ui compact buttons"> | <div class="ui compact buttons"> | ||||
| {{$.CsrfTokenHtml}} | {{$.CsrfTokenHtml}} | ||||
| {{if .CanDel}} | |||||
| {{if $.canDownload}} | |||||
| <a style="padding: 0.5rem 1rem;margin-left:0.2rem" id="model-download-{{.JobID}}" href="{{$.RepoLink}}/modelarts/inference-job/{{.JobID}}/downloadall?version_name={{.VersionName}}" class="ui basic blue button" style="border-radius: .28571429rem;"> | <a style="padding: 0.5rem 1rem;margin-left:0.2rem" id="model-download-{{.JobID}}" href="{{$.RepoLink}}/modelarts/inference-job/{{.JobID}}/downloadall?version_name={{.VersionName}}" class="ui basic blue button" style="border-radius: .28571429rem;"> | ||||
| {{$.i18n.Tr "repo.download"}} | {{$.i18n.Tr "repo.download"}} | ||||
| </a> | </a> | ||||
| @@ -261,7 +261,7 @@ function deleteVersion(version_name,jobID){ | |||||
| }); | }); | ||||
| } | } | ||||
| function stopVersion(version_name,jobID){ | function stopVersion(version_name,jobID){ | ||||
| const url = '/api/v1/repos/{{$.RepoRelPath}}/modelarts//inference-job/'+jobID+'/stop_version' | |||||
| const url = '/api/v1/repos/{{$.RepoRelPath}}/modelarts/inference-job/'+jobID+'/stop_version' | |||||
| $.post(url,{version_name:version_name},(data)=>{ | $.post(url,{version_name:version_name},(data)=>{ | ||||
| if(data.StatusOK===0){ | if(data.StatusOK===0){ | ||||
| $('#'+version_name+'-stop').removeClass('blue') | $('#'+version_name+'-stop').removeClass('blue') | ||||
| @@ -97,8 +97,14 @@ | |||||
| <div class="required eight wide field"> | <div class="required eight wide field"> | ||||
| <label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.modelarts.infer_job.select_model"}} </label> | <label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.modelarts.infer_job.select_model"}} </label> | ||||
| <div class="ui fluid search selection dropdown loading" id="select_model"> | <div class="ui fluid search selection dropdown loading" id="select_model"> | ||||
| {{if $.ckpt_name}} | |||||
| <input type="hidden" name="model_name" value="{{$.model_name}}" required> | |||||
| <div class="text">{{$.model_name}}</div> | |||||
| {{else}} | |||||
| <input type="hidden" name="model_name" required> | <input type="hidden" name="model_name" required> | ||||
| <div class="default text">选择项目下的模型</div> | <div class="default text">选择项目下的模型</div> | ||||
| {{end}} | |||||
| <i class="dropdown icon"></i> | <i class="dropdown icon"></i> | ||||
| <div class="menu" id="model_name"> | <div class="menu" id="model_name"> | ||||
| </div> | </div> | ||||
| @@ -107,8 +113,13 @@ | |||||
| </div> | </div> | ||||
| <div class="three wide field"> | <div class="three wide field"> | ||||
| <div class="ui fluid search selection dropdown" id="select_model_version"> | <div class="ui fluid search selection dropdown" id="select_model_version"> | ||||
| {{if $.ckpt_name}} | |||||
| <input type="hidden" name="train_url" value="{{$.model_version}}" required> | |||||
| <div class="text">{{$.model_version}}</div> | |||||
| {{else}} | |||||
| <input type="hidden" name="train_url" required> | <input type="hidden" name="train_url" required> | ||||
| <div class="default text">选择版本</div> | <div class="default text">选择版本</div> | ||||
| {{end}} | |||||
| <i class="dropdown icon"></i> | <i class="dropdown icon"></i> | ||||
| <div class="menu" id="model_name_version"> | <div class="menu" id="model_name_version"> | ||||
| </div> | </div> | ||||
| @@ -117,8 +128,13 @@ | |||||
| </div> | </div> | ||||
| <div class="five wide field"> | <div class="five wide field"> | ||||
| <div class="ui fluid search selection dropdown" id="select_model_checkpoint"> | <div class="ui fluid search selection dropdown" id="select_model_checkpoint"> | ||||
| {{if $.ckpt_name}} | |||||
| <input type="hidden" name="ckpt_name" value="{{$.ckpt_name}}" required> | |||||
| <div class="text">{{$.ckpt_name}}</div> | |||||
| {{else}} | |||||
| <input type="hidden" name="ckpt_name" required> | <input type="hidden" name="ckpt_name" required> | ||||
| <div class="default text">选择模型.ckpt文件</div> | <div class="default text">选择模型.ckpt文件</div> | ||||
| {{end}} | |||||
| <i class="dropdown icon"></i> | <i class="dropdown icon"></i> | ||||
| <div class="menu" id="model_checkpoint"> | <div class="menu" id="model_checkpoint"> | ||||
| </div> | </div> | ||||
| @@ -414,8 +430,115 @@ | |||||
| $("input#ai_flaver_name").val(name2) | $("input#ai_flaver_name").val(name2) | ||||
| } | } | ||||
| $('.ui.form') | |||||
| .form({ | |||||
| on: 'blur', | |||||
| inline:true, | |||||
| fields: { | |||||
| boot_file: { | |||||
| identifier : 'boot_file', | |||||
| rules: [ | |||||
| { | |||||
| type: 'regExp[/.+\.py$/g]', | |||||
| prompt : '启动文件必须为.py结尾' | |||||
| } | |||||
| ] | |||||
| }, | |||||
| job_name:{ | |||||
| identifier : 'job_name', | |||||
| rules: [ | |||||
| { | |||||
| type: 'regExp[/^[a-zA-Z0-9-_]{1,36}$/]', | |||||
| prompt : '只包含大小写字母、数字、_和-,最长36个字符。' | |||||
| } | |||||
| ] | |||||
| }, | |||||
| attachment:{ | |||||
| identifier : 'attachment', | |||||
| rules: [ | |||||
| { | |||||
| type: 'empty', | |||||
| prompt : '选择一个数据集' | |||||
| } | |||||
| ] | |||||
| }, | |||||
| work_server_number: { | |||||
| identifier : 'work_server_number', | |||||
| rules: [ | |||||
| { | |||||
| type : 'integer[1..25]', | |||||
| prompt : '计算节点需要在1-25之间,请您键入正确的值' | |||||
| } | |||||
| ] | |||||
| } | |||||
| }, | |||||
| }) | |||||
| function validate(){ | |||||
| $('.ui.form') | |||||
| .form({ | |||||
| on: 'blur', | |||||
| inline:true, | |||||
| fields: { | |||||
| boot_file: { | |||||
| identifier : 'boot_file', | |||||
| rules: [ | |||||
| { | |||||
| type: 'regExp[/.+\.py$/g]', | |||||
| prompt : '启动文件必须为.py结尾' | |||||
| } | |||||
| ] | |||||
| }, | |||||
| job_name:{ | |||||
| identifier : 'job_name', | |||||
| rules: [ | |||||
| { | |||||
| type: 'regExp[/^[a-zA-Z0-9-_]{1,36}$/]', | |||||
| prompt : '只包含大小写字母、数字、_和-,最长36个字符。' | |||||
| } | |||||
| ] | |||||
| }, | |||||
| attachment:{ | |||||
| identifier : 'attachment', | |||||
| rules: [ | |||||
| { | |||||
| type: 'empty', | |||||
| prompt : '选择一个数据集' | |||||
| } | |||||
| ] | |||||
| }, | |||||
| work_server_number: { | |||||
| identifier : 'work_server_number', | |||||
| rules: [ | |||||
| { | |||||
| type : 'integer[1..25]', | |||||
| prompt : '计算节点需要在1-25之间,请您键入正确的值' | |||||
| } | |||||
| ] | |||||
| } | |||||
| }, | |||||
| onSuccess: function(){ | |||||
| // $('.ui.page.dimmer').dimmer('show') | |||||
| document.getElementById("mask").style.display = "block" | |||||
| }, | |||||
| onFailure: function(e){ | |||||
| return false; | |||||
| } | |||||
| }) | |||||
| } | |||||
| document.onreadystatechange = function() { | |||||
| if (document.readyState === "complete") { | |||||
| document.getElementById("mask").style.display = "none" | |||||
| } | |||||
| } | |||||
| $('.ui.create_train_job.green.button').click(function(e) { | $('.ui.create_train_job.green.button').click(function(e) { | ||||
| send_run_para() | send_run_para() | ||||
| get_name() | get_name() | ||||
| validate() | |||||
| }) | }) | ||||
| </script> | </script> | ||||
| @@ -171,14 +171,14 @@ td, th { | |||||
| </a> | </a> | ||||
| <div class="divider"> / </div> | <div class="divider"> / </div> | ||||
| <a class="section" href="{{$.RepoLink}}/modelarts/inference-job"> | <a class="section" href="{{$.RepoLink}}/modelarts/inference-job"> | ||||
| {{$.i18n.Tr "repo.modelarts.train_job"}} | |||||
| {{$.i18n.Tr "repo.modelarts.infer_job"}} | |||||
| </a> | </a> | ||||
| <div class="divider"> / </div> | <div class="divider"> / </div> | ||||
| <div class="active section">{{.jobName}}</div> | <div class="active section">{{.jobName}}</div> | ||||
| </div> | </div> | ||||
| </h4> | </h4> | ||||
| {{with .task}} | {{with .task}} | ||||
| <div class="content-pad"> | |||||
| <div class="content-pad" style="border: 1px solid #e2e2e2;margin-top: 24px;padding: 20px 60px 40px 60px;"> | |||||
| <div class="ui pointing secondary menu" style="border-bottom: 1px solid rgba(34,36,38,.15);"> | <div class="ui pointing secondary menu" style="border-bottom: 1px solid rgba(34,36,38,.15);"> | ||||
| <a class="active item" data-tab="first">{{$.i18n.Tr "repo.modelarts.train_job.config"}}</a> | <a class="active item" data-tab="first">{{$.i18n.Tr "repo.modelarts.train_job.config"}}</a> | ||||
| @@ -254,8 +254,11 @@ td, th { | |||||
| <td class="ti-text-form-content"> | <td class="ti-text-form-content"> | ||||
| <div class="text-span text-span-w" id="{{.VersionName}}-labels"> | <div class="text-span text-span-w" id="{{.VersionName}}-labels"> | ||||
| {{if .LabelName}} | {{if .LabelName}} | ||||
| <span>{{.LabelName}}</span> | |||||
| {{range $.labelName}} | |||||
| <a class="ui label" title="{{.}}">{{.}}</a> | |||||
| {{end}} | |||||
| {{else}} | {{else}} | ||||
| <span>--</span> | <span>--</span> | ||||
| {{end}} | {{end}} | ||||
| @@ -285,7 +288,7 @@ td, th { | |||||
| <td class="ti-text-form-content"> | <td class="ti-text-form-content"> | ||||
| <div class="text-span text-span-w" id="{{.VersionName}}-creator"> | <div class="text-span text-span-w" id="{{.VersionName}}-creator"> | ||||
| -- | |||||
| {{$.userName}} | |||||
| </div> | </div> | ||||
| </td> | </td> | ||||
| </tr> | </tr> | ||||
| @@ -17,16 +17,30 @@ | |||||
| <div class="repository release dataset-list view"> | <div class="repository release dataset-list view"> | ||||
| {{template "repo/header" .}} | {{template "repo/header" .}} | ||||
| <!-- 列表容器 --> | <!-- 列表容器 --> | ||||
| <div class="ui container active loader" id="loadContainer"> | |||||
| <div class="ui container {{if ne $.MODEL_COUNT 0}}active loader {{end}}" id="loadContainer"> | |||||
| {{template "base/alert" .}} | {{template "base/alert" .}} | ||||
| <div class="ui two column stackable grid" style="display: none;"> | |||||
| <div class="ui two column stackable grid"> | |||||
| <div class="column"></div> | <div class="column"></div> | ||||
| <div class="column right aligned"> | <div class="column right aligned"> | ||||
| <!-- --> | <!-- --> | ||||
| <a class="ui button {{if .Permission.CanWrite $.UnitTypeCloudBrain}} green {{else}} disabled {{end}}" onclick="showcreate(this)">{{$.i18n.Tr "repo.model.manage.import_new_model"}}</a> | <a class="ui button {{if .Permission.CanWrite $.UnitTypeCloudBrain}} green {{else}} disabled {{end}}" onclick="showcreate(this)">{{$.i18n.Tr "repo.model.manage.import_new_model"}}</a> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| {{if eq $.MODEL_COUNT 0}} | |||||
| <div class="ui placeholder segment bgtask-none"> | |||||
| <div class="ui icon header bgtask-header-pic"></div> | |||||
| <div class="bgtask-content-header">未创建过模型</div> | |||||
| <div class="bgtask-content"> | |||||
| {{if $.RepoIsEmpty}} | |||||
| <div class="bgtask-content-txt">代码版本:您还没有初始化代码仓库,请先<a href="{{.RepoLink}}">创建代码版本;</a></div> | |||||
| {{end}} | |||||
| {{if eq $.TRAIN_COUNT 0}} | |||||
| <div class="bgtask-content-txt">训练任务:你还没创建过训练任务,请先创建训练任务。</div> | |||||
| {{end}} | |||||
| <div class="bgtask-content-txt">使用说明:可以参考启智AI协作平台<a href="https://git.openi.org.cn/zeizei/OpenI_Learning">小白训练营课程。</a></div> | |||||
| </div> | |||||
| </div> | |||||
| {{else}} | |||||
| <!-- 中下列表展示区 --> | <!-- 中下列表展示区 --> | ||||
| <div class="ui grid" style="display: none;"> | <div class="ui grid" style="display: none;"> | ||||
| <div class="row" style="padding-top: 0;"> | <div class="row" style="padding-top: 0;"> | ||||
| @@ -38,6 +52,7 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| {{end}} | |||||
| </div> | </div> | ||||
| @@ -139,6 +154,7 @@ | |||||
| {{template "base/footer" .}} | {{template "base/footer" .}} | ||||
| <script> | <script> | ||||
| console.log({{.MODEL_COUNT}}) | |||||
| let repolink = {{.RepoLink}} | let repolink = {{.RepoLink}} | ||||
| let repoId = {{$repository}} | let repoId = {{$repository}} | ||||
| const {_AppSubUrl, _StaticUrlPrefix, csrf} = window.config; | const {_AppSubUrl, _StaticUrlPrefix, csrf} = window.config; | ||||
| @@ -348,6 +348,7 @@ export default { | |||||
| this.$axios.get(location.href+'_api',{ | this.$axios.get(location.href+'_api',{ | ||||
| params:this.params | params:this.params | ||||
| }).then((res)=>{ | }).then((res)=>{ | ||||
| console.log(res) | |||||
| $(".ui.grid").removeAttr("style") | $(".ui.grid").removeAttr("style") | ||||
| $("#loadContainer").removeClass("loader") | $("#loadContainer").removeClass("loader") | ||||
| let TrainTaskInfo | let TrainTaskInfo | ||||