Alat dan protokol untuk ilmu data yang dapat direproduksi menggunakan Python

50

Saya sedang mengerjakan proyek ilmu data menggunakan Python. Proyek ini memiliki beberapa tahap. Setiap tahap terdiri dari pengambilan set data, menggunakan skrip Python, data tambahan, konfigurasi dan parameter, dan membuat set data lain. Saya menyimpan kode di git, sehingga bagian itu tertutup. Saya ingin mendengar tentang:

  1. Alat untuk kontrol versi data.
  2. Alat yang memungkinkan untuk mereproduksi tahap dan percobaan.
  3. Protokol dan struktur direktori yang disarankan untuk proyek semacam itu.
  4. Alat bantu build / run otomatis.
Yuval F
sumber
2
Di mana pertanyaan dalam pertanyaan ini? Harap luangkan waktu sejenak untuk meninjau pedoman Pusat Bantuan , khususnya: "Jika motivasi Anda untuk mengajukan pertanyaan adalah 'Saya ingin berpartisipasi dalam diskusi tentang ______', maka Anda seharusnya tidak bertanya di sini."
Air
"Kamu seharusnya hanya mengajukan pertanyaan praktis, yang bisa dijawab berdasarkan masalah yang kamu hadapi."
Yuval F
Ini praktis, dapat dijawab dan didasarkan pada masalah aktual dengan cara yang sama seperti "Katakan padaku bagaimana melakukan ilmu data" adalah praktis, dapat dijawab dan berdasarkan pada masalah yang sebenarnya.
Air

Jawaban:

46

Topik penelitian direproduksi (RR) sangat populer saat ini dan, oleh karena itu, sangat besar , tetapi saya berharap jawaban saya akan cukup komprehensif sebagai jawaban dan akan memberikan informasi yang cukup untuk penelitian lebih lanjut , jika Anda memutuskan untuk melakukannya.

Meskipun alat khusus Python untuk RR tentu ada di luar sana, saya pikir lebih masuk akal untuk fokus pada alat yang lebih universal (Anda tidak pernah tahu pasti bahasa pemrograman dan lingkungan komputasi yang akan Anda gunakan di masa mendatang). Karena itu, mari kita lihat alat apa yang tersedia per daftar Anda.

1) Alat untuk kontrol versi data . Kecuali Anda berencana untuk bekerja dengan data besar (sangat) , saya kira, masuk akal untuk menggunakan hal yang sama git, yang Anda gunakan untuk kontrol versi kode sumber. Infrastrukturnya sudah ada. Sekalipun file Anda berukuran biner dan besar, saran ini mungkin bermanfaat: https://stackoverflow.com/questions/540535/manajemen-large-binary-files-with-git .

2) Alat untuk mengelola alur kerja dan eksperimen RR . Berikut daftar alat paling populer dalam kategori ini, sepengetahuan saya (menurut urutan popularitas):

CONTOH . Berikut adalah artikel menarik tentang alur kerja ilmiah dengan contoh desain alur kerja nyata dan analisis data, berdasarkan penggunaan proyek Kepler dan myExperiment : http://f1000research.com/articles/3-110/v1 .

Ada banyak alat RR yang menerapkan paradigma pemrograman melek , yang dicontohkan oleh LaTeXkeluarga perangkat lunak. Alat yang membantu dalam pembuatan laporan dan presentasi juga merupakan kategori besar, di mana Sweavedan knitrmungkin merupakan yang paling terkenal. Sweaveadalah alat, fokus pada R, tetapi dapat diintegrasikan dengan proyek berbasis Python, meskipun dengan beberapa upaya tambahan ( https://stackoverflow.com/questions/2161152/sweave-for-python ). Saya pikir itu knitrmungkin pilihan yang lebih baik, karena modern, memiliki dukungan luas oleh alat-alat populer (seperti RStudio) dan bahasa-netral ( http://yihui.name/knitr/demo/engines ).

3) Protokol dan struktur direktori yang disarankan . Jika saya mengerti benar apa yang Anda maksudkan dengan menggunakan istilah protokol ( alur kerja ), umumnya saya berpikir bahwa alur kerja analisis data RR standar terdiri dari fase berurutan berikut: pengumpulan data => persiapan data (pembersihan, transformasi, penggabungan, pengambilan sampel) => analisis data => presentasi hasil (menghasilkan laporan dan / atau presentasi). Namun demikian, setiap alur kerja adalah spesifik proyek dan, karenanya, beberapa tugas tertentu mungkin memerlukan penambahan langkah-langkah tambahan.

