New to node, getting an error on Install

Call me stupid if this is something really simple I'm missing, I'm new to node and I might be missing something.
I'm trying to use this library to implement AD authentication on my app, but I get a ton of errors when it's building the library. Any help would be greatly appreciated.
➜  faces git:(master) ✗ npm install activedirectory

><EMAIL_ADDRESS>install /Users/thedoctor/Documents/Projects/faces/node_modules/activedirectory/node_modules/ldapjs/node_modules/dtrace-provider
> node-gyp rebuild

  ACTION binding_gyp_libusdt_target_build_libusdt .
Building libusdt for x86_64
rm -f *.gch
rm -f *.o
rm -f libusdt.a
rm -f test_usdt
rm -f test_usdt32
rm -f test_usdt64
rm -f test_mem_usage
gcc -O2 -arch x86_64   -c -o usdt.o usdt.c
usdt.c:212:9: warning: implicit declaration of function 'usdt_dof_section_free' is invalid in C99 [-Wimplicit-function-declaration]
        usdt_dof_section_free(&strtab);
        ^
usdt.c:238:9: warning: implicit declaration of function 'usdt_dof_file_free' is invalid in C99 [-Wimplicit-function-declaration]
        usdt_dof_file_free(provider->file);
        ^
2 warnings generated.
gcc -O2 -arch x86_64   -c -o usdt_dof_file.o usdt_dof_file.c
gcc -arch x86_64 -o usdt_tracepoints.o -c usdt_tracepoints_x86_64.s
gcc -O2 -arch x86_64   -c -o usdt_probe.o usdt_probe.c
gcc -O2 -arch x86_64   -c -o usdt_dof.o usdt_dof.c
gcc -O2 -arch x86_64   -c -o usdt_dof_sections.o usdt_dof_sections.c
rm -f libusdt.a
ar cru libusdt.a usdt.o usdt_dof_file.o usdt_tracepoints.o usdt_probe.o usdt_dof.o usdt_dof_sections.o
ranlib libusdt.a
  TOUCH Release/obj.target/libusdt.stamp
  CXX(target) Release/obj.target/DTraceProviderBindings/dtrace_provider.o
In file included from ../dtrace_provider.cc:1:
../dtrace_provider.h:69:44: error: no type named 'Arguments' in namespace 'v8'; did you mean 'v8::internal::Arguments'?
    static v8::Handle<v8::Value> New(const v8::Arguments& args);
                                           ^~~~~~~~~~~~~
                                           v8::internal::Arguments
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:139:7: note: 'v8::internal::Arguments' declared here
class Arguments;
      ^
In file included from ../dtrace_provider.cc:1:
../dtrace_provider.h:70:45: error: no type named 'Arguments' in namespace 'v8'; did you mean 'v8::internal::Arguments'?
    static v8::Handle<v8::Value> Fire(const v8::Arguments& args);
                                            ^~~~~~~~~~~~~
                                            v8::internal::Arguments
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:139:7: note: 'v8::internal::Arguments' declared here
class Arguments;
      ^
In file included from ../dtrace_provider.cc:1:
../dtrace_provider.h:87:44: error: no type named 'Arguments' in namespace 'v8'; did you mean 'v8::internal::Arguments'?
    static v8::Handle<v8::Value> New(const v8::Arguments& args);
                                           ^~~~~~~~~~~~~
                                           v8::internal::Arguments
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:139:7: note: 'v8::internal::Arguments' declared here
class Arguments;
      ^
In file included from ../dtrace_provider.cc:1:
../dtrace_provider.h:88:49: error: no type named 'Arguments' in namespace 'v8'; did you mean 'v8::internal::Arguments'?
    static v8::Handle<v8::Value> AddProbe(const v8::Arguments& args);
                                                ^~~~~~~~~~~~~
                                                v8::internal::Arguments
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:139:7: note: 'v8::internal::Arguments' declared here
class Arguments;
      ^
In file included from ../dtrace_provider.cc:1:
../dtrace_provider.h:89:52: error: no type named 'Arguments' in namespace 'v8'; did you mean 'v8::internal::Arguments'?
    static v8::Handle<v8::Value> RemoveProbe(const v8::Arguments& args);
                                                   ^~~~~~~~~~~~~
                                                   v8::internal::Arguments
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:139:7: note: 'v8::internal::Arguments' declared here
class Arguments;
      ^
In file included from ../dtrace_provider.cc:1:
../dtrace_provider.h:90:47: error: no type named 'Arguments' in namespace 'v8'; did you mean 'v8::internal::Arguments'?
    static v8::Handle<v8::Value> Enable(const v8::Arguments& args);
                                              ^~~~~~~~~~~~~
                                              v8::internal::Arguments
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:139:7: note: 'v8::internal::Arguments' declared here
class Arguments;
      ^
In file included from ../dtrace_provider.cc:1:
../dtrace_provider.h:91:48: error: no type named 'Arguments' in namespace 'v8'; did you mean 'v8::internal::Arguments'?
    static v8::Handle<v8::Value> Disable(const v8::Arguments& args);
                                               ^~~~~~~~~~~~~
                                               v8::internal::Arguments
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:139:7: note: 'v8::internal::Arguments' declared here
class Arguments;
      ^
In file included from ../dtrace_provider.cc:1:
../dtrace_provider.h:92:45: error: no type named 'Arguments' in namespace 'v8'; did you mean 'v8::internal::Arguments'?
    static v8::Handle<v8::Value> Fire(const v8::Arguments& args);
                                            ^~~~~~~~~~~~~
                                            v8::internal::Arguments
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:139:7: note: 'v8::internal::Arguments' declared here
class Arguments;
      ^
../dtrace_provider.cc:23:17: error: calling a protected constructor of class 'v8::HandleScope'
    HandleScope scope;
                ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:885:13: note: declared protected here
  V8_INLINE HandleScope() {}
            ^
../dtrace_provider.cc:25:55: error: cannot initialize a parameter of type 'v8::Isolate *' with an lvalue of type 'v8::Handle<v8::Value>
      (const v8::internal::Arguments &)'
    Local<FunctionTemplate> t = FunctionTemplate::New(DTraceProvider::New);
                                                      ^~~~~~~~~~~~~~~~~~~
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:4350:16: note: passing argument to parameter 'isolate' here
      Isolate* isolate, FunctionCallback callback = 0,
               ^
../dtrace_provider.cc:26:58: error: 'New' is a private member of 'v8::PersistentBase<v8::FunctionTemplate>'
    constructor_template = Persistent<FunctionTemplate>::New(t);
                                                         ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:639:23: note: declared private here
  V8_INLINE static T* New(Isolate* isolate, T* that);
                      ^
../dtrace_provider.cc:26:28: error: too few arguments to function call, expected 2, have 1; did you mean 'DTraceProbe::New'?
    constructor_template = Persistent<FunctionTemplate>::New(t);
                           ^~~~~~~~~~
                           DTraceProbe::New
../dtrace_provider.h:69:34: note: 'DTraceProbe::New' declared here
    static v8::Handle<v8::Value> New(const v8::Arguments& args);
                                 ^
../dtrace_provider.cc:27:25: error: member reference type 'Persistent<v8::FunctionTemplate>' is not a pointer; maybe you meant to use '.'?
    constructor_template->InstanceTemplate()->SetInternalFieldCount(1);
    ~~~~~~~~~~~~~~~~~~~~^~
                        .
../dtrace_provider.cc:27:27: error: no member named 'InstanceTemplate' in 'v8::Persistent<v8::FunctionTemplate,
      v8::NonCopyablePersistentTraits<v8::FunctionTemplate> >'
    constructor_template->InstanceTemplate()->SetInternalFieldCount(1);
    ~~~~~~~~~~~~~~~~~~~~  ^
../dtrace_provider.cc:28:25: error: member reference type 'Persistent<v8::FunctionTemplate>' is not a pointer; maybe you meant to use '.'?
    constructor_template->SetClassName(String::NewSymbol("DTraceProvider"));
    ~~~~~~~~~~~~~~~~~~~~^~
                        .
../dtrace_provider.cc:28:27: error: no member named 'SetClassName' in 'v8::Persistent<v8::FunctionTemplate,
      v8::NonCopyablePersistentTraits<v8::FunctionTemplate> >'
    constructor_template->SetClassName(String::NewSymbol("DTraceProvider"));
    ~~~~~~~~~~~~~~~~~~~~  ^
../dtrace_provider.cc:28:48: error: no member named 'NewSymbol' in 'v8::String'
    constructor_template->SetClassName(String::NewSymbol("DTraceProvider"));
                                       ~~~~~~~~^
../dtrace_provider.cc:30:31: error: no viable conversion from 'Persistent<v8::FunctionTemplate>' to 'v8::Local<v8::FunctionTemplate>'
    NODE_SET_PROTOTYPE_METHOD(constructor_template, "addProbe", DTraceProvider::AddProbe);
                              ^~~~~~~~~~~~~~~~~~~~
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:210:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from
      'Persistent<v8::FunctionTemplate>' to 'const v8::Local<v8::FunctionTemplate> &' for 1st argument
