Mengobrol | Status pembuatan Windows | Status pembuatan Linux |
---|---|---|
Microsoft Cognitive Toolkit (https://cntk.ai) adalah perangkat pembelajaran mendalam terpadu yang menggambarkan jaringan saraf sebagai serangkaian langkah komputasi melalui grafik terarah. Dalam grafik berarah ini, simpul daun mewakili nilai masukan atau parameter jaringan, sedangkan simpul lainnya mewakili operasi matriks pada masukannya. CNTK memungkinkan pengguna dengan mudah mewujudkan dan menggabungkan jenis model populer seperti DNN feed-forward, jaringan konvolusional (CNN), dan jaringan berulang (RNN/LSTM). Ini mengimplementasikan pembelajaran penurunan gradien stokastik (SGD, error backpropagation) dengan diferensiasi dan paralelisasi otomatis di beberapa GPU dan server. CNTK telah tersedia di bawah lisensi sumber terbuka sejak April 2015. Kami berharap komunitas dapat memanfaatkan CNTK untuk berbagi ide lebih cepat melalui pertukaran kode kerja sumber terbuka.
Jika Anda lebih suka menggunakan bit CNTK terbaru dari master, gunakan salah satu paket malam CNTK:
Anda dapat mempelajari lebih lanjut tentang menggunakan dan berkontribusi pada CNTK dengan sumber daya berikut:
Komunitas yang terhormat,
Dengan kontribusi berkelanjutan kami pada ONNX dan ONNX Runtime, kami telah mempermudah interoperasi dalam ekosistem kerangka AI dan mengakses kemampuan inferensi lintas platform berperforma tinggi untuk model ML tradisional dan jaringan neural dalam. Selama beberapa tahun terakhir kami mendapat kehormatan untuk mengembangkan proyek pembelajaran mesin sumber terbuka yang penting, termasuk Microsoft Cognitive Toolkit, yang memungkinkan penggunanya memanfaatkan kemajuan industri dalam pembelajaran mendalam dalam skala besar.
Rilis 2.7 hari ini akan menjadi rilis utama terakhir CNTK. Kami mungkin memiliki beberapa rilis kecil berikutnya untuk perbaikan bug, namun ini akan dievaluasi berdasarkan kasus per kasus. Tidak ada rencana untuk pengembangan fitur baru pasca rilis ini.
Rilis CNTK 2.7 memiliki dukungan penuh untuk ONNX 1.4.1, dan kami mendorong mereka yang ingin mengoperasionalkan model CNTK mereka untuk memanfaatkan ONNX dan ONNX Runtime. Ke depannya, pengguna dapat terus memanfaatkan inovasi ONNX yang terus berkembang melalui sejumlah kerangka kerja yang mendukungnya. Misalnya, pengguna dapat mengekspor model ONNX dari PyTorch atau mengonversi model TensorFlow ke ONNX dengan konverter TensorFlow-ONNX.
Kami sangat berterima kasih atas semua dukungan yang kami terima dari kontributor dan pengguna selama bertahun-tahun sejak rilis awal CNTK bersumber terbuka. CNTK telah memungkinkan tim Microsoft dan pengguna eksternal untuk menjalankan beban kerja yang kompleks dan berskala besar dalam semua jenis aplikasi pembelajaran mendalam, seperti terobosan bersejarah dalam pengenalan suara yang dicapai oleh peneliti Microsoft Speech, pencetus kerangka kerja ini.
Seiring dengan semakin banyaknya ONNX yang digunakan dalam melayani model yang digunakan di seluruh produk Microsoft seperti Bing dan Office, kami berdedikasi untuk mensintesis inovasi dari penelitian dengan tuntutan produksi yang ketat untuk memajukan ekosistem.
Yang terpenting, tujuan kami adalah membuat inovasi dalam pembelajaran mendalam di seluruh perangkat lunak dan perangkat keras seterbuka dan dapat diakses semaksimal mungkin. Kami akan bekerja keras untuk memanfaatkan kekuatan CNTK yang ada dan penelitian mutakhir ke dalam proyek sumber terbuka lainnya untuk benar-benar memperluas jangkauan teknologi tersebut.
Dengan rasa syukur,
-- Tim CNTK
Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi lebih lanjut lihat FAQ Pedoman Perilaku atau hubungi [email protected] jika ada pertanyaan atau komentar tambahan.
Anda dapat menemukan lebih banyak berita di feed proyek resmi
29-03-2019. CNTK 2.7.0
Untuk mengatur lingkungan build dan runtime di Windows:
Untuk mengatur lingkungan build dan runtime di Linux menggunakan buruh pelabuhan, silakan buat image buruh pelabuhan Unbuntu 16.04 menggunakan Dockerfiles di sini. Untuk sistem Linux lainnya, silakan merujuk ke Dockerfiles untuk menyiapkan pustaka dependen untuk CNTK.
Model CNTK dengan loop rekursif dapat diekspor ke model ONNX dengan operasi pemindaian.
Untuk mengekspor model yang lebih besar dari 2 GB dalam format ONNX, gunakan cntk.Function API: save(self, filename, format=ModelFormat.CNTKv2, use_external_files_to_store_parameters=False) dengan 'format' disetel ke ModelFormat.ONNX dan use_external_files_to_store_parameters disetel ke True. Dalam hal ini, parameter model disimpan dalam file eksternal. Model yang diekspor harus digunakan dengan file parameter eksternal saat melakukan evaluasi model dengan onnxruntime.
26-11-2018.
Netron sekarang mendukung visualisasi file .model
CNTK v1 dan CNTK v2.
17-09-2018. CNTK 2.6.0
Implementasi konvolusi grup di CNTK telah diperbarui. Implementasi yang diperbarui tidak lagi membuat sub-grafik untuk konvolusi grup (menggunakan slicing dan splicing), melainkan menggunakan API cuDNN7 dan MKL2017 secara langsung. Hal ini meningkatkan pengalaman baik dari segi kinerja dan ukuran model.
Sebagai contoh, untuk operasi konvolusi grup tunggal dengan atribut berikut:
Angka perbandingan untuk node tunggal ini adalah sebagai berikut:
Tajuk Pertama | Eksekutif GPU. waktu (dalam milidetik, rata-rata 1000 putaran) | eksekutif CPU. waktu (dalam milidetik, rata-rata 1000 putaran) | Ukuran Model (dalam format KB, CNTK) |
---|---|---|---|
Implementasi lama | 9.349 | 41.921 | 38 |
Implementasi baru | 6.581 | 9.963 | 5 |
Percepatan/penghematan Kira-kira. | Sekitar 30% | Sekitar 65-75% | 87% |
Implementasi konvolusi sekuensial di CNTK telah diperbarui. Implementasi yang diperbarui membuat lapisan konvolusi berurutan yang terpisah. Berbeda dari lapisan konvolusi biasa, operasi ini juga berputar pada sumbu dinamis (urutan), dan filter_shape[0] diterapkan pada sumbu tersebut. Implementasi yang diperbarui mendukung kasus yang lebih luas, seperti langkah > 1 untuk sumbu urutan.
Misalnya, konvolusi berurutan pada kumpulan gambar hitam-putih satu saluran. Gambar memiliki tinggi tetap yang sama yaitu 640, tetapi masing-masing dengan lebar dan panjang yang bervariasi. Lebar kemudian diwakili oleh sumbu berurutan. Padding diaktifkan, dan langkah untuk lebar dan tinggi adalah 2.
>>> f = SequentialConvolution((3,3), reduction_rank=0, pad=True, strides=(2,2), activation=C.relu)
>>> x = C.input_variable(**Sequence[Tensor[640]])
>>> x.shape
(640,)
>>> h = f(x)
>>> h.shape
(320,)
>>> f.W.shape
(1, 1, 3, 3)
Ada perubahan besar pada operator depth_to_space dan space_to_ depth . Ini telah diperbarui agar sesuai dengan spesifikasi ONNX, khususnya permutasi bagaimana dimensi kedalaman ditempatkan sebagai blok dalam dimensi spasial, dan sebaliknya, telah diubah. Silakan lihat contoh dokumen yang diperbarui untuk dua operasi ini untuk melihat perubahannya.
Menambahkan dukungan untuk operasi trigonometri Tan
dan Atan
.
Menambahkan dukungan untuk atribut alpha
di operasi ELU.
Algoritme padding otomatis Convolution
diperbarui untuk menghasilkan padding simetris dengan upaya terbaik pada CPU, tanpa memengaruhi nilai keluaran konvolusi akhir. Pembaruan ini meningkatkan rentang kasus yang dapat dicakup oleh MKL API dan meningkatkan kinerja, Misalnya ResNet50.
Ada perubahan besar pada properti argumen di CNTK python API. Perilaku default telah diperbarui untuk mengembalikan argumen dalam urutan python, bukan dalam urutan C++. Dengan cara ini ia akan mengembalikan argumen dalam urutan yang sama seperti yang dimasukkan ke dalam operasi. Jika Anda tetap ingin mendapatkan argumen dalam urutan C++, Anda cukup mengganti opsi global. Perubahan ini hanya akan mempengaruhi operasi berikut: Times, TransposeTimes, dan Gemm (internal).
LogSoftMax
untuk menggunakan implementasi yang lebih stabil secara numerik.BatchNormalization
ONNX CNTK pada ekspor/impor ke spesifikasi terbaru.DepthToSpace
dan SpaceToDepth
agar sesuai dengan spesifikasi ONNX pada permutasi bagaimana dimensi kedalaman ditempatkan sebagai dimensi blok.alpha
di operasi ELU
ONNX.Convolution
dan Pooling
. Tidak seperti sebelumnya, operasi ini tidak mengekspor operasi Pad
eksplisit dalam situasi apa pun.ConvolutionTranspose
. Atribut seperti output_shape
, output_padding
, dan pads
didukung sepenuhnya.StopGradient
CNTK sebagai larangan operasi.Hardmax
/ Softmax
/ LogSoftmax
.Select
operasi ekspor.MatMul
.Gemm
.MeanVarianceNormalization
pada ekspor/impor CNTK ke spesifikasi terbaru.LayerNormalization
ONNX CNTK dan ekspor/impor ke spesifikasi terbaru.PRelu
CNTK ke spesifikasi terbaru.Gather
operasi ekspor/impor ke spesifikasi terbaru.ImageScaler
CNTK untuk ekspor/impor ke spesifikasi terbaru.Reduce
ekspor/impor operasi ke spesifikasi terbaru.Flatten
operasi ekspor/impor ke spesifikasi terbaru.Unsqueeze
.size
memiliki semantik diameter, bukan radius. Menambahkan validasi jika ukuran kernel LRN lebih besar dari ukuran saluran.Min
/ Max
yang diperbarui untuk menangani input variadik.Pustaka Cntk.Core.Managed telah resmi dikonversi ke .Net Standard dan mendukung aplikasi .Net Core dan .Net Framework di Windows dan Linux. Mulai dari rilis ini, pengembang .Net seharusnya dapat memulihkan paket CNTK Nuget menggunakan file proyek gaya .Net SDK baru dengan format manajemen paket yang disetel ke PackageReference.
Kode C# berikut sekarang berfungsi di Windows dan Linux:
>>> var weightParameterName = "weight";
>>> var biasParameterName = "bias";
>>> var inputName = "input";
>>> var outputDim = 2;
>>> var inputDim = 3;
>>> Variable inputVariable = Variable.InputVariable(new int[] { inputDim }, DataType.Float, inputName);
>>> var weightParameter = new Parameter(new int[] { outputDim, inputDim }, DataType.Float, 1, device, weightParameterName);
>>> var biasParameter = new Parameter(new int[] { outputDim }, DataType.Float, 0, device, biasParameterName);
>>>
>>> Function modelFunc = CNTKLib.Times(weightParameter, inputVariable) + biasParameter;
Misalnya, cukup menambahkan klausa ItemGroup di file .csproj aplikasi .Net Core saja sudah cukup: >>> >>> >>> >>> netcoreapp2.1 >>> x64 >>> >>> >>> >>> >>> >>> >>>
16-04-2018. CNTK 2.5.1
Kemas ulang CNTK 2.5 dengan perpustakaan pihak ketiga yang disertakan dalam bundel (paket roda Python)
15-03-2018. CNTK 2.5
Ubah format keluaran detail profiler menjadi chrome://tracing
Aktifkan pengaturan waktu per node. Contoh kerja di sini
import cntk as C
C . debugging . debug . set_node_timing ( True )
C . debugging . start_profiler () # optional
C . debugging . enable_profiler () # optional
#<trainer|evaluator|function> executions
< trainer | evaluator | function > . print_node_timing ()
C . debugging . stop_profiler ()
Contoh tampilan detail profiler di chrome://tracing
Peningkatan kinerja inferensi CPU menggunakan MKL
cntk.cntk_py.enable_cpueval_optimization()/cntk.cntk_py.disable_cpueval_optimization()
1BitSGD dimasukkan ke dalam CNTK
1BitSGD
sekarang tersedia dengan lisensi CNTK (lisensi MIT) di bawah Source/1BitSGD/
1bitsgd
digabungkan ke target GPU yang adaFungsi kerugian baru: softmax hierarki
Pelatihan Terdistribusi dengan Banyak Pembelajar
Operator
MeanVarianceNormalization
.Perbaikan bug
CNTKBinaryFormat
saat melintasi batas sapuanmpi=no
cntk.convert
API di misc.converter.py
, yang mencegah konversi jaringan yang kompleks.ONNX
ONNX.checker
.OptimizedRNNStack
CNTK (khusus LSTM).MeanVarianceNormalization
.Identity
eksperimental.LayerNormalization
CNTK menggunakan operasi ONNX MeanVarianceNormalization
.Concat
CNTK.LeakyReLu
(argumen 'alpha' dikembalikan ke tipe ganda).Lain-lain
find_by_uid()
di bawah cntk.logging.graph
.28-02-2018. CNTK mendukung pembangunan malam hari
Jika Anda lebih suka menggunakan bit CNTK terbaru dari master, gunakan salah satu paket malam CNTK.
Alternatifnya, Anda juga dapat mengklik lencana bangunan yang sesuai untuk membuka halaman bangunan malam.
31-01-2018. CNTK 2.4
Highlight:
operasi
top_k
: dalam forward pass ia menghitung nilai k teratas (terbesar) dan indeks terkait sepanjang sumbu yang ditentukan. Dalam backward pass, gradien tersebar ke k elemen teratas (sebuah elemen yang tidak berada di k teratas mendapat gradien nol).gather
sekarang mendukung argumen sumbusqueeze
dan expand_dims
untuk menghapus dan menambahkan sumbu tunggal dengan mudahzeros_like
dan ones_like
. Dalam banyak situasi, Anda hanya dapat mengandalkan CNTK untuk menyiarkan 0 atau 1 sederhana dengan benar, tetapi terkadang Anda memerlukan tensor yang sebenarnya.depth_to_space
: Menyusun ulang elemen dalam tensor masukan dari dimensi kedalaman menjadi blok spasial. Penggunaan umum dari operasi ini adalah untuk mengimplementasikan konvolusi subpiksel untuk beberapa model resolusi super gambar.space_to_depth
: Menyusun ulang elemen pada tensor masukan dari dimensi spasial ke dimensi kedalaman. Ini sebagian besar merupakan kebalikan dari DepthToSpace.sum
: Buat instance Fungsi baru yang menghitung jumlah tensor input berdasarkan elemen.softsign
: Buat instance Fungsi baru yang menghitung softsign berdasarkan elemen dari tensor input.asinh
: Buat instance Fungsi baru yang menghitung asinh elemen dari tensor input.log_softmax
: Membuat instance Fungsi baru yang menghitung nilai logsoftmax yang dinormalisasi dari tensor input.hard_sigmoid
: Membuat instance Fungsi baru yang menghitung nilai hard_sigmoid yang dinormalisasi dari tensor input.element_and
, element_not
, element_or
, element_xor
operasi logika berdasarkan elemenreduce_l1
: Menghitung norma L1 elemen tensor masukan di sepanjang sumbu yang disediakan.reduce_l2
: Menghitung norma L2 elemen tensor masukan di sepanjang sumbu yang disediakan.reduce_sum_square
: Menghitung jumlah kuadrat elemen tensor masukan sepanjang sumbu yang disediakan.image_scaler
: Perubahan gambar dengan menskalakan nilai individualnya.ONNX
Reshape
untuk menangani InferredDimension
.producer_name
dan producer_version
ke model ONNX.auto_pad
atau pads
tidak ditentukan dalam operasi Conv
ONNX.Pooling
InputVariable
hanya dengan satu sumbu batch.Transpose
agar sesuai dengan spesifikasi yang diperbarui.Conv
, ConvTranspose
, dan Pooling
agar sesuai dengan spesifikasi yang diperbarui.Operator
Convolution
CNTK akan berubah untuk grup > 1. Implementasi konvolusi grup yang lebih optimal diharapkan pada rilis berikutnya.Convolution
.Konvolusi Biner Halida
Cntk.BinaryConvolution.so/dll
yang dapat digunakan dengan modul netopt
. Pustaka berisi operator konvolusi biner yang dioptimalkan yang berkinerja lebih baik daripada operator konvolusi biner berbasis python. Untuk mengaktifkan Halide dalam build, silakan unduh rilis Halide dan atur varibal lingkungan HALIDE_PATH
sebelum memulai build. Di Linux, Anda dapat menggunakan ./configure --with-halide[=directory]
untuk mengaktifkannya. Untuk informasi lebih lanjut tentang cara menggunakan fitur ini, silakan merujuk ke How_to_use_network_optimization.Lihat selengkapnya di Catatan Rilis. Dapatkan Rilis dari halaman Rilis CNTK.