Untuk struktur direktori contoh, Anda dapat melihat dokumentasi untuk paket R ProjectTemplate( http://projecttemplate.net ), sebagai upaya untuk mengotomatisasi alur kerja dan proyek analisis data:

masukkan deskripsi gambar di sini

4) Alat bantu build / run otomatis . Karena jawaban saya difokuskan pada alat RR universal (bahasa-netral), alat yang paling populer adalah make. Baca artikel berikut karena beberapa alasan untuk digunakan makesebagai alat otomatisasi alur kerja RR yang disukai: http://bost.ocks.org/mike/make . Tentu saja, ada alat serupa lainnya , yang dapat meningkatkan beberapa aspek make, atau menambahkan beberapa fitur tambahan. Misalnya: ant(secara resmi, Apache Ant: http://ant.apache.org ), Maven("generasi berikutnya ant": http://maven.apache.org ), rake( https://github.com/ruby/rake ) , Makepp( http://makepp.sourceforge.net). Untuk daftar lengkap alat tersebut, lihat Wikipedia: http://en.wikipedia.org/wiki/List_of_build_automation_software .

Aleksandr Blekh
sumber
Tautan tentang pemrograman literat di sini : pada dasarnya, ini tentang mengomentari kode dengan cukup sehingga kode tersebut menjadi dokumentasi mandiri.
Gaborous
@gaborous: Saya sadar tentang makna pemrograman melek dan belum menyertakan tautan ke paradigma, karena ada banyak sumber untuk itu dan mereka sangat mudah ditemukan. Meskipun demikian, terima kasih atas komentar Anda.
Aleksandr Blekh
1
Saya menebaknya, itu sebabnya saya menambahkan info ini sebagai komentar untuk pembaca yang tertarik :)
gaborous
4
Ini adalah jawaban yang sangat komprehensif, tetapi saya terkejut bahwa satu aspek tampaknya hilang. Validasi silang adalah komponen vital dari sebagian besar proyek DS dan biasanya memerlukan sampel acak, yang dapat membuat reproduksibilitas menjadi sulit. Saya sarankan Anda menyentuh sebentar menggunakan benih yang sama untuk generator acak agar dapat mereproduksi hasil terlepas dari variasi statistik. Terima kasih!
AN6U5
@ AN6U5: Terima kasih atas kata-kata baiknya! Saya setuju - saya melewatkan aspek itu (+1). Silakan memperbarui jawaban saya, menambahkan informasi singkat yang relevan tentang validasi silang.
Aleksandr Blekh
24

Sejak saya mulai melakukan penelitian di dunia akademis, saya terus mencari alur kerja yang memuaskan. Saya pikir akhirnya saya menemukan sesuatu yang saya sukai:

1) Letakkan semuanya di bawah kontrol versi, misalnya, Git:

Untuk proyek penelitian hobi saya menggunakan GitHub, untuk penelitian di tempat kerja saya menggunakan server GitLab pribadi yang disediakan oleh universitas kami. Saya juga menyimpan set data saya di sana.

2) Saya melakukan sebagian besar analisis saya bersama dengan dokumentasi pada notebook IPython. Sangat terorganisir (bagi saya) untuk memiliki kode, plot, dan diskusi / kesimpulan semua dalam satu dokumen. Jika saya menjalankan skrip yang lebih besar, saya biasanya akan menempatkan mereka ke dalam file skrip terpisah .py file, tetapi saya masih akan menjalankannya dari notebook IPython melalui% run magic untuk menambahkan informasi tentang tujuan, hasil, dan parameter lainnya.

Saya telah menulis ekstensi sel kecil sihir untuk notebook IPython dan IPython, yang disebut "watermark" yang saya gunakan untuk membuat perangko waktu dan melacak berbagai versi paket yang saya gunakan dan juga hash Git

Sebagai contoh


%watermark

29/06/2014 01:19:10

CPython 3.4.1
IPython 2.1.0

compiler   : GCC 4.2.1 (Apple Inc. build 5577)
system     : Darwin
release    : 13.2.0
machine    : x86_64
processor  : i386
CPU cores  : 2
interpreter: 64bit


%watermark -d -t

29/06/2014 01:19:11 


%watermark -v -m -p numpy,scipy

CPython 3.4.1
IPython 2.1.0

numpy 1.8.1
scipy 0.14.0

