-
Notifications
You must be signed in to change notification settings - Fork 524
/
Copy pathconfig.yml
462 lines (433 loc) · 13.1 KB
/
config.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
version: 2.1
# How to test the Linux jobs:
# - Install CircleCI local CLI: https://circleci.com/docs/2.0/local-cli/
# - circleci config process .circleci/config.yml > gen.yml && circleci local execute -c gen.yml --job end_to_end_test
# - Replace end_to_end_test with the name of the job you want to test.
commands:
checkout_merge:
description: "checkout merge branch"
steps:
- checkout
- run:
name: Checkout merge branch
command: |
set -ex
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [[ "$BRANCH" != "master" ]]; then
git merge origin/master
fi
rasp_build_deps:
description: Install RASP build deps
parameters:
miniconda3:
type: string
steps:
- run:
name: Install build deps
command: |
curl <<parameters.miniconda3>> -o ~/miniconda.sh
bash ~/miniconda.sh -b -p $HOME/miniconda
source $HOME/miniconda/bin/activate
conda init
conda install -y --file rasp_requirements.txt
install_libtorch:
description: Download & unzip libtorch
parameters:
source:
type: string
steps:
- run:
name: Download libtorch
command: |
pushd ..
curl <<parameters.source>> -o libtorch.zip
unzip libtorch.zip
popd
rasp_build_test:
description: Build & test RASP
steps:
- run:
name: Clone submodules
command: |
git submodule update --force --recursive --init
- run:
name: Build RASP
command: |
source $HOME/miniconda/bin/activate
echo $HOME
mkdir -p serving/build
pushd serving/build
cmake -DCMAKE_PREFIX_PATH=$HOME/libtorch -DCMAKE_CXX_STANDARD=17 ..
make -j2
popd
- run:
name: Run RASP tests
command: |
serving/build/RaspTest
- store_artifacts:
path: serving/build/RaspTest
destination: RaspTest
- store_artifacts:
path: serving/build/RaspCli
destination: RaspCli
end_to_end_test:
description: Set-up for end-to-end tests
steps:
- run:
name: Installing SDKs
command: |
mv ~/.bashrc ~/.bashrc.bk
sudo apt-get update
sudo apt-get install bc
sudo apt-get install unzip
sudo apt-get install zip
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version
sdk install java 8.0.292.hs-adpt
sdk install scala
sdk install maven
sdk install spark 3.1.1
- run:
name: Build preprocessing package
command: |
mvn -f preprocessing/pom.xml clean package
- run:
name: Run script
command: |
# gather data and store as pickle
coverage run ./reagent/workflow/cli.py run reagent.workflow.gym_batch_rl.offline_gym_random "$CONFIG"
# run through timeline operator
coverage run --append ./reagent/workflow/cli.py run reagent.workflow.gym_batch_rl.timeline_operator "$CONFIG"
# train on logged data
coverage run --append ./reagent/workflow/cli.py run reagent.workflow.training.identify_and_train_network "$CONFIG"
# evaluate on gym environment
coverage run --append ./reagent/workflow/cli.py run reagent.workflow.gym_batch_rl.evaluate_gym "$CONFIG"
- run:
name: Save coverage results
command: |
coverage report -i
coverage xml -i
bash <(curl -s https://codecov.io/bash)
- run:
name: Save test results
command: |
mkdir -p ~/test-results/junit/
find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/test-results/junit/ \;
when: always
- store_test_results:
path: ~/test-results
- store_artifacts:
path: preprocessing/target/rl-preprocessing-1.1.jar
destination: rl-preprocessing-1.1.jar
pip_install:
description: Pip install requirements
parameters:
install_gym:
type: boolean
default: true
is_ubuntu_gpu:
type: boolean
default: false
steps:
- run:
# ubuntu-1604-cuda-10.2:202012-01 image has python2.7 by default
# we need to use python3.8 for tests
command: |
pyenv install -v 3.8.1
pyenv global 3.8.1
sudo apt update
sudo apt install cmake
sudo apt install swig
pip install --upgrade pip --progress-bar off
pip install --upgrade wheel setuptools --progress-bar off
pip install tox==3.20.1 --progress-bar off
- when:
condition: << parameters.install_gym >>
steps:
- when:
condition: << parameters.is_ubuntu_gpu >>
steps:
- run:
command: |
pip install -e .[gym,test] --pre -f https://download.pytorch.org/whl/nightly/cu102/torch_nightly.html --progress-bar off
- unless:
condition: << parameters.is_ubuntu_gpu >>
steps:
- run:
command: |
pip install -e .[gym,test] --pre -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html --progress-bar off
run_unittest:
description: Run unittests, coverage and save results
parameters:
tox_env:
type: string
steps:
- run:
no_output_timeout: 30m
command: |
tox -v -e << parameters.tox_env >>
bash <(curl -s https://codecov.io/bash)
- run: python setup.py -q bdist_wheel
- store_artifacts:
path: dist/reagent-0.1-py3-none-any.whl
destination: reagent-0.1-py3-none-any.whl
- store_test_results:
path: .tox/py38/log/
run_interrogate:
description: Install and run interrogate
steps:
- run:
name: Install interrogate
command: |
pip install interrogate --progress-bar off
- run:
name: Run interrogate on reagent code base
command: |
interrogate -piImvv -f 15 reagent/
jobs:
misc_unittest:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: gpu.nvidia.small.multi
environment:
- CUDA_LAUNCH_BLOCKING: 1
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: true
- run_unittest:
tox_env: circleci_misc_unittest
gym_cpu_unittest:
machine:
image: ubuntu-1604:202101-01
resource_class: xlarge
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: false
- run_unittest:
tox_env: circleci_gym_cpu_unittest
gym_replay_buffer_cpu_unittest_1:
machine:
image: ubuntu-1604:202101-01
resource_class: xlarge
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: false
- run_unittest:
tox_env: circleci_gym_replay_buffer_1_cpu_unittest
gym_replay_buffer_cpu_unittest_2:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: xlarge
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: false
- run_unittest:
tox_env: circleci_gym_replay_buffer_2_cpu_unittest
gym_gpu_unittest:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: gpu.nvidia.small.multi
environment:
- CUDA_LAUNCH_BLOCKING: 1
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: true
- run_unittest:
tox_env: circleci_gym_gpu_unittest
gym_replay_buffer_gpu_unittest_1:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: gpu.nvidia.small.multi
environment:
- CUDA_LAUNCH_BLOCKING: 1
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: true
- run_unittest:
tox_env: circleci_gym_replay_buffer_1_gpu_unittest
gym_replay_buffer_gpu_unittest_2:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: gpu.nvidia.small.multi
environment:
- CUDA_LAUNCH_BLOCKING: 1
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: true
- run_unittest:
tox_env: circleci_gym_replay_buffer_2_gpu_unittest
dqn_cartpole_e2e:
machine:
image: ubuntu-1604:202101-01
resource_class: xlarge
environment:
- CONFIG: reagent/workflow/sample_configs/discrete_dqn_cartpole_offline.yaml
steps:
- checkout_merge
- pip_install:
install_gym: true
is_ubuntu_gpu: false
- end_to_end_test
ranking_unittest:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: gpu.nvidia.small.multi
environment:
- CUDA_LAUNCH_BLOCKING: 1
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: true
- run_unittest:
tox_env: circleci_ranking_unittest
training_unittest:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: gpu.nvidia.small.multi
environment:
- CUDA_LAUNCH_BLOCKING: 1
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: true
- run_unittest:
tox_env: circleci_training_unittest
prediction_unittest:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: gpu.nvidia.small.multi
environment:
- CUDA_LAUNCH_BLOCKING: 1
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: true
- run_unittest:
tox_env: circleci_prediction_unittest
world_model_unittest:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: gpu.nvidia.small.multi
environment:
- CUDA_LAUNCH_BLOCKING: 1
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: true
- run_unittest:
tox_env: circleci_world_model_unittest
lite_api_unittest:
machine:
image: ubuntu-1604:202101-01
resource_class: xlarge
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: false
- run_unittest:
tox_env: circleci_lite_api_unittest
mab_unittest:
machine:
image: ubuntu-1604:202101-01
resource_class: medium
steps:
- checkout_merge
- pip_install:
install_gym: false
is_ubuntu_gpu: false
- run_unittest:
tox_env: circleci_mab_unittest
sac_pendulum_e2e:
machine:
image: ubuntu-1604:202101-01
resource_class: xlarge
environment:
- CONFIG: reagent/workflow/sample_configs/sac_pendulum_offline.yaml
steps:
- checkout_merge
- pip_install:
install_gym: true
is_ubuntu_gpu: false
- end_to_end_test
sac_pendulum_e2e_gpu:
machine:
image: ubuntu-1604-cuda-10.2:202012-01
resource_class: gpu.nvidia.small.multi
environment:
- CONFIG: reagent/workflow/sample_configs/sac_pendulum_offline.yaml
steps:
- checkout_merge
- pip_install:
install_gym: true
is_ubuntu_gpu: true
- end_to_end_test
rasp_test_linux:
docker:
- image: cimg/base:2020.01
resource_class: xlarge
steps:
- checkout_merge
- rasp_build_deps:
miniconda3: https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
- install_libtorch:
source: https://download.pytorch.org/libtorch/nightly/cpu/libtorch-cxx11-abi-shared-with-deps-latest.zip
- rasp_build_test
rasp_test_mac:
macos:
xcode: 11.3.0
steps:
- checkout_merge
- rasp_build_deps:
miniconda3: https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
- install_libtorch:
source: https://download.pytorch.org/libtorch/nightly/cpu/libtorch-macos-latest.zip
- rasp_build_test
docstring_coverage:
docker:
- image: circleci/python:3.8
resource_class: small
steps:
- checkout_merge
- run_interrogate
workflows:
build:
jobs:
- lite_api_unittest
- mab_unittest
- ranking_unittest
- training_unittest
- prediction_unittest
- world_model_unittest
- dqn_cartpole_e2e
- sac_pendulum_e2e
- sac_pendulum_e2e_gpu
- misc_unittest
- gym_cpu_unittest
- gym_gpu_unittest
- gym_replay_buffer_cpu_unittest_1
- gym_replay_buffer_cpu_unittest_2
- gym_replay_buffer_gpu_unittest_1
- gym_replay_buffer_gpu_unittest_2
- rasp_test_linux
- rasp_test_mac
- docstring_coverage