cnvrg 2.1.9 → 2.1.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Readme.md +40 -1
- data/lib/cnvrg/cli.rb +29 -19
- data/lib/cnvrg/helpers.rb +0 -42
- data/lib/cnvrg/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39ee04e88be68fe27beb93cf57070e9b63fc1f908f2ff97f722bcb402d03bc78
|
4
|
+
data.tar.gz: 28e404bb36262d03f29fa96fddadbcab76d4c9eb99a4861078bb1b266621b85c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbc2220a92859ebd7689fa3922c38d4a6cd64bd555507f5eed65f91edc1eb17f652ff886310dc3e82c78a4091f0490c0f59efbcceea785dc3b77d5a1a01ff48e
|
7
|
+
data.tar.gz: 78c3ec169b49cd9b5b87240db503f03bc6ccd3e7665a9961d022d82a272ddaf8ea12fb2399acda5c4a13a402c06ebaf4e1500a39142f6eae9c81618b3bea8190
|
data/Readme.md
CHANGED
@@ -108,4 +108,43 @@
|
|
108
108
|
## Version v2.1.9
|
109
109
|
2022-09-06
|
110
110
|
* DEV-15423 - Bug: Workspace - Jupyter process gets killed
|
111
|
-
* DEV-15451 - Bug: CLI - sync error "undefined method `encode' for nil:NilClass" on GCP storage
|
111
|
+
* DEV-15451 - Bug: CLI - sync error "undefined method `encode' for nil:NilClass" on GCP storage
|
112
|
+
## Version v2.1.10
|
113
|
+
2022-10-26
|
114
|
+
* DEV-15858 - Bug: Tensorboard compare - ongoing experiments' artifacts aren't cloned to session
|
115
|
+
## Version v2.1.11
|
116
|
+
2022-11-03
|
117
|
+
* DEV-16090 - Bug: Tensorboard compare - webapp gets stuck in "init" state
|
118
|
+
## Version v2.1.12
|
119
|
+
2022-11-09
|
120
|
+
* DEV-15972 - Bug: Customer cannot use dataset query due to ssl error
|
121
|
+
## Version v2.1.13
|
122
|
+
2023-03-05
|
123
|
+
* DEV-16372 - Epic: Cli V2 release - phase 1
|
124
|
+
h2. 🎯 Objective
|
125
|
+
|
126
|
+
Release v2 of cnvrg cli and deprecate the old version
|
127
|
+
|
128
|
+
h2. 🤔 Assumptions
|
129
|
+
|
130
|
+
# *Docs will be released (joint effort of tech writer, support and dev)*
|
131
|
+
# *cnvrg:v6 image will be released (with updated python version)*
|
132
|
+
# *All issues on High & Highest priority n sdk-productionize fixVersion will be resolved*
|
133
|
+
# *QA tests will be performed in different set ups (aks/eks/gke, windows device, mac m1)*
|
134
|
+
|
135
|
+
|
136
|
+
Note: this is not the most detailed epic, as most things already exist in cliv1 or sdkv2. for any questions please contact [~accountid:5fb5461f4a09640069dbf768]
|
137
|
+
* DEV-16372 - Epic: Cli V2 release - phase 1
|
138
|
+
h2. 🎯 Objective
|
139
|
+
|
140
|
+
Release v2 of cnvrg cli and deprecate the old version
|
141
|
+
|
142
|
+
h2. 🤔 Assumptions
|
143
|
+
|
144
|
+
# *Docs will be released (joint effort of tech writer, support and dev)*
|
145
|
+
# *cnvrg:v6 image will be released (with updated python version)*
|
146
|
+
# *All issues on High & Highest priority n sdk-productionize fixVersion will be resolved*
|
147
|
+
# *QA tests will be performed in different set ups (aks/eks/gke, windows device, mac m1)*
|
148
|
+
|
149
|
+
|
150
|
+
Note: this is not the most detailed epic, as most things already exist in cliv1 or sdkv2. for any questions please contact [~accountid:5fb5461f4a09640069dbf768]
|
data/lib/cnvrg/cli.rb
CHANGED
@@ -1019,7 +1019,7 @@ module Cnvrg
|
|
1019
1019
|
begin
|
1020
1020
|
unless File.exist?(fullpath)
|
1021
1021
|
downloader.safe_operation("#{abs_path}/#{file_name}") do
|
1022
|
-
download = open(f["url"])
|
1022
|
+
download = open(f["url"],{ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE})
|
1023
1023
|
IO.copy_stream(download, fullpath)
|
1024
1024
|
end
|
1025
1025
|
end
|
@@ -3636,19 +3636,15 @@ module Cnvrg
|
|
3636
3636
|
end
|
3637
3637
|
|
3638
3638
|
log_message(str, Thor::Shell::Color::GREEN)
|
3639
|
-
|
3639
|
+
|
3640
3640
|
exit_status = 0
|
3641
|
-
|
3641
|
+
|
3642
3642
|
if options['wait']
|
3643
3643
|
end_pos = 0
|
3644
3644
|
while true
|
3645
3645
|
tries = 0
|
3646
3646
|
begin
|
3647
|
-
result =
|
3648
|
-
"#{project.owner}/projects/#{project.slug}/experiments/#{res["result"]["exp_url"]}/info",
|
3649
|
-
'GET',
|
3650
|
-
{ exit_status: true, grid: res["result"]["grid"], pos: end_pos }
|
3651
|
-
)
|
3647
|
+
result = fetch_experiment_info(res,project,end_pos)
|
3652
3648
|
|
3653
3649
|
exit_statuses = result.values.pluck('exit_status')
|
3654
3650
|
if exit_statuses.include? nil
|
@@ -5003,32 +4999,28 @@ module Cnvrg
|
|
5003
4999
|
|
5004
5000
|
log_message("compare is running")
|
5005
5001
|
while true
|
5006
|
-
log_message("
|
5002
|
+
log_message("Comparing the following experiment slugs: #{slugs}")
|
5007
5003
|
slugs.each do |exp_slug|
|
5008
5004
|
begin
|
5009
5005
|
if exps_map[exp_slug].blank?
|
5010
5006
|
exp = @project.get_experiment(exp_slug)["experiment"]
|
5011
5007
|
else
|
5012
5008
|
exp = exps_map[exp_slug]
|
5013
|
-
log_message("#{exp["title"]}
|
5009
|
+
log_message("Experiment '#{exp["title"]}' end commit already cloned, skipping it", Thor::Shell::Color::BLUE)
|
5014
5010
|
next
|
5015
5011
|
end
|
5016
5012
|
exp_name = exp["title"]
|
5017
5013
|
if exp["end_commit"].present? and exp["status"] != "Ongoing"
|
5018
|
-
log_message("#{exp_name} has ended, getting files from end commit", Thor::Shell::Color::BLUE)
|
5014
|
+
log_message("Experiment '#{exp_name}' has ended, getting files from its end commit", Thor::Shell::Color::BLUE)
|
5019
5015
|
num_of_new_files = Cnvrg::Helpers.get_experiment_events_log_from_server(exp, @project)
|
5020
5016
|
exps_map[exp_slug] = exp
|
5021
5017
|
else
|
5022
|
-
log_message("#{exp_name} is running
|
5023
|
-
|
5024
|
-
|
5025
|
-
log_message("Failed to get kube files, using last commit", Thor::Shell::Color::BLUE)
|
5026
|
-
num_of_new_files = Cnvrg::Helpers.get_experiment_events_log_from_server(exp, @project, commit: exp["last_successful_commit"]["sha1"])
|
5027
|
-
copied_commits << exp["last_successful_commit"]["sha1"]
|
5028
|
-
end
|
5018
|
+
log_message("Experiment '#{exp_name}' is running, getting files from its last successful commit", Thor::Shell::Color::BLUE)
|
5019
|
+
num_of_new_files = Cnvrg::Helpers.get_experiment_events_log_from_server(exp, @project, commit: exp["last_successful_commit"]["sha1"])
|
5020
|
+
copied_commits << exp["last_successful_commit"]["sha1"]
|
5029
5021
|
end
|
5030
5022
|
|
5031
|
-
log_message("New
|
5023
|
+
log_message("New .tfevent files downloaded", Thor::Shell::Color::BLUE) if num_of_new_files > 0
|
5032
5024
|
rescue => e
|
5033
5025
|
Cnvrg::Logger.log_error(e)
|
5034
5026
|
end
|
@@ -5960,6 +5952,24 @@ module Cnvrg
|
|
5960
5952
|
end
|
5961
5953
|
end
|
5962
5954
|
|
5955
|
+
|
5956
|
+
def fetch_experiment_info(res, project, end_pos)
|
5957
|
+
|
5958
|
+
result =
|
5959
|
+
Cnvrg::API_V2
|
5960
|
+
.request("#{project.owner}/projects/#{project.slug}/experiments/#{res["result"]["exp_url"]}/info",
|
5961
|
+
'GET',
|
5962
|
+
{ exit_status: true, grid: res["result"]["grid"], pos: end_pos }
|
5963
|
+
)
|
5964
|
+
|
5965
|
+
if result.key?("exit_status")
|
5966
|
+
return result
|
5967
|
+
end
|
5968
|
+
|
5969
|
+
return result["data"]["attributes"]["info"]
|
5970
|
+
|
5971
|
+
end
|
5972
|
+
|
5963
5973
|
end
|
5964
5974
|
end
|
5965
5975
|
|
data/lib/cnvrg/helpers.rb
CHANGED
@@ -374,48 +374,6 @@ parameters:
|
|
374
374
|
end
|
375
375
|
return num_of_new_files
|
376
376
|
end
|
377
|
-
|
378
|
-
def get_experiment_events_log_via_kubectl(exp, namespace)
|
379
|
-
dest_dir = exp["slug"]
|
380
|
-
result = `kubectl -n #{namespace} get pods | grep #{exp["slug"]}`
|
381
|
-
|
382
|
-
pod_name = result.split(" ")[0]
|
383
|
-
return false, 0 if pod_name.blank?
|
384
|
-
FileUtils.mkdir_p(dest_dir)
|
385
|
-
working_dir = `kubectl -n #{namespace} exec #{pod_name} -c agent -- pwd`
|
386
|
-
working_dir.strip!
|
387
|
-
res = `kubectl -n #{namespace} exec #{pod_name} -c agent -- /bin/bash -c "ls -R #{working_dir}"`
|
388
|
-
files_and_folders = res.split("\n\n")
|
389
|
-
all_files = []
|
390
|
-
|
391
|
-
files_and_folders.each do |file_and_folder|
|
392
|
-
files = file_and_folder.split("\n")
|
393
|
-
if files.first.include?(":")
|
394
|
-
folder = files.first.gsub(":", "")
|
395
|
-
|
396
|
-
folder = folder.sub(working_dir + "/", "")
|
397
|
-
files = files.drop(1)
|
398
|
-
end
|
399
|
-
files.each do |file|
|
400
|
-
if file.include?("tfevents")
|
401
|
-
all_files << "#{folder}/#{file}"
|
402
|
-
end
|
403
|
-
end
|
404
|
-
end
|
405
|
-
|
406
|
-
num_of_new_files = 0
|
407
|
-
all_files.each do |file|
|
408
|
-
file_dir = "#{dest_dir}/#{File.dirname(file)}"
|
409
|
-
FileUtils.mkdir_p(file_dir)
|
410
|
-
num_of_new_files += 1 unless File.exist?("#{dest_dir}/#{file}")
|
411
|
-
res = `kubectl -n #{namespace} cp #{pod_name}:#{file} -c agent #{dest_dir}/#{file}`
|
412
|
-
end
|
413
|
-
|
414
|
-
return true, num_of_new_files
|
415
|
-
rescue => e
|
416
|
-
Cnvrg::Logger.log_error(e)
|
417
|
-
return false, 0
|
418
|
-
end
|
419
377
|
end
|
420
378
|
|
421
379
|
end
|
data/lib/cnvrg/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cnvrg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yochay Ettun
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2023-03-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|