compiler   : GCC 4.2.1 (Apple Inc. build 5577)
system     : Darwin
release    : 13.2.0
machine    : x86_64
processor  : i386
CPU cores  : 2
interpreter: 64bit

Untuk info lebih lanjut, lihat dokumentasi di sini .


sumber
2
Saya suka keajaiban watermark. Bagi mereka yang tidak sadar, GitHub sekarang menawarkan hingga 5 repositori pribadi gratis untuk pengguna yang terkait dengan institusi akademik.
bogatron
19

Alat reproduksibilitas terbaik adalah membuat log tindakan Anda, sesuatu seperti ini:

experiment/input ; expected ; observation/output ; current hypothesis and if supported or rejected
exp1 ; expected1 ; obs1 ; some fancy hypothesis, supported

Ini dapat ditulis di atas kertas, tetapi, jika percobaan Anda sesuai dengan kerangka kerja komputasi, Anda dapat menggunakan alat komputasi untuk mengotomatiskan sebagian atau seluruh proses logging (terutama dengan membantu Anda melacak dataset input yang bisa sangat besar, dan hasilnya angka).

Alat reproduksibilitas hebat untuk Python dengan kurva belajar yang rendah tentu saja adalah IPython / Jupyter Notebook (jangan lupa % logon dan% logstart magics ). Kiat: untuk memastikan notebook Anda dapat direproduksi, restart kernel dan coba jalankan semua sel dari atas ke bawah (tombol Jalankan Semua Sel): jika berfungsi, maka simpan semuanya dalam file arsip ("beku"), jika tidak, terutama jika Anda perlu menjalankan sel dengan cara yang tidak linier dan tidak berurutan dan tidak jelas untuk menghindari kesalahan, Anda perlu mengerjakan ulang sedikit.

Alat hebat lain yang sangat baru (2015) adalah recipy , yang sangat mirip dengan sumatra (lihat di bawah), tetapi dibuat khusus untuk Python. Saya tidak tahu apakah itu berfungsi dengan Notebook Jupyter, tapi saya tahu penulis sering menggunakannya jadi saya kira jika itu saat ini tidak didukung, itu akan di masa depan.

Git juga luar biasa, dan tidak terikat dengan Python. Ini akan membantu Anda tidak hanya untuk menyimpan riwayat semua percobaan, kode, kumpulan data, angka, dll. Tetapi juga memberi Anda alat untuk memelihara ( git pickaxe ), berkolaborasi ( menyalahkan ) dan men-debug ( git - bisect ) menggunakan ilmiah metode debugging (disebut delta debugging ). Berikut ini adalah kisah seorang peneliti fiksi yang mencoba membuat eksperimennya sendiri dengan sistem logging, hingga akhirnya menjadi faksimili Git.

Alat umum lain bekerja dengan bahasa apapun (dengan API Python pada pypi ) adalah Sumatera , yang dirancang khusus untuk membantu Anda melakukan ditiru penelitian ( direplikasi bertujuan untuk menghasilkan hasil yang sama diberikan persis kode yang sama dan software, sedangkan reproduksi bertujuan untuk menghasilkan hasil yang sama diberikan media apa pun, yang jauh lebih sulit dan memakan waktu dan tidak dapat diautomatisasi).

Inilah cara kerja Sumatera: untuk setiap percobaan yang Anda lakukan melalui Sumatera, perangkat lunak ini akan bertindak seperti "save game state" yang sering ditemukan di videogame. Lebih tepatnya, itu akan menghemat:

  • semua parameter yang Anda berikan;
  • status kode sumber yang tepat dari seluruh aplikasi eksperimental dan file konfigurasi Anda;
  • output / plot / hasil dan juga file apa pun yang dihasilkan oleh aplikasi eksperimental Anda.

Kemudian akan membangun database dengan stempel waktu dan metadata lainnya untuk setiap percobaan Anda, yang nantinya dapat Anda jelajahi menggunakan webGUI. Karena Sumatra menyimpan status penuh aplikasi Anda untuk percobaan tertentu pada satu titik waktu tertentu, Anda dapat mengembalikan kode yang menghasilkan hasil spesifik kapan saja Anda inginkan, sehingga Anda memiliki penelitian yang dapat ditiru dengan biaya rendah (kecuali untuk penyimpanan jika Anda bekerja pada kumpulan data besar, tetapi Anda dapat mengonfigurasi pengecualian jika Anda tidak ingin menyimpan semuanya setiap kali).

Alat luar biasa lainnya adalah Zeitgeist GNOME (sebelumnya dikodekan dengan Python tetapi sekarang porting ke Vala), sebuah sistem penjurnalan tindakan semua-kompas, yang mencatat semua yang Anda lakukan dan dapat menggunakan pembelajaran mesin untuk meringkas untuk periode waktu yang Anda inginkan hubungan antar item berdasarkan pada kesamaan dan pola penggunaan, misalnya menjawab pertanyaan seperti "Apa yang paling relevan bagi saya, ketika saya sedang mengerjakan proyek X, selama satu bulan tahun lalu?" . Yang menarik, Zim Desktop Wiki , aplikasi pencatat yang mirip dengan Evernote, memiliki plugin untuk bekerja dengan Zeitgeist.

Pada akhirnya, Anda dapat menggunakan Git atau Sumatra atau perangkat lunak lain yang Anda inginkan, mereka akan memberi Anda kekuatan replikasi yang sama, tetapi Sumatra secara khusus dirancang untuk penelitian ilmiah sehingga ia menyediakan beberapa alat mewah seperti GUI web untuk dijelajahi hasil Anda, sementara Git lebih disesuaikan dengan pemeliharaan kode (tetapi memiliki alat debugging seperti git-membagi sehingga jika percobaan Anda melibatkan kode, itu sebenarnya mungkin lebih baik). Atau tentu saja Anda bisa menggunakan keduanya!

/ EDIT: dsign menyentuh poin yang sangat penting di sini: replikasi pengaturan Anda sama pentingnya dengan replikasi aplikasi Anda. Dengan kata lain, Anda setidaknya harus memberikan daftar lengkap pustaka dan kompiler yang Anda gunakan beserta versi tepatnya dan perincian platform Anda .

Secara pribadi, dalam komputasi ilmiah dengan Python, saya telah menemukan bahwa mengemas aplikasi bersama dengan perpustakaan terlalu menyakitkan, jadi saya sekarang hanya menggunakan paket python ilmiah all-in-one seperti Anaconda (dengan conda pengelola paket hebat ), dan hanya menyarankan pengguna untuk menggunakan paket yang sama. Solusi lain dapat dengan menyediakan skrip untuk secara otomatis menghasilkan virtualenv , atau untuk mengemas segala sesuatu menggunakan aplikasi Docker komersial seperti dikutip oleh dsign atau opensource Vagrant (dengan misalnya pylearn2-in-a-box yang menggunakan Vagrant untuk menghasilkan distribusi yang mudah didistribusikan kembali paket lingkungan virtual).

Akhirnya, untuk benar-benar memastikan bahwa Anda memiliki lingkungan yang berfungsi penuh setiap kali Anda butuhkan, Anda dapat membuat mesin virtual (lihat VirtualBox), dan Anda bahkan dapat menyimpan keadaan mesin (snapshot) dengan eksperimen yang siap dijalankan di dalam. Lalu, Anda bisa membagikan mesin virtual ini dengan semua yang disertakan sehingga siapa pun dapat mereplikasi percobaan Anda dengan pengaturan yang tepat. Ini mungkin cara terbaik untuk mereplikasi eksperimen berbasis perangkat lunak. Kontainer mungkin merupakan alternatif yang lebih ringan, tetapi mereka tidak termasuk seluruh lingkungan, sehingga kesetiaan replikasi akan menjadi kurang kuat.

/ EDIT2: Berikut adalah ringkasan video yang hebat (untuk debugging tetapi ini juga dapat diterapkan untuk penelitian) apa yang mendasar untuk melakukan penelitian yang dapat direproduksi: mencatat percobaan Anda dan setiap langkah lain dari metode ilmiah, semacam "eksperimen eksplisit" .

gaborous
sumber
14

Pastikan untuk memeriksa buruh pelabuhan ! Dan secara umum, semua hal baik lainnya yang telah diciptakan rekayasa perangkat lunak selama beberapa dekade untuk memastikan isolasi dan reproduktifitas.

Saya ingin menekankan bahwa tidak cukup hanya memiliki alur kerja yang dapat direproduksi, tetapi juga mudah untuk mereproduksi alur kerja. Biarkan saya menunjukkan apa yang saya maksud. Misalkan proyek Anda menggunakan Python, database X dan Scipy. Paling pasti Anda akan menggunakan perpustakaan tertentu untuk terhubung ke database Anda dari Python, dan Scipy pada gilirannya akan menggunakan beberapa rutin aljabar. Ini tentu saja merupakan pengaturan yang sangat sederhana, tetapi tidak sepenuhnya sederhana untuk pengaturan, pun dimaksudkan. Jika seseorang ingin mengeksekusi skrip Anda, ia harus menginstal semua dependensi. Atau lebih buruk lagi, dia mungkin sudah menginstal versi yang tidak kompatibel. Memperbaiki hal-hal itu membutuhkan waktu. Ini juga akan memakan waktu bagi Anda jika suatu saat Anda perlu memindahkan perhitungan Anda ke sebuah cluster, ke sebuah cluster yang berbeda, atau ke beberapa server cloud.

Di sinilah saya menemukan buruh pelabuhan berguna. Docker adalah cara untuk memformalkan dan menyusun resep untuk lingkungan biner. Anda dapat menulis yang berikut ini di dockerfile (saya menggunakan bahasa Inggris di sini bukan sintaks Dockerfile):

  • Mulailah dengan lingkungan biner dasar, seperti Ubuntu
  • Instal libsparse-dev
  • (Pip) Instal numpy dan scipy
  • Instal X
  • Instal libX-dev
  • (Pip) Instal python-X
  • Instal IPython-Notebook
  • Salin skrip / notebook python saya ke lingkungan biner saya, file data ini, dan konfigurasi ini untuk melakukan hal-hal lain. Untuk memastikan reproduktifitas, salin dari url bernama bukan file lokal.
  • Mungkin menjalankan IPython-Notebook.

Beberapa baris akan menginstal hal-hal di Python menggunakan pip, karena pip dapat melakukan pekerjaan yang sangat bersih dalam memilih versi paket tertentu. Lihat juga!

Dan itu saja. Jika setelah Anda membuat Dockerfile Anda dapat dibangun, maka itu dapat dibangun di mana saja, oleh siapa saja (asalkan mereka juga memiliki akses ke file spesifik proyek Anda, misalnya karena Anda meletakkannya di url publik yang dirujuk dari Dockerfile). Apa yang terbaik, Anda dapat mengunggah lingkungan yang dihasilkan (disebut "gambar") ke server publik atau pribadi (disebut "daftar") untuk digunakan orang lain. Jadi, ketika Anda mempublikasikan alur kerja Anda, Anda memiliki resep yang sepenuhnya dapat direproduksi dalam bentuk Dockerfile, dan cara mudah bagi Anda atau orang lain untuk mereproduksi apa yang Anda lakukan:

docker run dockerregistery.thewheezylab.org/nowyouwillbelieveme

Atau jika mereka ingin melihat-lihat skrip Anda dan sebagainya:

docker run -i -t dockerregistery.thewheezylab.org/nowyouwillbelieveme /bin/bash
dsign
sumber
8

Sayangnya, saya tidak memiliki poin reputasi yang cukup untuk menjawab posting oleh Plank, jadi harus menjawab seluruh utas - maaf tentang itu.

Saya sebenarnya adalah pengembang Kerangka Pengetahuan Kolektif open-source yang disebutkan di atas. Ia mencoba untuk menyederhanakan berbagi artefak dan alur kerja eksperimental sebagai komponen Python yang dapat digunakan kembali dan direproduksi dengan API JSON terpadu dan meta JSON yang dibagikan melalui GitHub. Mereka juga dapat dihubungkan ke analitik prediktif dengan API JSON terpadu yang sama.

Kami baru saja merilis versi baru V1.8.1 dan menyediakan dokumentasi yang luas sehingga mudah-mudahan akan lebih mudah untuk memahami konsep sekarang: http://github.com/ctuning/ck/wiki

Kami sekarang memiliki banyak proyek akademik dan industri berdasarkan kerangka kerja ini, jadi Anda dapat memeriksa salah satunya - optimalisasi program crowdsourcing di seluruh perangkat seluler yang disediakan oleh sukarelawan dengan cara yang dapat direproduksi: http://cknowledge.org/repo

Kami juga melacak berbagai sumber yang terkait dengan ilmu yang dapat direproduksi di sini: https://github.com/ctuning/ck/wiki/Enabling-open-science

Meskipun saya terutama berfokus pada membuat penelitian sistem komputer dapat direproduksi, saya memiliki obrolan yang menarik dengan kolega dari domain lain dan sepertinya mereka memiliki masalah yang sangat mirip. Jadi, saya akan sangat senang jika kerangka kerja kami dapat membantu komunitas lain! Jika Anda memiliki pertanyaan atau saran, silakan menghubungi kami!

