Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Todo list before EMNLP #11

Open
7 of 16 tasks
denizyuret opened this issue Oct 24, 2019 · 0 comments
Open
7 of 16 tasks

Todo list before EMNLP #11

denizyuret opened this issue Oct 24, 2019 · 0 comments

Comments

@denizyuret
Copy link
Member

denizyuret commented Oct 24, 2019

  • Son haline geldiginde bunu ai-ku reposuna push edelim, paper'da o adresi verdik. Kullanmak icin video seyretmeye gerek olmasin, instruction'lar olabildigince compact olsun ve README'de olsun.

ai-ku’daki repo’ya geçici olarak “bu repo sonuçları aynen reproduce etmek için, modeli kullanmak istiyorsanız buraya nakın” gibi bir yazı ekledim. Son haline geldiğinde ai-ku’ya push etmek için deneyleri tekrar test etmemiz gerekiyor.

Gerek yok, ai-ku'da versiyon koyup (replicability icin), ease of use'a konsantre olalim.

  • Video'daki adimlari takip ederken yine su error'a takiliyorum:
julia> using Knet, KnetLayers, Morse
[ Info: Recompiling stale cache file /home/deniz/.julia/compiled/v1.2/Knet/f4vSz.ji for Knet [1902f260-5fb4-5aff-8c31-6271790ab950]
ERROR: LoadError: LoadError: syntax: malformed "import" statement

Buradaki hatayı 1.2’de çalıştırdığınız için almışsınız. Knet’in deney yaparken kullandığımız versiyonu 1.2’de çalışmıyormuş.

Manifest.toml ile version freeze etme motivasyonunu anliyorum, fakat sanirim burada release (ve dolayisiyla dogru durust test) edilmemis bir Knet ve KnetLayers versiyonu var. Bu kendi aramizda calisirken ok, ama halka release edilirken degil. Standart (mumkunse en son) release edilmis versiyonlari destekleyecek sekilde kodu update edip, varsa supported versiyon limitlerini Project.toml'da ifade edelim. Manifest.toml bildigim kadariyla release edilmemesi gereken bir dosya, Julia'cilara sorabilirsin bu prosedurun dogrusunu.

Motivasyon olarak soyle dusun: insanlar bu kodu alip bir subroutine olarak kullanip uzerine bir seyler yapacaklar, ornegin Turkce parser ya da NMT sistemi yazacaklar. Onlari eski Julia versiyonu ve release edilmemis unstable paket versiyonlariyla calismaya zorlamak uygun degil. Kodu son Julia ve son released Knet/KnetLayers ile calisir hale getirmek ne kadar

v1.2‘de çalıştırdığınız gözüküyor?

Hayir, v1.1'de calistirabildim.

Fakat insanlari eski Julia kullanmaya mecbur etmeyelim.

Katılıyorum ama tamamen reproducibility ile ilgili. Örneğin Knet’in versiyonu değiştiğinde rnn’deki dropout’ın yeri, rnn initialization tipi değişebiliyor. Böyle şeyler sonucumuzu az da olsa değiştirebilir. Birisi gelip sizin kodunuz aynı sonucu vermiyor dediğinde ne diyeceğiz? Şuan Manifest.toml sayesinde doğru Julia’yı kullandığınızda her zaman aynı şekilde çalışacak bir kod var.

Kodun bu haliyle birinin ugrasip kullanma sansi 0'a yakin. Ugrasip replicate edebilse bile onun uzerine bir seyler build edip research yapabilme sansi 0'a yakin (non-standart julia/paket versiyonlariyla kimse yeni kod build etmez).

Belirttiğim hassasiyeti sağlamanın bence en kolay yolu şuanki haline versiyon atamak. Ya da şuanda olduğu gibi ai-ku’daki reposunu dondurup benim hesabımdaki repoya yönlendirmek ve onu user-friendly yapmak.

Versiyon atayalim. README'de belirtelim. Paper'da ai-ku'ya point ettik, tum development'i orada yapalim, kafa karistirmamak icin iki repo olmamasi daha iyi olur.

  • Asagidaki warning Base fonksiyon override gosteriyor, bunu yapma (daha evvel yazmistim sanirim), yapacaksan sadece kendin type'larin icin yap:
    julia> using Morse
    [ Info: Precompiling Morse [1ee78b96-f10b-11e8-2f7c-e192173d3e61]
    WARNING: Method definition show(IO, Union{Float32, Float64}) in module Grisu at grisu/grisu.jl:158 overwritten in modul
    e Morse at /home/deniz/.julia/projects/Morse.jl/src/util.jl:5.

Haklısınız tembelliğime gelmiş.

  • @doc MorseModel (your main export) pek bir sey anlatmiyor, en azindan API ayrintili anlatilmali. Ornegin videoda kullandigin metod model(sentence::String) undocumented. Output tuple'larin 3. elemani nedir bilmiyorum. Paper'a refer etmissin ama paper'da API yok, teori var. Her kullanimin docstring'de anlatilmasina dikkat et. Typical use case'ler icin (ornegin bir dosyadaki tum cumlelerin tag'lenmesi) ornek ver. predict/loss gibi fonksiyonlar da document edilmeli.

Evet repo henüz bir Julia pkg değil. Önce kullanışlı hale getirelim daha sonra bunu yazarız.

Dokumantasyon genel bir software engineering requirement, julia paketi icin degil sadece :)

  • Bu arada predict/loss gibi isimleri export etmek tehlikeli olabilir, cunku diyelim ki 5 farkli modeli birlestirerek bir sey yapacagim, her paketten predict/loss export etmeye kalkarsa durum iyi olmayabilir (gerci model specific argument type'lar oldugu surece ok). Birden fazla modeli birlestirip is yapabilmek icin nasil bir standart API kullanabiliriz dusunelim/konusalim. Istiyorum ki using Morse, VGG, Transformer, BERT, ResNet, YoLo falan deyip 5 dakikada bunlari bir arada kullanan bir model tanimlayabilelim, her birinin standart train edilme veya pretrained weight yukleme API'i olsun vs.

Haklısınız

Bu konuda vaktin oldugunda konusalim.

  • README'de Tagging niye limited support diyor?

Her dili indiremedikleri için.

Diger dilleri de available yapalim.

  • Tagger line by line bir dosyayi cok yavas process ediyor (saniyede 2-3 cumle). Bulk processing icin daha iyi bir yontem var mi yoksa model mi genelde yavas?

Batching kodda hiç bir yerde yok. O yüzden performans arttırılabilir ama scale edilemez sanırım. GPU’da mısınız?

Evet GPU'da, ustelik V100. Burada batching olmasa bile cumledeki tum kelimeleri olabildigince paralel process ederek bir seyler yapilamaz mi? Character based word embedding'lerin hepsi paralel cikar, context embedding'ler paralel cikar, bir tek output embedding one step at a time.

  • Ideal olarak bu isleri EMNLP'den once bitirelim.

Bu hafta iki sınavım var, sonrasını tam bilmiyorum ama konuşuruz. Zaten poster de hazırlayacağız ambitious bir hedef olabilir. PR açarsanız onların üzerinden de katkıda bulunmaya çalışırım.

ok. simdilik versiyon koyup master'i en son julia/paket versiyonlariyla calistiralim. sonra downloadable modeller. sonra efficiency. ben bir ilk pass bakip problemleri yazarim.

  • Benim calismaya baslayabilmem icin ai-ku reposu uzerinde herseyi konsolide edelim. ekinakyurek reposunu silelim. Replication icin gecerli bir release (v1.0.0) yapalim.

  • ai-ku README'de hatalar var: paper link yanlis (tacl link kullanalim, arxiv v2 de dogru ama v1 degil).

  • ilk cumle yanlis: This repo is not a collection of morphological taggers. Neyse readme'yi bastan yazacagim alet stable oldugunda.

  • Ben kodu son julia/Knet/KnetLayers ile update edeyim. Eger hale replication yapilabiliyorsa Fails during installation #1'de yarattigimiz versiyonu silip bu noktada yeniden yaratalim.

  • Tum modellerin trained weight'lerini easily downloadable hale getirelim. Bunun icin MorseModel(url) uygun mu?

  • KnetLayers'da issue ve PR actim. Bu haliyle testleri geciyor ve Morse'u run ediyor. Yeni versiyon tag edelim baska ciddi bir sey yoksa, su anki released 0.1.0 ile Morse calismiyor.

  • Morse'da (ai-ku) issue ve PR actim. Bu haliyle compile edip calisiyor. Dolayisiyla buyuk ihtimal KnetLayers tag edildikten sonra en son paket versiyonlariyla calisacak gibi gorunuyor. Training'i sonuna kadar goturup sonuc kontrol etmedim, ama bir iki tablo icin bunu yapip "v1.0.0" tag'ini bu yeni haline verebiliriz.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant