Bug: No matching versions

Describe the bug
CGO_ENABLED=0 go build .

warning: GOPATH set to GOROOT (/usr/local/go) has no effect
swiftwave_service/main.go:12:2: no required module provides package github.com/swiftwave-org/swiftwave/swiftwave_service/dashboard; to add it:
go get github.com/swiftwave-org/swiftwave/swiftwave_service/dashboard

go get github.com/swiftwave-org/swiftwave/swiftwave_service/dashboard

go: github.com/swiftwave-org/swiftwave/swiftwave_service/dashboard: no matching versions for query "upgrade"

Are you working on this issue?
No

@Justman100
It looks like dashboard submodule hasn't cloned perfectly. Check that.
Run make to run the complete build process.
If you want to manually, check the makefile https://github.com/swiftwave-org/swiftwave/blob/develop/Makefile


Some mobile phones load the video stream very slowly

Environment

OS: macOS
scrcpy version:  v1.24
device model:  'Redmi K30' & 'Redmi note9 4G'
Android version:  android10

Describe the bug
when I input command to open scrcpy,  It took 10+s for the screen UI to appear
scrcpy -s 79a20997

Over USB or wifi?

Over USB or wifi?
Thanks for your reply.
Over USB,  only these two devices are slowly. The others are normal

Over USB or wifi?

Thanks for your reply.
Over USB, only these two devices are slowly. The others are normal

The the device are not performant enough to record/encode the screen content in real time.
Try to reduce the resolution (scrcpy -m 800) or try another encoder.

The the device are not performant enough to record/encode the screen content in real time.
Try to reduce the resolution (scrcpy -m 800) or try another encoder.

I try resize  resolution as 720  and setting encoder such as OMX.qcom.video.encoder.avc, c2.android.avc.encoder, OMX.google.h264.encoder.  But It doesn't work.

scrcpy --encoder 'c2.android.avc.encoder' --max-size 1024 --bit-rate 15M --max-fps 30 --render-driver=opengl%
Best setting for me me, always works. Try if helps.

scrcpy --encoder 'c2.android.avc.encoder' --max-size 1024 --bit-rate 15M --max-fps 30 --render-driver=opengl%  Best setting for me, always works. Try if helps.

It doesn't work.

scrcpy --encoder 'c2.android.avc.encoder' --max-size 1024 --bit-rate 15M --max-fps 30 --render-driver=opengl% 对我来说最好的设置，总是有效的。如果有帮助，请尝试。

它不起作用。

Hello,I meet the question also,do you know why some devices is so slow and how to solve it?


Problem dragging nodes and scrolling on IE11

I have a large list of nodes and they don't fit inside the container. Whenever I try to drag a children node down to drop it on another parent node that isn't visible on the container, the content of the container doesn't scroll.
It does work in Chrome but not in IE11. Does someone have the same problem?

I have the same problem! the scroll do not down and I can't use the drag functionality to move nodes...

facing same issue ,
Anyone found any workaround for this ,
For me not working on IE and safari browser


Unable to create a server application application bundle using @ngtools/webpack

Bug Report or Feature Request (mark with an x)
- [x] bug report -> please search issues before submitting
- [ ] feature request

Versions.

Node: [8.2.1]
NPM: [5.3.0]
Angular version: [5.0.1]
Language: [TypeScript 2.4.2]
OS:  [Mac OS X]

Repro steps.

I am trying to build a universal app with Angular 5 and WebPack without the cli.
The issue I am having is that I cannot seem to get the express application to work and I am met with an error every time I hit the server
I believe the issue is to do with the server application bundle that's then consumed by server.ts because if I console log out AppServerModuleNgFactory it comes up as undefined.
I've tried to base my server config to match that as close as possible to the one generated by the CLI project in the angular/universal-starter repo but it just doesn't generate an app bundle that the server can use
You can find a repo at https://github.com/mogusbi/ng5-universal-webpack. Clone that, run npm start and go to localhost:4000
The log given by the failure.

Error: You must pass in a NgModule or NgModuleFactory to be bootstrapped
    at View.engine (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/@nguniversal/express-engine/src/main.js:34:23)
    at View.render (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/view.js:135:8)
    at tryRender (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/application.js:640:10)
    at Function.render (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/response.js:1008:7)
    at /Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/dist/server.js:122:47
    at Layer.handle [as handle_request] (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/router/layer.js:95:5)
    at next (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/Volumes/Data/Users/mo/Desktop/ng5-universal-webpack/node_modules/express/lib/router/layer.js:95:5)

Desired functionality.

For the application to be rendered on the server

I've eventually worked out why the ModuleNgFactories weren't being generated after delving into nitty gritty of the CLI source code and it's literally just because there's an undocumented option in the AngularCompilerPlugin called platform - it needs to be set to 1 to generate the server application bundle that then gets consumed by ngExpressEngine in the express application.
Once you do that, everything works as you expect it to! 😄
I hope anyone else who has trouble getting the isomorphic stuff to work without the CLI finds this helpful

@mogusbi not working for me :(


chore: rename mkpair → pair

We rename the ported mkpair to pair, as mkpair didn't follow the naming convention and pair pairs well with unpair. A poll for this decision was held on zulip.

bors merge

bors r-

bors merge


Circle CI MVP

Initial integration with Circle CI.
This code will trigger a build within Circle CI but not a deploy to PyPI. I will add deployment steps later assuming the integration works and we decide as a team that we want to continuously deploy.

Questions for my own learning:

Does the build fail if there are lints? I'm guessing no because my recent code must have lints in it.
As of now, does "build" really just mean lint and test? Put another way, does it produce any kind of artifact?
From what I can tell, CircleCI is literally cloning our repo onto a fresh server and running various scripts. So the deploy step would basically be adding the PyPI deploy script and pointing CircleCi to that location if all else passes. Is that correct?
What's the "cache" that CircleCI is referring to on the pipeline page?

This is cool! The yaml file is easy to read.

The build does fail if there are linting issues. Your PR was clean! Checked myself
For now, the build just runs the tests. In the future, it will also create our distribution packages for PyPI
In this case the "fresh server" is a docker container. The deploy step uses twine to deploy the distribution packages
To see all the steps take a look here: https://github.com/kjmerf/hello_kjmerf/blob/master/.circleci/config.yml
Caching is recommended by Circle CI as a way to re-use work done by previous jobs. I don't totally follow it but they have a lengthy description here: https://circleci.com/docs/2.0/caching/


feat: Add missing deployment_status properties

Add missing properties to DeploymentStatusEvent
Add missing properties to WorkflowRun

~I've made an assumption here that the properties for check suite and workflows are nullable.~ https://github.com/octokit/webhooks.net/pull/55#discussion_r837234585
~I've also omitted the missing actor and triggering_actor properties at this point as I'm not sure what the type should be with respect to the schema and I couldn't see an obvious existing type for it.~
Resolves #54.

I've also validated that the event I originally received in my app deserializes without issue using these changes.


Create full fab run setup in GH

 change to compression not compression ratio in compas_rcf

 change to compression not compression ratio in compas_rcf

 create grasshopper run_data setup


Have travis upload "nightly" builds

(This is currently untested)
When a travis build is triggered that is not part of a pull request, it will run a script to upload the build to Crafty-Distro

It will upload using the OAuth token of the account @craftyjs-machine-user, which has write permissions only to Crafty-Distro and craftyjs.github.com
The upload script is in the file travis-nightly.sh
I've also tried to configure tron-ci to automatically run the travis build script once a night, but I'm not actually sure that's necessary -- I think it should just run the script after we merge a PR

Thanks to @neothemachine for providing the basis of the script (see #885)!  This particular version hasn't been tested yet.

Tron-ci is not necessary here as you do it after each successful commit, which is better anyway.
Currently this would upload for each branch, but I guess you want "develop" only, so you have to add an additional check in the travis-nightly.sh script.
As the Crafty-Distro repo is empty, it doesn't need to be setup as the new nightlies branch will be a root branch. However, when you create another branch, then make sure that you don't branch that off of nightlies but rather create it as a new root "orphan" branch. By keeping the nightlies branch completely independent you could even regulary remove/recreate the branch to prevent the repo from growing large.

Sorry, I was wrong about the repo setup, just tried it... The branch has to exist already to use -b nightlies, otherwise git complains when checking out. So just manually create this branch.

Thanks, updated it with those fixes (runs the correct script, checks against the branch being built).  I'll try to setup a real test in my repo to make sure it actually functions as intended now.

Ok, I tested it in my own repo and found a few bugs (now fixed).

syntax error (missing space before ]) in the conditional
had to modify the permissions of the shell script (chmod ugo+x travis-nightly.sh)
needed to double quote the commit message (otherwise the variable was interpreted as a string)

Well, let's just merge this and see if it works!


Show 5 latest unique entries so user can continue any of them

Should be shown in the dropdown.
Add Continue entry item that extends when hovering and shows the 5 most recent unique entries to choose from. Clicking on any of them starts the timer with the entry data.

For a simpler version, a "Continue last entry" button would be very useful.
Especially when the Pomodoro popup has disappeared by the time you're ready to continue.

I believe we have implemented this.


[WIP]: MMI + MBR training.

working in progress.

Getting this warning when running it:
Last login: Wed Jan 13 11:23:15 on ttys013

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
mac:matrix:

mac:matrix: ls
Makefile			kaldi-blas.h			kaldi-vector.o			matrix-lib-test.o		packed-matrix.o			sparse-matrix.cc
Matrix.vcxproj			kaldi-matrix-inl.h		matrix-common.h			matrix-lib.h			qr.cc				sparse-matrix.h
cblas-wrappers.h		kaldi-matrix.a			matrix-functions-inl.h		numpy-array-test.cc		qr.o				sparse-matrix.o
compressed-matrix.cc		kaldi-matrix.cc			matrix-functions.cc		numpy-array.cc			sp-matrix-inl.h			srfft.cc
compressed-matrix.h		kaldi-matrix.h			matrix-functions.h		numpy-array.h			sp-matrix.cc			srfft.h
compressed-matrix.o		kaldi-matrix.h~			matrix-functions.o		optimization.cc			sp-matrix.h			srfft.o
foo				kaldi-matrix.o			matrix-lib-speed-test.cc	optimization.h			sp-matrix.o			test_data
hEulksI636RvUfO0?mu=1		kaldi-vector-inl.h		matrix-lib-test			optimization.o			sparse-matrix-test		tp-matrix.cc
jama-eig.h			kaldi-vector.cc			matrix-lib-test.cc		packed-matrix.cc		sparse-matrix-test.cc		tp-matrix.h
jama-svd.h			kaldi-vector.h			matrix-lib-test.cc~		packed-matrix.h			sparse-matrix-test.o		tp-matrix.o
mac:matrix: ssh relay.xiaomi.com

请[填写密码]或使用小米人[扫描二维码]进行登录。如看不到二维码，请把终端模拟软件的颜色支持打开。
FAQ: http://wiki.n.miui.com/pages/viewpage.action?pageId=30213224

Your [EMAIL] password: login via qrcode
                                       Last login: Wed Jan 13 11:13:36 2021 from <IP_ADDRESS>
                             oo$$$$$$$$$$oo
                          oooo$$$$$$$$$$$$oooo
                      oo$$$$$$$$$$$$$$$$$$$$$$$$o
                   oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o         o$   $$ o$
   o $ oo        o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o       $$ $$ $$o$
oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o       $$$o$$o$
"$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$
  $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$
   "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$
    $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o
   o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       $$$o
   $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o
  o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$
  $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""
 """"       $$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$
            "$$$o     """$$$$$$$$$$$$$$$$$$"$$"         $$$
              $$$o          "$$""$$$$$$""""           o$$$
               $$$$o                                o$$$"
                "$$$$o      o$$$$$$o"$$$$o        o$$$$
                  "$$$$$oo     ""$$$$o$$$$$o   o$$$$""
                     ""$$$$$oooo  "$$$o$$$$$$$$$"""
                        ""$$$$$$$oo $$$$$$$$$$
                                """"$$$$$$$$$$$
                                    $$$$$$$$$$$$
                                     $$$$$$$$$$"
                                      "$$$""""
                                      "$$$""""

【用法】
* 直接在relay-shell>提示符后面输入主机名，然后按回车即可登录：
    relay-shell> c3-pt-relay02.bj <按回车>
* 或者输入shell进入bash，以进行批量hd登录等操作
    relay-shell> shell <按回车>
* 在任何情况下连按两次tab键可以自动补全
[Usage]
Type ip address or hostname to connect to the speificed host,
or commands listed below to launch the corresponding feature.
* Use TAB for auto-complete, CTRL+R for reverse-search
* Try pressing the Tab key twice to see all the hosts you have access to

Command list:
	shell:		where you show off your bash programming skills
	help:		show this message
	exit		exit this place

bj5-pt-relay01.alicn.idc.xiaomi.com:dpovey> shell
Launching an interactive shell
不要在本机磁盘存储重要数据，常用脚本请做好备份。
dpovey@bj5-pt-relay01: ~ $ ssh<EMAIL_ADDRESS><EMAIL_ADDRESS>password:
Last login: Thu Jan 14 21:22:31 2021 from <IP_ADDRESS>
de-74279-k2-dev-0929153814-7686b86bc5-qbfjq:~: tmux attach

[1]+  Stopped                 emacs -nw patent_fsa.txt
mac:notes: %
emacs -nw patent_fsa.txt

[1]+  Stopped                 emacs -nw patent_fsa.txt
mac:notes: pwd
/Users/dpovey/notes
mac:notes: ls -l ~/kaldi/egs/tedlium/s5/utils
lrwxr-xr-x  1 dpovey  staff  18 Jul  2  2019 /Users/dpovey/kaldi/egs/tedlium/s5/utils -> ../../wsj/s5/utils
mac:notes: %
emacs -nw patent_fsa.txt

File Edit Options Buffers Tools C++ Help

  bool continuous_;

  const DropoutMaskComponent &operator
  = (const DropoutMaskComponent &other); // Disallow.
};

/**
   GeneralDropoutComponent implements dropout, including a continuous
   variant where the thing we multiply is not just zero or one, but may
   be a continuous value.  It is intended for the case where you want to
   either share the dropout mask across all of time, or across groups
   of 't' values (e.g. the first block of 10 values gets one dropout
   mask, the second block of 10 gets another one, and so on).

   It also has support for the frequency component of SpecAugment.

   Configuration values accepted on the command line, with defaults:
-UU-:----F1  nnet-general-component.h   73% L804  Git-master  (C++//l Abbrev) ---------------------------------------------------------------------------------------------------------------------

GeneralDropoutComponent::GeneralDropoutComponent():
    dim_(-1), block_dim_(-1), time_period_(0),
    dropout_proportion_(0.5),
    specaugment_max_proportion_(0.0),
    specaugment_max_regions_(1),
    continuous_(false) { }

GeneralDropoutComponent::GeneralDropoutComponent(
    const GeneralDropoutComponent &other):
    RandomComponent(other),
    dim_(other.dim_),
    block_dim_(other.block_dim_),
    time_period_(other.time_period_),
    dropout_proportion_(other.dropout_proportion_),
    specaugment_max_proportion_(other.specaugment_max_proportion_),
    specaugment_max_regions_(other.specaugment_max_regions_),
    continuous_(other.continuous_) { }

-UU-:----F1  nnet-general-component.cc   74% L1554 Git:master  (C++//l Abbrev) --------------------------------------------------------------------------------------------------------------------

  [Restored Jan 20, 2021 at 5:51:38 PM]
Last login: Wed Jan 20 17:51:38 on ttys011

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
mac:notes:
mac:notes: pwd
/Users/dpovey/notes
mac:notes:

mac:notes: jobs
mac:notes: jobs
mac:notes: pwd
/Users/dpovey/notes
mac:notes: ls -l ht | head
ls: ht: No such file or directory
mac:notes: ls -lht | head
total 5984
-rw-r--r--  1 dpovey  staff   6.9K Jan 20 16:08 patent_fsa.txt
-rw-r--r--  1 dpovey  staff   4.2K Jan 19 17:43 2020.highlight
-rw-r--r--  1 dpovey  staff   315B Jan 19 14:29 patent_fsa.txt~
-rw-r--r--  1 dpovey  staff   2.9K Jan 14 15:41 2020.highlight~
-rw-r--r--  1 dpovey  staff   281B Jan  3 20:14 jan3_2021.txt
-rw-r--r--  1 dpovey  staff   259B Jan  3 20:13 jan3_2021.txt~
drwxr-xr-x@ 2 dpovey  staff    64B Jan  3 20:12 updates
-rw-r--r--  1 dpovey  staff   3.1K Dec 14 18:36 k2_intro
-rw-r--r--  1 dpovey  staff   239B Dec 14 16:12 k2_intro~
mac:notes: emacs -nw patent_fsa.txt

[1]+  Stopped                 emacs -nw patent_fsa.txt
mac:notes: bg
[1]+ emacs -nw patent_fsa.txt &

[1]+  Stopped                 emacs -nw patent_fsa.txt
mac:notes: %
emacs -nw patent_fsa.txt

File Edit Options Buffers Tools Text Help

 - In the next 2-3 weeks, plan to finish and test MBR training and start
   writing code for n-best list rescoring.

===

Jan 3rd:
 Progress this week:
    Currently debugging ASG training
    Librispeech WER with ASG training is 12% (previously we had
      15% with CTC).
      Note: these numbers are still not very competitive, we are still fixing
      various things and have not really tuned our system.

===========

======

  Next-gen Kaldi

 What is Kaldi

   Kaldi is an open-source toolkit for automatic speech recognition (ASR) that
   has existed since 2011; it is the most popular speech recognition toolkit.
   Since 2011 it has evolved considerably as the state of the art has
   developed: for instance, adding support for neural network acoustic models.
   For most of that time the chief maintainer of Kaldi (Dan Povey) has worked
   at Johns Hopkins University in the USA, but in December 2019 he joined
   Xiaomi in Beijing.

 The project

  Kaldi's neural network support is provided by custom neural network
  code that is not as flexible as toolkits like PyTorch and TensorFlow.
  For a long time there has been a demand for Kaldi to support external neural
  network toolkits.  The aim of the "next-gen Kaldi" projectd is to add such
  support.

 The team
-UU-:----F1  progress.txt   16% L17    (Text) -------------------------------------------------------------------------------------------------------------------------------------------------------

  [Restored Jan 26, 2021 at 6:21:31 PM]
Last login: Tue Jan 26 18:21:30 on ttys012

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
mac:notes:
mac:notes: ssh relay.xiaomi.com

请[填写密码]或使用小米人[扫描二维码]进行登录。如看不到二维码，请把终端模拟软件的颜色支持打开。
FAQ: http://wiki.n.miui.com/pages/viewpage.action?pageId=30213224

Your [EMAIL] password: login via qrcode
                                       Last login: Tue Jan 26 22:28:14 2021 from <IP_ADDRESS>
                             oo$$$$$$$$$$oo
                          oooo$$$$$$$$$$$$oooo
                      oo$$$$$$$$$$$$$$$$$$$$$$$$o
                   oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o         o$   $$ o$
   o $ oo        o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o       $$ $$ $$o$
oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o       $$$o$$o$
"$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$
  $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$
   "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$
    $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o
   o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       $$$o
   $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o
  o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$
  $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""
 """"       $$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$
            "$$$o     """$$$$$$$$$$$$$$$$$$"$$"         $$$
              $$$o          "$$""$$$$$$""""           o$$$
               $$$$o                                o$$$"
                "$$$$o      o$$$$$$o"$$$$o        o$$$$
                  "$$$$$oo     ""$$$$o$$$$$o   o$$$$""
                     ""$$$$$oooo  "$$$o$$$$$$$$$"""
                        ""$$$$$$$oo $$$$$$$$$$
                                """"$$$$$$$$$$$
                                    $$$$$$$$$$$$
                                     $$$$$$$$$$"
                                      "$$$""""
                                      "$$$""""

【用法】
* 直接在relay-shell>提示符后面输入主机名，然后按回车即可登录：
    relay-shell> c3-pt-relay02.bj <按回车>
* 或者输入shell进入bash，以进行批量hd登录等操作
    relay-shell> shell <按回车>
* 在任何情况下连按两次tab键可以自动补全
[Usage]
Type ip address or hostname to connect to the speificed host,
or commands listed below to launch the corresponding feature.
* Use TAB for auto-complete, CTRL+R for reverse-search
* Try pressing the Tab key twice to see all the hosts you have access to

Command list:
	shell:		where you show off your bash programming skills
	help:		show this message
	exit		exit this place

bj6-pt-relay01.alicn.idc.xiaomi.com:dpovey> shell
Launching an interactive shell
不要在本机磁盘存储重要数据，常用脚本请做好备份。
dpovey@bj6-pt-relay01: ~ $ ssh<EMAIL_ADDRESS><EMAIL_ADDRESS>password:
Last login: Tue Jan 26 22:28:34 2021 from <IP_ADDRESS>
de-74279-k2-dev-0929153814-7686b86bc5-qbfjq:~: tmux attach

File Edit Options Buffers Tools Complete In/Out Signals Help
  File "./mmi_mbr_train.py", line 462, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 257, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 109, in get_objf
    num, den, mbr_num, mbr_den = graph_compiler.compile(texts, P)
  File "/ceph-dan/.local/lib/python3.8/site-packages/snowfall-0.1-py3.8.egg/snowfall/training/mmi_mbr_graph.py", line 125, in compile
    logging.info('compiling', len(texts))
Message: 'compiling'
Arguments: (23,)
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
    msg = self.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
    return fmt.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "./mmi_mbr_train.py", line 515, in <module>
    main()
  File "./mmi_mbr_train.py", line 462, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 257, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 109, in get_objf
    num, den, mbr_num, mbr_den = graph_compiler.compile(texts, P)
  File "/ceph-dan/.local/lib/python3.8/site-packages/snowfall-0.1-py3.8.egg/snowfall/training/mmi_mbr_graph.py", line 125, in compile
    logging.info('compiling', len(texts))
Message: 'compiling'
..

Getting this warning when running it:
Last login: Wed Jan 13 11:23:15 on ttys013

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
mac:matrix:

mac:matrix: ls
Makefile			kaldi-blas.h			kaldi-vector.o			matrix-lib-test.o		packed-matrix.o			sparse-matrix.cc
Matrix.vcxproj			kaldi-matrix-inl.h		matrix-common.h			matrix-lib.h			qr.cc				sparse-matrix.h
cblas-wrappers.h		kaldi-matrix.a			matrix-functions-inl.h		numpy-array-test.cc		qr.o				sparse-matrix.o
compressed-matrix.cc		kaldi-matrix.cc			matrix-functions.cc		numpy-array.cc			sp-matrix-inl.h			srfft.cc
compressed-matrix.h		kaldi-matrix.h			matrix-functions.h		numpy-array.h			sp-matrix.cc			srfft.h
compressed-matrix.o		kaldi-matrix.h~			matrix-functions.o		optimization.cc			sp-matrix.h			srfft.o
foo				kaldi-matrix.o			matrix-lib-speed-test.cc	optimization.h			sp-matrix.o			test_data
hEulksI636RvUfO0?mu=1		kaldi-vector-inl.h		matrix-lib-test			optimization.o			sparse-matrix-test		tp-matrix.cc
jama-eig.h			kaldi-vector.cc			matrix-lib-test.cc		packed-matrix.cc		sparse-matrix-test.cc		tp-matrix.h
jama-svd.h			kaldi-vector.h			matrix-lib-test.cc~		packed-matrix.h			sparse-matrix-test.o		tp-matrix.o
mac:matrix: ssh relay.xiaomi.com

请[填写密码]或使用小米人[扫描二维码]进行登录。如看不到二维码，请把终端模拟软件的颜色支持打开。
FAQ: http://wiki.n.miui.com/pages/viewpage.action?pageId=30213224

Your [EMAIL] password: login via qrcode
                                       Last login: Wed Jan 13 11:13:36 2021 from <IP_ADDRESS>
                             oo$$$$$$$$$$oo
                          oooo$$$$$$$$$$$$oooo
                      oo$$$$$$$$$$$$$$$$$$$$$$$$o
                   oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o         o$   $$ o$
   o $ oo        o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o       $$ $$ $$o$
oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o       $$$o$$o$
"$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$
  $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$
   "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$
    $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o
   o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       $$$o
   $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o
  o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$
  $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""
 """"       $$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$
            "$$$o     """$$$$$$$$$$$$$$$$$$"$$"         $$$
              $$$o          "$$""$$$$$$""""           o$$$
               $$$$o                                o$$$"
                "$$$$o      o$$$$$$o"$$$$o        o$$$$
                  "$$$$$oo     ""$$$$o$$$$$o   o$$$$""
                     ""$$$$$oooo  "$$$o$$$$$$$$$"""
                        ""$$$$$$$oo $$$$$$$$$$
                                """"$$$$$$$$$$$
                                    $$$$$$$$$$$$
                                     $$$$$$$$$$"
                                      "$$$""""
                                      "$$$""""

【用法】
* 直接在relay-shell>提示符后面输入主机名，然后按回车即可登录：
    relay-shell> c3-pt-relay02.bj <按回车>
* 或者输入shell进入bash，以进行批量hd登录等操作
    relay-shell> shell <按回车>
* 在任何情况下连按两次tab键可以自动补全
[Usage]
Type ip address or hostname to connect to the speificed host,
or commands listed below to launch the corresponding feature.
* Use TAB for auto-complete, CTRL+R for reverse-search
* Try pressing the Tab key twice to see all the hosts you have access to

Command list:
	shell:		where you show off your bash programming skills
	help:		show this message
	exit		exit this place

bj5-pt-relay01.alicn.idc.xiaomi.com:dpovey> shell
Launching an interactive shell
不要在本机磁盘存储重要数据，常用脚本请做好备份。
dpovey@bj5-pt-relay01: ~ $ ssh<EMAIL_ADDRESS><EMAIL_ADDRESS>password:
Last login: Thu Jan 14 21:22:31 2021 from <IP_ADDRESS>
de-74279-k2-dev-0929153814-7686b86bc5-qbfjq:~: tmux attach

[1]+  Stopped                 emacs -nw patent_fsa.txt
mac:notes: %
emacs -nw patent_fsa.txt

[1]+  Stopped                 emacs -nw patent_fsa.txt
mac:notes: pwd
/Users/dpovey/notes
mac:notes: ls -l ~/kaldi/egs/tedlium/s5/utils
lrwxr-xr-x  1 dpovey  staff  18 Jul  2  2019 /Users/dpovey/kaldi/egs/tedlium/s5/utils -> ../../wsj/s5/utils
mac:notes: %
emacs -nw patent_fsa.txt

File Edit Options Buffers Tools C++ Help

  bool continuous_;

  const DropoutMaskComponent &operator
  = (const DropoutMaskComponent &other); // Disallow.
};

/**
   GeneralDropoutComponent implements dropout, including a continuous
   variant where the thing we multiply is not just zero or one, but may
   be a continuous value.  It is intended for the case where you want to
   either share the dropout mask across all of time, or across groups
   of 't' values (e.g. the first block of 10 values gets one dropout
   mask, the second block of 10 gets another one, and so on).

   It also has support for the frequency component of SpecAugment.

   Configuration values accepted on the command line, with defaults:
-UU-:----F1  nnet-general-component.h   73% L804  Git-master  (C++//l Abbrev) ---------------------------------------------------------------------------------------------------------------------

GeneralDropoutComponent::GeneralDropoutComponent():
    dim_(-1), block_dim_(-1), time_period_(0),
    dropout_proportion_(0.5),
    specaugment_max_proportion_(0.0),
    specaugment_max_regions_(1),
    continuous_(false) { }

GeneralDropoutComponent::GeneralDropoutComponent(
    const GeneralDropoutComponent &other):
    RandomComponent(other),
    dim_(other.dim_),
    block_dim_(other.block_dim_),
    time_period_(other.time_period_),
    dropout_proportion_(other.dropout_proportion_),
    specaugment_max_proportion_(other.specaugment_max_proportion_),
    specaugment_max_regions_(other.specaugment_max_regions_),
    continuous_(other.continuous_) { }

-UU-:----F1  nnet-general-component.cc   74% L1554 Git:master  (C++//l Abbrev) --------------------------------------------------------------------------------------------------------------------

  [Restored Jan 20, 2021 at 5:51:38 PM]
Last login: Wed Jan 20 17:51:38 on ttys011

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
mac:notes:
mac:notes: pwd
/Users/dpovey/notes
mac:notes:

mac:notes: jobs
mac:notes: jobs
mac:notes: pwd
/Users/dpovey/notes
mac:notes: ls -l ht | head
ls: ht: No such file or directory
mac:notes: ls -lht | head
total 5984
-rw-r--r--  1 dpovey  staff   6.9K Jan 20 16:08 patent_fsa.txt
-rw-r--r--  1 dpovey  staff   4.2K Jan 19 17:43 2020.highlight
-rw-r--r--  1 dpovey  staff   315B Jan 19 14:29 patent_fsa.txt~
-rw-r--r--  1 dpovey  staff   2.9K Jan 14 15:41 2020.highlight~
-rw-r--r--  1 dpovey  staff   281B Jan  3 20:14 jan3_2021.txt
-rw-r--r--  1 dpovey  staff   259B Jan  3 20:13 jan3_2021.txt~
drwxr-xr-x@ 2 dpovey  staff    64B Jan  3 20:12 updates
-rw-r--r--  1 dpovey  staff   3.1K Dec 14 18:36 k2_intro
-rw-r--r--  1 dpovey  staff   239B Dec 14 16:12 k2_intro~
mac:notes: emacs -nw patent_fsa.txt

[1]+  Stopped                 emacs -nw patent_fsa.txt
mac:notes: bg
[1]+ emacs -nw patent_fsa.txt &

[1]+  Stopped                 emacs -nw patent_fsa.txt
mac:notes: %
emacs -nw patent_fsa.txt

File Edit Options Buffers Tools Text Help

 - In the next 2-3 weeks, plan to finish and test MBR training and start
   writing code for n-best list rescoring.

===

Jan 3rd:
 Progress this week:
    Currently debugging ASG training
    Librispeech WER with ASG training is 12% (previously we had
      15% with CTC).
      Note: these numbers are still not very competitive, we are still fixing
      various things and have not really tuned our system.

===========

======

  Next-gen Kaldi

 What is Kaldi

   Kaldi is an open-source toolkit for automatic speech recognition (ASR) that
   has existed since 2011; it is the most popular speech recognition toolkit.
   Since 2011 it has evolved considerably as the state of the art has
   developed: for instance, adding support for neural network acoustic models.
   For most of that time the chief maintainer of Kaldi (Dan Povey) has worked
   at Johns Hopkins University in the USA, but in December 2019 he joined
   Xiaomi in Beijing.

 The project

  Kaldi's neural network support is provided by custom neural network
  code that is not as flexible as toolkits like PyTorch and TensorFlow.
  For a long time there has been a demand for Kaldi to support external neural
  network toolkits.  The aim of the "next-gen Kaldi" projectd is to add such
  support.

 The team
-UU-:----F1  progress.txt   16% L17    (Text) -------------------------------------------------------------------------------------------------------------------------------------------------------

  [Restored Jan 26, 2021 at 6:21:31 PM]
Last login: Tue Jan 26 18:21:30 on ttys012

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
mac:notes:
mac:notes: ssh relay.xiaomi.com

请[填写密码]或使用小米人[扫描二维码]进行登录。如看不到二维码，请把终端模拟软件的颜色支持打开。
FAQ: http://wiki.n.miui.com/pages/viewpage.action?pageId=30213224

Your [EMAIL] password: login via qrcode
                                       Last login: Tue Jan 26 22:28:14 2021 from <IP_ADDRESS>
                             oo$$$$$$$$$$oo
                          oooo$$$$$$$$$$$$oooo
                      oo$$$$$$$$$$$$$$$$$$$$$$$$o
                   oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o         o$   $$ o$
   o $ oo        o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o       $$ $$ $$o$
oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o       $$$o$$o$
"$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$
  $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$
   "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$
    $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o
   o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       $$$o
   $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o
  o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$
  $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""
 """"       $$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$
            "$$$o     """$$$$$$$$$$$$$$$$$$"$$"         $$$
              $$$o          "$$""$$$$$$""""           o$$$
               $$$$o                                o$$$"
                "$$$$o      o$$$$$$o"$$$$o        o$$$$
                  "$$$$$oo     ""$$$$o$$$$$o   o$$$$""
                     ""$$$$$oooo  "$$$o$$$$$$$$$"""
                        ""$$$$$$$oo $$$$$$$$$$
                                """"$$$$$$$$$$$
                                    $$$$$$$$$$$$
                                     $$$$$$$$$$"
                                      "$$$""""
                                      "$$$""""

【用法】
* 直接在relay-shell>提示符后面输入主机名，然后按回车即可登录：
    relay-shell> c3-pt-relay02.bj <按回车>
* 或者输入shell进入bash，以进行批量hd登录等操作
    relay-shell> shell <按回车>
* 在任何情况下连按两次tab键可以自动补全
[Usage]
Type ip address or hostname to connect to the speificed host,
or commands listed below to launch the corresponding feature.
* Use TAB for auto-complete, CTRL+R for reverse-search
* Try pressing the Tab key twice to see all the hosts you have access to

Command list:
	shell:		where you show off your bash programming skills
	help:		show this message
	exit		exit this place

bj6-pt-relay01.alicn.idc.xiaomi.com:dpovey> shell
Launching an interactive shell
不要在本机磁盘存储重要数据，常用脚本请做好备份。
dpovey@bj6-pt-relay01: ~ $ ssh<EMAIL_ADDRESS><EMAIL_ADDRESS>password:
Last login: Tue Jan 26 22:28:34 2021 from <IP_ADDRESS>
de-74279-k2-dev-0929153814-7686b86bc5-qbfjq:~: tmux attach

File Edit Options Buffers Tools Complete In/Out Signals Help
  File "./mmi_mbr_train.py", line 462, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 257, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 109, in get_objf
    num, den, mbr_num, mbr_den = graph_compiler.compile(texts, P)
  File "/ceph-dan/.local/lib/python3.8/site-packages/snowfall-0.1-py3.8.egg/snowfall/training/mmi_mbr_graph.py", line 125, in compile
    logging.info('compiling', len(texts))
Message: 'compiling'
Arguments: (23,)
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
    msg = self.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
    return fmt.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "./mmi_mbr_train.py", line 515, in <module>
    main()
  File "./mmi_mbr_train.py", line 462, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 257, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 109, in get_objf
    num, den, mbr_num, mbr_den = graph_compiler.compile(texts, P)
  File "/ceph-dan/.local/lib/python3.8/site-packages/snowfall-0.1-py3.8.egg/snowfall/training/mmi_mbr_graph.py", line 125, in compile
    logging.info('compiling', len(texts))
Message: 'compiling'
..

It is not an error. I am fixing it and remove the extra graph.

It is not an error. I am fixing it and remove the extra graph.

OK.  I get this error later:
Arguments: (23,)
2021-01-28 22:28:41,373 INFO [mmi_mbr_graph.py:133] mbr num
2021-01-28 22:28:41,414 INFO [mmi_mbr_graph.py:138] num
2021-01-28 22:28:41,453 INFO [mmi_mbr_graph.py:143] den
2021-01-28 22:28:41,495 INFO [mmi_mbr_graph.py:146] mbr den
Traceback (most recent call last):
  File "./mmi_mbr_train.py", line 515, in <module>
    main()
  File "./mmi_mbr_train.py", line 462, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 257, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 109, in get_objf
    num, den, mbr_num, mbr_den = graph_compiler.compile(texts, P)
  File "/ceph-dan/.local/lib/python3.8/site-packages/snowfall-0.1-py3.8.egg/snowfall/training/mmi_mbr_graph.py", line 147, in compile
  File "/ceph-dan/.local/lib/python3.8/site-packages/k2/utils.py", line 231, in create_fsa_vec
    value = torch.cat(values)
TypeError: expected Tensor as element 0 in argument 0, but got _k2.RaggedInt

OK.  I get this error later:
Arguments: (23,)
2021-01-28 22:28:41,373 INFO [mmi_mbr_graph.py:133] mbr num
2021-01-28 22:28:41,414 INFO [mmi_mbr_graph.py:138] num
2021-01-28 22:28:41,453 INFO [mmi_mbr_graph.py:143] den
2021-01-28 22:28:41,495 INFO [mmi_mbr_graph.py:146] mbr den
Traceback (most recent call last):
  File "./mmi_mbr_train.py", line 515, in <module>
    main()
  File "./mmi_mbr_train.py", line 462, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 257, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 109, in get_objf
    num, den, mbr_num, mbr_den = graph_compiler.compile(texts, P)
  File "/ceph-dan/.local/lib/python3.8/site-packages/snowfall-0.1-py3.8.egg/snowfall/training/mmi_mbr_graph.py", line 147, in compile
  File "/ceph-dan/.local/lib/python3.8/site-packages/k2/utils.py", line 231, in create_fsa_vec
    value = torch.cat(values)
TypeError: expected Tensor as element 0 in argument 0, but got _k2.RaggedInt

OK. I get this error later:

k2.determinize(L, G) results in an FSA with ragged int as aux_labels.
Please use the latest k2.  I have fixed k2.create_fsa_vec() for FSAs with ragged int tensor as attributes.
Fixed in https://github.com/k2-fsa/k2/pull/634

OK. I get this error later:

k2.determinize(L, G) results in an FSA with ragged int as aux_labels.
Please use the latest k2.  I have fixed k2.create_fsa_vec() for FSAs with ragged int tensor as attributes.
Fixed in https://github.com/k2-fsa/k2/pull/634

I have removed the extra graph. Now there are only 3 graphs:

mmi_num
mmi_den

The above two graphs are from mmi training.
The third graph is decoding_graph = compose(ctc_topo, L, G)
The loss consists of two part:

The one from MMI training
The sum of abs difference of two sparse matrices:

The first sparse matrix is from mmi_num (using intersect_dense)
The second is from decoding_graph (using intersect_dense_pruned, however, it never terminates)

I have removed the extra graph. Now there are only 3 graphs:

mmi_num
mmi_den

The above two graphs are from mmi training.
The third graph is decoding_graph = compose(ctc_topo, L, G)
The loss consists of two part:

The one from MMI training
The sum of abs difference of two sparse matrices:

The first sparse matrix is from mmi_num (using intersect_dense)
The second is from decoding_graph (using intersect_dense_pruned, however, it never terminates)

@pzelasko
Thanks! Will look into it.

@pzelasko
Thanks! Will look into it.

Here is some output from gdb using

gdb -ex r --args python ./mmi_mbr_train.py
ctrl + C, bt, continue, ctr+C, bt, continue (repeat for several times)

Seems it is stuck in k2::MultiGraphDenseIntersectPruned::PropagateForward. t is always 1.
#12 0x00007ffd867abd22 in k2::Array1<int>::operator[] (this=0x7fffffffc760, i=109819)
at /root/fangjun/open-source/k2/k2/csrc/array.h:272

#13 0x00007ffd867a96a1 in k2::Array1<int>::Back (this=0x7fffffffc760)
at /root/fangjun/open-source/k2/k2/csrc/array.h:284

#14 0x00007ffd867a4775 in k2::Renumbering::ComputeOld2New (this=0x7fffffffc740)
at /root/fangjun/open-source/k2/k2/csrc/algorithms.cu:21

#15 0x00007ffd86919540 in k2::Renumbering::NumNewElems (this=0x7fffffffc740)
at /root/fangjun/open-source/k2/k2/csrc/algorithms.h:81

#16 0x00007ffd8692590a in
k2::MultiGraphDenseIntersectPruned::PropagateForward<32> (this=0x7fffffffca50, t=1, cur_frame=0x5555589a60e0)
    at /root/fangjun/open-source/k2/k2/csrc/intersect_dense_pruned.cu:754

#17 0x00007ffd8691aa44 in k2::MultiGraphDenseIntersectPruned::Intersect (this=0x7fffffffca50)
    at /root/fangjun/open-source/k2/k2/csrc/intersect_dense_pruned.cu:257

Here is some output from gdb using

gdb -ex r --args python ./mmi_mbr_train.py
ctrl + C, bt, continue, ctr+C, bt, continue (repeat for several times)

Seems it is stuck in k2::MultiGraphDenseIntersectPruned::PropagateForward. t is always 1.
#12 0x00007ffd867abd22 in k2::Array1<int>::operator[] (this=0x7fffffffc760, i=109819)
at /root/fangjun/open-source/k2/k2/csrc/array.h:272

#13 0x00007ffd867a96a1 in k2::Array1<int>::Back (this=0x7fffffffc760)
at /root/fangjun/open-source/k2/k2/csrc/array.h:284

#14 0x00007ffd867a4775 in k2::Renumbering::ComputeOld2New (this=0x7fffffffc740)
at /root/fangjun/open-source/k2/k2/csrc/algorithms.cu:21

#15 0x00007ffd86919540 in k2::Renumbering::NumNewElems (this=0x7fffffffc740)
at /root/fangjun/open-source/k2/k2/csrc/algorithms.h:81

#16 0x00007ffd8692590a in
k2::MultiGraphDenseIntersectPruned::PropagateForward<32> (this=0x7fffffffca50, t=1, cur_frame=0x5555589a60e0)
    at /root/fangjun/open-source/k2/k2/csrc/intersect_dense_pruned.cu:754

#17 0x00007ffd8691aa44 in k2::MultiGraphDenseIntersectPruned::Intersect (this=0x7fffffffca50)
    at /root/fangjun/open-source/k2/k2/csrc/intersect_dense_pruned.cu:257

After updating to latest code, still have this error:
================================================================================
2021-01-28 23:06:34,057 INFO [mmi_mbr_train.py:453] epoch 0, learning rate 0.001
2021-01-28 23:06:34,802 INFO [mmi_mbr_graph.py:127] compiling
2021-01-28 23:06:35,262 INFO [mmi_mbr_graph.py:135] num
2021-01-28 23:06:35,301 INFO [mmi_mbr_graph.py:140] den
Traceback (most recent call last):
  File "./mmi_mbr_train.py", line 508, in <module>
    main()
  File "./mmi_mbr_train.py", line 455, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 250, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 109, in get_objf
    num, den, decoding_graph = graph_compiler.compile(texts, P)
  File "/ceph-dan/.local/lib/python3.8/site-packages/snowfall-0.1-py3.8.egg/snowfall/training/mmi_mbr_graph.py", line 143, in compile
  File "/ceph-dan/.local/lib/python3.8/site-packages/k2/utils.py", line 231, in create_fsa_vec
    value = torch.cat(values)
TypeError: expected Tensor as element 0 in argument 0, but got _k2.RaggedInt

After updating to latest code, still have this error:
================================================================================
2021-01-28 23:06:34,057 INFO [mmi_mbr_train.py:453] epoch 0, learning rate 0.001
2021-01-28 23:06:34,802 INFO [mmi_mbr_graph.py:127] compiling
2021-01-28 23:06:35,262 INFO [mmi_mbr_graph.py:135] num
2021-01-28 23:06:35,301 INFO [mmi_mbr_graph.py:140] den
Traceback (most recent call last):
  File "./mmi_mbr_train.py", line 508, in <module>
    main()
  File "./mmi_mbr_train.py", line 455, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 250, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 109, in get_objf
    num, den, decoding_graph = graph_compiler.compile(texts, P)
  File "/ceph-dan/.local/lib/python3.8/site-packages/snowfall-0.1-py3.8.egg/snowfall/training/mmi_mbr_graph.py", line 143, in compile
  File "/ceph-dan/.local/lib/python3.8/site-packages/k2/utils.py", line 231, in create_fsa_vec
    value = torch.cat(values)
TypeError: expected Tensor as element 0 in argument 0, but got _k2.RaggedInt

What is the output of
$ python3 -m k2.version

?
It will show the git SHA-1, which should refer to the latest k2

What is the output of
$ python3 -m k2.version

?
It will show the git SHA-1, which should refer to the latest k2

Old version-- odd.  Maybe my install script is not working..  Will look into it.
k2 version: 0.1.3
Build type: Debug
Git SHA1: 40323a2a7f93222619386ff9d748cdf2095703d7
Git date: Wed Jan 13 11:16:26 2021
Cuda used to build k2: 10.1
cuDNN used to build k2: 7.6.2
Python version used to build k2: 3.8
OS used to build k2: Ubuntu 18.04.5 LTS
CMake version: 3.10.2
GCC version: 7.5.0
CMAKE_CUDA_FLAGS:  -D_GLIBCXX_USE_CXX11_ABI=0  --expt-extended-lambda -gencode arch=compute_35,code=sm_35 --expt-extended-lambda -gencode arch=compute_50,code=sm_50 --expt-extended-lambda -genco\
de arch=compute_60,code=sm_60 --expt-extended-lambda -gencode arch=compute_61,code=sm_61 --expt-extended-lambda -gencode arch=compute_70,code=sm_70 --expt-extended-lambda -gencode arch=compute_7\
5,code=sm_75 --compiler-options -Wall --compiler-options -Wno-unknown-pragmas
CMAKE_CXX_FLAGS:  -D_GLIBCXX_USE_CXX11_ABI=0
PyTorch version used to build k2: 1.7.0+cu101
PyTorch is using Cuda: 10.1
NVTX enabled: True
Disable debug: False
Sync kernels : False
Disable checks: False

Old version-- odd.  Maybe my install script is not working..  Will look into it.
k2 version: 0.1.3
Build type: Debug
Git SHA1: 40323a2a7f93222619386ff9d748cdf2095703d7
Git date: Wed Jan 13 11:16:26 2021
Cuda used to build k2: 10.1
cuDNN used to build k2: 7.6.2
Python version used to build k2: 3.8
OS used to build k2: Ubuntu 18.04.5 LTS
CMake version: 3.10.2
GCC version: 7.5.0
CMAKE_CUDA_FLAGS:  -D_GLIBCXX_USE_CXX11_ABI=0  --expt-extended-lambda -gencode arch=compute_35,code=sm_35 --expt-extended-lambda -gencode arch=compute_50,code=sm_50 --expt-extended-lambda -genco\
de arch=compute_60,code=sm_60 --expt-extended-lambda -gencode arch=compute_61,code=sm_61 --expt-extended-lambda -gencode arch=compute_70,code=sm_70 --expt-extended-lambda -gencode arch=compute_7\
5,code=sm_75 --compiler-options -Wall --compiler-options -Wno-unknown-pragmas
CMAKE_CXX_FLAGS:  -D_GLIBCXX_USE_CXX11_ABI=0
PyTorch version used to build k2: 1.7.0+cu101
PyTorch is using Cuda: 10.1
NVTX enabled: True
Disable debug: False
Sync kernels : False
Disable checks: False

The following script may be helpful:
export PYTHONPATH=/root/fangjun/open-source/k2/k2/python:$PYTHONPATH
export PYTHONPATH=/root/fangjun/open-source/k2/build/lib:$PYTHONPATH
export PYTHONPATH=/root/fangjun/open-source/snowfall:$PYTHONPATH
export PYTHONPATH=/root/fangjun/open-source/lhotse:$PYTHONPATH

No need to install k2, snowfall, or lhotse.
To use the latest k2, just compile it. To verify that snowfall is using the one you just compiled, use python3 -m k2.version
and compare the git SHA-1 from the output with the one in your k2 repo.

The following script may be helpful:
export PYTHONPATH=/root/fangjun/open-source/k2/k2/python:$PYTHONPATH
export PYTHONPATH=/root/fangjun/open-source/k2/build/lib:$PYTHONPATH
export PYTHONPATH=/root/fangjun/open-source/snowfall:$PYTHONPATH
export PYTHONPATH=/root/fangjun/open-source/lhotse:$PYTHONPATH

No need to install k2, snowfall, or lhotse.
To use the latest k2, just compile it. To verify that snowfall is using the one you just compiled, use python3 -m k2.version
and compare the git SHA-1 from the output with the one in your k2 repo.

Also,
python3 -c "import k2; print(k2.__file__)"

should point to the file in the k2 source tree.

Also,
python3 -c "import k2; print(k2.__file__)"

should point to the file in the k2 source tree.

Mm.  If something goes wrong in the hash-code kernels, they can loop forever.  Likely that's what happened,
e.g. Insert() at intersect_dense_pruned.cu:746 is looping.  It's a generic error, unfortunately, e.g. could be due to
too-full hash...  I'm looking into it.

Mm.  If something goes wrong in the hash-code kernels, they can loop forever.  Likely that's what happened,
e.g. Insert() at intersect_dense_pruned.cu:746 is looping.  It's a generic error, unfortunately, e.g. could be due to
too-full hash...  I'm looking into it.

I'm looking into it.

Thanks

I'm looking into it.

Thanks

OK I fixed the hash thing.  New error:
[Thread 0x7fff14110700 (LWP 3629510) exited]
Traceback (most recent call last):
  File "./mmi_mbr_train.py", line 508, in <module>
    main()
  File "./mmi_mbr_train.py", line 455, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 250, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 161, in get_objf
    cols=num_graph.phones,
  File "/ceph-dan/.local/lib/python3.8/site-packages/k2/fsa.py", line 407, in __getattr__
    raise AttributeError(f'Unknown attribute {name}')
AttributeError: Unknown attribute phones
[Thread 0x7ffeea03d700 (LWP 3629541) exited]
[Thread 0x7ffeea88f700 (LWP 3629540) exited]
[Thread 0x7fff118be700 (LWP 3629501) exited]
[Thread 0x7fff0f06c700 (LWP 3629500) exited]
[Thread 0x7fff0c81a700 (LWP 3629484) exited]
[Inferior 1 (process 3629409) exited with code 01]
(gdb)

OK I fixed the hash thing.  New error:
[Thread 0x7fff14110700 (LWP 3629510) exited]
Traceback (most recent call last):
  File "./mmi_mbr_train.py", line 508, in <module>
    main()
  File "./mmi_mbr_train.py", line 455, in main
    objf = train_one_epoch(dataloader=train_dl,
  File "./mmi_mbr_train.py", line 250, in train_one_epoch
    get_objf(batch, model, P, device, graph_compiler, True, optimizer)
  File "./mmi_mbr_train.py", line 161, in get_objf
    cols=num_graph.phones,
  File "/ceph-dan/.local/lib/python3.8/site-packages/k2/fsa.py", line 407, in __getattr__
    raise AttributeError(f'Unknown attribute {name}')
AttributeError: Unknown attribute phones
[Thread 0x7ffeea03d700 (LWP 3629541) exited]
[Thread 0x7ffeea88f700 (LWP 3629540) exited]
[Thread 0x7fff118be700 (LWP 3629501) exited]
[Thread 0x7fff0f06c700 (LWP 3629500) exited]
[Thread 0x7fff0c81a700 (LWP 3629484) exited]
[Inferior 1 (process 3629409) exited with code 01]
(gdb)

OK I fixed the hash thing. New error:

Fixed, please pull the latest code of this pull-request.

OK I fixed the hash thing. New error:

Fixed, please pull the latest code of this pull-request.

It is able to get the loss now.

It is able to get the loss now.

de-74279-k2-dev-0929153814-7686b86bc5-qbfjq:simple_v1: python3 mmi_mbr_train.py
Traceback (most recent call last):
  File "mmi_mbr_train.py", line 16, in <module>
    import k2.sparse
ModuleNotFoundError: No module named 'k2.sparse'

de-74279-k2-dev-0929153814-7686b86bc5-qbfjq:simple_v1: python3 mmi_mbr_train.py
Traceback (most recent call last):
  File "mmi_mbr_train.py", line 16, in <module>
    import k2.sparse
ModuleNotFoundError: No module named 'k2.sparse'

trying to redo cmake .. and rebuild k2, maybe build problem..

trying to redo cmake .. and rebuild k2, maybe build problem..

ModuleNotFoundError: No module named 'k2.sparse'

Please use the latest code of this pull-request. It has been fixed.

ModuleNotFoundError: No module named 'k2.sparse'

Please use the latest code of this pull-request. It has been fixed.

will go to bed now.  Great work!

will go to bed now.  Great work!

Thanks!!
Here is the training log. The loss is decreasing.  It will print the WER after training and decoding (by running run.sh).
We will see.
Going to bed too.
2021-01-29 00:08:15,527 INFO [mmi_mbr_train.py:443] epoch 0, learning rate 0.001
2021-01-29 00:08:21,741 INFO [mmi_mbr_train.py:247] batch 0, epoch 0/10 global average objf: 3.146235 over 9623.0 frames (100.0% kept), current batch
average objf: 3.146234 over 9623 frames (100.0% kept) avg time waiting for batch 0.529s
2021-01-29 00:09:16,275 INFO [mmi_mbr_train.py:247] batch 10, epoch 0/10 global average objf: 2.766029 over 107435.0 frames (100.0% kept), current batch average objf: 2.482606 over 9835 frames (100.0% kept) avg time waiting for batch 0.056s
2021-01-29 00:10:09,405 INFO [mmi_mbr_train.py:247] batch 20, epoch 0/10 global average objf: 2.529759 over 205210.0 frames (100.0% kept), current batch average objf: 2.127868 over 9856 frames (100.0% kept) avg time waiting for batch 0.030s
2021-01-29 00:11:03,684 INFO [mmi_mbr_train.py:247] batch 30, epoch 0/10 global average objf: 2.407867 over 302507.0 frames (100.0% kept), current batch average objf: 2.133643 over 9775 frames (100.0% kept) avg time waiting for batch 0.021s
2021-01-29 00:11:54,628 INFO [mmi_mbr_train.py:247] batch 40, epoch 0/10 global average objf: 2.321998 over 400056.0 frames (100.0% kept), current batch average objf: 1.984162 over 9862 frames (100.0% kept) avg time waiting for batch 0.017s

Thanks!!
Here is the training log. The loss is decreasing.  It will print the WER after training and decoding (by running run.sh).
We will see.
Going to bed too.
2021-01-29 00:08:15,527 INFO [mmi_mbr_train.py:443] epoch 0, learning rate 0.001
2021-01-29 00:08:21,741 INFO [mmi_mbr_train.py:247] batch 0, epoch 0/10 global average objf: 3.146235 over 9623.0 frames (100.0% kept), current batch
average objf: 3.146234 over 9623 frames (100.0% kept) avg time waiting for batch 0.529s
2021-01-29 00:09:16,275 INFO [mmi_mbr_train.py:247] batch 10, epoch 0/10 global average objf: 2.766029 over 107435.0 frames (100.0% kept), current batch average objf: 2.482606 over 9835 frames (100.0% kept) avg time waiting for batch 0.056s
2021-01-29 00:10:09,405 INFO [mmi_mbr_train.py:247] batch 20, epoch 0/10 global average objf: 2.529759 over 205210.0 frames (100.0% kept), current batch average objf: 2.127868 over 9856 frames (100.0% kept) avg time waiting for batch 0.030s
2021-01-29 00:11:03,684 INFO [mmi_mbr_train.py:247] batch 30, epoch 0/10 global average objf: 2.407867 over 302507.0 frames (100.0% kept), current batch average objf: 2.133643 over 9775 frames (100.0% kept) avg time waiting for batch 0.021s
2021-01-29 00:11:54,628 INFO [mmi_mbr_train.py:247] batch 40, epoch 0/10 global average objf: 2.321998 over 400056.0 frames (100.0% kept), current batch average objf: 1.984162 over 9862 frames (100.0% kept) avg time waiting for batch 0.017s

Here is a screenshot for epoch 0.  The tensorboard log can be visualized at
https://tensorboard.dev/experiment/YJq7HAFjSPq0nhZ8vYevhQ/#scalars&_smoothingWeight=0
The training seems working.
The validation time dominates the total training time: it takes 10 minutes for each validation run. Will reduce the frequency of invoking it.

Here is a screenshot for epoch 0.  The tensorboard log can be visualized at
https://tensorboard.dev/experiment/YJq7HAFjSPq0nhZ8vYevhQ/#scalars&_smoothingWeight=0
The training seems working.
The validation time dominates the total training time: it takes 10 minutes for each validation run. Will reduce the frequency of invoking it.

BTW The tensor board dev plots will get fixed when you merge master, as I ran into the same issue before.

Wiadomość napisana przez Fangjun Kuang<EMAIL_ADDRESS>w dniu 1/28/21, o godz. 20:35:

Here is a screenshot for epoch 0. The tensorboard log can be visualized at
https://tensorboard.dev/experiment/YJq7HAFjSPq0nhZ8vYevhQ/#scalars&_smoothingWeight=0
The training seems working.
The validation time dominates the total training time: it takes 10 minutes for each validation run. Will reduce the frequency of invoking it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

BTW The tensor board dev plots will get fixed when you merge master, as I ran into the same issue before.

Wiadomość napisana przez Fangjun Kuang<EMAIL_ADDRESS>w dniu 1/28/21, o godz. 20:35:

Here is a screenshot for epoch 0. The tensorboard log can be visualized at
https://tensorboard.dev/experiment/YJq7HAFjSPq0nhZ8vYevhQ/#scalars&_smoothingWeight=0
The training seems working.
The validation time dominates the total training time: it takes 10 minutes for each validation run. Will reduce the frequency of invoking it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Thanks. Will merge master into this pull-request once the 10 epochs are finished.

WER of epoch 0:
2021-01-29 09:59:08,133 INFO [mmi_mbr_decode.py:295] %WER 17.85% [9384 / 52576, 961 ins, 1304 del, 7119 sub ]

Thanks. Will merge master into this pull-request once the 10 epochs are finished.

WER of epoch 0:
2021-01-29 09:59:08,133 INFO [mmi_mbr_decode.py:295] %WER 17.85% [9384 / 52576, 961 ins, 1304 del, 7119 sub ]

Amazing work!!
BTW we shouldn't put too much hopes on MBR actually improving WER as-is.
It is usually a toss-up between MBR and MMI.
This is a stepping stone to greater possibilities.
Should probably verify that if the sign of the MBR part of the objf is
flipped, things get worse.
I believe in Torch they have automated gradient checks, and maybe a
framework for doing them, IDK if anyone has time to look into that,
to help verify that our code is correct (since it has many pieces).
On Fri, Jan 29, 2021 at 10:06 AM Fangjun Kuang<EMAIL_ADDRESS>wrote:

Thanks. Will merge master into this pull-request once the 10 epochs are
finished.
WER of epoch 0:
2021-01-29 09:59:08,133 INFO [mmi_mbr_decode.py:295] %WER 17.85% [9384 / 52576, 961 ins, 1304 del, 7119 sub ]
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/k2-fsa/snowfall/pull/84#issuecomment-769523928, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZFLO73TLXZ2SWRVAC3EZDS4IJZXANCNFSM4WWYVBQA
.

Amazing work!!
BTW we shouldn't put too much hopes on MBR actually improving WER as-is.
It is usually a toss-up between MBR and MMI.
This is a stepping stone to greater possibilities.
Should probably verify that if the sign of the MBR part of the objf is
flipped, things get worse.
I believe in Torch they have automated gradient checks, and maybe a
framework for doing them, IDK if anyone has time to look into that,
to help verify that our code is correct (since it has many pieces).
On Fri, Jan 29, 2021 at 10:06 AM Fangjun Kuang<EMAIL_ADDRESS>wrote:

Thanks. Will merge master into this pull-request once the 10 epochs are
finished.
WER of epoch 0:
2021-01-29 09:59:08,133 INFO [mmi_mbr_decode.py:295] %WER 17.85% [9384 / 52576, 961 ins, 1304 del, 7119 sub ]
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/k2-fsa/snowfall/pull/84#issuecomment-769523928, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZFLO73TLXZ2SWRVAC3EZDS4IJZXANCNFSM4WWYVBQA
.

Should probably verify that if the sign of the MBR part of the objf is
flipped, things get worse.

Can it be verified by plotting the MBR loss separately?

Should probably verify that if the sign of the MBR part of the objf is
flipped, things get worse.

Can it be verified by plotting the MBR loss separately?

Yes I think so, the MBR loss should be affected more than the other losses
or the WER.
On Fri, Jan 29, 2021 at 12:13 PM Fangjun Kuang<EMAIL_ADDRESS>wrote:

Should probably verify that if the sign of the MBR part of the objf is
flipped, things get worse.
Can it be verified by plotting the MBR loss separately?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/k2-fsa/snowfall/pull/84#issuecomment-769562639, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZFLO7JRQCTUGLKGEDU2DTS4IYVXANCNFSM4WWYVBQA
.

Yes I think so, the MBR loss should be affected more than the other losses
or the WER.
On Fri, Jan 29, 2021 at 12:13 PM Fangjun Kuang<EMAIL_ADDRESS>wrote:

Should probably verify that if the sign of the MBR part of the objf is
flipped, things get worse.
Can it be verified by plotting the MBR loss separately?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/k2-fsa/snowfall/pull/84#issuecomment-769562639, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZFLO7JRQCTUGLKGEDU2DTS4IYVXANCNFSM4WWYVBQA
.

@pzelasko I have integrated your fixes from the master branch. Thanks!

Below is a screenshot showing how the total loss, MMI loss, and MBR loss change during the training. (I haved renamed objf to loss)
You can see that the MBR loss decreases in a similar way like MMI loss.
The training is still running. The tensorboard log is available at
https://tensorboard.dev/experiment/REra39ZqT4mt60wjz1EX8A/#scalars

@pzelasko I have integrated your fixes from the master branch. Thanks!

Below is a screenshot showing how the total loss, MMI loss, and MBR loss change during the training. (I haved renamed objf to loss)
You can see that the MBR loss decreases in a similar way like MMI loss.
The training is still running. The tensorboard log is available at
https://tensorboard.dev/experiment/REra39ZqT4mt60wjz1EX8A/#scalars

Below is the WER for each epoch of this pull-request:
### epoch-0
2021-01-30 06:08:26,697 INFO [mmi_mbr_decode.py:295] %WER 18.83% [9900 / 52576, 1003 ins, 1318 del, 7579 sub ]

### epoch-1
2021-01-30 10:22:39,902 INFO [mmi_mbr_decode.py:295] %WER 15.19% [7988 / 52576, 935 ins, 884 del, 6169 sub ]

### epoch-2
2021-01-30 16:06:19,820 INFO [mmi_mbr_decode.py:295] %WER 13.45% [7070 / 52576, 867 ins, 785 del, 5418 sub ]

### epoch-3
2021-01-31 06:42:16,209 INFO [mmi_mbr_decode.py:295] %WER 13.19% [6936 / 52576, 866 ins, 709 del, 5361 sub ]

### epoch-4
2021-01-31 06:44:22,864 INFO [mmi_mbr_decode.py:295] %WER 13.31% [7000 / 52576, 971 ins, 645 del, 5384 sub ]

### epoch-5
2021-01-31 14:45:19,317 INFO [mmi_mbr_decode.py:295] %WER 12.69% [6673 / 52576, 795 ins, 701 del, 5177 sub ]

### epoch-6
2021-01-31 15:05:14,329 INFO [mmi_mbr_decode.py:295] %WER 12.75% [6701 / 52576, 876 ins, 618 del, 5207 sub ]

### epoch-7
2021-01-31 20:44:52,752 INFO [mmi_mbr_decode.py:295] %WER 11.96% [6286 / 52576, 826 ins, 632 del, 4828 sub ]

### epoch-8
2021-02-01 06:20:12,109 INFO [mmi_mbr_decode.py:295] %WER 11.91% [6263 / 52576, 808 ins, 650 del, 4805 sub ]

### epoch-9
2021-02-01 08:09:31,706 INFO [mmi_mbr_decode.py:295] %WER 11.04% [5805 / 52576, 802 ins, 535 del, 4468 sub ]

Screenshots of tensorboard are given below:

Ready for review.

I have profiled this in nvtx, and it seems that more time is

... is spent in graph construction than in actual training.  We should try to move this to GPU.
I think it should be mostly possible.  DeviceIntersect() doesn't support epsilons, but by adding self-loops to the word-level FSA and composing with L, I think we'll get the right thing.  We don't need determinization.  Epsilon removal, we have a device version of that.  For composing the phone-level graph with ctc_topo: again, we need to add epsilon self-loops to the phone-level graph, AddEpsilonSelfLoops().

OK to merge this though.

... also, when duplicating an FSA via [ fsa] * n, that should be done on GPU not CPU.

... is spent in graph construction than in actual training. We should try to move this to GPU.

... also, when duplicating an FSA via [ fsa] * n, that should be done on GPU not CPU.

Let me resolve them first.

.. also IDK whether the graph preparation is supposed to be happening in a different thread?

It seems to be in the same thread as the objective evaluation.

.. also IDK whether the graph preparation is supposed to be happening in a different thread?

I believe it is in the same thread. Only the dataloader, i.e., feature extraction, runs in multiple threads.

... is spent in graph construction than in actual training. We should try to move this to GPU.
I think it should be mostly possible.

I confirm that both intersection of ctc_topo and P and the intersection of linear_fsa and L_inv can be run
on GPU with IntersectDevice after adding self-loops.
The problem is that there is an optional silence at the begining of each word, which introduces an epsilon transitinon.
To intersect(ctc_topo_P, num_graph), we have to move ctc_topo_P and num_graph to CPU since we cannot add epsilon self-loops to num_graph as it is not epslion free.
@danpovey  How about removing the optional silence before each word?

Can't you just remove the epsilons from num_graph on device before adding epsilon self-loops and doing intersection?
I am thinking maybe you can do all these things by the minibatch (and abandon caching).

.. also IDK whether the graph preparation is supposed to be happening in a different thread?

I believe it is in the same thread. Only the dataloader runs in multiple threads.

I think we could add a “hook”/callback to Lhotse K2 dataset to make it create the graph without introducing a dependency on K2. Does that sound interesting to you?

(Then the graph would be created in a different thread possibly speeding this up)

Can't you just remove the epsilons from num_graph on device before adding epsilon self-loops and doing intersection?

Yeah, that's an alternative. Didn't think about it. Thanks!

I think we could add a “hook”/callback to Lhotse K2 dataset to make it create the graph without introducing a dependency on K2. Does that sound interesting to you?

That's a good idea. I agree. @danpovey  what do you think?

Agreed, it sounds like a good feature.
On Mon, Feb 1, 2021 at 10:17 PM Fangjun Kuang<EMAIL_ADDRESS>wrote:

I think we could add a “hook”/callback to Lhotse K2 dataset to make it
create the graph without introducing a dependency on K2. Does that sound
interesting to you?
That's a good idea. I agree. @danpovey https://github.com/danpovey what
do you think?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/k2-fsa/snowfall/pull/84#issuecomment-770887265, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZFLOZ3EZORQMP4GPXQI7TS42ZLXANCNFSM4WWYVBQA
.

Requires https://github.com/k2-fsa/k2/pull/651
Will remove the graph cache and build all graphs in terms of FsaVec to reduce the number of kernel calls.

Now the graph building process is moved to CUDA.
Previously, it took about 1 minute for 10 batches; now it takes only about 13 seconds for 10 batches.
The training is still running. Will report the results tomorrow.

WER of this pull-request (total_loss = mmi_loss + mbr_loss)
### epoch 0
2021-02-03 09:12:48,337 INFO [mmi_mbr_decode.py:295] %WER 17.62% [9263 / 52576, 936 ins, 1225 del, 7102 sub ]

### epoch 1
2021-02-03 09:13:45,695 INFO [mmi_mbr_decode.py:295] %WER 15.00% [7888 / 52576, 956 ins, 832 del, 6100 sub ]

### epoch 2
2021-02-03 09:15:19,567 INFO [mmi_mbr_decode.py:295] %WER 14.24% [7487 / 52576, 961 ins, 774 del, 5752 sub ]

### epoch 3
2021-02-03 09:16:07,739 INFO [mmi_mbr_decode.py:295] %WER 13.32% [7002 / 52576, 855 ins, 774 del, 5373 sub ]

### epoch 4
2021-02-03 09:17:01,955 INFO [mmi_mbr_decode.py:295] %WER 14.09% [7409 / 52576, 954 ins, 784 del, 5671 sub ]

### epoch 5
2021-02-03 09:18:36,529 INFO [mmi_mbr_decode.py:295] %WER 13.00% [6834 / 52576, 846 ins, 728 del, 5260 sub ]

### epoch 6
2021-02-03 09:19:42,490 INFO [mmi_mbr_decode.py:295] %WER 13.11% [6894 / 52576, 819 ins, 754 del, 5321 sub ]

### epoch 7
2021-02-03 09:20:41,180 INFO [mmi_mbr_decode.py:295] %WER 12.60% [6627 / 52576, 814 ins, 665 del, 5148 sub ]

### epoch 8
2021-02-03 09:21:35,511 INFO [mmi_mbr_decode.py:295] %WER 12.19% [6408 / 52576, 814 ins, 661 del, 4933 sub ]

### epoch 9
2021-02-03 08:02:51,857 INFO [mmi_mbr_decode.py:295] %WER 11.59% [6096 / 52576, 812 ins, 642 del, 4642 sub ]

WER  (total_loss = mmi_loss + 0.5 * mbr_loss)
### epoch 0
2021-02-03 09:23:33,477 INFO [mmi_mbr_decode.py:295] %WER 15.67% [8237 / 52576, 839 ins, 1111 del, 6287 sub ]

### epoch 1
2021-02-03 09:24:26,240 INFO [mmi_mbr_decode.py:295] %WER 13.49% [7090 / 52576, 843 ins, 739 del, 5508 sub ]

### epoch 2
2021-02-03 09:25:23,204 INFO [mmi_mbr_decode.py:295] %WER 12.51% [6577 / 52576, 833 ins, 670 del, 5074 sub ]

### epoch 3
2021-02-03 09:26:33,501 INFO [mmi_mbr_decode.py:295] %WER 12.01% [6313 / 52576, 723 ins, 717 del, 4873 sub ]

### epoch 4
2021-02-03 09:27:23,628 INFO [mmi_mbr_decode.py:295] %WER 12.13% [6378 / 52576, 792 ins, 655 del, 4931 sub ]

### epoch 5
2021-02-03 09:28:17,455 INFO [mmi_mbr_decode.py:295] %WER 11.39% [5986 / 52576, 713 ins, 631 del, 4642 sub ]

### epoch 6
2021-02-03 09:29:07,137 INFO [mmi_mbr_decode.py:295] %WER 11.65% [6123 / 52576, 746 ins, 673 del, 4704 sub ]

### epoch 7
2021-02-03 09:29:56,472 INFO [mmi_mbr_decode.py:295] %WER 11.07% [5818 / 52576, 725 ins, 624 del, 4469 sub ]

### epoch 8
2021-02-03 09:30:44,948 INFO [mmi_mbr_decode.py:295] %WER 10.72% [5635 / 52576, 683 ins, 616 del, 4336 sub ]

### epoch 9
2021-02-03 09:31:43,208 INFO [mmi_mbr_decode.py:295] %WER 11.15% [5862 / 52576, 713 ins, 585 del, 4564 sub ]

The WER is lower when we use total_loss = mmi_loss + 0.5 * mbr_loss.

Loss curves (total_loss = mmi_loss + mbr_loss)
https://tensorboard.dev/experiment/3LNsNJK5RcawmPkpIxlydw/#scalars&_smoothingWeight=0

Loss curves (total_loss = mmi_loss + 0.5 * mbr_loss)
https://tensorboard.dev/experiment/fRe7q36vQkeDQ5PcW7oCQw/#scalars&_smoothingWeight=0

I just mean I'd expect that the MBR loss would not reach quite as good as value as when the weight is 1.0, and the MMI loss would reach a slightly better value.

The mmi_loss changes as you expected.

For total_loss = mmi_loss + mbr_loss, the final mmi_loss is about 0.2279 and mbr_loss is 0.109
For total_loss = mmi_loss + 0.5 * mbr_loss, the final mmi_loss is about 0.1942 and mbr_loss is 0.1043

The mbr_loss is slightly lower for the latter case.

This pull-request requires the latest k2 plus https://github.com/k2-fsa/k2/pull/652

Great work!!  You can merge when you are ready..

OK.  Well at least changing that weight has more effect on the MMI loss than on the MBR loss, but those loss values don't give me great confidence that the autograd is correct for the MBR loss.  Can you try an experiment where in the 1st epoch it's mmi_loss + mbr_loss, and afterward it's just mbr_loss?   (You can still plot the mmi loss).  I want to see whether it just goes crazy.
I want to develop some automated testing for the autograd, have to think about it..

Sure.
Working on it.


Add New Relic Monitoring for SAP Solutions quickstart package.

Summary
Create a quickstart for New Relic Monitoring for SAP Solutions. This quickstart package contains pre-build dashboards and default alert policy for the SAP monitoring soultion.

Pre merge checklist

[x ] Did you check you NRQL syntax? - Does it work?
[ x] Did you include an InstallPlan and Documentation reference?
[ x] Are all documentation links publically accessible?
[ x] Did you check your descriptive content for voice and tone?
[ x] Did you check your descriptive content for spelling and grammar errors?

Dashboards

[x] Does the PR contain a screenshot for each of your dashboards?
[x] Do your screenshots show data?
[x] Has the sanitization script been run on each dashboard?

Alerts

[x ] Did you check that your alerts actually work?

Changes
On branch add-nrm4sap-quickstart
Changes to be committed:
new file:   alert-policies/nrm4sap/bsHttpDest.yml
new file:   alert-policies/nrm4sap/bsIdocProc.yml
new file:   alert-policies/nrm4sap/bsJobSlow.yml
new file:   alert-policies/nrm4sap/bsJobWait.yml
new file:   alert-policies/nrm4sap/bsRfcDest.yml
new file:   alert-policies/nrm4sap/bsSysError.yml
new file:   alert-policies/nrm4sap/bsTransaction.yml
new file:   alert-policies/nrm4sap/stCpuUsage.yml
new file:   alert-policies/nrm4sap/stDbAvailability.yml
new file:   alert-policies/nrm4sap/stDbSpace.yml
new file:   alert-policies/nrm4sap/stDialogResp.yml
new file:   alert-policies/nrm4sap/stHostMemory.yml
new file:   alert-policies/nrm4sap/stIdocError.yml
new file:   alert-policies/nrm4sap/stInstanceMem.yml
new file:   alert-policies/nrm4sap/stJobFailed.yml
new file:   alert-policies/nrm4sap/stRfcQue.yml
new file:   alert-policies/nrm4sap/stWorkprocess.yml
new file:   dashboards/nrm4sap-datacollect/sap-data-collection.json
new file:   dashboards/nrm4sap-datacollect/sap-data-collection01.png
new file:   dashboards/nrm4sap-datasize/sap-size-estimate.json
new file:   dashboards/nrm4sap-datasize/sap-size-estimate01.png
new file:   dashboards/nrm4sap/sap-dashboard.json
new file:   dashboards/nrm4sap/sap-dashboard01.png
new file:   dashboards/nrm4sap/sap-dashboard02.png
new file:   quickstarts/nrm4sap/config.yml
new file:   quickstarts/nrm4sap/logo.svg

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hi, Joe;
Thanks for the feedback. Could you advise what is the procedure to get
documents hosted on docs.newrelic.com?
Best
--Ed
On Wed, Oct 26, 2022 at 9:48 AM Joe Gregory @.***>
wrote:

@.**** commented on this pull request.
Hey @edyu002 https://github.com/edyu002 - Looks like a great start! A
couple comments below.
Also, in some of the alert-policies, we are missing an operator
https://github.com/newrelic/newrelic-quickstarts/blob/main/_template/alert-policies/example-alert-policy/baseline-alert.yml#L25
field under the terms field.
operator is a required field.
It looks like the first 7 files are missing this field.
In quickstarts/nrm4sap/config.yml
https://github.com/newrelic/newrelic-quickstarts/pull/1459#discussion_r1005925564
:

integration

idoc

rfc

+# Reference to install plans located under /install directory
+# Allows us to construct reusable "install plans" and just use their ID in the quickstart config
+alertPolicies:

nrm4sap

+dashboards:

nrm4sap

nrm4sap-datacollect

nrm4sap-datasize

+# Documentation references
+documentation:

name: Installation docs

url: https://drive.google.com/file/d/1PeCLM3vQxc-lTxt5R8ZZ6kx9kkfJEu0Y/view?usp=sharing

We need all docs to be hosted. We avoid using google drives or download
links for our documentation.
In quickstarts/nrm4sap/config.yml
https://github.com/newrelic/newrelic-quickstarts/pull/1459#discussion_r1005925839
:

+alertPolicies:

nrm4sap

+dashboards:

nrm4sap

nrm4sap-datacollect

nrm4sap-datasize

+# Documentation references
+documentation:

name: Installation docs

url: https://drive.google.com/file/d/1PeCLM3vQxc-lTxt5R8ZZ6kx9kkfJEu0Y/view?usp=sharing

description: Installation Guide for New Relic Monitoring for SAP® Solutions

name: New Relic Monitoring for SAP® Solutions

description: New Relic Monitoring for SAP® Solutions feature overview

url: https://newrelic.com/solutions/sap

name: Administration Guide

url: https://drive.google.com/file/d/1fX37P3z9DH4ZgQO9xpJjzP2ZQ3ReA7Dl/view?usp=sharing

Here as well
In alert-policies/nrm4sap/bsHttpDest.yml
https://github.com/newrelic/newrelic-quickstarts/pull/1459#discussion_r1005927311
:

@@ -0,0 +1,63 @@

+---
We can remove this line from all the alert policies.
—
Reply to this email directly, view it on GitHub
https://github.com/newrelic/newrelic-quickstarts/pull/1459#pullrequestreview-1156923341,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXIGKDWCCAKB2YVLR6MXW63WFFOEHANCNFSM6AAAAAARNKBQVA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Awesome, thanks!
On Thu, Oct 27, 2022 at 10:56 AM Joe Gregory @.***>
wrote:

@.**** commented on this pull request.
In quickstarts/nrm4sap/config.yml
https://github.com/newrelic/newrelic-quickstarts/pull/1459#discussion_r1007197661
:

+alertPolicies:

nrm4sap

+dashboards:

nrm4sap

nrm4sap-datacollect

nrm4sap-datasize

+# Documentation references
+documentation:

name: Installation docs

url: https://drive.google.com/file/d/1PeCLM3vQxc-lTxt5R8ZZ6kx9kkfJEu0Y/view?usp=sharing

description: Installation Guide for New Relic Monitoring for SAP® Solutions

name: New Relic Monitoring for SAP® Solutions

description: New Relic Monitoring for SAP® Solutions feature overview

url: https://newrelic.com/solutions/sap

name: Administration Guide

url: https://drive.google.com/file/d/1fX37P3z9DH4ZgQO9xpJjzP2ZQ3ReA7Dl/view?usp=sharing

@edyu002 https://github.com/edyu002 - @seemantk
https://github.com/seemantk will be reaching out in regards to this :)
—
Reply to this email directly, view it on GitHub
https://github.com/newrelic/newrelic-quickstarts/pull/1459#discussion_r1007197661,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXIGKDUFYX3IGPNTHGDDNH3WFK66HANCNFSM6AAAAAARNKBQVA
.
You are receiving this because you were mentioned.Message ID:
@.***>

After discussion with the Documentation team, we decided to reduce the number of document links to 1, and point it to the SAP page on docs.newrelic.com site.  I've submitted the changes to GITHUB. If there's any problem, please let us know.


corrected the bug for html inconsistency from body>header>main to bod…

…y>main>header
Fixes

Fixes #230 by @Dev-JoyA

Description

The initial structure was incorrect and did not follow the layout guidelines outlined in the Vocabulary documentation. As a result, the search portal has an inconsistent HTML structure, impacting both accessibility and content organization.
Technical details

Moved the header inside the  tag to follow the appropriate structure as outlined in the Vocabulary documentation.
Noticed a display issue where the header wasn’t rendering correctly due to a minor CSS error (see screenshot below).
Edited the styles associated with the  tag in vocabulary.css to improve the layout and ensure proper display.
The background color of the header was initially showing only halfway, which affected the overall UI design. After the update, the display issue was resolved. Screenshots are provided to show the before and after comparison.

Tests

I ran the code in my browser using Live Server in VSCode to test the UI changes. This allowed me to visually confirm that the updates to the structure and styling were correctly applied.
Screenshots

before correction

After correction

After correcting the display in css

Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main or master).
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no
visible errors.

Developer Certificate of Origin

For the purposes of this DCO, "license" is equivalent to "license or public domain dedication," and "open source license" is equivalent to "open content license or public domain dedication."

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

See comment on

#230

After reviewing #287 and investigating further I believe this Issue was approved in error.
I think there might be a misunderstanding about the nature of this sturcture. There are two header elements present on most pages utilizing Vocabulary.
There is the Header - Global Area, and there is the Page Header - Region itself. Each of these relies on placement within a different context.
I'm closing this Issue and the related PR as the structure does in fact seem to reflect the correct implementation at this time.

Closing


Revisit shared process and main process services

Follow up from our work on shared process using message ports: we currently have a IMainProcessService and ISharedProcessService that expose methods to getChannel and registerChannel. I think the names are misleading and should probably include the IPC part, or we find an alternative.
The original necessity for adding these services was to get them properly injected and not create services eagerly on startup.
Up for ideas how to improve this.

My proposal would be to simply include IPC in the names of these services, but I think @joaomoreno you might have had more in mind to hide implementation specific details?

After discussion with @bpasero, here's what we should do:

Remove all injections of ISharedProcessService and IMainProcessService from misc classes: channels shouldn't be used across the workbench, except in implementing IChannel and IChannelClient interfaces
There should be registerSharedProcessService et al methods which register services coming in from the shared process via channels. Optionally, Channel and ChannelClient ctors can be passed as options, in case the ProxyChannel util can't be used.

registerSharedProcessService(ILocalizationsService, 'localizations', Channel?, ChannelClient?);

I'm a little worried about the merge headaches this sort of thing will cause when trying to get https://github.com/microsoft/vscode/pull/116373 in. Something a little unique about that is that there are 2 levels of proxy (window to sharedprocess to ptyhost) which I don't think we're doing anywhere yet.

The ProxyChannel utils are great, but this double proxy concept seemed to fall apart when handing events going back to the window:
https://github.com/microsoft/vscode/blob/17018593c7ca8065f9422a2fb19cd9677aabe089/src/vs/platform/terminal/electron-browser/localPtyService.ts#L18-L19

Using the ProxyChannel is by no means necessary. You can always resort to implementing your own Channel/ChannelClient pair, as it's done in some places, eg https://github.com/microsoft/vscode/blob/2cd7a70d629fd5cac500341174291b0bfd120a6c/src/vs/platform/url/common/urlIpc.ts#L12-L37

@bpasero: After reviewing our approach with @sandy081, we figured out that in some of his code it will be very hard not to depend on ISharedProcessService. Namely, extending from an abstract class which depends on service injecting in the ctor is the restricting factor.
So we came up with something different. The real problem isn't that ISharedProcessService is accessibly from anywhere, but rather that it exposes low-level channels via getChannel. Here's the current interface:
export interface ISharedProcessService {
	getChannel(channelName: string): IChannel;
	registerChannel(channelName: string, channel: IServerChannel<string>): void;
}

What if we would move to an interface which would force people to use services in their application layer code? Something like:
export interface RemoteServiceCtor<T> {
  new(channel: IChannel): T;
}

export interface ISharedProcessService {
	getService<T>(channelName: string, ctor: RemoteServiceCtor): T;
	registerChannel(channelName: string, channel: IServerChannel<string>): void;
}

That would avoid that people save IChannel instances and use them directly.
In any case, we should still have the registerSharedProcessService (et al) util for the common case.

I've pushed some code which should highlight the two patterns, custom IPC and automagic proxy IPC:
Proxy: diagnosticsService.ts
Custom: updateService.ts
What we will further do is reduce those files to a simpler pattern.
Proxy:
registerSharedProcessService(IDiagnosticsService, DiagnosticsService);

Custom:
registerMainProcessService(IUpdateService, 'update', { channelClientCtor: UpdateChannelClient });

That way, the direct use of IMainProcessService and ISharedProcessService should be heavily reduced, as well as the necessary // @ts-ignore hack.

@Tyriar

I'm a little worried about the merge headaches this sort of thing will cause when trying to get #116373 in. Something a little unique about that is that there are 2 levels of proxy (window to sharedprocess to ptyhost) which I don't think we're doing anywhere yet.

I am not sure I fully understand this, aren't we in the end shooting for a solution that allows direct window to ptyhost communication via MessagePort? In that case I would expect some kind of ITerminalPtyHostService that the renderer can depend on to talk to the host directly.
@joaomoreno

That would avoid that people save IChannel instances and use them directly. @sandy081 could still reach out to use ISharedProcessService, but he would be forced to write a ChannelClient class for his remote service, keeping all the unsafe typing contained in that class.

Any particular reason why the proxy cannot be used in this case? The proxy supports events, so even this code can use the proxy.
In general I like the idea of hiding channels, but shouldn't then registerChannel also go away?

That way, the direct use of IMainProcessService and ISharedProcessService should be heavily reduced, as well as the necessary // @ts-ignore workaround.

Yeah I like that. Btw I noticed you moved ISharedProcessService and IMainProcessService to common. My original intent was to keep them in electron-sandbox as clear signal that you cannot depend on these from the browser. I would strongly suggest to keep these interfaces in electron-sandbox so that we are not accidentally dragging those interfaces into the web where they do not make a lot of sense.

Any particular reason why the proxy cannot be used in this case? The proxy supports events, so even this code can use the proxy.

Yup, it's related to him extending from a base class which requires other services. I can talk it thought in a screen sharing session.

I would strongly suggest to keep these interfaces in electron-sandbox so that we are not accidentally dragging those interfaces into the web where they do not make a lot of sense.

Yeah I had a weird feeling pulling them out. Your argument made me go back to my tracks. Reverted that.

In general I like the idea of hiding channels, but shouldn't then registerChannel also go away?

Yes we need to come up with a similar alternative for that too.

Here's the first commit showing an ideal solution: https://github.com/microsoft/vscode/commit/b2e68d70b8dd30b565e6b181fac6ec47b7e00f3d
Notice the usage on both situations:

Proxy: diagnosticsService.ts
Custom channel client: updateService.ts

Neither ever sees instances of IMainProcessService or ISharedProcessService.

Yeah I had a weird feeling pulling them out. Your argument made me go back to my tracks. Reverted that.

Thanks

Here's the first commit showing an ideal solution: b2e68d7

Looks great, should go ahead and adopt this for all our services 👍
One nit: it looks like updateService.ts lives in workbench but should probably move to platform. There is a browser variant that is very workbench specific, but I would still think that it is better to have them all together in one place?

One nit: it looks like updateService.ts lives in workbench but should probably move to platform. There is a browser variant that is very workbench specific, but I would still think that it is better to have them all together in one place?

Yeah no preference here. The distinction between platform and workbench services isn't really super clear in my mind. Maybe you can clarify?

Looks great, should go ahead and adopt this for all our services 👍

Awesome. Now that we have a clear direction, I'll move this to March debt week. 👌

Sounds good, let me summarise the work here also given that I will merge https://github.com/microsoft/vscode/issues/116318 into this issue:

adopt registerMainProcessRemoteService and registerSharedProcessRemoteService everywhere
try to use the proxy as much as possible but fallback to existing IPC overrides if custom solution is needed (related https://github.com/microsoft/vscode/issues/116191)
consider to move services closer together into one platform folder instead of spreading across platform and workbench

An inventory where we still implement the channel manually:

[ ] src/vs/platform/debug/common/extensionHostDebugIpc.ts
[ ] src/vs/platform/download/common/downloadIpc.ts
[ ] src/vs/platform/driver/node/driver.ts
[ ] src/vs/platform/extensionManagement/common/extensionManagementIpc.ts
[ ] src/vs/platform/extensionRecommendations/electron-sandbox/extensionRecommendationsIpc.ts
[ ] src/vs/platform/log/common/logIpc.ts
[ ] src/vs/platform/request/common/requestIpc.ts
[ ] src/vs/platform/storage/electron-main/storageIpc.ts
[ ] src/vs/platform/telemetry/common/telemetryIpc.ts
[ ] src/vs/platform/update/common/updateIpc.ts
[ ] src/vs/platform/url/common/urlIpc.ts
[ ] src/vs/platform/userDataSync/common/userDataSyncIpc.ts
[ ] src/vs/platform/userDataSync/common/userDataSyncServiceIpc.ts
[ ] src/vs/workbench/services/search/node/searchApp.ts

Should sign off here when we adopted ProxyChannel
Btw unfortunately I had to move ISharedProcessService into workbench because of dependencies to the workbench lifecycle service. That means the IPC services are not nicely grouped in platform anymore but I also think that is fair because the shared process service is meant to only be used from renderer.

@joaomoreno while adopting registerMainProcessRemoteService and registerSharedProcessRemoteService for some of mine, I noticed that I have no way of configuring the proxy. For this case I need it though:
https://github.com/microsoft/vscode/blob/ea048b877175ae2736ee5ff93273490cf57c4e68/src/vs/workbench/services/workspaces/electron-sandbox/workspacesService.ts#L21-L21
Should we allow to pass channelClientCtor | ProxyOptions so that it is more obvious how to configure the proxy when no channel client is passed in?

Should we allow to pass channelClientCtor | ProxyOptions so that it is more obvious how to configure the proxy when no channel client is passed in?

Yeah sounds good.

Ok I can do that change in my branch.

Oh nevermind, turns out I cannot use that because the properties I need are coming from other services. I will have to keep workspaces service and native host service as they are.


[Classic] Icons don't move with messages until the animation is complete

Describe the bug
Icons that are displayed in chat don't move with the message when chat is active and pushing the previous messages up through animation effects. Once the animation is complete, the icons reposition correctly but not during the animation.
To Reproduce
Steps to reproduce the behavior:

Log into classic
Type a message containing a icon (I.E. {skull})
Type more messages which pushes the previous message up
See the icons not reposition until animation of the message going up finishes

Expected behavior
Icons (I.E. {skull}) scroll up with messages in a seamless animation.
Does the Glass work if you disable all other addons?
Still happens whether all addons or nothing but Glass is enabled
Screenshots
If applicable, add screenshots to help explain your problem.
https://i.imgur.com/7IGdjQ2.png

Hi! Thanks for the report. This is a known limitation with WoW UI's animation APIs. However, I do have a workaround cooking so hopefully this will be fixed soon!

This has been fixed with release 1.4.2.


Figure out what is left before Release 1.0

What of the currently open issues needs to happen before we call this ready for testing? Need to go through and triage and then after that actually create a 1.0 tag and make release notes.

Also when we tag a new release, we should tag a docker image parallel to it.

The before 1.0 tags are our path to the first release!


Add S3_FORCE_GLOBAL_BUCKET_ACCESS environment variable

The forceGlobalBucketAccessEnabled setting sometimes conflicts with custom endpoint configuration. With this setting enabled, the S3 client during executing request replaced the endpoint with amazonaws.com (when it executescreateSigner).
The issue occurred in Wasabi S3 (eu-central-1 region).

@kovstas This change has been published as version 0.23.0


Remove workaround for issue #388 when fix is in Neovim stable

Corresponding Neovim issue: https://github.com/neovim/neovim/issues/5821
Corresponding Ensime-vim issue: #388
Corresponding PR: https://github.com/ensime/ensime-vim/pull/389
The fix should land in Neovim 2.0.

@ktonga

update sbt plugin
wipe out ensime dirs from ivy cache find ~/.ivy2 -name \*ensime\* -exec rm -rf {} \+
run ensimeConfig again
make sure you have let g:ensime_server_v2=1 in your init.vim
open a scala file.

You might need to to run UpdateRemotePlugins as well. Another tip kill all your other instances of nvim running. Not sure if it's entirely an issue but I kept getting the handshake error even with let g:ensime_server_v2=1

Neovim 0.2 is out https://github.com/neovim/neovim/releases/tag/v0.2.0, this can be removed whenever you want.


New Feature: Implement withIoC={CDI, CDI_SINGLETON} options

Hi,
I think it would be very useful to have support for Java CDI standard injection mechanism based on javax.inject.Inject annotation. Additionally, it would be great to have the ability to create singletons based on javax.inject.Singleton annotation too. My proposal is to incorporate to the Selma's @Mapper annotation the follow options for the existing withIoC attribute :

CDI: This would add the javax.inject.Named annotation to the generated mapper class.
CDI_SINGLETON: This would add the javax.inject.Named and javax.inject.Singleton annotations to the generated mapper class.

The result would be that later on that we would be able to do the following in our code:
@Inject
private final UserMapper userMapper;

I've found this implementation to incorporate CDI to Selma, but I don't think it's compatible with the aforementioned request.
Thank you!

Hi,
this is possible you can simply modify the implementation found to do it and add the support for withIoCServiceName parameter inside the code for CDI support.
I would be pleased to merge such a pull request with the corresponding tests.

may I close this issue now ?

Yes, I think so. I'll take care of it! :-)