gfursin
sumber
1
Intisari musim panas ini pada penelitian yang dapat direproduksi (termasuk tautan ke alat terkait, set data, artikel, dan acara) mungkin juga menarik: github.com/ctuning/ck/wiki/Mengaktifkan-open-science-blog-20160919
gfursin
7

Ada seluruh program yang dikhususkan untuk penelitian yang dapat direproduksi. https://www.coursera.org/learn/reproducible-research Kursus ini didasarkan pada R, tetapi ide yang mendasarinya dapat dipelajari.

Salah satu cara sederhana adalah dengan memiliki notebook Ipython dan tetap menyimpan setiap pekerjaan kotor yang Anda lakukan, baik itu membersihkan data, analisis eksplorasi atau membangun model.

Ram
sumber
6

Baru-baru ini saya menemukan alat berikut - http://github.com/ctuning/ck . Itu sudah ditulis dalam Python dan tampaknya termasuk apa yang Anda butuhkan (kolega saya menggunakannya dalam proyek percontohan untuk mengotomatiskan pengenalan gambar).

Pro:

  1. sangat kecil, portabel dan dapat disesuaikan
  2. termasuk server web untuk mendistribusikan eksperimen dan memprosesnya menggunakan analisis prediktif
  3. memiliki contoh penggunaan keren untuk crowdsource dan mereproduksi optimisasi kompiler - http://cknowledge.org/repo

Kekurangan:

  1. level agak rendah - Anda perlu mengimplementasikan alur kerja Anda sendiri dari komponen Python yang dibagikan melalui GitHub menggunakan API JSON atau baris perintah
  2. dokumentasi agak rumit - Saya sangat berharap bahwa mereka akan menemukan waktu untuk memperbaruinya segera.
M.Plank
sumber
6

Saya telah membuat dan baru-baru ini merilis alat open source http://dvc.org atau DVC yang melakukan persis apa yang Anda coba jangkau:

  1. [Alat untuk kontrol versi data.] DVC bekerja di atas Git, menambahkan kontrol versi file data (file disimpan di luar Git) dan melacak dependensi antara kode dan file data. DVC secara otomatis memperoleh grafik dependensi (DAG) untuk kode dan data.
  2. [Alat yang memungkinkan untuk mereproduksi tahap dan percobaan.] dvc repro data/scores.csvMereproduksi semua langkah yang diperlukan terkait DAG.
  3. [Protokol dan struktur direktori yang disarankan untuk proyek semacam itu.] DVC memerlukan direktori data ( datasecara default) tempat Anda seharusnya menyimpan semua file data. Namun, DVC secara transparan memindahkan konten aktual ke .cachedirektori dan membuat symlink (ya, saya membuatnya bekerja di Windows juga). The .cachedirektori tidak disinkronisasikan ke Git tetapi dapat disinkronkan melalui awan (S3 atau GCP) dengan perintah dvc sync data/scores.csv(itu syncs berkorespondensi data file dari cache seperti .cache/scores.csv_29de545)
  4. [Alat bantu build / run otomatis.] Lihat dari atas.

DVC tutorial adalah titik awal yang baik - "Kontrol Versi Data: pembelajaran mesin iteratif" .

Dmitry Petrov
sumber
5

PENOLAKAN: Saya bekerja di sebuah perusahaan, Datmo , yang menciptakan alat sumber terbuka untuk melakukan ini.

Praktik terbaik untuk reproduksibilitas adalah sebagai berikut:

1) Pertama kemas lingkungan Anda ke dalam lingkungan Docker dengan membuat Dockerfile dan memastikan bahwa semua dependensi tercakup dalam file itu. Saya menemukan sumber ini sebagai yang terbaik ( https://arxiv.org/pdf/1410.0846.pdf )

2) Setelah Anda memilikinya, Anda akan ingin memutuskan di mana Anda dapat melacak semua metrik kinerja dan konfigurasi (sehingga Anda dapat mengunjungi kembali untuk eksperimen selanjutnya)

3) Akhirnya, tulis beberapa dokumentasi sehingga eksperimen / pengembang baru dapat meninjau kembali kode Anda, menyalinnya dengan lingkungan dan melihat di mana Anda menyimpan konfigurasi dan metrik kinerja Anda.

asampat3090
sumber