class Local {
      ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:210:7: note: candidate constructor (the implicit move constructor) not viable: no known conversion from
      'Persistent<v8::FunctionTemplate>' to 'v8::Local<v8::FunctionTemplate> &&' for 1st argument
class Local {
      ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:214:13: note: candidate template ignored: could not match 'Local' against 'Persistent'
  V8_INLINE Local(Local<S> that)
            ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:326:13: note: candidate template ignored: could not match 'S *' against
      'Persistent<v8::FunctionTemplate>'
  V8_INLINE Local(S* that)
            ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/node.h:252:71: note: passing argument to parameter 'recv' here
inline void NODE_SET_PROTOTYPE_METHOD(v8::Local<v8::FunctionTemplate> recv,
                                                                      ^
../dtrace_provider.cc:31:31: error: no viable conversion from 'Persistent<v8::FunctionTemplate>' to 'v8::Local<v8::FunctionTemplate>'
    NODE_SET_PROTOTYPE_METHOD(constructor_template, "removeProbe", DTraceProvider::RemoveProbe);
                              ^~~~~~~~~~~~~~~~~~~~
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:210:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from
      'Persistent<v8::FunctionTemplate>' to 'const v8::Local<v8::FunctionTemplate> &' for 1st argument
class Local {
      ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:210:7: note: candidate constructor (the implicit move constructor) not viable: no known conversion from
      'Persistent<v8::FunctionTemplate>' to 'v8::Local<v8::FunctionTemplate> &&' for 1st argument
class Local {
      ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:214:13: note: candidate template ignored: could not match 'Local' against 'Persistent'
  V8_INLINE Local(Local<S> that)
            ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/v8.h:326:13: note: candidate template ignored: could not match 'S *' against
      'Persistent<v8::FunctionTemplate>'
  V8_INLINE Local(S* that)
            ^
/Users/thedoctor/.node-gyp/4.2.1/include/node/node.h:252:71: note: passing argument to parameter 'recv' here
inline void NODE_SET_PROTOTYPE_METHOD(v8::Local<v8::FunctionTemplate> recv,
                                                                      ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [Release/obj.target/DTraceProviderBindings/dtrace_provider.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 15.0.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/thedoctor/Documents/Projects/faces/node_modules/activedirectory/node_modules/ldapjs/node_modules/dtrace-provider
gyp ERR! node -v v4.2.1
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok

><EMAIL_ADDRESS>install /Users/thedoctor/Documents/Projects/faces/node_modules/activedirectory/node_modules/bunyan/node_modules/dtrace-provider
> node scripts/install.js

npm WARN optional dep failed, continuing<EMAIL_ADDRESS><EMAIL_ADDRESS>node_modules/activedirectory
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>└──<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>➜  faces git:(master) ✗

See the following closed issues which appear to be related to your problem:
#43
#76
#99
The problem essentially is the dtrace-provider package, which bunyan uses, which ldapjs uses is not building correctly on what appears to be Mac OS.
If you're still having problems, I'd recommend searching for issues upstream for dtrace-provider, bunyan and ldapjs related to these errors.

Thanks for the prompt reply. I'll give it a try.


Build docker image for OpenCRAVAT due to bug in mergesqlite sub command

Completed with 86256ca319a19901d70fce74a4b6f7f4922eb502 commit
Dockerhub: https://hub.docker.com/repository/docker/skchronicles/ncbr_opencravat


Hyperparameter Fitting

Added hyperparamter fitting and added exhaustive feature selection.

Still running, but early returns are at about 70% accuracy for the best model thus far (Logistic Regression with Sequential Feature Selection). There's also a bit more parameter space to explore--we're running with a narrower hyperparameter space, but if the results skew to one end of the space, we may want to expand it further.

Sounds good.


Add support for writing logs to Logging Service

Added write() method to Logging Service class
Updated HTTPClient.request() method to support passing list of log dictionaries in data payload
Added logging_write.py to examples library

Temporarily bypassing review/approval process.


Scrum 1342

DQM updates can now happen from a single script sort_dqm_json_reference_updates.py
Functional tests data updates sample_reference_populate_update.sh can also now just execute that.

Thanks @ianlongden !


Update for latest IPFS, bug fix.

This switches to using the buffered version of ipfs.cat which means you'll have to wait for the whole video to download before it'll play. The fix in https://github.com/moshisushi/hlsjs-ipfs-loader/pull/9 should be enough.

Closing this as invalid

@alanshaw It would not make any difference.
https://github.com/moshisushi/hlsjs-ipfs-loader/blob/81847d010968995df20f8db97fe41a4894a7b1c9/src/index.js#L98-L100
Callback is only returned when the stream has ended. HLS is chunked into multiple .ts files, only one is needed for about 5-10 seconds of playback depending on the chunk segment length.

Ah yes you're correct my apologies.

@alanshaw @vaultec81 you guys reckon the buffered version is actually better then, as in less code with no loss in performance? I guess this PR overlaps with #9 so can either merge, or if you want to open a new one.

Both versions are buffering. The current version using ipfs.catReadableStream is just doing what ipfs.cat does under the hood.
It would be better to stream it if possible.

@alanshaw But you can't inject a partial ts fragment into the HLS stream, afaik, so what additional benefit would that have? The low latency play and skip functionality is something you get from HLS by design, as streams are always pre-fragmented and only need a handful of fragments to get going (this is what @vaultec81 mentioned above). Sorry if I'm missing the point!

@moshisushi @alanshaw The issue I was experiencing was the stream was never closed. After some repeated testing I could not figure out why the stream wasn't ending. Which is why i put in ipfs.cat instead. This seemed to solve my issue in test case. (This was before @alanshaw's PR was merged)
correction: They are about the same performance/speed wise. ipfs.cat is a little bit faster (side by side comparison). @alanshaw you mentioned it does the same thing under the hood. But does ipfs.cat grab all the file leafs sequentially or all at once?

@vaultec81 Thanks for this. This PR has been included in release 0.1.5.
https://www.npmjs.com/package/hlsjs-ipfs-loader/v/0.1.5
Cheers!


non existing podcast ID in example code

error
Podcast:
Unhandled exception:
Error Code: 404
non existing id
#0      SpotifyApiBase.handleErrors
package:spotify/src/spotify_base.dart:211
#1      SpotifyApiBase._requestWrapper
package:spotify/src/spotify_base.dart:185
<asynchronous suspension>
#2      SpotifyApiBase._getImpl
package:spotify/src/spotify_base.dart:151
<asynchronous suspension>
#3      Shows.get
package:spotify/…/endpoints/shows.dart:24
<asynchronous suspension>
#4      main
example/example.dart:16
<asynchronous suspension>

Exited (255)

code
  print('\nPodcast:');
  var podcast = await spotify.shows.get('4AlxqGkkrqe0mfIx3Mi7Xt');
  print(podcast.name);

  print('\nPodcast episode:');
  var episodes = await spotify.shows.episodes('4AlxqGkkrqe0mfIx3Mi7Xt');
  var firstEpisode = (await episodes.first()).items!.first;
  print(firstEpisode.name);

The podcast id 4AlxqGkkrqe0mfIx3Mi7Xt is not exist.

I think there is a problem in spotify's web api itself.
get show in api console
{
"error": {
"status": 404,
"message": "non existing id"
}
}


Roll Flutter Engine from 4878f1c9ed1c to e45787f08b9a (7 revisions)

https://github.com/flutter/engine/compare/4878f1c9ed1c...e45787f08b9a
2024-11-17<EMAIL_ADDRESS>Roll Skia from 4708534db2e7 to 452208ce96aa (1 revision) (flutter/engine#56664)
2024-11-17<EMAIL_ADDRESS>iOS: Extract constant for CADisableMinimumFrameDurationOnPhone (flutter/engine#56659)
2024-11-17<EMAIL_ADDRESS>iOS: Eliminate unnecessary use of NSClassFromString (flutter/engine#56660)
2024-11-17<EMAIL_ADDRESS>iOS: Eliminate unnecessary bridged retain casts (flutter/engine#56662)
2024-11-17<EMAIL_ADDRESS>iOS,macOS: Fix string constant declarations (flutter/engine#56661)
2024-11-17<EMAIL_ADDRESS>iOS: Make FlutterViewController.engine a strong ref (flutter/engine#56663)
2024-11-17<EMAIL_ADDRESS>iOS: Clean up uses of string literal constants (flutter/engine#56658)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jimgraham<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Commit queue failed; closing this roll.


Error launching chipper

Good afternoon ,
First of all I would like to thank you all your effort with this project. It is awesome.
After all of it , I am having a little issue with it and I would like to know if you could help me. I am trying to install wire-pod in a linux mint laptop. I run the wire-pod setup.sh and I got problems launching the chipper server. I add all the command line information :
sudo ./setup.sh
Debian-based Linux confirmed.
amd64 architecture confirmed.
AVX support confirmed.
Checks have passed!
What would you like to do?
1: Full Setup (recommended) (builds chipper, gets STT stuff, generates certs, creates source.sh file, and creates server_config.json for your bot
2: Just build vic-cloud
3: Just build chipper
4: Just get STT assets
5: Just generate certs
6: Create wire-pod config file (change/add API keys)
(NOTE: You can just press enter without entering a number to select the default, recommended option)
Enter a number (1): 4
Which speech-to-text service would you like to use?
1: Coqui (local, no usage collection, less accurate, a little slower)
2: Picovoice Leopard (local, usage collected, accurate, account signup required)
3: VOSK (local, accurate, multilanguage, fast)
Enter a number (3):
Which STT language would you like to use?
1: English (US)
2: Italian (IT)
Enter a number (1): 1
sudo ./chipper/start.sh
pkg-config --cflags  -- opus opus opus opus opusfile opusfile
Package opus was not found in the pkg-config search path.
Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opus' found
Package opus was not found in the pkg-config search path.
Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opus' found
Package opusfile was not found in the pkg-config search path.
Perhaps you should add the directory containing opusfile.pc' to the PKG_CONFIG_PATH environment variable No package 'opusfile' found Package opusfile was not found in the pkg-config search path. Perhaps you should add the directory containing opusfile.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opusfile' found
pkg-config: exit status 1
github.com/alphacep/vosk-api/go
/root/go/pkg/mod/github.com/alphacep/vosk-api/go@v0.3.43/vosk.go:6:11: fatal error: vosk_api.h: No such file or directory
6 | // #include <vosk_api.h>
|           ^~~~~~~~~~~~
compilation terminated.

ohh yes..
I didn't mention the opus bug before.. the opus linker in the wire package is faulty.. I built opus from source.. simple and fast, smooth build (this is the best alternative).. but @kercre123  should provide the opportunity to refer to the opus built on the server..
Log:
... ... ...
pi@escapepod:~/wire-prod-pod/vector-cloud $ cd ../../opus
pi@escapepod:~/opus $ ./autogen.sh
Updating build configuration files, please wait....
libtoolize: putting auxiliary files in '.'.
libtoolize: linking file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: linking file 'm4/libtool.m4'
libtoolize: linking file 'm4/ltoptions.m4'
libtoolize: linking file 'm4/ltsugar.m4'
libtoolize: linking file 'm4/ltversion.m4'
libtoolize: linking file 'm4/lt~obsolete.m4'
configure.ac:38: installing './compile'
configure.ac:36: installing './config.guess'
configure.ac:36: installing './config.sub'
configure.ac:33: installing './install-sh'
configure.ac:33: installing './missing'
Makefile.am:347: warning: '%'-style pattern rules are a GNU make extension
Makefile.am:350: warning: '%'-style pattern rules are a GNU make extension
Makefile.am: installing './INSTALL'
Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
pi@escapepod:~/opus $ ./configure
checking whether make supports nested variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
...
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
...
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
...
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
...
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
...
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes.
...
checking if gcc supports -fvisibility=hidden... yes
checking whether to add -D_FORTIFY_SOURCE=2 to CFLAGS... yes
checking if gcc supports -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes... yes
checking for lrintf... yes
checking for lrint... yes
checking for __malloc_hook... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating opus.pc
config.status: creating opus-uninstalled.pc
config.status: creating celt/arm/armopts.s
config.status: creating doc/Makefile
config.status: creating doc/Doxyfile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure:
opus 1.3.1-158-gbce1f392:  Automatic configuration OK.
Compiler support:

  C99 var arrays: ................ yes
  C99 lrintf: .................... yes
  Use alloca: .................... no (using var arrays)

General configuration:

  Floating point support: ........ yes
  ...
  External Assembly Optimizations:
  Intrinsics Optimizations: ...... ARM (NEON) (NEON Aarch64)
  ...
  Hardening: ..................... yes
  ...

  API documentation: ............. yes
  Extra programs: ................ yes

Type "make; make install" to compile and install
Type "make check" to run the test suite
pi@escapepod:~/opus $ make
make  all-recursive
make[1]: Entering directory '/home/pi/opus'
make[2]: Entering directory '/home/pi/opus'
CC       celt/tests/test_unit_cwrs32.o
CCLD     celt/tests/test_unit_cwrs32
CC       celt/tests/test_unit_dft.o
CC       celt/bands.lo
CC       celt/celt.lo
CC       celt/celt_encoder.lo
CC       celt/celt_decoder.lo
...
CC       silk/float/pitch_analysis_core_FLP.lo
CC       silk/float/scale_copy_vector_FLP.lo
CC       silk/float/scale_vector_FLP.lo
CC       silk/float/schur_FLP.lo
CC       silk/float/sort_FLP.lo
CC       silk/arm/biquad_alt_neon_intr.lo
CC       silk/arm/LPC_inv_pred_gain_neon_intr.lo
CC       silk/arm/NSQ_del_dec_neon_intr.lo
silk/arm/NSQ_del_dec_neon_intr.c: In function ‘silk_NSQ_del_dec_neon’:
silk/arm/NSQ_del_dec_neon_intr.c:422:55: warning: iteration 80 invokes undefined behavior [-Waggressive-loop-optimizations]
...
CC       silk/arm/NSQ_neon.lo
CC       src/opus.lo
CC       src/opus_decoder.lo
CC       src/opus_encoder.lo
CC       src/opus_multistream.lo
CC       src/opus_multistream_encoder.lo
CC       src/opus_multistream_decoder.lo
CC       src/repacketizer.lo
...
CC       doc/trivial_example.o
CCLD     trivial_example
make[3]: Entering directory '/home/pi/opus/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/pi/opus/doc'
make[2]: Leaving directory '/home/pi/opus'
make[1]: Leaving directory '/home/pi/opus'
pi@escapepod:~/opus $ sudo make install
[sudo] password for pi:
make  install-recursive
make[1]: Entering directory '/home/pi/opus'
make[2]: Entering directory '/home/pi/opus'
make[3]: Entering directory '/home/pi/opus/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/pi/opus/doc'
make[3]: Entering directory '/home/pi/opus'
/usr/bin/mkdir -p '/usr/local/lib'
/bin/bash ./libtool   --mode=install /usr/bin/install -c   libopus.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libopus.so.0.8.0 /usr/local/lib/libopus.so.0.8.0
libtool: install: (cd /usr/local/lib && { ln -s -f libopus.so.0.8.0 libopus.so.0 || { rm -f libopus.so.0 && ln -s libopus.so.0.8.0 libopus.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libopus.so.0.8.0 libopus.so || { rm -f libopus.so && ln -s libopus.so.0.8.0 libopus.so; }; })
libtool: install: /usr/bin/install -c .libs/libopus.lai /usr/local/lib/libopus.la
libtool: install: /usr/bin/install -c .libs/libopus.a /usr/local/lib/libopus.a
libtool: install: chmod 644 /usr/local/lib/libopus.a
libtool: install: ranlib /usr/local/lib/libopus.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:

add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
use the '-Wl,-rpath -Wl,LIBDIR' linker flag
have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
make[4]: Entering directory '/home/pi/opus/doc'
make[5]: Entering directory '/home/pi/opus/doc'
make[5]: Nothing to be done for 'install-exec-am'.
make[5]: Nothing to be done for 'install-data-am'.
make[5]: Leaving directory '/home/pi/opus/doc'
make[4]: Leaving directory '/home/pi/opus/doc'
/usr/bin/mkdir -p '/usr/local/share/aclocal'
/usr/bin/install -c -m 644 opus.m4 '/usr/local/share/aclocal'
/usr/bin/mkdir -p '/usr/local/lib/pkgconfig'
/usr/bin/install -c -m 644 opus.pc '/usr/local/lib/pkgconfig'
/usr/bin/mkdir -p '/usr/local/include/opus'
/usr/bin/install -c -m 644 include/opus.h include/opus_multistream.h include/opus_types.h include/opus_defines.h include/opus_projection.h '/usr/local/include/opus'
make[3]: Leaving directory '/home/pi/opus'
make[2]: Leaving directory '/home/pi/opus'
make[1]: Leaving directory '/home/pi/opus'
pi@escapepod:~/opus $ make check
make  check-recursive
make[1]: Entering directory '/home/pi/opus'
make[2]: Entering directory '/home/pi/opus'
make[3]: Entering directory '/home/pi/opus/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/pi/opus/doc'
make  check-TESTS
make[3]: Entering directory '/home/pi/opus'
make[4]: Entering directory '/home/pi/opus'
PASS: celt/tests/test_unit_cwrs32
PASS: celt/tests/test_unit_dft
PASS: celt/tests/test_unit_entropy
PASS: celt/tests/test_unit_laplace
PASS: celt/tests/test_unit_mathops
PASS: celt/tests/test_unit_mdct
PASS: celt/tests/test_unit_rotation
PASS: celt/tests/test_unit_types
PASS: silk/tests/test_unit_LPC_inv_pred_gain
PASS: tests/test_opus_api
PASS: tests/test_opus_decode
PASS: tests/test_opus_encode
PASS: tests/test_opus_padding
PASS: tests/test_opus_projection
Testsuite summary for opus 1.3.1-158-gbce1f392
TOTAL: 14
PASS:  14
SKIP:  0
XFAIL: 0
FAIL:  0
XPASS: 0
pi@escapepod:~/opus $
make[4]: Leaving directory '/home/pi/opus'
make[3]: Leaving directory '/home/pi/opus'
make[2]: Leaving directory '/home/pi/opus'
make[1]: Leaving directory '/home/pi/opus'
pi@escapepod:~/opus $

ohh yes..
I didn't mention the opus bug before.. the opus linker in the wire package is faulty.. I built opus from source.. simple and fast, smooth build (this is the best alternative).. but @kercre123   should provide the opportunity to refer to the opus built on the server..
Log:
... ... ...
pi@escapepod:~/wire-prod-pod/vector-cloud $ cd ../../opus
pi@escapepod:~/opus $ ./autogen.sh
Updating build configuration files, please wait....
libtoolize: putting auxiliary files in '.'.
libtoolize: linking file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: linking file 'm4/libtool.m4'
libtoolize: linking file 'm4/ltoptions.m4'
libtoolize: linking file 'm4/ltsugar.m4'
libtoolize: linking file 'm4/ltversion.m4'
libtoolize: linking file 'm4/lt~obsolete.m4'
configure.ac:38: installing './compile'
configure.ac:36: installing './config.guess'
configure.ac:36: installing './config.sub'
configure.ac:33: installing './install-sh'
configure.ac:33: installing './missing'
Makefile.am:347: warning: '%'-style pattern rules are a GNU make extension
Makefile.am:350: warning: '%'-style pattern rules are a GNU make extension
Makefile.am: installing './INSTALL'
Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
pi@escapepod:~/opus $ ./configure
checking whether make supports nested variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
... ... ...
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
. . .
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
. . .
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
. . .
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
. . .
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes.
. . .
checking if gcc supports -fvisibility=hidden... yes
checking whether to add -D_FORTIFY_SOURCE=2 to CFLAGS... yes
checking if gcc supports -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes... yes
checking for lrintf... yes
checking for lrint... yes
checking for __malloc_hook... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating opus.pc
config.status: creating opus-uninstalled.pc
config.status: creating celt/arm/armopts.s
config.status: creating doc/Makefile
config.status: creating doc/Doxyfile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure:

opus 1.3.1-158-gbce1f392:  Automatic configuration OK.
Compiler support:

  C99 var arrays: ................ yes
  C99 lrintf: .................... yes
  Use alloca: .................... no (using var arrays)

General configuration:

  Floating point support: ........ yes
  ...
  External Assembly Optimizations:
  Intrinsics Optimizations: ...... ARM (NEON) (NEON Aarch64)
  ...
  Hardening: ..................... yes
  ...
  API documentation: ............. yes
  Extra programs: ................ yes

Type "make; make install" to compile and install
Type "make check" to run the test suite
pi@escapepod:~/opus $ make
make  all-recursive
make[1]: Entering directory '/home/pi/opus'
make[2]: Entering directory '/home/pi/opus'
CC       celt/tests/test_unit_cwrs32.o
CCLD     celt/tests/test_unit_cwrs32
CC       celt/tests/test_unit_dft.o
CC       celt/bands.lo
CC       celt/celt.lo
CC       celt/celt_encoder.lo
CC       celt/celt_decoder.lo
. . .
CC       silk/float/pitch_analysis_core_FLP.lo
CC       silk/float/scale_copy_vector_FLP.lo
CC       silk/float/scale_vector_FLP.lo
CC       silk/float/schur_FLP.lo
CC       silk/float/sort_FLP.lo
CC       silk/arm/biquad_alt_neon_intr.lo
CC       silk/arm/LPC_inv_pred_gain_neon_intr.lo
CC       silk/arm/NSQ_del_dec_neon_intr.lo
silk/arm/NSQ_del_dec_neon_intr.c: In function ‘silk_NSQ_del_dec_neon’:
silk/arm/NSQ_del_dec_neon_intr.c:422:55: warning: iteration 80 invokes undefined behavior [-Waggressive-loop-optimizations]
. . .
CC       silk/arm/NSQ_neon.lo
CC       src/opus.lo
CC       src/opus_decoder.lo
CC       src/opus_encoder.lo
CC       src/opus_multistream.lo
CC       src/opus_multistream_encoder.lo
CC       src/opus_multistream_decoder.lo
CC       src/repacketizer.lo
. . .
CC       doc/trivial_example.o
CCLD     trivial_example
make[3]: Entering directory '/home/pi/opus/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/pi/opus/doc'
make[2]: Leaving directory '/home/pi/opus'
make[1]: Leaving directory '/home/pi/opus'
pi@escapepod:~/opus $ sudo make install
[sudo] password for pi:
make  install-recursive
make[1]: Entering directory '/home/pi/opus'
make[2]: Entering directory '/home/pi/opus'
make[3]: Entering directory '/home/pi/opus/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/pi/opus/doc'
make[3]: Entering directory '/home/pi/opus'
/usr/bin/mkdir -p '/usr/local/lib'
/bin/bash ./libtool   --mode=install /usr/bin/install -c   libopus.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libopus.so.0.8.0 /usr/local/lib/libopus.so.0.8.0
libtool: install: (cd /usr/local/lib && { ln -s -f libopus.so.0.8.0 libopus.so.0 || { rm -f libopus.so.0 && ln -s libopus.so.0.8.0 libopus.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libopus.so.0.8.0 libopus.so || { rm -f libopus.so && ln -s libopus.so.0.8.0 libopus.so; }; })
libtool: install: /usr/bin/install -c .libs/libopus.lai /usr/local/lib/libopus.la
libtool: install: /usr/bin/install -c .libs/libopus.a /usr/local/lib/libopus.a
libtool: install: chmod 644 /usr/local/lib/libopus.a
libtool: install: ranlib /usr/local/lib/libopus.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib

Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:

add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
use the '-Wl,-rpath -Wl,LIBDIR' linker flag
have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.

make[4]: Entering directory '/home/pi/opus/doc'
make[5]: Entering directory '/home/pi/opus/doc'
make[5]: Nothing to be done for 'install-exec-am'.
make[5]: Nothing to be done for 'install-data-am'.
make[5]: Leaving directory '/home/pi/opus/doc'
make[4]: Leaving directory '/home/pi/opus/doc'
/usr/bin/mkdir -p '/usr/local/share/aclocal'
/usr/bin/install -c -m 644 opus.m4 '/usr/local/share/aclocal'
/usr/bin/mkdir -p '/usr/local/lib/pkgconfig'
/usr/bin/install -c -m 644 opus.pc '/usr/local/lib/pkgconfig'
/usr/bin/mkdir -p '/usr/local/include/opus'
/usr/bin/install -c -m 644 include/opus.h include/opus_multistream.h include/opus_types.h include/opus_defines.h include/opus_projection.h '/usr/local/include/opus'
make[3]: Leaving directory '/home/pi/opus'
make[2]: Leaving directory '/home/pi/opus'
make[1]: Leaving directory '/home/pi/opus'
pi@escapepod:~/opus $ make check
make  check-recursive
make[1]: Entering directory '/home/pi/opus'
make[2]: Entering directory '/home/pi/opus'
make[3]: Entering directory '/home/pi/opus/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/pi/opus/doc'
make  check-TESTS
make[3]: Entering directory '/home/pi/opus'
make[4]: Entering directory '/home/pi/opus'
PASS: celt/tests/test_unit_cwrs32
PASS: celt/tests/test_unit_dft
PASS: celt/tests/test_unit_entropy
PASS: celt/tests/test_unit_laplace
PASS: celt/tests/test_unit_mathops
PASS: celt/tests/test_unit_mdct
PASS: celt/tests/test_unit_rotation
PASS: celt/tests/test_unit_types
PASS: silk/tests/test_unit_LPC_inv_pred_gain
PASS: tests/test_opus_api
PASS: tests/test_opus_decode
PASS: tests/test_opus_encode
PASS: tests/test_opus_padding
PASS: tests/test_opus_projection
= = =
Testsuite summary for opus 1.3.1-158-gbce1f392
= = =
TOTAL: 14
PASS:  14
SKIP:  0
XFAIL: 0
FAIL:  0
XPASS: 0
pi@escapepod:~/opus $
= = =
make[4]: Leaving directory '/home/pi/opus'
make[3]: Leaving directory '/home/pi/opus'
make[2]: Leaving directory '/home/pi/opus'
make[1]: Leaving directory '/home/pi/opus'
pi@escapepod:~/opus $

ohh yes..
I didn't mention the opus bug before.. the opus linker in the wire package is faulty.. I built opus from source.. simple and fast, smooth build (this is the best alternative).. but @kercre123    should provide the opportunity to refer to the opus built on the server..
Log:
... ... ...
pi@escapepod:~$ cd .../opus
pi@escapepod:~/opus $ ./autogen.sh
Updating build configuration files, please wait....
libtoolize: putting auxiliary files in '.'.
libtoolize: linking file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: linking file 'm4/libtool.m4'
libtoolize: linking file 'm4/ltoptions.m4'
libtoolize: linking file 'm4/ltsugar.m4'
libtoolize: linking file 'm4/ltversion.m4'
libtoolize: linking file 'm4/lt~obsolete.m4'
configure.ac:38: installing './compile'
configure.ac:36: installing './config.guess'
configure.ac:36: installing './config.sub'
configure.ac:33: installing './install-sh'
configure.ac:33: installing './missing'
Makefile.am:347: warning: '%'-style pattern rules are a GNU make extension
Makefile.am:350: warning: '%'-style pattern rules are a GNU make extension
Makefile.am: installing './INSTALL'
Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
pi@escapepod:~/opus $ ./configure
checking whether make supports nested variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
... ... ...
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
. . .
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
. . .
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
. . .
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
. . .
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes.
. . .
checking if gcc supports -fvisibility=hidden... yes
checking whether to add -D_FORTIFY_SOURCE=2 to CFLAGS... yes
checking if gcc supports -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes... yes
checking for lrintf... yes
checking for lrint... yes
checking for __malloc_hook... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating opus.pc
config.status: creating opus-uninstalled.pc
config.status: creating celt/arm/armopts.s
config.status: creating doc/Makefile
config.status: creating doc/Doxyfile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure:

opus 1.3.1-158-gbce1f392:  Automatic configuration OK.
Compiler support:

  C99 var arrays: ................ yes
  C99 lrintf: .................... yes
  Use alloca: .................... no (using var arrays)

General configuration:

  Floating point support: ........ yes
  ...
  External Assembly Optimizations:
  Intrinsics Optimizations: ...... ARM (NEON) (NEON Aarch64)
  ...
  Hardening: ..................... yes
  ...
  API documentation: ............. yes
  Extra programs: ................ yes

Type "make; make install" to compile and install
Type "make check" to run the test suite
pi@escapepod:~/opus $ make
make  all-recursive
make[1]: Entering directory '/home/pi/opus'
make[2]: Entering directory '/home/pi/opus'
CC       celt/tests/test_unit_cwrs32.o
CCLD     celt/tests/test_unit_cwrs32
CC       celt/tests/test_unit_dft.o
CC       celt/bands.lo
CC       celt/celt.lo
CC       celt/celt_encoder.lo
CC       celt/celt_decoder.lo
. . .
CC       silk/float/pitch_analysis_core_FLP.lo
CC       silk/float/scale_copy_vector_FLP.lo
CC       silk/float/scale_vector_FLP.lo
CC       silk/float/schur_FLP.lo
CC       silk/float/sort_FLP.lo
CC       silk/arm/biquad_alt_neon_intr.lo
CC       silk/arm/LPC_inv_pred_gain_neon_intr.lo
CC       silk/arm/NSQ_del_dec_neon_intr.lo
silk/arm/NSQ_del_dec_neon_intr.c: In function ‘silk_NSQ_del_dec_neon’:
silk/arm/NSQ_del_dec_neon_intr.c:422:55: warning: iteration 80 invokes undefined behavior [-Waggressive-loop-optimizations]
. . .
CC       silk/arm/NSQ_neon.lo
CC       src/opus.lo
CC       src/opus_decoder.lo
CC       src/opus_encoder.lo
CC       src/opus_multistream.lo
CC       src/opus_multistream_encoder.lo
CC       src/opus_multistream_decoder.lo
CC       src/repacketizer.lo
. . .
CC       doc/trivial_example.o
CCLD     trivial_example
make[3]: Entering directory '/home/pi/opus/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/pi/opus/doc'
make[2]: Leaving directory '/home/pi/opus'
make[1]: Leaving directory '/home/pi/opus'
pi@escapepod:~/opus $ sudo make install
[sudo] password for pi:
make  install-recursive
make[1]: Entering directory '/home/pi/opus'
make[2]: Entering directory '/home/pi/opus'
make[3]: Entering directory '/home/pi/opus/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/pi/opus/doc'
make[3]: Entering directory '/home/pi/opus'
/usr/bin/mkdir -p '/usr/local/lib'
/bin/bash ./libtool   --mode=install /usr/bin/install -c   libopus.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libopus.so.0.8.0 /usr/local/lib/libopus.so.0.8.0
libtool: install: (cd /usr/local/lib && { ln -s -f libopus.so.0.8.0 libopus.so.0 || { rm -f libopus.so.0 && ln -s libopus.so.0.8.0 libopus.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libopus.so.0.8.0 libopus.so || { rm -f libopus.so && ln -s libopus.so.0.8.0 libopus.so; }; })
libtool: install: /usr/bin/install -c .libs/libopus.lai /usr/local/lib/libopus.la
libtool: install: /usr/bin/install -c .libs/libopus.a /usr/local/lib/libopus.a
libtool: install: chmod 644 /usr/local/lib/libopus.a
libtool: install: ranlib /usr/local/lib/libopus.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib

Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:

add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
use the '-Wl,-rpath -Wl,LIBDIR' linker flag
have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.

make[4]: Entering directory '/home/pi/opus/doc'
make[5]: Entering directory '/home/pi/opus/doc'
make[5]: Nothing to be done for 'install-exec-am'.
make[5]: Nothing to be done for 'install-data-am'.
make[5]: Leaving directory '/home/pi/opus/doc'
make[4]: Leaving directory '/home/pi/opus/doc'
/usr/bin/mkdir -p '/usr/local/share/aclocal'
/usr/bin/install -c -m 644 opus.m4 '/usr/local/share/aclocal'
/usr/bin/mkdir -p '/usr/local/lib/pkgconfig'
/usr/bin/install -c -m 644 opus.pc '/usr/local/lib/pkgconfig'
/usr/bin/mkdir -p '/usr/local/include/opus'
/usr/bin/install -c -m 644 include/opus.h include/opus_multistream.h include/opus_types.h include/opus_defines.h include/opus_projection.h '/usr/local/include/opus'
make[3]: Leaving directory '/home/pi/opus'
make[2]: Leaving directory '/home/pi/opus'
make[1]: Leaving directory '/home/pi/opus'
pi@escapepod:~/opus $ make check
make  check-recursive
make[1]: Entering directory '/home/pi/opus'
make[2]: Entering directory '/home/pi/opus'
make[3]: Entering directory '/home/pi/opus/doc'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/pi/opus/doc'
make  check-TESTS
make[3]: Entering directory '/home/pi/opus'
make[4]: Entering directory '/home/pi/opus'
PASS: celt/tests/test_unit_cwrs32
PASS: celt/tests/test_unit_dft
PASS: celt/tests/test_unit_entropy
PASS: celt/tests/test_unit_laplace
PASS: celt/tests/test_unit_mathops
PASS: celt/tests/test_unit_mdct
PASS: celt/tests/test_unit_rotation
PASS: celt/tests/test_unit_types
PASS: silk/tests/test_unit_LPC_inv_pred_gain
PASS: tests/test_opus_api
PASS: tests/test_opus_decode
PASS: tests/test_opus_encode
PASS: tests/test_opus_padding
PASS: tests/test_opus_projection
= = =
Testsuite summary for opus 1.3.1-158-gbce1f392
= = =
TOTAL: 14
PASS:  14
SKIP:  0
XFAIL: 0
FAIL:  0
XPASS: 0
pi@escapepod:~/opus $
= = =
make[4]: Leaving directory '/home/pi/opus'
make[3]: Leaving directory '/home/pi/opus'
make[2]: Leaving directory '/home/pi/opus'
make[1]: Leaving directory '/home/pi/opus'
pi@escapepod:~/opus $

Good afternoon ,
First of all I would like to thank you all your effort with this project. It is awesome.
After all of it , I am having a little issue with it and I would like to know if you could help me. I am trying to install wire-pod in a linux mint laptop. I run the wire-pod setup.sh and I got problems launching the chipper server. I add all the command line information :
sudo ./setup.sh Debian-based Linux confirmed. amd64 architecture confirmed. AVX support confirmed. Checks have passed!
What would you like to do? 1: Full Setup (recommended) (builds chipper, gets STT stuff, generates certs, creates source.sh file, and creates server_config.json for your bot 2: Just build vic-cloud 3: Just build chipper 4: Just get STT assets 5: Just generate certs 6: Create wire-pod config file (change/add API keys) (NOTE: You can just press enter without entering a number to select the default, recommended option)
Enter a number (1): 4
Which speech-to-text service would you like to use? 1: Coqui (local, no usage collection, less accurate, a little slower) 2: Picovoice Leopard (local, usage collected, accurate, account signup required) 3: VOSK (local, accurate, multilanguage, fast)
Enter a number (3):
Which STT language would you like to use? 1: English (US) 2: Italian (IT)
Enter a number (1): 1
sudo ./chipper/start.sh pkg-config --cflags -- opus opus opus opus opusfile opusfile Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opusfile was not found in the pkg-config search path. Perhaps you should add the directory containing opusfile.pc' to the PKG_CONFIG_PATH environment variable No package 'opusfile' found Package opusfile was not found in the pkg-config search path. Perhaps you should add the directory containing opusfile.pc' to the PKG_CONFIG_PATH environment variable No package 'opusfile' found pkg-config: exit status 1 github.com/alphacep/vosk-api/go /root/go/pkg/mod/github.com/alphacep/vosk-api/go@v0.3.43/vosk.go:6:11: fatal error: vosk_api.h: No such file or directory 6 | // #include <vosk_api.h> | ^~~~~~~~~~~~ compilation terminated.

It looks like Opus is not installed, and it can be installed if you choose the 1st option in setup.sh. It seems you only chose the 4th option.

@EchoInCloud Please don't paste the entire output of compile commands. Either don't include it at all or use pastebin links.

@kercre123  Okay.. but it would be good to integrate the solution I wrote with an "if"..

@kercre123 Okay.. but it would be good to integrate the solution I wrote with an "if"..

I would like to see more evidence of broken libopus before integrating a build for it in setup.sh. The actual solution for this specific issue seems to be a lot more simple.

Good afternoon ,
First of all I would like to thank you all your effort with this project. It is awesome.
After all of it , I am having a little issue with it and I would like to know if you could help me. I am trying to install wire-pod in a linux mint laptop. I run the wire-pod setup.sh and I got problems launching the chipper server. I add all the command line information :
sudo ./setup.sh Debian-based Linux confirmed. amd64 architecture confirmed. AVX support confirmed. Checks have passed!
What would you like to do? 1: Full Setup (recommended) (builds chipper, gets STT stuff, generates certs, creates source.sh file, and creates server_config.json for your bot 2: Just build vic-cloud 3: Just build chipper 4: Just get STT assets 5: Just generate certs 6: Create wire-pod config file (change/add API keys) (NOTE: You can just press enter without entering a number to select the default, recommended option)
Enter a number (1): 4
Which speech-to-text service would you like to use? 1: Coqui (local, no usage collection, less accurate, a little slower) 2: Picovoice Leopard (local, usage collected, accurate, account signup required) 3: VOSK (local, accurate, multilanguage, fast)
Enter a number (3):
Which STT language would you like to use? 1: English (US) 2: Italian (IT)
Enter a number (1): 1
sudo ./chipper/start.sh pkg-config --cflags -- opus opus opus opus opusfile opusfile Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opus was not found in the pkg-config search path. Perhaps you should add the directory containing opus.pc' to the PKG_CONFIG_PATH environment variable No package 'opus' found Package opusfile was not found in the pkg-config search path. Perhaps you should add the directory containing opusfile.pc' to the PKG_CONFIG_PATH environment variable No package 'opusfile' found Package opusfile was not found in the pkg-config search path. Perhaps you should add the directory containing opusfile.pc' to the PKG_CONFIG_PATH environment variable No package 'opusfile' found pkg-config: exit status 1 github.com/alphacep/vosk-api/go /root/go/pkg/mod/github.com/alphacep/vosk-api/go@v0.3.43/vosk.go:6:11: fatal error: vosk_api.h: No such file or directory 6 | // #include <vosk_api.h> | ^~~~~~~~~~~~ compilation terminated.

It looks like Opus is not installed, and it can be installed if you choose the 1st option in setup.sh. It seems you only chose the 4th option.

I have already used the first option and It looks like all the files has been installed
sudo ./setup.sh
Debian-based Linux confirmed.
amd64 architecture confirmed.
AVX support confirmed.
Checks have passed!
What would you like to do?
1: Full Setup (recommended) (builds chipper, gets STT stuff, generates certs, creates source.sh file, and creates server_config.json for your bot
2: Just build vic-cloud
3: Just build chipper
4: Just get STT assets
5: Just generate certs
6: Create wire-pod config file (change/add API keys)
(NOTE: You can just press enter without entering a number to select the default, recommended option)
Enter a number (1): 1
Required packages already gotten.
Which speech-to-text service would you like to use?
1: Coqui (local, no usage collection, less accurate, a little slower)
2: Picovoice Leopard (local, usage collected, accurate, account signup required)
3: VOSK (local, accurate, multilanguage, fast)
Enter a number (3):

@kercre123oké.. de jó lenne az általam írt megoldást integrálni egy "ha"..

Szeretnék több bizonyítékot látni a törött libopusra, mielőtt egy buildet integrálnék a setup.sh-ba. A konkrét probléma megoldása sokkal egyszerűbbnek tűnik.

it is only necessary to check the presence of opus in home/user.. if it is found, build with it..
I deleted the logo.. with the opus downloaded by wire, it didn't build on my Raspberry os64 even if the necessary dev files were installed.. these files are also needed to build the opus from source, which was successfully built.. (you deleted it)

with "pkg-config libopus-dev libopusfile-dev"
build.sh --> cloud/main.go
. . .
command-line-arguments
/usr/local/go/pkg/tool/linux_arm64/link: internal linking requested but external linking required: some packages could not be built to support internal linking ([gopkg.in/hraban/opus.v2])
make: *** [Makefile:13: vic-cloud] Error 2

with "pkg-config libopus-dev libopusfile-dev"
build.sh --> . . . -o build/vic-cloud cloud/main.go command-line-arguments /usr/local/go/pkg/tool/linux_arm64/link: internal linking requested but external linking required: some packages could not be built to support internal linking ([gopkg.in/hraban/opus.v2]) make: *** [Makefile:13: vic-cloud] Error 2

The simple "sudo apt-get install -y libopus-dev etc.." This was enough for me.
I have a last error
github.com/alphacep/vosk-api/go
/root/go/pkg/mod/github.com/alphacep/vosk-api/go@v0.3.43/vosk.go:6:11: fatal error: vosk_api.h: No such file or directory
6 | // #include <vosk_api.h>
|           ^~~~~
Any ideas?

Try running the following commands:
cd ~/wire-pod
sudo rm -rf vosk
sudo rm -f vector-cloud/packagesGotten

Then run setup.sh again with the 1st option and send the output here (preferably in a pastebin)

I have already made it and the output si https://pastebin.com/TRHWX0K9
I have never used pastebin before so please tell me if this link is was you were expecting.
Thanks.

Looks like wget is missing. Run: sudo apt install -y wget then re-run the commands I put in my last response, then try setup.sh with the 1st option again.

@correderadiego
I'm glad I could help with this..

I have already made it and the output si https://pastebin.com/TRHWX0K9
I have never used pastebin before so please tell me if this link is was you were expecting.
Thanks.

Is your device's date and time set correctly? It is trying to download assets from the VOSK site but it can't verify the cert. I'll make a quick update to setup.sh which allows it to download assets insecurely.

I have already made it and the output si https://pastebin.com/TRHWX0K9
I have never used pastebin before so please tell me if this link is was you were expecting.
Thanks.

Is your device's date and time set correctly? It is trying to download assets from the VOSK site but it can't verify the cert. I'll make a quick update to setup.sh which allows it to download assets insecurely.

Yes it is :)

Just pushed a fix, run the following:
cd ~/wire-pod
sudo ./update.sh
sudo rm -rf vosk
sudo rm -f vector-cloud/packagesGotten

Then try setup.sh again

Solved, thank you so much!!!


exefs not working in atmosphere

Dear,
I play pokemon bd on version 1.1.1 but when i put the exefs file in folder of pokemon it wont randomize my starter pokemon.
it shows the randomized name but when i trow the pokeball i get a normal starter.
Thanks in advance.

Try the new update, version 2.7

Sorry that was not the solution, still have the same problem.

can you send a picture of the exefs folder

@Ai0796 Hey there, am having the same issue as this person. SP, 1.1.1, names randomized but Pokémon aren't randomized. Here's the screenshots:
The main folder in atmosphere/contents/:

The exefs folder of the title:

Hope that helps in diagnosing the issue!

@Ai0796 @Killertube Figured it out. To get starter randomization to work on Atmosphere, instead of putting the exefs folder in atmosphere/contents/<title>/, rename the folder into something you'll recognize later (I renamed the folder to pokemon_sp_randomize_starters and place it in atmosphere/exefs_patches/.
If everything goes right, your exefs_patches folder should look like this:

And your contents folder should look like this:

Afterwards, you'll have randomized starters in BDSP on Atmosphere!

sorry for the late response i just use a save modifier for my problem but i will try it on a new account thanks

https://github.com/Ai0796/BDSP-Randomizers/releases/tag/v2.9.0 Try the new release, it should contain all the files necessary for atmosphere

https://github.com/Ai0796/BDSP-Randomizers/releases/tag/v2.9.0 Try the new release, it should contain all the files necessary for atmosphere

Works fine for me. Deleted all other files to test, copied the generated atmosphere to my SD root, and all good!


feat(cli): exit with error if command is not found SHELL-1570

:tada: This PR is included in version 2.1.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Useragent Change Request

@JE-Chen Please Give me UserAgent to replace for my repo github.com/Niansuh/Bingo

"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36 Edg/<IP_ADDRESS>"

Well, you can find user-agents and x-ms-useragent in the developer tools (F12).
If you want to find mobile or other device user-agents and x-ms-useragent, you can use the Chrome device option.

Nah, you can find someone to get user-agents and x-ms-useragent, but not me.

i found user agent Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Mobile Safari/537.36 Edg/<IP_ADDRESS>
do you know how to get x-ms-useragent please

on the cookie too, under user-agents.

I’m focused on Copilot, so I don’t want to access other models. But thank you for the information.

I think we are no longer discussing the issue, so I will close it. I prefer to provide backend functionality rather than a full web page, but I’ll ensure it works well


Azure China feature issues

Hi team,
I can see that you add many words like "Available in China cloud, but only for custom policies." recently. I found that some issues about it.

After clicking "Phone sign-up and sign-in", there are user flow operations only, no content about "custom policies" in the doc.
Can you help to confirm the availability of "Phone sign-up and sign-in" in Azure China? If available, can you add content about "custom policies" in the doc?

We need to create "Azure front door" service when using the following "custom domains" feature. But it's not supported currently in Azure China. Can you check the availability of "custom domains" in Azure China and update your doc?

I can see the feature about ""javascript" in China portal.  This is inconsistent with your description. Can you check and confirm it?

I can see the feature about "Password complexity" in China portal. This is inconsistent with your description. Can you check and confirm it?

Regards
Alex

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: a067ceb2-fe69-6b56-eafa-ffb7ebf1968e
Version Independent ID: 6fd66d79-08fa-b5ea-daf0-d92073269b64
Content: Developer notes for user flows and custom policies - Azure AD B2C
Content Source: articles/active-directory-b2c/custom-policy-developer-notes.md
Service: active-directory
Sub-service: b2c
GitHub Login: @kengaderdus
Microsoft Alias: kengaderdus

@alexchen2016
Thanks for your feedback! We will investigate and update as appropriate.

@alexchen2016
I'm going to assign this to the document author so they can take a look at it accordingly.
@kengaderdus
Can you please check and add your comments on this doc update request as applicable.

@kengaderdus, Any update?

#reassign: @garrodonnell

@garrodonnell, Any reply? Thanks.

@SaibabaBalapur-MSFT，no reply from @garrodonnell, on month passed.

@SaibabaBalapur-MSFT, @garrodonnell, Any update?

We've added this issue to our documentation backlog work item for internal tracking and prioritization. We'll update this issue as documentation updates are published. Thanks again for your feedback. #please-close


Code | Symbol Pattern 91

Hi, I would like to work on this issue. Could you please assign it to me?


suggestionActions doesn't get triggered

$('#update_tag').amsifySuggestags({
    suggestionsAction : {
		url: '/api/get_tags'
	}
});

doesn't work while
$('#update_tag').amsifySuggestags({
	suggestions: ['India', 'Pakistan', 'Nepal', 'UAE', 'Iran', 'Bangladesh']
});

does work.
in the first example, nothing gets called at all

I see the issue now; it's trying to do string match among the suggestions and it'll break if it isn't ASCII
it works with ascii that actually matches. Is there any way to force it to display all suggestions?

I checked with Non-ASCII Characters also with suggestions and it worked fine. Can you please mentioned the example you tried?

@kamado-tanjiro-usa   Closing this now. You can re open this if it still does not work for you.


Changes to ModelMetadata provided by a ModelMetadataDetailsProvider are sometimes lost if the model property is a Nullable

In one of my projects I have a registered IDisplayMetadataProvider that examines the attributes on a model's properties and sets values in ModelMetadata.AdditionalValues as necessary. I find that if:

the model property in question is a Nullable<T> AND
the default value of the property is a value other than null

then the customizations to ModelMetadata are lost by the time the view is rendered.
A minimal project to reproduce the issue is here: https://github.com/emisaacson/MetadataProviderExample
I find with this change I get the expected result (AdditionalValues is populated when rendering the view): https://github.com/aspnet/Mvc/compare/dev...emisaacson:vd-type-checking

f10a071


New EAGLE "package" for 1x6 pin header that adds wire strain relief holes

For the smartsensor board.

Two fixes!

(Package)  Extend the tKeepout and bKeepout layers to also include the strain relief holes.  (At present it only encompasses the header pins.)
(Device)  Set the prefix to "JP" (to be consistent with the other header pin devices).

Done.


Add FSDP2 support for low-bit optimizers

This PR turns out to be a larger change than expected.
Background
In my previous implementation of low-bit optimizers, I only compile the optim step for 1 param weight. Let's call this single_param_adam(). Since weights in a model can have different shapes and sizes, to avoid re-compilation:

I use torch.compile(dynamic=True) to generate dynamic kernel
Flatten weight and grad with .view(-1) before passing them to the compiled optim step, since tensors with different rank/ndim will be re-compiled too, even for dynamic kernel.

Support FSDP and DTensor
Everything was fine for normal tensors. To support FSDP, the following needs to be done

As param and grad are now DTensor, optim state should also be DTensor.  (NOTE: this is more of a guideline than a strict requirement. The ideal state is that the optimizer shouldn't need to "know" that param and grad are DTensor) (NOTE 2: DTensor is also implemented as tensor subclass).
We can torch.compile DTensor with the local_tensor being our quantized subclass.

I soon discovered that torch.compile cannot generate dynamic kernel for sharded dimension (#490 for a small reproduction snippet) + using .view(-1) on DTensor before torch.compile give strange errors. Brian has a more detailed analysis in this comment.
Following Brian's advice, I switched to compiling static kernel for the all-params optim step instead. Briefly,
# previous impl compile this w/ dynamic=True
def single_param_adam(p, ...):
    ...

# new impl compile this w/o dynamic i.e. static compile
def param_groups_adam(param_groups, ...):
    for param_group in param_groups:
        for p in param_group:
            single_param_adam(p, ...)

Since we don't expect param_groups to change during the course of training (though technically possible), static compile is all good. Works great with DTensor. The added bonus is that 8-bit optim is now much faster, presumably thanks to static specialization + reduced overhead from repeated single-param optim step calls.

Optim
Memory usage
Time

PyTorch FP32
12.94
8m 18s

bnb 8-bit
8.32 GB
6m 50s

ao 8-bit (old)
8.32 GB
9m 04s

ao 8-bit (new, this PR)
8.32 GB
6m 44s

lpmm 4-bit
7.72 GB
5m 59s

ao 4-bit (old)
7.72 GB
7m 00s

ao 4-bit (new, this PR)
12.62 GB
6m 50s

Probem with 4-bit opim
Wait, but 4-bit optim memory usage explodes 🙁. It's likely due to bit-packing, as only 4-bit optim does that, and torch.compile uses a different fusion pattern when compiling param_groups_adam(). Note that the memory usage is even higher than 8-bit optim and nearly equal to FP32 optim, indicating that some dequantized optim states are materialized in global memory.
To resolve this, I thought of 2 solutions:

Solution 1: Since the speed improvements in this PR is not significant for 4-bit optim (7m -> 6m50s), I can use the old approach (dynamic compile for single_param_adam()) for 4-bit optim. To handle DTensor, I can unwrap it before calling single_param_adam().
Solution 2: Change the bit-packing design. Instead of packing 2 consecutive elements in each optim state ((state[::2] << 4) | state[1::2]), I can pack optim state 1 (exp_avg) and optim state 2 (exp_avg_sq) together ((exp_avg << 4) | exp_avg_sq). This would be easier for torch.compile to fuse ops correctly, but at the expense of (a) requiring a separate implementation for 4-bit optim, and (b) does not use subclass design anymore, as unpacking and re-packing must be explicit to create exp_avg and exp_avg_sq. It also means that it's not so easy to access exp_avg and exp_avg_sq directly anymore.

Optim
Memory usage
Time

ao 4-bit (old - same as solution 1)
7.72 GB
7m 00s

ao 4-bit (this PR, no 4-bit specific solution)
12.62 GB
6m 50s

ao 4-bit (this PR solution 2)
7.74 GB
6m 54s

There is no clear speed advantage between Solution 1 and Solution 2. However, when running FSDP test, Solution 2 is getting this error
Operator aten.__rshift__.Scalar does not have a sharding strategy registered.

which is required by bit-packing and unpacking. This should be an easy fix for PyTorch core (I have opened an issue here https://github.com/pytorch/pytorch/issues/130671).
So overall, there is no advantage for Solution 2. Using Solution 1, once the excessive memory usage bug is fixed, we can simply remove the single_param_adam() call and replace with param_groups_adam(), while keeping the tensor subclass design.
Summary

To support DTensor, switch from "dynamic single-param adam step" to "static all-params adam step". 8-bit Adam is much faster as an unexpected bonus. Increased first optim step time due to compilation.
Keep "dynamic single-param adam step" for 4-bit Adam due to excessive memory usage bug. Unwarp DTensor before calling adam step since DTensor does not work well with dynamic compile.

New benchmark results

Adam impl
max memory (GB)
time taken for 2nd epoch
accuracy

PyTorch
12.94
8m 18s
91.14

bnb 8-bit
8.31
6m 50s
90.67

ao 8-bit
8.31
6m 44s
90.63

ao FP8 E4M3
8.32
6m 35s
90.98

lpmm 4-bit
7.72
5m 59s
89.97

ao 4-bit
7.72
7m 13s
90.05

@weifengpy @awgu @wanchaol, do you know what kind of work needs to be done to support new optimizers with FSDP2? In particular, @gau-nernst has created optimizers for int8, int4 and fp8 with probably more coming soon. They are converging well on single GPU benchmarks see https://github.com/pytorch/ao/tree/main/torchao/prototype/low_bit_optim#benchmarks for more detail but to truly know whether they work we also want to see if they compose with FSDP2
This is particularly relevant for conversations I've been having with @winglian from axolotl and @muellerzr from accelerate

@bdhirsh I followed your suggestion (static compile optim step for all params in a single graph) and it worked out great! Everything works now. I needed to separate out the optim state init step (because it seems like torch.compile() can't produce fullgraph=True when there is Tensor._make_wrapper_subclass()) but it's a reasonable and simple thing to do. End2end training seems to be faster too! Re-running the benchmarks as I'm writing this.
However, there is a small problem: compile time increases. It shouldn't be a big problem for real training, but FSDP test in CI might timeout. The test timeout on my local machine, hope it doesn't in CI. (Even if CI doesn't timeout, it is also slightly not good in a sense that it increases CI time).

I did a quick 1000 step run with Adam4bit on Llama3-8B on c4 dataset on 8xH100s, and Adam4bit seems to be converging well. The memory savings are not that significant though. Looking at the snapshots, it is mainly a memory fragmentation issue.

 torchtitan diff
diff --git a/train.py b/train.py
index b7eee30..3d5a2d0 100644
--- a/train.py
+++ b/train.py
@@ -116,6 +116,11 @@ def build_optimizers(model_parts, job_config: JobConfig):
             optimizer = torch.optim.Adam(model.parameters(), **optimizer_kwargs)
         elif name == "AdamW":
             optimizer = torch.optim.AdamW(model.parameters(), **optimizer_kwargs)
+        elif name == "AdamW4bit":
+            from torchao.prototype import low_bit_optim
+            optimizer_kwargs.pop("fused")
+            optimizer_kwargs.pop("foreach")
+            optimizer = low_bit_optim.AdamW4bit(model.parameters(), **optimizer_kwargs)
         else:
             raise NotImplementedError(f"Optimizer {name} not added.")

 Llama3-8B Config
# torchtitan Config.toml
# NOTE: this toml config is a preset for 64 A100 GPUs.

[job]
dump_folder = "./outputs"
description = "Llama 3 8B training"

[profiling]
enable_profiling = true
save_traces_folder = "profile_trace"
profile_freq = 100

[metrics]
log_freq = 10
enable_tensorboard = true
save_tb_folder = "tb"

[model]
name = "llama3"
flavor = "8B"
norm_type = "compiled_rmsnorm"  # layernorm / np_layernorm / rmsnorm / compiled_rmsnorm / fused_rmsnorm
tokenizer_path = "./torchtitan/datasets/tokenizer/original/tokenizer.model"

[optimizer]
name = "AdamW4bit"
lr = 3e-4

[training]
batch_size = 1
seq_len = 8192
warmup_steps = 200  # lr scheduler warm up
max_norm = 1.0  # grad norm clipping
steps = 1000
data_parallel_degree = -1
tensor_parallel_degree = 1
enable_float8_linear = false
compile = true
dataset = "c4"

[experimental]
pipeline_parallel_degree = 1

[checkpoint]
enable_checkpoint = false
folder = "checkpoint"
interval_type = "steps"
interval = 500
model_weights_only = false
export_dtype = "float32"
async_mode = "disabled" # ["disabled", "async", "async_with_pinned_mem"]

[activation_checkpoint]
mode = 'none'  # ['none', 'selective', 'full']
selective_ac_option = 'op'  # 'int' = ac every positive int layer or 'op', ac based on ops policy

@awgu That looks awesome! Regarding memory fragmentation, do you know how we can improve it? I saw some people using os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True" to improve memory allocation.
Also, have you tried using AdamW8bit? It seems like 8-bit Adam may hit recompile cache size limit in multi-gpu FSDP, though no problem with single GPU, so I think we should investigate this issue more. 4-bit Adam doesn't have this issue because right now we do dynamic compile for single param (instead of static compile for all params) for 4-bit Adam.

Just for more detail, we see that the segment (white rectangles) allocations are pretty similar for AdamW4bit and normal AdamW, just that fewer are actually filled (i.e. have active blocks) for AdamW4bit:

Expandable segments should help. I am hoping PyTorch can come up with a more principled way (I have recently tried to start some discussion around this internally): namely, parameters and optimizer states are persistent through training with fixed/known memory cost, so we can actually preallocate them with 0 fragmentation in theory.
For AdamW8bit, I see an error trace like:

Root Cause (first observed failure):
[0]:
  time      : 2024-07-22_18:59:23
  host      : devgpu011.cco1.facebook.com
  rank      : 6 (local_rank: 6)
  exitcode  : 1 (pid: 594488)
  error_file: /tmp/torchelastic_jbbq8n3h/none_r0u1t1aw/attempt_0/6/error.json
  traceback : Traceback (most recent call last):
    File "/data/users/andgu/pytorch/torch/distributed/elastic/multiprocessing/errors/__init__.py", line 355, in wrapper
      return f(*args, **kwargs)
    File "/data/users/andgu/torchtrain/train.py", line 427, in main
      optimizers.step()
    File "/data/users/andgu/torchtrain/train.py", line 142, in step
      optimizer.step()
    File "/data/users/andgu/pytorch/torch/optim/lr_scheduler.py", line 136, in wrapper
      return func.__get__(opt, opt.__class__)(*args, **kwargs)
    File "/data/users/andgu/pytorch/torch/optim/optimizer.py", line 487, in wrapper
      out = func(*args, **kwargs)
    File "/data/users/andgu/pytorch/torch/utils/_contextlib.py", line 116, in decorate_context
      return func(*args, **kwargs)
    File "/home/andgu/.conda/envs/pytorch-3.10/lib/python3.10/site-packages/torchao-0.3.1-py3.10-linux-x86_64.egg/torchao/prototype/low_bit_optim/adamw.py", line 110, in step
      torch.compile(param_groups_adamw, fullgraph=True)(param_groups)
    File "/data/users/andgu/pytorch/torch/_dynamo/eval_frame.py", line 448, in _fn
      return fn(*args, **kwargs)
    File "/data/users/andgu/pytorch/torch/_dynamo/convert_frame.py", line 1170, in __call__
      return self._torchdynamo_orig_callable(
    File "/data/users/andgu/pytorch/torch/_dynamo/convert_frame.py", line 499, in __call__
      return _compile(
    File "/home/andgu/.conda/envs/pytorch-3.10/lib/python3.10/contextlib.py", line 79, in inner
      return func(*args, **kwds)
    File "/data/users/andgu/pytorch/torch/_dynamo/convert_frame.py", line 877, in _compile
      raise InternalTorchDynamoError(str(e)).with_traceback(
    File "/data/users/andgu/pytorch/torch/_dynamo/convert_frame.py", line 850, in _compile
      guarded_code = compile_inner(code, one_graph, hooks, transform)
    File "/data/users/andgu/pytorch/torch/_dynamo/utils.py", line 246, in time_wrapper
      r = func(*args, **kwargs)
    File "/data/users/andgu/pytorch/torch/_utils_internal.py", line 85, in wrapper_function
      return StrobelightCompileTimeProfiler.profile_compile_time(
    File "/data/users/andgu/pytorch/torch/_strobelight/compile_time_profiler.py", line 129, in profile_compile_time
      return func(*args, **kwargs)
    File "/data/users/andgu/pytorch/torch/_dynamo/convert_frame.py", line 668, in compile_inner
      out_code = transform_code_object(code, transform)
    File "/data/users/andgu/pytorch/torch/_dynamo/bytecode_transformation.py", line 1284, in transform_code_object
      transformations(instructions, code_options)
    File "/data/users/andgu/pytorch/torch/_dynamo/convert_frame.py", line 194, in _fn
      return fn(*args, **kwargs)
    File "/data/users/andgu/pytorch/torch/_dynamo/convert_frame.py", line 610, in transform
      tracer.run()
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 2546, in run
      super().run()
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 910, in run
      while self.step():
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 822, in step
      self.dispatch_table[inst.opcode](self, inst)
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 514, in wrapper
      return inner_fn(self, inst)
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 1489, in CALL_FUNCTION
      self.call_function(fn, args, {})
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 760, in call_function
      self.push(fn.call_function(self, args, kwargs))
    File "/data/users/andgu/pytorch/torch/_dynamo/variables/functions.py", line 300, in call_function
      return super().call_function(tx, args, kwargs)
    File "/data/users/andgu/pytorch/torch/_dynamo/variables/functions.py", line 100, in call_function
      return tx.inline_user_function_return(self, [*self.self_args(), *args], kwargs)
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 766, in inline_user_function_return
      return InliningInstructionTranslator.inline_call(self, fn, args, kwargs)
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 2761, in inline_call
      return cls.inline_call_(parent, func, args, kwargs)
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 2877, in inline_call_
      tracer.run()
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 910, in run
      while self.step():
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 822, in step
      self.dispatch_table[inst.opcode](self, inst)
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 514, in wrapper
      return inner_fn(self, inst)
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 1489, in CALL_FUNCTION
      self.call_function(fn, args, {})
    File "/data/users/andgu/pytorch/torch/_dynamo/symbolic_convert.py", line 760, in call_function
      self.push(fn.call_function(self, args, kwargs))
    File "/data/users/andgu/pytorch/torch/_dynamo/variables/misc.py", line 745, in call_function
      return self.obj.call_method(tx, self.name, args, kwargs)
    File "/data/users/andgu/pytorch/torch/_dynamo/variables/tensor.py", line 507, in call_method
      return wrap_fx_proxy(
    File "/data/users/andgu/pytorch/torch/_dynamo/variables/builder.py", line 1863, in wrap_fx_proxy
      return wrap_fx_proxy_cls(target_cls=TensorVariable, **kwargs)
    File "/data/users/andgu/pytorch/torch/_dynamo/variables/builder.py", line 1950, in wrap_fx_proxy_cls
      example_value = get_fake_value(proxy.node, tx, allow_non_graph_fake=True)
    File "/data/users/andgu/pytorch/torch/_dynamo/utils.py", line 1848, in get_fake_value
      ret_val = wrap_fake_exception(
    File "/data/users/andgu/pytorch/torch/_dynamo/utils.py", line 1340, in wrap_fake_exception
      return fn()
    File "/data/users/andgu/pytorch/torch/_dynamo/utils.py", line 1849, in <lambda>
      lambda: run_node(tx.output, node, args, kwargs, nnmodule)
    File "/data/users/andgu/pytorch/torch/_dynamo/utils.py", line 1984, in run_node
      raise RuntimeError(make_error_message(e)).with_traceback(
    File "/data/users/andgu/pytorch/torch/_dynamo/utils.py", line 1962, in make_error_message
      return f"Failed running {op} {node.target}(*{args}, **{kwargs}):\n" + str(e)
    File "/data/users/andgu/pytorch/torch/distributed/_tensor/api.py", line 263, in __repr__
      return f"DTensor(local_tensor={self._local_tensor}, device_mesh={self._spec.mesh}, placements={self._spec.placements})"
    File "/data/users/andgu/pytorch/torch/_tensor.py", line 994, in __format__
      return object.__format__(self, format_spec)
    File "/home/andgu/.conda/envs/pytorch-3.10/lib/python3.10/site-packages/torchao-0.3.1-py3.10-linux-x86_64.egg/torchao/prototype/low_bit_optim/subclass_8bit.py", line 61, in __repr__
      f"{self.__class__.__name__}(signed={self.signed}, block_size={self.block_size}, "
    File "/home/andgu/.conda/envs/pytorch-3.10/lib/python3.10/site-packages/torchao-0.3.1-py3.10-linux-x86_64.egg/torchao/prototype/low_bit_optim/subclass_8bit.py", line 39, in block_size
      return self.codes.numel() // self.scale.numel()
  torch._dynamo.exc.InternalTorchDynamoError: integer division or modulo by zero

  from user code:
     File "/home/andgu/.conda/envs/pytorch-3.10/lib/python3.10/site-packages/torchao-0.3.1-py3.10-linux-x86_64.egg/torchao/prototype/low_bit_optim/adamw.py", line 117, in param_groups_adamw
      single_param_adamw(p, grad, step, exp_avg, exp_avg_sq, max_exp_avg_sq, lr, beta1, beta2, weight_decay, eps)
    File "/home/andgu/.conda/envs/pytorch-3.10/lib/python3.10/site-packages/torchao-0.3.1-py3.10-linux-x86_64.egg/torchao/prototype/low_bit_optim/adamw.py", line 140, in single_param_adamw
      new_exp_avg = exp_avg.lerp(grad, 1 - beta1)

  Set TORCH_LOGS="+dynamo" and TORCHDYNAMO_VERBOSE=1 for more information

  You can suppress this exception and fall back to eager by setting:
      import torch._dynamo
      torch._dynamo.config.suppress_errors = True

The AdamW8bit error is indeed strange. I think something fails, then torch.compiler tries to print the tensor make_error_message(), which trigger another error when calling OptimState8bit.__repr__(). Will be hard for me to debug it as I don't have access to multi-GPU cluster.
Anyway, it's probably a good idea to make block_size a fixed attribute (as extra metadata) instead of calculating it on the fly as right now. I did see some weird errors with torch.compile when doing this in the past.
https://github.com/pytorch/ao/blob/5787e9e73f6493765052e3638bd0ae9103496bae/torchao/prototype/low_bit_optim/subclass_8bit.py#L37-L39

Thinking about it again, the memory fragmentation might be partly because I create a normal DTensor and then swap the local tensor with its quantized version. A better way would be to create a quantized local tensor directly and wrap it with DTensor (either by calling DTensor.from_local() or calling DTensor constructor directly?)
https://github.com/pytorch/ao/blob/5787e9e73f6493765052e3638bd0ae9103496bae/torchao/prototype/low_bit_optim/adamw.py#L41-L47

I would need to step through the memory snapshot more systematically, but I am not sure if that is the issue because the non-quantized local tensor should be freed immediately after constructing the quantized local tensor and that memory can be reused for the next parameter's optimizer states (or next optimizer state for a given parameter). As long as you are not constructing local tensors for all parameters at once and then quantizing all of them, this should not be an issue in my understanding.

Yup I won't say it's the only cause for memory fragmentation in this case. Python garbage collector and PyTorch memory allocator can work in mysterious ways I suppose, not an expert in this.
But I think it's a good idea to create quantized local tensor directly anyway. I did what I did above mainly because I couldn't get DTensor.from_local() to work (it required to implement quite a lot of extra ops). Is calling DTensor constructor ok? i.e. DTensor(quantized_local_tensor, spec, requires_grad=False). I saw that the constructor arguments changed from 2.3 to 2.4 (device_mesh, placements now become DTensorSpec) -> perhaps unstable/private API? So was unsure if calling DTensor constructor directly ok.

I think calling DTensor constructor directly is not recommended (@wanchaol does not expect anyone to do this 😃 ). The from_local() issues might be mitigated now after https://github.com/pytorch/pytorch/pull/130289. With run_check=False, I think you should not need to implement any extra ops 🤔 .

Thanks, I will try!

@gau-nernst  cannot run low bit optim with FSDP2

[rank7]:   File "<frozen runpy>", line 198, in _run_module_as_main
[rank7]:   File "<frozen runpy>", line 88, in _run_code
[rank7]:   File "/nfs/asahni/multi_parallel/oct_28/training/scripts/train.py", line 226, in <module>
[rank7]:     main()
[rank7]:   File "/nfs/asahni/multi_parallel/oct_28/training/scripts/train.py", line 218, in main
[rank7]:     trainer.fit(
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/trainer/trainer.py", line 538, in fit
[rank7]:     call._call_and_handle_interrupt(
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/trainer/call.py", line 47, in _call_and_handle_interrupt
[rank7]:     return trainer_fn(*args, **kwargs)
[rank7]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/trainer/trainer.py", line 574, in _fit_impl
[rank7]:     self._run(model, ckpt_path=ckpt_path)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/trainer/trainer.py", line 981, in _run
[rank7]:     results = self._run_stage()
[rank7]:               ^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/trainer/trainer.py", line 1025, in _run_stage
[rank7]:     self.fit_loop.run()
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/loops/fit_loop.py", line 205, in run
[rank7]:     self.advance()
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/loops/fit_loop.py", line 363, in advance
[rank7]:     self.epoch_loop.run(self._data_fetcher)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/loops/training_epoch_loop.py", line 140, in run
[rank7]:     self.advance(data_fetcher)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/loops/training_epoch_loop.py", line 269, in advance
[rank7]:     call._call_callback_hooks(trainer, "on_train_batch_end", batch_output, batch, batch_idx)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/trainer/call.py", line 218, in _call_callback_hooks
[rank7]:     fn(trainer, trainer.lightning_module, *args, **kwargs)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/callbacks/model_checkpoint.py", line 316, in on_train_batch_end
[rank7]:     self._save_topk_checkpoint(trainer, monitor_candidates)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/callbacks/model_checkpoint.py", line 387, in _save_topk_checkpoint
[rank7]:     self._save_none_monitor_checkpoint(trainer, monitor_candidates)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/callbacks/model_checkpoint.py", line 715, in _save_none_monitor_checkpoint
[rank7]:     self._save_checkpoint(trainer, filepath)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/callbacks/model_checkpoint.py", line 390, in _save_checkpoint
[rank7]:     trainer.save_checkpoint(filepath, self.save_weights_only)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/trainer/trainer.py", line 1365, in save_checkpoint
[rank7]:     self.strategy.save_checkpoint(checkpoint, filepath, storage_options=storage_options)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/pytorch/strategies/model_parallel.py", line 321, in save_checkpoint
[rank7]:     _distributed_checkpoint_save(converted_state, path)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/lightning/fabric/strategies/fsdp.py", line 867, in _distributed_checkpoint_save
[rank7]:     save(converted_state, checkpoint_id=path)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/logger.py", line 83, in wrapper
[rank7]:     result = func(*args, **kwargs)
[rank7]:              ^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/utils.py", line 429, in inner_func
[rank7]:     return func(*args, **kwargs)
[rank7]:            ^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/state_dict_saver.py", line 152, in save
[rank7]:     return _save_state_dict(
[rank7]:            ^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/state_dict_saver.py", line 316, in _save_state_dict
[rank7]:     central_plan: SavePlan = distW.reduce_scatter("plan", local_step, global_step)
[rank7]:                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/utils.py", line 191, in reduce_scatter
[rank7]:     raise result
[rank7]: torch.distributed.checkpoint.api.CheckpointException: CheckpointException ranks:dict_keys([0, 1, 2, 3, 4, 5, 6, 7])
[rank7]: Traceback (most recent call last): (RANK 0)
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/utils.py", line 164, in reduce_scatter
[rank7]:     local_data = map_fun()
[rank7]:                  ^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/logger.py", line 83, in wrapper
[rank7]:     result = func(*args, **kwargs)
[rank7]:              ^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/state_dict_saver.py", line 303, in local_step
[rank7]:     local_plan = planner.create_local_plan()
[rank7]:                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/default_planner.py", line 101, in create_local_plan
[rank7]:     plan = create_default_local_save_plan(self.state_dict, self.is_coordinator)
[rank7]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/default_planner.py", line 399, in create_default_local_save_plan
[rank7]:     requests += _create_write_items(fqn, obj)
[rank7]:                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/planner_helpers.py", line 222, in _create_write_items
[rank7]:     return object.__create_write_items__(fqn, object)
[rank7]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/tensor/_api.py", line 598, in __create_write_items__
[rank7]:     return [_create_write_items_for_dtensor(fqn, object)]
[rank7]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/planner_helpers.py", line 86, in _create_write_items_for_dtensor
[rank7]:     properties=TensorProperties.create_from_tensor(tensor.to_local()),
[rank7]:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torch/distributed/checkpoint/metadata.py", line 108, in create_from_tensor
[rank7]:     pin_memory=tensor.is_pinned(),
[rank7]:                ^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torchao/utils.py", line 377, in _dispatch__torch_function__
[rank7]:     return func(*args, **kwargs)
[rank7]:            ^^^^^^^^^^^^^^^^^^^^^
[rank7]:   File "/opt/conda/lib/python3.11/site-packages/torchao/utils.py", line 393, in _dispatch__torch_dispatch__
[rank7]:     raise NotImplementedError(f"{cls.__name__} dispatch: attempting to run unimplemented operator/function: {func=}, {types=}, {arg_types=}, {kwarg_types=}")
[rank7]: NotImplementedError: OptimState8bit dispatch: attempting to run unimplemented operator/function: func=<OpOverload(op='aten.is_pinned', overload='default')>, types=(<class 'torchao.prototype.low_bit_optim.subclass_8bit.OptimState8bit'>,), arg_types=(<class 'torchao.prototype.low_bit_optim.subclass_8bit.OptimState8bit'>,), kwarg_types={}


code release?

Hi @zhang-can , when you can release the code, extracted feature and pre-train models?

Hi @mitming, I'm going to release the code in a week. Thanks for your patience and interest in our work.

Hi @mitming, we have released our code and models. Have fun! If you have any questions, feel free to open a new issue.