Compare commits

...
Author SHA1 Message Date
Michael Chung 8a5e4538a0 All good! going to merge now. 2023-10-25 11:32:22 -04:00
Michael Chung 3f70ca72dd Dev environment
Fixed various code problems, going to merge soon.
2023-10-24 13:09:36 -04:00
Michael Chung d8a4b6c735 Get everything to build again we have to merge soon. 2023-10-24 11:26:12 -04:00
Michael Chung 48ed6d118c Merge issues with VSCode? this is strange .... 2023-10-24 11:15:31 -04:00
Michael Chung 4c3ac3edda Merge branch 'master' into feature/enqueue_tts_request 2023-10-24 10:20:37 -04:00
Brandon Thomas dae5764658 codegen queries 2023-10-24 05:40:33 -04:00
Brandon Thomas 98547df063 propagate avt from jobs to media_files 2023-10-24 05:12:42 -04:00
Brandon Thomas 9c856235fc write avt cookie token to inference jobs 2023-10-24 05:04:00 -04:00
Brandon Thomas 205f6de1b2 fix lint failures 2023-10-24 04:20:38 -04:00
Brandon Thomas a9fa45575e additional comment 2023-10-24 04:07:02 -04:00
Brandon Thomas 1b77974a0e change user token prefix 2023-10-24 04:06:33 -04:00
Brandon Thomas 724ae2570e How did this ever work!? 2023-10-24 03:56:38 -04:00
Brandon Thomas dc7b5b7e60 Merge pull request #120 from storytold/echelon-terminate-job-endpoint
endpoint to terminate jobs
2023-10-24 02:41:03 -04:00
Brandon Thomas 3259433717 endpoint to terminate jobs 2023-10-24 02:40:00 -04:00
Brandon Thomas bc5d84a306 use the new job status enum 2023-10-24 01:22:48 -04:00
Brandon Thomas 2357f00944 Merge pull request #119 from storytold/echelon-job-system-new-states
Introduce two new job status types to generic inference jobs
2023-10-24 01:08:15 -04:00
Brandon Thomas 24127f20e4 Introduce two new job status types to generic inference jobs 2023-10-24 01:06:14 -04:00
Brandon Thomas 4c8f14d4d5 Migration to make password_resets.ip_address_redemption nullable 2023-10-23 22:11:26 -04:00
Brandon Thomas e14440ba02 undo edit to previous migration (should be harmless in prod) 2023-10-23 22:05:11 -04:00
Michael Chung 7295a3295f Fix prefixes for create and inference 2023-10-23 22:03:37 -04:00
Michael Chung 10176079c7 remove variables not used 2023-10-23 21:59:26 -04:00
Michael Chung 8999a80e92 Change root ml dir 2023-10-23 21:34:58 -04:00
Michael Chung 41b07049ff Remove comments 2023-10-23 21:29:41 -04:00
Michael Chung b45f6ed691 Restore storyteller rust root for dev_database_seed 2023-10-23 21:25:04 -04:00
Michael Chung 9d16eb05c1 Fix data seed env-secrets path. 2023-10-23 21:13:27 -04:00
Michael Chung b414540251 Fixing issue with the origin model type along side tests. 2023-10-23 21:11:00 -04:00
Michael Chung 2949456adc Restore bad merge on id_category.rs 2023-10-23 21:07:35 -04:00
Michael Chung 3a72292898 Some minor comment fix 2023-10-23 16:54:27 -04:00
Michael Chung 07c640ce84 Retest the endpoints with the correct credentials
One more integration test with multiple wav files.
2023-10-23 16:52:31 -04:00
Michael Chung 49a15fd1f1 Cleaning up some of the end points. 2023-10-23 16:22:37 -04:00
Michael Chung 3267f9949d Added ip address and creator token. 2023-10-23 16:02:07 -04:00
Michael Chung 47df6930d2 Basically works well!
Few things to checkout.
2023-10-22 23:38:31 -04:00
Michael Chung 913d282d60 Fixed extensions on create
Checking whether media uploads.
2023-10-22 20:52:57 -04:00
Michael Chung 743934ff50 Need to do a clean up then check media upload and table 2023-10-22 20:36:32 -04:00
Michael Chung bc209fe939 So the prefix wasn't populated in the seed I think! 2023-10-22 17:57:35 -04:00
Michael Chung 302975ddfd Seeded db testing again 2023-10-22 11:57:29 -04:00
Michael Chung d7664e8e1c Merge branch 'master' into feature/enqueue_tts_request 2023-10-21 02:41:43 -04:00
Michael Chung 9f7fc09e9f Builds testing. 2023-10-21 01:13:39 -04:00
Michael Chung 2686cb94e0 Testing create command now. 2023-10-21 00:28:11 -04:00
Michael Chung fd7f1e1893 testing now. 2023-10-20 23:27:31 -04:00
Brandon Thomas eb3499596e always output stderr 2023-10-20 14:45:03 -04:00
Michael Chung 00bfdad3d0 Test pass! 2023-10-20 12:13:57 -04:00
Michael Chung ff3821956a Builds again 2023-10-20 11:43:16 -04:00
Michael Chung a5a5f5473b Testing! 2023-10-20 10:13:23 -04:00
Brandon Thomas 7c553ffcee fix rvc jobs 2023-10-20 07:00:09 -04:00
Brandon Thomas 52f0b44c26 codegen db 2023-10-20 06:14:49 -04:00
Brandon Thomas fbed7cd530 Merge pull request #113 from storytold/echelon-voice-conversion-media-files
voice conversion --> media files
2023-10-20 06:14:19 -04:00
Brandon Thomas 4ce8752a6a codegen db 2023-10-20 06:12:41 -04:00
Brandon Thomas 3239e318b1 fix inference job status links 2023-10-20 05:37:51 -04:00
Brandon Thomas 471dcff697 RVC -> media_files 2023-10-20 05:14:00 -04:00
Brandon Thomas 2af57fcf3e Write voice conversion results to media_files tables 2023-10-20 05:14:00 -04:00
Brandon Thomas f2b0e77210 fix stupid "1" bug on generic jobs 2023-10-20 05:13:44 -04:00
Michael Chung 10c8bc1ef3 Just need to run inference and pass the insert the record and upload the voice once it infers.
Run the path test.
2023-10-20 01:46:13 -04:00
Brandon Thomas 35dfe6a7f2 fix lints 2023-10-20 01:09:56 -04:00
Brandon Thomas 48ecc44978 Merge pull request #112 from storytold/echelon-seed-samples
Update seed tool to seed and upload samples
2023-10-19 22:36:30 -04:00
Brandon Thomas 4f0e2d5f72 Update seed tool to seed and upload samples 2023-10-19 22:33:24 -04:00
Brandon Thomas 96c99fd102 Merge pull request #111 from storytold/echelon-media-file-upload-cli
CLI tool to upload media files and save them to the DB
2023-10-19 21:56:38 -04:00
Brandon Thomas 26794b3d2e CLI tool to upload media files and save them to the DB 2023-10-19 21:52:32 -04:00
Michael Chung c3a60ed8ab Merge branch 'master' into feature/enqueue_tts_request 2023-10-19 20:12:40 -04:00
Michael Chung 13964901f0 update process job created a fork for creating voice 2023-10-19 19:19:53 -04:00
Brandon Thomas 593fb50fcb Merge pull request #110 from storytold/echelon-list-dataset-samples
Enrich list dataset samples query + endpoint with bucket information
2023-10-19 18:24:39 -04:00
Brandon Thomas fff71d7aa4 Enrich list dataset samples query + endpoint with bucket information 2023-10-19 18:18:35 -04:00
Michael Chung 57eecb3757 Creating the create voice job 2023-10-19 16:26:43 -04:00
Brandon Thomas 022aa523cb fix cookie paths ? 2023-10-19 05:56:15 -04:00
Brandon Thomas 6d01506bd1 fix cookie path 2023-10-19 05:53:44 -04:00
Brandon Thomas 0cc3baee27 Merge pull request #108 from storytold/brandon-set-avt-cookie
Start setting AVT cookie on /v1/session endpoint
2023-10-19 05:06:00 -04:00
Brandon Thomas d5b28d2d3e Start setting AVT cookie on /v1/session endpoint 2023-10-19 04:24:50 -04:00
Brandon Thomas d6a3d4887f Merge pull request #107 from storytold/bt-revert-sha2-upgrade
Revert "Bump sha2 from 0.9.5 to 0.10.5"
2023-10-19 02:44:56 -04:00
Brandon Thomas cce4f5f3b7 Revert "Bump sha2 from 0.9.5 to 0.10.5"
This reverts commit 59f7b6f732.
2023-10-19 02:44:21 -04:00
Brandon Thomas 9123dbc3d9 Merge pull request #98 from storytold/dependabot/cargo/sha2-0.10.5
Bump sha2 from 0.9.5 to 0.10.5
2023-10-19 02:41:04 -04:00
Brandon Thomas d43a747033 Merge pull request #100 from storytold/dependabot/cargo/rpassword-7.2.0
Bump rpassword from 5.0.1 to 7.2.0
2023-10-19 02:40:25 -04:00
Brandon Thomas c3e5b42bf3 use JwtSigner for session cookie 2023-10-19 02:39:17 -04:00
Michael Chung 25cdbf2f1d Adding create voice command 2023-10-19 02:09:16 -04:00
dependabot[bot] 59f7b6f732 Bump sha2 from 0.9.5 to 0.10.5
Bumps [sha2](https://github.com/RustCrypto/hashes) from 0.9.5 to 0.10.5.
- [Commits](https://github.com/RustCrypto/hashes/compare/sha2-v0.9.5...sha2-v0.10.5)

---
updated-dependencies:
- dependency-name: sha2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 05:57:20 +00:00
dependabot[bot] fe7251744f Bump rpassword from 5.0.1 to 7.2.0
Bumps [rpassword](https://github.com/conradkleinespel/rpassword) from 5.0.1 to 7.2.0.
- [Release notes](https://github.com/conradkleinespel/rpassword/releases)
- [Commits](https://github.com/conradkleinespel/rpassword/compare/v5.0.1...v7.2.0)

---
updated-dependencies:
- dependency-name: rpassword
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 05:56:56 +00:00
Brandon Thomas fdd60b436a Merge pull request #99 from storytold/dependabot/cargo/scraper-0.17.1
Bump scraper from 0.14.0 to 0.17.1
2023-10-19 01:55:06 -04:00
Brandon Thomas 0836e88f4c Merge pull request #101 from storytold/dependabot/cargo/diesel-2.1.3
Bump diesel from 1.4.6 to 2.1.3
2023-10-19 01:54:46 -04:00
Brandon Thomas 261978f763 Merge pull request #102 from storytold/dependabot/cargo/anyhow-1.0.75
Bump anyhow from 1.0.40 to 1.0.75
2023-10-19 01:53:55 -04:00
Brandon Thomas d072e021d1 Merge pull request #106 from storytold/echelon-cookies
Cookie stuff - JWT signer, anonymous visitor cookies, etc.
2023-10-19 01:53:05 -04:00
Brandon Thomas 66442d9eda Cookie stuff - JWT signer, anonymous visitor cookies, etc.
- JWT signer is reusable, tested

- AVT cookies improve the anonymous user experience and will help
  internal analytics
2023-10-19 01:37:50 -04:00
Michael Chung 0f4cab9ca3 Added missing new file 2023-10-18 19:50:24 -04:00
Michael Chung 6de4d451ac Fixed import issues 2023-10-18 19:50:07 -04:00
Michael Chung 9d4e426ace It is now being tested then we work on the command side. 2023-10-18 18:02:30 -04:00
Michael Chung bfb5103f46 Merge branch 'master' into feature/enqueue_tts_request 2023-10-18 13:37:23 -04:00
Michael Chung 3308c05836 Need to pull master 2023-10-18 13:26:19 -04:00
Brandon Thomas 5a539e589d codegen db 2023-10-18 04:53:55 -04:00
Brandon Thomas 604c72179a password_resets needs a unique index on (user, secret_key) 2023-10-18 02:22:39 -04:00
Michael Chung be19eefa1a Upload and create record and were good to do the other command and clean up. 2023-10-18 02:13:59 -04:00
Michael Chung 34e2b1e544 It works runs inference_job
Need to upload the file then create the record for download
2023-10-18 02:03:41 -04:00
Brandon Thomas 95152e9a88 fix replacement paths 2023-10-18 00:31:43 -04:00
Michael Chung cbe8aaa1ba More fixes 2023-10-18 00:04:33 -04:00
Michael Chung 11185584a7 Fixing typos and virtual env 2023-10-17 22:56:30 -04:00
Michael Chung 76559cf783 fix the env 2023-10-17 22:11:22 -04:00
Michael Chung 2e7bd622f3 fixed a typo 2023-10-17 22:06:42 -04:00
Michael Chung 68048659d4 Testing inference_job 2023-10-17 22:00:14 -04:00
Brandon Thomas 608e94a6a8 Merge pull request #105 from storytold/echelon-config-path-substitution
Substitute config absolute paths with magic substitution strings
2023-10-17 21:38:06 -04:00
Brandon Thomas 9e0bee8fba Substitute config absolute paths with magic substitution strings 2023-10-17 21:37:20 -04:00
Brandon Thomas dcec9b9e8a Merge pull request #104 from storytold/echelon-storyteller-home
"storyteller root" directory in development
2023-10-17 21:12:51 -04:00
Brandon Thomas 3fc0f45942 "storyteller root" directory in development 2023-10-17 21:04:54 -04:00
Brandon Thomas bfd325900f Merge pull request #103 from storytold/echelon-better-envvars
Better env var support
2023-10-17 17:00:54 -04:00
Brandon Thomas 1ef7ae1009 Better env var support 2023-10-17 16:31:53 -04:00
Michael Chung 17d51f8d87 Merge branch 'master' into feature/enqueue_tts_request 2023-10-17 13:37:35 -04:00
Brandon Thomas ca81d1b543 fix build / lint errors 2023-10-16 20:02:41 -04:00
dependabot[bot] 1de3e669d6 Bump anyhow from 1.0.40 to 1.0.75
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.40 to 1.0.75.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.40...1.0.75)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 22:18:42 +00:00
dependabot[bot] ac39ac0a76 Bump diesel from 1.4.6 to 2.1.3
Bumps [diesel](https://github.com/diesel-rs/diesel) from 1.4.6 to 2.1.3.
- [Release notes](https://github.com/diesel-rs/diesel/releases)
- [Changelog](https://github.com/diesel-rs/diesel/blob/v2.1.3/CHANGELOG.md)
- [Commits](https://github.com/diesel-rs/diesel/compare/v1.4.6...v2.1.3)

---
updated-dependencies:
- dependency-name: diesel
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 22:18:25 +00:00
dependabot[bot] f9caa7d836 Bump scraper from 0.14.0 to 0.17.1
Bumps [scraper](https://github.com/causal-agent/scraper) from 0.14.0 to 0.17.1.
- [Release notes](https://github.com/causal-agent/scraper/releases)
- [Commits](https://github.com/causal-agent/scraper/compare/v0.14.0...v0.17.1)

---
updated-dependencies:
- dependency-name: scraper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 22:17:50 +00:00
Michael Chung 5f7a10a54c Merge branch 'master' into feature/enqueue_tts_request 2023-10-16 09:34:46 -04:00
Brandon Thomas e478c73ddf Merge pull request #97 from storytold/echelon-sample-upload
Dataset sample upload (not yet tested, but compiles, and needs lots of cleanup)
2023-10-14 12:23:36 -04:00
Brandon Thomas 92676e842c Dataset sample upload 2023-10-14 12:18:42 -04:00
Michael Chung 7eee225296 Builds again need to clearify what happened to the download function 2023-10-13 15:36:21 -04:00
Michael Chung 1319471c04 Merge branch 'master' into feature/enqueue_tts_request 2023-10-13 10:02:17 -04:00
Brandon Thomas 47e7269880 codegen db 2023-10-13 02:50:15 -04:00
Brandon Thomas 9b83caece1 Merge pull request #96 from storytold/echelon-get-media-file-endpoint
v1 of media_file GET endpoint.
2023-10-13 02:40:39 -04:00
Brandon Thomas 138057e105 v1 of media_file GET endpoint.
Media files are used for inference outputs, file uploads, Zero Shot
files, etc. We don't have any of the basic CRUD operations around them
yet, so this is a start.

This endpoint will need more metadata - moderation, file provenance,
file details, etc. But this will do for now.
2023-10-13 02:38:34 -04:00
Brandon Thomas 3e8b6f39fe Merge branch 'master' into feature/enqueue_tts_request 2023-10-12 23:28:08 -04:00
Brandon Thomas 63b4a3180f filter out sadtalker name 2023-10-12 06:22:39 -04:00
Brandon Thomas 6842794af6 another face detection failure 2023-10-12 06:15:43 -04:00
Brandon Thomas a963e5146a more instances of face detection failure 2023-10-12 05:33:56 -04:00
Brandon Thomas eb65ed5fa8 re-codegen db 2023-10-12 03:52:12 -04:00
Brandon Thomas f6989230be write origin_product_category 2023-10-12 03:51:01 -04:00
Brandon Thomas 2d3f29139a re-codegen db 2023-10-12 02:53:48 -04:00
Brandon Thomas a059aa7271 fix lints 2023-10-12 02:08:13 -04:00
Brandon Thomas 8699a9e342 record and report frontend_failure_category 2023-10-12 02:04:29 -04:00
Brandon Thomas 48bf168d99 improve readability 2023-10-12 01:14:03 -04:00
Brandon Thomas f1fd99be15 record frontend_failure_category, emit SadTalker errors 2023-10-12 01:03:36 -04:00
Michael Chung a0b8849806 Trying to build again. 2023-10-12 00:56:50 -04:00
Brandon Thomas 49db299f96 enums for two new columns 2023-10-11 23:09:18 -04:00
Brandon Thomas b1e87b7d90 two migrations (media_files, generic_inference_jobs)
- media_files.origin_product_category
- generic_inference_jobs.frontend_failure_category
2023-10-11 22:38:23 -04:00
Michael Chung bb0a4958ef Need to build and fix the container. 2023-10-11 18:19:40 -04:00
Brandon Thomas 4aacc23101 kill sadtalker jobs 2023-10-11 17:31:41 -04:00
Brandon Thomas 536307c162 analytics queries 2023-10-11 17:11:34 -04:00
Brandon Thomas d5c86d1345 fix breakage due to s3 client upgrade (YOLO) + lint fixes 2023-10-11 16:53:37 -04:00
Brandon Thomas 1900a31541 Merge pull request #66 from storytold/dependabot/cargo/rust-s3-0.33.0
Bump rust-s3 from 0.32.3 to 0.33.0
2023-10-11 16:26:24 -04:00
Brandon Thomas 067538f1c2 Merge pull request #88 from storytold/oct-10-mithoo
use usernames to list datasets/voices & simple handler for listing samples
2023-10-11 16:19:21 -04:00
Michael Chung a256681f6d Merge branch 'master' into feature/enqueue_tts_request 2023-10-11 12:58:57 -04:00
kasisnu 03443be19c inventory list voices with pagination 2023-10-11 16:52:37 +05:30
Michael Chung ec03420efc Fixed issue with typo in job.
Need to fix process job and run it.
2023-10-11 02:51:47 -04:00
Brandon Thomas bfc8171fa7 additional safeguards 2023-10-11 00:02:36 -04:00
Brandon Thomas 248ee45d11 multithreaded 2023-10-10 23:49:43 -04:00
Brandon Thomas 97be5da1b5 Truncate bucket hash for seeded zero shot voice records 2023-10-10 22:06:16 -04:00
Brandon Thomas d26902911f Merge pull request #93 from storytold/feature/fix-database-seed-voice-embeddings
Fixed bucket hash issue
2023-10-10 22:00:27 -04:00
Michael Chung 0560a2d607 Fixed bucket hash issue 2023-10-10 20:34:27 -04:00
Michael Chung 264058ea87 Just a quick commit gotta modify the seeding script to get the bucket hashes for downloading 2023-10-10 20:20:56 -04:00
Brandon Thomas b175cc0e65 cleanup more statuses 2023-10-10 19:24:07 -04:00
Brandon Thomas ae781a3e37 rename to kubectl- to not collide with base tool in tab complete 2023-10-10 19:15:53 -04:00
Brandon Thomas ee00fbe585 cleanup pods with these statuses 2023-10-10 19:12:39 -04:00
Brandon Thomas 82791ec39e delete pods randomly 2023-10-10 18:51:35 -04:00
Brandon Thomas b6bbc76b18 delete batches 2023-10-10 18:24:57 -04:00
Brandon Thomas 1742827ed9 ergonomics 2023-10-10 18:01:06 -04:00
Brandon Thomas 68bc9d0bb0 Merge pull request #89 from storytold/echelon-kubectl-cli
kubectl cli to cleanup dead pods
2023-10-10 17:51:12 -04:00
Brandon Thomas ccc67d43cc kubectl cli to cleanup dead pods 2023-10-10 17:50:05 -04:00
Michael Chung 3845c632b2 Turns out we don't support folder downloads only files. 2023-10-10 17:40:33 -04:00
Michael Chung 22518d9164 Fixed pathing typos 2023-10-10 16:24:16 -04:00
Michael Chung 5dbed7afbb Fixed typo on downloading the vall-e-x model 2023-10-10 16:18:35 -04:00
Michael Chung a485666b1c Test pass!
Payload delivered and picked up.
Need to ensure the job now runs locally.
2023-10-10 16:03:27 -04:00
Michael Chung 54e9b8af70 Fixed routing issue with the job need to move tts text to maybe tts text out of the json. 2023-10-10 15:32:51 -04:00
kasisnu 5a7b0b1bdd simple list dataset samples 2023-10-10 19:15:58 +05:30
kasisnu ee0067161e use usernames instead of user tokens to list voices/datasets 2023-10-10 18:03:22 +05:30
Brandon Thomas a0f464e454 Merge pull request #87 from storytold/echelon-dataset-endpoints
Dataset endpoints, refactoring, cleanup, etc.
2023-10-10 03:22:21 -04:00
Brandon Thomas 332982faa5 Dataset endpoints, refactoring, cleanup, etc. 2023-10-10 03:16:11 -04:00
Brandon Thomas c0e142d668 RMVPE support 2023-10-10 01:18:12 -04:00
Brandon Thomas ca8dce4805 re-codegen db 2023-10-09 23:58:09 -04:00
Brandon Thomas ed1eb9a540 stop dependabot from suggesting /old_code fixes (maybe delete all this?) 2023-10-09 23:30:16 -04:00
Brandon Thomas 0620fa6f98 extra tests for previously broken upgrade 2023-10-09 23:15:09 -04:00
Brandon Thomas 94adc01d62 Merge pull request #86 from storytold/echelon-cleanup-identifiers
Cleanup identifiers (tokens package)
2023-10-09 23:02:15 -04:00
Brandon Thomas 6e76cd3da6 Cleanup identifiers (tokens package) 2023-10-09 23:00:11 -04:00
Brandon Thomas 5a1fd2679c fix for broken dependabot base64 upgrade (semvar violation) 2023-10-09 22:25:38 -04:00
dependabot[bot] f5c3e12f90 Bump rust-s3 from 0.32.3 to 0.33.0
Bumps [rust-s3](https://github.com/durch/rust-s3) from 0.32.3 to 0.33.0.
- [Release notes](https://github.com/durch/rust-s3/releases)
- [Commits](https://github.com/durch/rust-s3/commits/v0.33.0)

---
updated-dependencies:
- dependency-name: rust-s3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-10 02:02:36 +00:00
Brandon Thomas 0a141ea118 Merge pull request #84 from storytold/dependabot/cargo/cidr-utils-0.5.11
Bump cidr-utils from 0.5.10 to 0.5.11
2023-10-09 22:01:02 -04:00
Brandon Thomas dd6c5d1975 Merge pull request #82 from storytold/dependabot/cargo/base64-0.21.0
Bump base64 from 0.13.0 to 0.21.0
2023-10-09 22:00:40 -04:00
Brandon Thomas 91dcd1f876 Merge pull request #83 from storytold/dependabot/cargo/unicode-segmentation-1.10.1
Bump unicode-segmentation from 1.7.1 to 1.10.1
2023-10-09 22:00:08 -04:00
Brandon Thomas 1869ead6ad Merge pull request #85 from storytold/dependabot/cargo/futures-util-0.3.28
Bump futures-util from 0.3.26 to 0.3.28
2023-10-09 21:59:34 -04:00
Brandon Thomas 1c81874b28 fix tests and lints 2023-10-09 21:55:48 -04:00
Brandon Thomas c8b79bfb40 cleanup logic 2023-10-09 21:44:14 -04:00
Brandon Thomas 767d76f831 comments about dev bucket 2023-10-09 21:04:36 -04:00
Brandon Thomas b163791db2 Merge pull request #77 from storytold/feature/enqueue_tts_request
Feature/enqueue tts request
2023-10-09 21:02:26 -04:00
Brandon Thomas d4e8bfb1f8 Merge pull request #79 from storytold/oct-06-mithoo
adds list dataset handler and update/delete voices handler
2023-10-09 20:58:25 -04:00
dependabot[bot] fabc1583ca Bump futures-util from 0.3.26 to 0.3.28
Bumps [futures-util](https://github.com/rust-lang/futures-rs) from 0.3.26 to 0.3.28.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.26...0.3.28)

---
updated-dependencies:
- dependency-name: futures-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 23:08:03 +00:00
dependabot[bot] 804ab3e4e8 Bump cidr-utils from 0.5.10 to 0.5.11
Bumps [cidr-utils](https://github.com/magiclen/cidr-utils) from 0.5.10 to 0.5.11.
- [Commits](https://github.com/magiclen/cidr-utils/compare/v0.5.10...v0.5.11)

---
updated-dependencies:
- dependency-name: cidr-utils
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 23:07:31 +00:00
dependabot[bot] cd0e104808 Bump unicode-segmentation from 1.7.1 to 1.10.1
Bumps [unicode-segmentation](https://github.com/unicode-rs/unicode-segmentation) from 1.7.1 to 1.10.1.
- [Commits](https://github.com/unicode-rs/unicode-segmentation/compare/1.7.1...v1.10.1)

---
updated-dependencies:
- dependency-name: unicode-segmentation
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 23:07:00 +00:00
dependabot[bot] a7d794e29b Bump base64 from 0.13.0 to 0.21.0
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.13.0 to 0.21.0.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.13.0...v0.21.0)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 23:05:57 +00:00
kasisnu eed7dc28f8 adds simple voice list endpoint 2023-10-09 18:33:07 +05:30
kasisnu d4c5710513 filter private/hidden datasets, make user token non-optional 2023-10-09 12:26:54 +05:30
Michael Chung d8c4df4c02 Ok fixed the odd linting error. 2023-10-06 18:12:04 -04:00
Michael Chung 13809ad309 Fixed issue 2023-10-06 18:04:46 -04:00
Michael Chung 95888e683d Formatter works now, braces can get properly placed 2023-10-06 18:01:25 -04:00
Michael Chung 3012dea984 process_single_tts_job augmented... 2023-10-06 17:58:07 -04:00
Michael Chung ae899d8aca Fixed most of the job and implemented it.
Need to run the container this might be fun haha ...
2023-10-06 15:21:38 -04:00
Michael Chung dda05ba22c Have to pull master for the lastest seed changes 2023-10-06 13:01:17 -04:00
Brandon Thomas 63795b2cb6 Merge pull request #81 from storytold/echelon-test-weights
Add zero shot weights and upload six test files; add to db seed tool
2023-10-06 12:51:20 -04:00
Brandon Thomas 8aa97a6a4f Add zero shot weights and upload six test files; add to db seed tool 2023-10-06 12:50:02 -04:00
Michael Chung e23369761b Merge branch 'master' into feature/enqueue_tts_request 2023-10-06 11:35:11 -04:00
Brandon Thomas 2b27d6fe41 Merge pull request #80 from storytold/echelon-seed-tool-2
More seed tool things
2023-10-06 11:30:14 -04:00
Michael Chung c6eefc41ec Ok fixed the build now working on job running. 2023-10-06 10:55:51 -04:00
Michael Chung 9e3a3b79f9 job process wip 2023-10-06 09:49:09 -04:00
kasisnu 2aa063c354 some meat on the list datasets handler - filtering logic needs wdork 2023-10-06 18:04:44 +05:30
kasisnu f77d4a636b skip mod token when creating datasets 2023-10-06 16:07:29 +05:30
Brandon Thomas 018b05a3a2 Seed voice conversion models 2023-10-06 02:50:12 -04:00
kasisnu fd3661e25d list/delete voices simple handlers 2023-10-06 12:07:51 +05:30
Brandon Thomas 39de5aba13 More updates to seed tool 2023-10-06 01:30:43 -04:00
Brandon Thomas 6354e7c3b4 Merge pull request #78 from storytold/echelon-db-seeding
Database seed tool
2023-10-06 01:17:59 -04:00
Brandon Thomas eaa9ddd62d seed voice 2023-10-06 00:51:52 -04:00
Michael Chung 195a2eeb9c Outlined the things needed to be done in process_job 2023-10-06 00:49:42 -04:00
Brandon Thomas bef5dce947 seed dataset 2023-10-06 00:36:15 -04:00
Brandon Thomas dd3f9c9d3e move query modules 2023-10-06 00:19:41 -04:00
Brandon Thomas aac31f77ad Database seed tool 2023-10-06 00:09:42 -04:00
Brandon Thomas d07a147db9 Merge pull request #62 from storytold/feat-create-dataset
create zs dataset endpoint - basic impl
2023-10-06 00:03:47 -04:00
Michael Chung ba76acec35 some more fixes to model downloaders 2023-10-05 23:05:27 -04:00
Michael Chung a2c196587f Added Inference Command Stub
Added Create Embedding Command Stub
Need to implement job process:
Download Embedding File aka voice token.
model_downloaders is all good.
validate_job.
2023-10-05 22:29:25 -04:00
Brandon Thomas 8d36d6c709 Add some downloaders for vall-e-x 2023-10-05 21:43:36 -04:00
Michael Chung 4f5f6cfe51 Getting the pieces ready for inference_job 2023-10-05 13:29:51 -04:00
kasisnu 7c59f267fc placeholder sql query to create a voice 2023-10-05 17:41:44 +05:30
kasisnu 23a6daa144 list handler questions 2023-10-05 16:34:36 +05:30
kasisnu a22038ea31 delete datasets & allow mods to undelete 2023-10-05 15:59:56 +05:30
Michael Chung 5de40b2dab Fix a build issues the payload sends exploring the job creation and inference side of it. 2023-10-04 16:30:46 -04:00
kasisnu 484e6788e3 enforce user token check 2023-10-04 19:02:16 +05:30
kasisnu b67cfb5fbe basic update dataset handler & synthetic id tracking 2023-10-04 18:03:13 +05:30
Brandon Thomas d46075a2a3 codegen 2023-10-04 03:58:05 -04:00
Brandon Thomas aa9b834f4b Merge pull request #76 from storytold/echelon-add-media-file-extension
Add media prefix and file extension
2023-10-04 03:50:00 -04:00
Brandon Thomas 2abba4b639 populate prefix and extension 2023-10-04 03:34:43 -04:00
kasisnu c42c091b2d create zs dataset endpoint - basic impl 2023-10-04 12:32:58 +05:30
Brandon Thomas cde8447a9c add table for bucket prefix 2023-10-04 02:33:28 -04:00
Brandon Thomas 4306a4763d Add extension 2023-10-04 02:24:28 -04:00
Brandon Thomas 9701e29b58 Migration to add file extension (eg. ".mp4") 2023-10-04 02:24:28 -04:00
Brandon Thomas 8512846efa Merge pull request #75 from storytold/bt-revert-sqlx-upgrade
Revert "Bump sqlx-core from 0.6.2 to 0.7.2"
2023-10-04 02:23:09 -04:00
Brandon Thomas c7b54e1548 Revert "Bump sqlx-core from 0.6.2 to 0.7.2"
This reverts commit 6b8c1a3106.
2023-10-04 02:15:54 -04:00
Brandon Thomas 8343cf1b65 Merge pull request #70 from storytold/dependabot/cargo/sqlx-core-0.7.2
Bump sqlx-core from 0.6.2 to 0.7.2
2023-10-04 02:04:06 -04:00
Brandon Thomas 4d4b55d39d Merge pull request #68 from storytold/dependabot/cargo/once_cell-1.18.0
Bump once_cell from 1.17.0 to 1.18.0
2023-10-04 02:03:54 -04:00
dependabot[bot] 6b8c1a3106 Bump sqlx-core from 0.6.2 to 0.7.2
Bumps [sqlx-core](https://github.com/launchbadge/sqlx) from 0.6.2 to 0.7.2.
- [Changelog](https://github.com/launchbadge/sqlx/blob/main/CHANGELOG.md)
- [Commits](https://github.com/launchbadge/sqlx/commits)

---
updated-dependencies:
- dependency-name: sqlx-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 06:03:43 +00:00
Brandon Thomas 63b3cb8216 Merge pull request #67 from storytold/dependabot/cargo/url-2.4.1
Bump url from 2.3.1 to 2.4.1
2023-10-04 02:03:25 -04:00
Brandon Thomas 3d4522126e Merge pull request #65 from storytold/dependabot/cargo/openssl-0.10.57
Bump openssl from 0.10.42 to 0.10.57
2023-10-04 02:02:33 -04:00
Brandon Thomas 8be1b5afa3 Merge pull request #69 from storytold/dependabot/cargo/actix-rt-2.9.0
Bump actix-rt from 2.7.0 to 2.9.0
2023-10-04 02:02:15 -04:00
dependabot[bot] 11f6995942 Bump actix-rt from 2.7.0 to 2.9.0
Bumps [actix-rt](https://github.com/actix/actix-net) from 2.7.0 to 2.9.0.
- [Release notes](https://github.com/actix/actix-net/releases)
- [Commits](https://github.com/actix/actix-net/compare/rt-v2.7.0...rt-v2.9.0)

---
updated-dependencies:
- dependency-name: actix-rt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 05:56:36 +00:00
dependabot[bot] 589d13fdd1 Bump once_cell from 1.17.0 to 1.18.0
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.17.0 to 1.18.0.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.17.0...v1.18.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 05:56:02 +00:00
dependabot[bot] 3f9160701f Bump url from 2.3.1 to 2.4.1
Bumps [url](https://github.com/servo/rust-url) from 2.3.1 to 2.4.1.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.3.1...v2.4.1)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 05:55:30 +00:00
Brandon Thomas 9e8c27edfd Create dependabot.yml 2023-10-04 01:53:23 -04:00
dependabot[bot] 6540aed9dc Bump openssl from 0.10.42 to 0.10.57
Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.42 to 0.10.57.
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.42...openssl-v0.10.57)

---
updated-dependencies:
- dependency-name: openssl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 05:53:08 +00:00
Brandon Thomas 7cd570083c Merge pull request #64 from storytold/bt-misc-fix
fixing a few things
2023-10-04 01:10:15 -04:00
Brandon Thomas 8787e3ef1e tests for lipsync payload 2023-10-04 01:09:40 -04:00
Brandon Thomas 49b25cc79d fix query cache codegen 2023-10-04 01:09:40 -04:00
Brandon Thomas eff73a9cff actually check premium plan 2023-10-04 01:09:40 -04:00
Brandon Thomas d0e3e0f6bb Merge pull request #63 from storytold/bt-twitter-dimensions
SadTalker: Final API shape. Twitter dimensions, non-default options are opt-in, premium watermark
2023-10-04 00:31:00 -04:00
Brandon Thomas e676df0bf4 premium plan features 2023-10-04 00:26:52 -04:00
Brandon Thomas ebed726768 Resize SadTalker to "twitter" dimensions 2023-10-04 00:26:52 -04:00
Michael Chung e0145f0e70 Test this endpoint ensure that the record is created and you can see it grabbed. 2023-10-03 19:09:09 -04:00
Brandon Thomas 2f3037514f takedown requests 2023-10-03 13:38:13 -04:00
Michael Chung f7c636cf58 Added TTS payloads should be able to enter a entry after a migration then follow the event
to the inference dispatch and fill out the code there.
2023-10-02 23:56:52 -04:00
Michael Chung ec4a172929 Adding generic inference args and creating the job soon 2023-10-02 23:08:28 -04:00
Michael Chung 773b96fb35 Stubbing out work in the handler
Adding VallEX as a inference model type
Test pass
2023-10-02 21:45:40 -04:00
Michael Chung 40d0d0d844 Changing up enqueue_infer_tts_handler to allow embedding tokens. 2023-10-02 20:17:36 -04:00
Brandon Thomas dbae9803e2 Merge pull request #61 from storytold/testing-and-images-libs
Libraries for testing and image processing
2023-10-02 16:21:28 -04:00
Brandon Thomas 87093bf291 Libraries for testing and image processing
Just getting started here.
2023-10-02 16:20:07 -04:00
Michael Chung 0b3ea3af2a Working on enqueue_tts_request assuming the prompt is around. 2023-10-02 16:15:25 -04:00
ArEnSc 1a75d5b7b3 Merge pull request #60 from storytold/feature/postman-collections
Postman Collections
2023-10-02 14:58:16 -04:00
Michael Chung fb5dbae029 Added the GPT4Prompt for generating the collections and posted some relevant end points. 2023-10-02 13:41:06 -04:00
Brandon Thomas d2fba4349d fix broken lint 2023-10-01 17:17:43 -04:00
Brandon Thomas b76b4460e3 forgot to codegen after leaderboard query adjustment 2023-10-01 17:10:49 -04:00
Brandon Thomas 5fee53d7c7 Merge pull request #59 from storytold/echelon-sadtalker-options
More options for SadTalker
2023-10-01 17:07:33 -04:00
ArEnSc 4f589cd1b7 Merge pull request #58 from storytold/feature/Zeroshot-inference-job1
Feature/Stubs for Voice Designer?
2023-10-01 16:53:35 -04:00
Michael Chung 5b9f1551ee Put stubs behind feature flag. 2023-10-01 16:51:14 -04:00
Michael Chung e47125f12d Nested the endpoints wrong because to many ))) and got confused. 2023-10-01 15:04:01 -04:00
Michael Chung afa050b45e Testing routes 2023-10-01 13:44:22 -04:00
Brandon Thomas ab6986e4b4 Merge pull request #57 from storytold/echelon-hide-leaderboard
Hide Vegito's test account from TTS leaderboard
2023-10-01 05:45:20 -04:00
Brandon Thomas 53626cb312 More options for SadTalker 2023-10-01 05:07:56 -04:00
Brandon Thomas a8810a2db8 Hide Vegito's account from TTS leaderboard 2023-09-30 11:07:08 -04:00
Michael Chung cb8266d61e Run then test end points for the responses 2023-09-30 01:43:56 -04:00
Michael Chung 056065458f Early stubs 2023-09-30 01:43:25 -04:00
Michael Chung 7cb18d63f2 Initial stubs for the api 2023-09-30 01:27:36 -04:00
Michael Chung 12a119cc1b Routing for the backend start 2023-09-29 20:30:09 -04:00
Brandon Thomas c8d8546c57 Merge pull request #56 from storytold/echelon-zero-shot-tables
Zero shot tables
2023-09-29 00:10:16 -04:00
Brandon Thomas 3265e097c0 Zero shot tables 2023-09-28 23:45:31 -04:00
Brandon Thomas 695d3da34b analytics query 2023-09-28 10:22:38 -04:00
Brandon Thomas 6733a19315 Merge pull request #55 from storytold/echelon-face-detection-early-failure
Do not respawn SadTalker jobs when face detection fails
2023-09-28 10:20:23 -04:00
Brandon Thomas baefb9f7d6 Do not respawn SadTalker jobs when face detection fails
Currently SadTalker jobs will retry on failure, which is great for
worker nodes with transient issues. Unfortunately failure to detect a
face is a common user input error occuring in just around half of all
image uploads. This will permanently tombstone these jobs.

The new failure class can be reused for future animation systems that
rely on face detection.

There is still some minor work to do to surface this error to the
frontend / user in a friendly way.
2023-09-28 10:14:16 -04:00
Brandon Thomas fc47232e6b Update general_setup.md 2023-09-27 17:27:55 -04:00
Brandon Thomas 83dc262249 make lints and tests pass again 2023-09-26 02:13:16 -04:00
Brandon Thomas 1d3885c367 vendor in easyenv.rs (a crate I wrote) 2023-09-26 02:03:25 -04:00
Brandon Thomas 070433b416 Add watermarking capability 2023-09-22 11:49:55 -04:00
Brandon Thomas f15b89cf3d add face animation statistic to queue stats endpoint 2023-09-22 09:19:13 -04:00
Brandon Thomas 699bb6a6a7 Clion auto-optimize imports, remove dead imports, Clippy lint 2023-09-20 01:39:58 -04:00
Brandon Thomas 226f111a00 fix tests, lints 2023-09-20 01:07:26 -04:00
Brandon Thomas b7794ab48f ignore test data 2023-09-20 00:13:06 -04:00
Brandon Thomas 0bd5c9e93b ignore c sources 2023-09-20 00:11:02 -04:00
ArEnSc 5a981f55aa Merge pull request #54 from storytold/feature/General-Setup-Update
Feature/general setup update
2023-09-19 22:33:49 -04:00
michael chung 3e9581a29d Minor update 2023-09-19 22:32:09 -04:00
michael chung ab42870ff1 Updated General Setup! 2023-09-19 22:29:53 -04:00
michael chung 998c8ef49d General Setup Guide Updates! 2023-09-19 22:09:29 -04:00
Brandon Thomas aa8e7597ee get rid of redundancy 2023-09-19 20:26:35 -04:00
Brandon Thomas 725d16bbd9 readme: hosts file, running application 2023-09-19 20:13:22 -04:00
Brandon Thomas f6ee06a72f updated setup README 2023-09-19 20:01:38 -04:00
Brandon Thomas 14d028ea8a docs 2023-09-19 18:34:39 -04:00
Brandon Thomas 699c49c02f cleanup docs 2023-09-19 18:31:00 -04:00
Brandon Thomas b126998ee3 these are probably obsolete 2023-09-19 18:07:30 -04:00
Brandon Thomas 1b43433b72 Documentation updates 2023-09-19 18:06:37 -04:00
Brandon Thomas 1f7dc268a8 SadTalker arguments (wip) 2023-09-19 17:27:34 -04:00
Brandon Thomas dda67adc52 optional alternate checkpoint path arg 2023-09-15 10:07:33 -04:00
Brandon Thomas fa74b9715f logging for job 2023-09-15 09:28:41 -04:00
Brandon Thomas 653a0b26ce sleep(50) - ugh 2023-09-15 08:51:44 -04:00
Brandon Thomas ab8e9b9134 sqlite was failing, emit which is being prepared 2023-09-15 06:36:11 -04:00
Brandon Thomas dac67ada23 codegen db 2023-09-15 06:35:04 -04:00
Brandon Thomas f56530e36b Merge pull request #53 from storytold/bt-sadtalker-backup-2.2
Sad Talker worker, file uploads, etc.
2023-09-15 06:32:45 -04:00
Brandon Thomas 3077359165 logs 2023-09-15 06:29:22 -04:00
Brandon Thomas efdb0377f4 serve bucket paths 2023-09-15 06:15:11 -04:00
Brandon Thomas 4e935a1c2b worker details 2023-09-15 04:43:23 -04:00
Brandon Thomas 063760663f get job working again 2023-09-15 04:14:38 -04:00
Brandon Thomas 176cbcc4be remove directory full path, work on query 2023-09-15 03:33:55 -04:00
Brandon Thomas 359b7a5bd0 migrations, about to insert media file result 2023-09-15 02:19:41 -04:00
Brandon Thomas 9f67a3b82d SadTalker inference works ! 2023-09-14 05:33:08 -04:00
Brandon Thomas eb0e05f61e download image and audio 2023-09-14 04:58:28 -04:00
Brandon Thomas 24f6b3c2f6 upload image route 2023-09-12 20:04:58 -04:00
Brandon Thomas c47bae40d4 download voice conversion result 2023-09-12 20:04:58 -04:00
Brandon Thomas cf2c246bc2 voice_conversion_for_inference 2023-09-12 20:04:58 -04:00
Brandon Thomas 9b89402549 get_voice_conversion_result query 2023-09-12 20:04:58 -04:00
Brandon Thomas f2f2bd465c wip 2023-09-12 20:04:58 -04:00
Brandon Thomas 7e9acc6476 unpack args 2023-09-12 20:04:58 -04:00
Brandon Thomas 7d68347f4f fixed enqueue, fixed downloaders 2023-09-12 20:04:58 -04:00
Brandon Thomas 655f9fad7d downloaders 2023-09-12 20:04:58 -04:00
Brandon Thomas 754581ec70 impl_model_downloader appears to work 2023-09-12 20:04:58 -04:00
Brandon Thomas 80b7352581 async trait/macro starting to work 2023-09-12 20:04:58 -04:00
Brandon Thomas dd7bd71587 model downloader trait wip 2023-09-12 20:04:58 -04:00
Brandon Thomas e41f72305b (from other laptop) - inference args work, inference-job boilerplate 2023-09-12 20:04:58 -04:00
Brandon Thomas fa2a15a4f2 install route 2023-09-12 20:04:58 -04:00
Brandon Thomas eddb71d712 enqueue animation endpoint + more plumbing 2023-09-12 20:04:58 -04:00
Brandon Thomas 71758e6616 upload images (untested) 2023-09-12 20:04:58 -04:00
Brandon Thomas 7afa50ce29 another 101soundboards account 2023-09-12 18:42:38 -04:00
Brandon Thomas 14480e50b4 analytics queries 2023-08-31 22:45:43 -04:00
Brandon Thomas b99e4c5edb more 101soundboards accounts and notes 2023-08-31 22:31:38 -04:00
Brandon Thomas f5b7ad0428 analytics queries 2023-08-30 22:49:55 -04:00
Brandon Thomas ff2713358d imyfone notes 2023-08-28 21:37:28 -04:00
Brandon Thomas 60ab3565bd 101soundboards notes 2023-08-28 21:34:53 -04:00
Brandon Thomas d4ee7a8673 ban some abusers 2023-08-28 21:31:49 -04:00
Brandon Thomas 8e15e1e14c media_files enums 2023-08-23 21:33:06 -04:00
Brandon Thomas a8f0947352 media file token 2023-08-23 21:14:45 -04:00
Brandon Thomas 2600762df2 mysql table: media_files 2023-08-23 21:01:49 -04:00
Brandon Thomas 1100fc1a91 clion/intellij formatting rules 2023-08-23 18:03:56 -04:00
Brandon Thomas a538989c57 UserInfoLite shared response type 2023-08-23 18:03:36 -04:00
Brandon Thomas a4524ee679 execute all lints and tests 2023-08-23 17:13:11 -04:00
Brandon Thomas 1551a014a4 revisit rustfmt with minimal changes to formatting 2023-08-21 00:59:52 -04:00
Brandon Thomas e5afff51a6 Change rustfmt rules 2023-08-21 00:32:17 -04:00
Brandon Thomas 9a7b746460 return statement lint 2023-08-21 00:23:09 -04:00
Brandon Thomas a63b085086 Clippy: fix for newrelic, lint duplicate field name 2023-08-20 21:56:20 -04:00
Brandon Thomas 3b40f005d0 add storyteller.ai hostname 2023-08-20 21:01:57 -04:00
Brandon Thomas afc4fbdcb5 lints 2023-08-20 20:59:22 -04:00
Brandon Thomas 63008a7fe8 analytics query 2023-08-18 09:01:57 -04:00
Brandon Thomas 902c840833 takedown request 2023-08-18 08:49:05 -04:00
Brandon Thomas e8a8c6349f clippy 2023-08-16 16:00:37 -04:00
Brandon Thomas 76a62eaece more lints (add gradually) 2023-08-16 02:57:06 -04:00
Brandon Thomas 226fb93a36 lint progress 2023-08-16 02:28:48 -04:00
Brandon Thomas 1868170c31 more progress on lints 2023-08-16 01:51:30 -04:00
Brandon Thomas 7ecdac5151 Lint script 2023-08-16 01:34:24 -04:00
Brandon Thomas f41833e4f4 cargo cranky: &'static 2023-08-15 23:56:03 -04:00
Brandon Thomas bd9c4d752f move includes to single root dir 2023-08-15 23:42:01 -04:00
Brandon Thomas 7dab1b9ea1 username reservations 2023-08-14 14:33:32 -04:00
Brandon Thomas 512b214fb8 cargo 'cranky' (clippy helper) 2023-08-10 16:50:25 -04:00
Brandon Thomas 21e2eeac68 remove more duplicates 2023-08-10 15:28:43 -04:00
Brandon Thomas ec7a61a08e remove duplicates 2023-08-10 15:00:05 -04:00
Brandon Thomas c195a23425 inventory duplicates 2023-08-10 14:49:03 -04:00
Brandon Thomas 2c61db12d6 takedown requests 2023-08-10 14:36:24 -04:00
Brandon Thomas 8bac7ca332 analytics queries 2023-08-10 14:22:32 -04:00
Brandon Thomas 56fb99aa81 takedown request 2023-08-07 16:28:58 -04:00
Brandon Thomas e87091c5cb re-codegen 2023-07-30 18:13:30 -04:00
Brandon Thomas ffb081777d Enrich stats query with per-queue info 2023-07-30 18:12:45 -04:00
Brandon Thomas e8be6f9775 improved queue length query 2023-07-30 17:26:07 -04:00
Brandon Thomas 2094ab2fe8 query 2023-07-30 16:21:23 -04:00
Brandon Thomas 596434868c takedown requests, duplicates 2023-07-30 00:15:40 -04:00
Brandon Thomas 14c5f02127 takedown requests 2023-07-30 00:04:07 -04:00
Brandon Thomas ffc018ee18 broken clients 2023-07-27 23:54:57 -04:00
Brandon Thomas 0b7f08e838 cache queue stats in Redis 2023-07-27 04:03:07 -04:00
Brandon Thomas 3a8398a94e much better logging for download jobs 2023-07-27 03:10:55 -04:00
Brandon Thomas 35e26e7f72 more queries 2023-07-27 02:48:00 -04:00
Brandon Thomas 3e6b4c43af scope download job 2023-07-27 01:30:33 -04:00
Brandon Thomas e5289809fd more analytics queries 2023-07-26 01:13:38 -04:00
Brandon Thomas b335e1839c analytics queries 2023-07-25 16:59:08 -04:00
Brandon Thomas ce3f83e9af subscriber analytics 2023-07-24 23:46:36 -04:00
Brandon Thomas e324c6ce44 query to restart failed downloads 2023-07-24 20:43:38 -04:00
Brandon Thomas 062a80fafa more analytics, etc. queries 2023-07-24 19:22:47 -04:00
Brandon Thomas 986e8b104a most popular VC models analytics query 2023-07-24 17:15:06 -04:00
Brandon Thomas 1e948a51e9 logging, common media upload query 2023-07-24 02:06:16 -04:00
Brandon Thomas f9b7a0e774 fix bug 2023-07-23 23:41:21 -04:00
Brandon Thomas 4db56881c0 debugging type error 2023-07-23 23:36:57 -04:00
Brandon Thomas c11b2f0a94 better logging 2023-07-23 21:46:26 -04:00
Brandon Thomas 3d9a0cfcc1 scoped job execution 2023-07-23 21:32:39 -04:00
Brandon Thomas b019968ce1 re codegen db 2023-07-23 19:12:59 -04:00
Brandon Thomas 31c88d6d64 Poll voice conversion model info; pull from cache 2023-07-23 19:12:16 -04:00
Brandon Thomas a601998fa5 query for voice conversion model info 2023-07-23 18:08:45 -04:00
Brandon Thomas c1ccfb419a in-memory token info cache 2023-07-23 17:54:41 -04:00
Brandon Thomas d9a1fcf989 types on inference jobs are wrong (gradually fixing) 2023-07-23 17:33:57 -04:00
Brandon Thomas 839b33425a keep alive elapses shouldn't be system failures 2023-07-20 23:58:29 -04:00
Brandon Thomas 8017fef05a rename files across devices 2023-07-20 23:50:19 -04:00
Brandon Thomas 0534db0033 inference-job: more logging, default location for rvc hubert 2023-07-20 23:30:53 -04:00
Brandon Thomas ef53568dcf correct comment 2023-07-20 20:16:58 -04:00
Brandon Thomas 72c5c99a1c no longer log nvidia-smi spam 2023-07-20 20:16:32 -04:00
Brandon Thomas 0b0a9c428c fix python logger issue with rvc-v2 2023-07-20 19:58:46 -04:00
Brandon Thomas a9f0b1d485 fix deletion of directory bug 2023-07-20 18:07:52 -04:00
Brandon Thomas 76dc39df16 Fix list jobs query (now that it isn't statically typed) 2023-07-20 18:04:53 -04:00
Brandon Thomas 79d8af8bf4 re-codegen db 2023-07-20 17:44:03 -04:00
Brandon Thomas b1d69ba9ac no-op comment to trigger build 2023-07-20 15:06:17 -04:00
Brandon Thomas ffcf460291 scope download job type 2023-07-20 14:40:28 -04:00
Brandon Thomas f0a8b6d175 additional logging for download-job 2023-07-20 01:41:59 -04:00
Brandon Thomas e3a5d68fcc download hubert for inference-job 2023-07-20 00:02:41 -04:00
Brandon Thomas 877b95a00c Download pretrained hubert for download-job 2023-07-19 23:36:38 -04:00
Brandon Thomas 20e32ff3e3 begin handling hubert 2023-07-19 22:35:42 -04:00
Brandon Thomas 97a6f6e4ff add health checker to download-job 2023-07-19 19:52:24 -04:00
Brandon Thomas cf27fca799 Merge pull request #52 from storytold/bt-upgrade-actix-4
upgrade to actix 4
2023-07-19 02:53:40 -04:00
Brandon Thomas 5eab05753f fix broken tests 2023-07-19 02:52:11 -04:00
Brandon Thomas 385e1e53c1 update middleware 2023-07-19 02:41:40 -04:00
Brandon Thomas 039e61499f fix routes generics / upgrade generics on routing pieces 2023-07-19 01:57:51 -04:00
Brandon Thomas 9dd91ce7cc only a few compile errors left with storyteller-web 2023-07-19 01:09:10 -04:00
Brandon Thomas a75c1f391a Upgrade actix partially (was on beta version)
Old version was causing conflicts with zip and transitive bzip
dependency, so it's time to upgrade. We need to get to the next version
number soon anyway.
2023-07-19 00:20:49 -04:00
Brandon Thomas d833b3babd Merge pull request #51 from storytold/bt-rvc-v2-support
RVC v2 support
2023-07-18 23:06:49 -04:00
Brandon Thomas 1427e3eecd Handle zip files with .index files 2023-07-18 23:05:46 -04:00
Brandon Thomas 45990f5631 research 2023-07-18 17:57:37 -04:00
Brandon Thomas 5653a918c0 codegen db (was there an sqlite issue?) 2023-07-18 16:53:08 -04:00
Brandon Thomas 8172774a98 Handle RVC models without an index file 2023-07-18 16:50:44 -04:00
Brandon Thomas 6189d6fe9d working rvc(v2), it needs cleanup; also fixed race condition 2023-07-18 02:13:46 -04:00
Brandon Thomas 395940ef34 Progress on rvc inference job (not working yet) 2023-07-18 01:55:39 -04:00
Brandon Thomas 85cfc0cf2e env files 2023-07-18 00:10:57 -04:00
Brandon Thomas 93e066e70b fixing rvc uploads 2023-07-17 17:10:14 -04:00
Brandon Thomas 5cb79a5a33 Begin work on download-job rvc-v2 support 2023-07-17 16:24:35 -04:00
Brandon Thomas 6b06a825f3 Merge pull request #50 from storytold/bt-saj-rvc-integration
Bt saj rvc integration
2023-07-16 19:26:23 -04:00
Brandon Thomas d653260ee5 Change enum variant name 2023-07-16 19:22:00 -04:00
Paul Sajna c8530e186e rvc stubs 2023-07-15 21:56:46 -04:00
Brandon Thomas aee52c04ff Fix failing builds (everything was working before)
Something mysteriously made my machine think we needed nightly.

Begone, nightly.
2023-07-15 21:55:59 -04:00
Brandon Thomas cd91acb4a8 fix compile error 2023-07-15 21:13:37 -04:00
Brandon Thomas d591472478 Merge pull request #49 from storytold/new-queries
new queries
2023-07-14 10:59:11 -04:00
Brandon Thomas c14073f06d new queries 2023-07-14 10:58:34 -04:00
Brandon Thomas edde256ff6 delete more duplicates 2023-06-27 15:33:50 -07:00
Brandon Thomas c6bcd25b19 get rid of takedown request models, duplicate models 2023-06-27 15:20:37 -07:00
Brandon Thomas 82c1563459 comments about users 2023-06-25 21:51:18 -07:00
Brandon Thomas 866ed89d9c refactor disabled endpoint filter 2023-06-25 21:21:53 -07:00
Brandon Thomas ac4ffb4f34 refactor 2023-06-25 20:57:36 -07:00
Brandon Thomas 41fe0866d4 refactor ip filter 2023-06-25 20:42:06 -07:00
Brandon Thomas de3e2e8924 cidr refactor 2023-06-25 20:28:31 -07:00
Brandon Thomas 800c9bd9d5 Add cidr filter 2023-06-25 20:11:59 -07:00
Brandon Thomas 1fe62a2570 Actix CIDR filter 2023-06-25 19:59:01 -07:00
Brandon Thomas f293b56089 Merge pull request #47 from storytold/bt-block-alibaba
block a few Alibaba IPs
2023-06-23 21:23:43 -04:00
Brandon Thomas a0a2d1434f block a few Alibaba IPs 2023-06-23 18:23:03 -07:00
Brandon Thomas 8ba1d9f303 Merge pull request #45 from storytold/bevy-experiments
roko bevy testing
2023-06-20 10:17:23 -04:00
Paul Sajna a11779e3aa roko bevy testing 2023-06-19 11:31:32 -07:00
Brandon Thomas 5c46fd7c60 easier to see logs in k8s 2023-06-17 19:02:28 -07:00
Brandon Thomas 09e26164b8 even beefier build machines 2023-06-17 18:32:58 -07:00
Brandon Thomas 8c24b0c755 log job successes 2023-06-17 18:18:15 -07:00
Brandon Thomas 83ae73d8d0 improperly counting successes 2023-06-17 18:05:34 -07:00
Brandon Thomas 1d0db0eeb9 install nvidia-container packages 2023-06-17 16:12:19 -07:00
Brandon Thomas 04581d06ee better exit status 2023-06-17 14:14:29 -07:00
Brandon Thomas a31ecc01ab configurable health threshold 2023-06-17 11:43:25 -07:00
Brandon Thomas be20e105ea Health check HTTP server runs and shuts down 2023-06-17 11:39:34 -07:00
Brandon Thomas 67864f3db2 Both job and HTTP server (doesn't respond to ctrl-c) 2023-06-17 11:05:27 -07:00
Brandon Thomas 10c277d9cf health check endpoint (not installed) 2023-06-17 07:49:27 -07:00
Brandon Thomas c6e4c2e274 job stats (consecutive success, failure) for inference-job 2023-06-16 21:42:00 -07:00
Brandon Thomas a3815ad64d Merge pull request #43 from storytold/saj-audiowmark
audiowmark wrapper
2023-05-29 23:23:37 -04:00
Paul Sajna 8cd48fcf58 audiowmark wrapper 2023-05-29 20:15:45 -07:00
Brandon Thomas 523c02326b more logging 2023-05-28 22:34:48 -07:00
Brandon Thomas 37eef276a0 more logger methods 2023-05-28 21:20:30 -07:00
Brandon Thomas f5cbedb230 fix logger 2023-05-28 21:01:14 -07:00
Brandon Thomas 6994a9c2ce documentation 2023-05-28 19:07:45 -07:00
Brandon Thomas 213742ff29 override python logger in dockerfile 2023-05-28 19:05:51 -07:00
Brandon Thomas df4f1e6a6c fix log levels 2023-05-28 19:04:09 -07:00
Brandon Thomas 64fa281bc1 parameter for flushing logs 2023-05-28 18:52:01 -07:00
Brandon Thomas bd386aa70b don't need the logger.py in isolation 2023-05-28 18:16:35 -07:00
Brandon Thomas 28875c9272 Add patches to upstream logger 2023-05-28 18:16:11 -07:00
Brandon Thomas a79bfc7a24 add version of logger we're using in production - we'll patch instead 2023-05-28 17:42:32 -07:00
Brandon Thomas ecca8ff17c we'll need to replace python logging in our container for performance 2023-05-28 17:33:04 -07:00
Brandon Thomas a3cabf6779 fix import 2023-05-28 00:53:59 -07:00
Brandon Thomas dd35a7cca9 ignore sensitive env vars 2023-05-28 00:52:05 -07:00
Brandon Thomas f876cac4cf job pause file 2023-05-27 23:23:42 -07:00
Brandon Thomas d2b840cb13 analytics queries 2023-05-27 00:32:09 -07:00
Brandon Thomas 85bac00194 password_reset table 2023-05-23 02:12:58 -07:00
Brandon Thomas 367a516f89 fix option typo 2023-05-23 01:41:01 -07:00
Brandon Thomas 5fe85072a2 pack more in docker container, "hacky fix" flag for so-vits-svc 2023-05-23 00:16:11 -07:00
Brandon Thomas 5867d2356c install vim 2023-05-22 22:21:53 -07:00
Brandon Thomas 275333c1ed netstat in docker image 2023-05-22 17:44:41 -07:00
Brandon Thomas 5ec2cde68f report errors better 2023-05-22 11:15:19 -07:00
Brandon Thomas daf5a63f86 cleanup temp dir 2023-05-22 02:44:34 -07:00
Brandon Thomas 2fe3d5dc99 add less to container 2023-05-22 02:38:20 -07:00
Brandon Thomas 44df952bd1 fix inference job path for VC uploaded audio 2023-05-22 01:51:12 -07:00
Brandon Thomas 5bf98f70d9 rework where temp storage lives: download vs workspace 2023-05-22 00:52:49 -07:00
Brandon Thomas af685b37cf fix keepalive redis in job 2023-05-21 22:11:19 -07:00
Brandon Thomas 0f7ff50cf6 better error logging 2023-05-21 20:01:08 -07:00
Brandon Thomas 1ae8d8d615 Fail jobs with elapsed keepalive 2023-05-21 18:16:44 -07:00
Brandon Thomas 63c0124267 test execution safety 2023-05-21 17:52:53 -07:00
Brandon Thomas 17e8c1942e codegen db 2023-05-21 17:49:58 -07:00
Brandon Thomas cf24a07bba Set keepalive key 2023-05-21 17:48:29 -07:00
Brandon Thomas 9ece30722f Enqueue inferene with keepalive flag 2023-05-21 17:21:17 -07:00
Brandon Thomas 9ab977d016 Add job table keepalive column 2023-05-21 17:04:02 -07:00
Brandon Thomas ebd3f52717 tmux to gpu container 2023-05-19 04:22:53 -07:00
Brandon Thomas 35a75e144a unban IP 2023-05-19 04:08:29 -07:00
Brandon Thomas 4b145a7419 Patch for firefox opus audio uploads failing 2023-05-19 04:06:36 -07:00
Brandon Thomas eb539e9142 query was wrong 2023-05-19 02:08:51 -07:00
Brandon Thomas 37604cdd7b config 2023-05-19 02:48:22 -04:00
Brandon Thomas f724031aa3 config 2023-05-19 02:44:14 -04:00
Brandon Thomas b8b10f6fc1 f0-method and frequency transpose for job 2023-05-18 12:17:08 -07:00
Brandon Thomas bd4bcab2c2 args for pitch/f0 method in http handler 2023-05-18 00:14:42 -07:00
Brandon Thomas caa3e3ae53 clear filesystem when full 2023-05-16 01:13:54 -07:00
Brandon Thomas 7cd8099ab5 variable length tts inference text 2023-05-15 00:47:57 -07:00
Brandon Thomas 6ec39b9c68 loyalty for VC contributors 2023-05-14 21:00:27 -07:00
Brandon Thomas c8b4b7daa0 analytics queries 2023-05-13 09:27:57 -07:00
Brandon Thomas a294549d02 queries 2023-05-09 12:55:07 -04:00
Brandon Thomas 33ff75274f add ripgrep 2023-05-04 06:17:12 -07:00
Brandon Thomas 945e5226c5 add a few tools to the container 2023-05-04 03:47:54 -07:00
Brandon Thomas 85a52cd26e config comments 2023-05-04 03:09:23 -04:00
Brandon Thomas 32ee4209da this configuration works 2023-05-04 03:07:38 -04:00
Brandon Thomas f94cdac47d local dev confi 2023-05-03 23:18:53 -04:00
Brandon Thomas a2ea870ac7 update nvidia driver ??? 2023-05-02 23:01:29 -07:00
Brandon Thomas a2c48d7469 kill subprocess if timeout elapses 2023-05-02 22:19:03 -07:00
Brandon Thomas fe3dd7d66b add routing tags to inference jobs 2023-05-02 21:31:39 -07:00
Brandon Thomas 88fae4ba89 timeout argument 2023-05-02 06:12:49 -07:00
Brandon Thomas 6505e67bf2 analytics 2023-05-02 04:37:21 -07:00
Brandon Thomas 3453fe0e3b add minor logging 2023-05-02 01:18:25 -07:00
Brandon Thomas 8b36d870d1 fix inference job, add env perameter for threshold 2023-05-01 06:52:34 -07:00
Brandon Thomas 9555ac51fe Skip jobs that aren't on filesystem 2023-05-01 06:42:41 -07:00
Brandon Thomas f00b4011b5 record inferecne duration stats to db 2023-05-01 04:17:36 -07:00
Brandon Thomas d1d208d714 add more timing stats to the jobs tables 2023-05-01 03:59:05 -07:00
Brandon Thomas a5ce9a3cc4 analytics 2023-04-30 08:16:27 -07:00
Brandon Thomas 6ad2468e59 analytics queries 2023-04-30 08:09:07 -07:00
Brandon Thomas c59695343f extend media/symphonia to work with webm+opus 2023-04-30 05:03:40 -07:00
Brandon Thomas 52a83609b6 test case for failing web browser uploads 2023-04-30 00:31:03 -07:00
Brandon Thomas f710b68a3e Fix broken tests, add testing script 2023-04-29 23:56:48 -07:00
Brandon Thomas 3d63e34ca1 analytics queries 2023-04-29 23:36:02 -07:00
Brandon Thomas 4a1f1441bf split analytics and operational queries 2023-04-29 06:08:34 -07:00
Brandon Thomas ee90f03436 add extra inference job stats 2023-04-29 05:11:57 -07:00
Brandon Thomas 1858aea619 new job queue stats endpoint 2023-04-29 04:58:51 -07:00
Brandon Thomas 592ba627be documentation 2023-04-29 03:53:31 -07:00
Brandon Thomas f754c6e41f add execution time to job queries 2023-04-29 03:10:31 -07:00
Brandon Thomas 54af3d301c Add execution millis columns to jobs tables 2023-04-29 02:41:49 -07:00
Brandon Thomas 22eeacf355 stricter compiler flags 2023-04-29 02:30:41 -07:00
Brandon Thomas 630aa497f3 note 2023-04-29 02:28:32 -07:00
Brandon Thomas 6e9c05c596 bootstrap / env config improved, on-prem, etc. 2023-04-29 02:26:13 -07:00
Brandon Thomas 3f781ad98f clean up worker hostname / cluster name in jobs 2023-04-29 02:16:17 -07:00
Brandon Thomas 5d038fdf8f codegen db 2023-04-29 01:50:14 -07:00
Brandon Thomas a09acf7c53 add extra metadata to inference and download jobs 2023-04-29 01:49:25 -07:00
Brandon Thomas 3ba64618c3 add tracking columns to generic_inference_job too 2023-04-29 00:17:44 -07:00
Brandon Thomas 73e583c7ed Add extra metadata tracking to generic download jobs table 2023-04-29 00:08:54 -07:00
Brandon Thomas 1d7a54f640 python for docker image 2023-04-28 16:09:38 -07:00
Brandon Thomas 552fae54a7 fix 2023-04-28 16:02:04 -07:00
Brandon Thomas 4d2ae85fd9 send hubert path for docker 2023-04-28 16:01:18 -07:00
Brandon Thomas 76775dec60 hubert path config 2023-04-28 15:54:53 -07:00
Brandon Thomas 22bc8d54a0 organize settings 2023-04-28 18:46:18 -04:00
Brandon Thomas 878bff867a fix dev env vars 2023-04-28 02:01:11 -04:00
Brandon Thomas 05d5bfc1a7 rename 2023-04-27 23:00:16 -07:00
Brandon Thomas 3acdd0b5e2 rebase fix 2023-04-28 01:47:40 -04:00
Brandon Thomas 1a7a74ee8a so-vits-svc auto_predict_f0 default to false, add option 2023-04-27 22:45:28 -07:00
Brandon Thomas 820f4ebc32 fix firefox/opus again 2023-04-27 15:54:13 -07:00
Brandon Thomas 423fb369db add audio/opus 2023-04-27 08:15:46 -07:00
Brandon Thomas 2a58079289 copy all env vars to child process 2023-04-27 07:19:46 -07:00
Brandon Thomas b2df674178 report mimetype errors 2023-04-27 02:00:31 -07:00
Brandon Thomas 1fd33e76b4 update base image 2023-04-27 01:02:23 -07:00
Brandon Thomas 824683b974 fixup dockerfile 2023-04-27 00:50:45 -07:00
Brandon Thomas 4bed11d21d change name again 2023-04-27 00:12:48 -07:00
Brandon Thomas 13bdcbdda6 fix names of actions 2023-04-27 00:11:40 -07:00
Brandon Thomas f49c724303 GPU + CPU dockerfiles 2023-04-27 00:09:31 -07:00
Brandon Thomas a9502c183b flexible config path for inference job 2023-04-26 10:17:49 -07:00
Brandon Thomas b469a237ce temporarily add nvidia/sound packages to rust monorepo images 2023-04-26 09:14:17 -07:00
Brandon Thomas 0df93c48c3 configs for download job 2023-04-26 07:48:31 -07:00
Brandon Thomas 070c192633 set config and test wav upfront and at runtime 2023-04-26 07:43:59 -07:00
Brandon Thomas 75a68c7e0f install python 2023-04-26 05:45:28 -07:00
Brandon Thomas b2db079cf5 env vars for docker 2023-04-26 04:46:40 -07:00
Brandon Thomas 6658281a1c try more env vars for caching 2023-04-26 04:38:27 -07:00
Brandon Thomas 8cb04f1dcb huggingface+nltk caches 2023-04-26 04:25:43 -07:00
Brandon Thomas 58f6ee68df more flexible command specification 2023-04-26 04:11:06 -07:00
Brandon Thomas d0cef7bec9 hack 2023-04-26 03:30:38 -07:00
Brandon Thomas 8eed406fbd inference-job hack (see if we can run without 'svc' command) 2023-04-26 01:31:02 -07:00
Brandon Thomas 44586c4cee copy the correct env var files 2023-04-25 20:56:18 -07:00
Brandon Thomas 02f5aacb8e more robust configuration of download-job 2023-04-25 20:55:18 -07:00
Brandon Thomas 001ff86ed3 robust configuration for download-job 2023-04-25 20:51:51 -07:00
Brandon Thomas 94b406eca2 much more robust app initialization 2023-04-25 20:44:59 -07:00
Brandon Thomas f8bdea1b3b build error fix 2023-04-25 17:20:21 -07:00
Brandon Thomas 8a37a7240c more DDoS IPs 2023-04-25 17:16:29 -07:00
Brandon Thomas a4c1abfe9c codegen 2023-04-25 06:07:01 -07:00
Brandon Thomas 6bb7a18676 report model title 2023-04-25 04:13:28 -07:00
Brandon Thomas a8173226ea report bucket hash in results 2023-04-25 03:00:31 -07:00
Brandon Thomas 692c3f64b6 two different firehose notifications 2023-04-25 01:33:47 -07:00
Brandon Thomas 4842b9bbc1 local dev config changes 2023-04-25 04:28:00 -04:00
Brandon Thomas a507f8bc38 nope, didn't work 2023-04-25 01:27:28 -07:00
Brandon Thomas 24f2c07199 try to fix duration bug 2023-04-25 01:25:13 -07:00
Brandon Thomas e871dde078 add upload source 2023-04-25 01:09:24 -07:00
Brandon Thomas 47ff379018 timeout 2023-04-24 02:53:59 -07:00
Brandon Thomas cdb0f37889 downgrode symphonia off-master branch to support opus for browsers 2023-04-24 02:32:13 -07:00
Brandon Thomas 6d7c3c6e5f maybe build with correct codecs? 2023-04-24 01:46:52 -07:00
Brandon Thomas 7b72d51bd3 debug logging 2023-04-24 01:11:37 -07:00
Brandon Thomas 11a9e1249c remove inference args (for now) 2023-04-23 23:29:09 -07:00
Brandon Thomas f3a6ddb70a premium priority levels 2023-04-23 23:05:24 -07:00
Brandon Thomas d2aa07228b simplify upload endpoint 2023-04-23 22:30:13 -07:00
Brandon Thomas a2c3668beb upload audio endpoint 2023-04-23 22:25:46 -07:00
Brandon Thomas 15d66a4530 propagate media input token to inference result 2023-04-23 20:48:09 -07:00
Brandon Thomas 75523811e4 ops query 2023-04-23 13:59:01 -07:00
Brandon Thomas 4672102da4 code changes stemming from schema changes 2023-04-23 05:03:37 -07:00
Brandon Thomas ca59189dd9 simplify media_uploads schema 2023-04-23 04:31:00 -07:00
Brandon Thomas 3564c1b459 more schema mods 2023-04-23 04:13:50 -07:00
Brandon Thomas 78263e3c49 media token type 2023-04-23 03:58:16 -07:00
Brandon Thomas e36fb66e05 migrate voice_conversion_results 2023-04-23 03:24:05 -07:00
Brandon Thomas 1540d87018 cleanup 2023-04-23 02:12:46 -07:00
Brandon Thomas 61f0869359 calculate result metadata 2023-04-23 02:02:49 -07:00
Brandon Thomas d23c7abfeb remove deprecated crate -> move hashing + mimetype functions out 2023-04-23 01:31:58 -07:00
Brandon Thomas 2d59891dee organize "file"-related/adjacent crates together 2023-04-23 00:27:09 -07:00
Brandon Thomas 2f86bc75ac crate to handle just mimetype ops 2023-04-23 00:08:59 -07:00
Brandon Thomas 8c5fb0bee2 badge granter for voice conversion models 2023-04-22 06:22:06 -07:00
Brandon Thomas b9f0d7749d fix transaction 2023-04-22 05:36:22 -07:00
Brandon Thomas b2caa3758a fix synthetic id 2023-04-22 05:22:06 -07:00
Brandon Thomas de656d4d74 fix 2023-04-22 04:47:09 -07:00
Brandon Thomas c803232a52 creator synthetic id 2023-04-22 04:44:40 -07:00
Brandon Thomas cd9b0080dd fix result upload directory 2023-04-22 04:04:15 -07:00
Brandon Thomas 6885eb5fc9 temporarily don't get file metadata 2023-04-22 03:55:25 -07:00
Brandon Thomas 100ad0da35 use public bucket client 2023-04-22 03:48:52 -07:00
Brandon Thomas 7010d56bc3 error handling json hydration 2023-04-22 03:44:10 -07:00
Brandon Thomas b34371eef0 try to only parse payload if not empty string 2023-04-22 03:42:29 -07:00
Brandon Thomas e6542438b5 create model storage directory 2023-04-22 03:29:26 -07:00
Brandon Thomas 287e3e5f0c inference for local dev 2023-04-22 02:17:58 -07:00
Brandon Thomas 8fcb908af9 code compiles 2023-04-22 02:14:44 -07:00
Brandon Thomas 56e84f434f forgot schema migrations 2023-04-22 02:05:44 -07:00
Brandon Thomas 925f2d78ae more sane schema for voice conversion results (bucket storage) 2023-04-22 02:04:44 -07:00
Brandon Thomas 90219594bb insert result record 2023-04-22 01:43:24 -07:00
Brandon Thomas 08e8560499 voice conversion result upload (WIP) 2023-04-21 23:27:20 -07:00
Brandon Thomas 9e38b9a2fc progress on so-vits-svc inference 2023-04-21 23:12:24 -07:00
Brandon Thomas e9a6320eab so-vits-svc inference (wip) 2023-04-21 21:51:37 -07:00
Brandon Thomas da05885d7d don't upload duplicates 2023-04-21 05:54:10 -07:00
Brandon Thomas ba9f716ff8 encode fewer bytes in inference jobs 2023-04-21 02:24:23 -07:00
Brandon Thomas 2633c5f0ef clean up tokens in vc inference 2023-04-21 02:05:14 -07:00
Brandon Thomas da805b4f1d clean upload hashing, better error messages 2023-04-21 00:22:58 -07:00
Brandon Thomas 9eb75c7eba list media uploads by session 2023-04-20 01:40:36 -07:00
Brandon Thomas 75607b3c12 tests, aspath 2023-04-20 00:27:37 -07:00
Brandon Thomas ce69b1b055 filesys crate cleanup 2023-04-20 00:18:29 -07:00
Brandon Thomas 9ee7fdbac5 move endpoint 2023-04-19 01:18:07 -07:00
Brandon Thomas 67e3ecebc1 Voice conversion model list endpoint 2023-04-19 00:43:27 -07:00
Brandon Thomas 52db0b7796 python3.6 2023-04-18 15:46:08 -07:00
Brandon Thomas 15fa5a2bee update image 2023-04-18 15:44:58 -07:00
Brandon Thomas 32babc99f0 update image 2023-04-18 12:47:58 -07:00
Brandon Thomas bdac796e51 update tt2 legacy inference to support docker, etc, unfront config 2023-04-18 12:37:30 -07:00
Brandon Thomas 18c50af218 Add "Deepfake CNN" level 2023-04-16 02:54:57 -07:00
Brandon Thomas 62cbde94bc anderson cooper voice config 2023-04-15 23:43:54 -07:00
Brandon Thomas b2f9b44e96 uncommitted changes 2023-04-15 23:36:26 -07:00
Brandon Thomas 6a48a5372c fix arg 2023-04-13 16:58:26 -07:00
Brandon Thomas 1b0368664a update image 2023-04-13 19:53:37 -04:00
Brandon Thomas 6a83524fd9 switch from 'onnx' to 'infer' for checking model integrity 2023-04-13 16:48:14 -07:00
Brandon Thomas 233247f3c0 config path 2023-04-13 15:59:16 -07:00
Brandon Thomas 60045a01d0 fix command 2023-04-13 13:33:57 -07:00
Brandon Thomas dc5dfd9831 update docker image 2023-04-13 13:24:07 -07:00
Brandon Thomas 7b36fc0b98 Update model check command (so-vits-svc), upgrade easyenv 2023-04-13 12:52:18 -07:00
Brandon Thomas 92e1d10809 wip so-vits-svc 2023-04-12 02:53:57 -07:00
Brandon Thomas 4a486cedd2 add so-vits-svc download type 2023-04-10 01:39:54 -07:00
Brandon Thomas 004cde84a7 move enum 2023-04-09 23:03:15 -07:00
Brandon Thomas 61b74500d8 codegen, a few enums 2023-04-09 22:55:21 -07:00
Brandon Thomas 8285826ed0 move where config lives 2023-04-09 20:16:13 -07:00
Brandon Thomas 03d0110ee6 ml docker image 2023-04-09 23:02:57 -04:00
Brandon Thomas 34517fbaff fix build errors 2023-04-09 19:18:07 -07:00
Brandon Thomas 839f7885fb try another path 2023-04-09 02:58:23 -07:00
Brandon Thomas cee3ffb217 fix docker env vars 2023-04-09 02:29:22 -07:00
Brandon Thomas 90198252b8 nltk env var 2023-04-09 02:24:41 -07:00
Brandon Thomas 165130321f try setting cache dir with docker now 2023-04-09 02:10:34 -07:00
Brandon Thomas 061c2c7b07 try to move cache dir again 2023-04-09 01:46:37 -07:00
Brandon Thomas 413960b6cf actually pass env to popen 2023-04-09 01:37:33 -07:00
Brandon Thomas cc4b7deaa9 huggingface cache dir 2023-04-09 01:27:50 -07:00
Brandon Thomas 8229a3cfb3 record entity token/type after job completes 2023-04-08 22:59:16 -07:00
Brandon Thomas b461c7e8e7 make field optional 2023-04-08 21:03:07 -07:00
Brandon Thomas c58f23c117 fixup inference-job 2023-04-08 20:52:51 -07:00
Brandon Thomas 048cc26b6b fixup storyteller-web 2023-04-08 20:50:22 -07:00
Brandon Thomas 9b5508d8c0 fixup mysql queries 2023-04-08 20:41:10 -07:00
Brandon Thomas a81428913d migrate generic_inference_jobs to include better indices/foreign keys 2023-04-08 19:54:58 -07:00
Brandon Thomas 756c8e09ae inference status endpoints 2023-04-08 18:49:59 -07:00
Brandon Thomas 5b97360724 update upload routes 2023-04-08 01:09:22 -07:00
Brandon Thomas 79ad78bdde header to route TT2 requests to new worker 2023-04-06 22:00:44 -07:00
Brandon Thomas 311299105b updated docker image 2023-04-07 00:48:24 -04:00
Brandon Thomas 9dad3a153c ml repo update 2023-04-06 22:50:21 -04:00
Brandon Thomas 93157b50c8 vits inference command roughly done, need to test 2023-04-06 18:58:07 -07:00
Brandon Thomas 47fbc1704d analytics 2023-04-06 16:48:31 -07:00
Brandon Thomas efba106d3c analytics query 2023-04-06 16:26:06 -07:00
Brandon Thomas e340eee250 progress on VITS (WIP) 2023-04-06 16:02:01 -07:00
Brandon Thomas 73be1bbf05 git rid of dated enum, start work on VITS inference 2023-04-06 14:35:29 -07:00
Brandon Thomas 81306d1a56 (untested) route VITS tts to generic job type 2023-04-05 01:48:50 -07:00
Brandon Thomas 8e341f7a83 strongly typed tts model type 2023-04-05 01:21:31 -07:00
Brandon Thomas 1978e5e653 db index on tts_models.tts_model_type 2023-04-05 00:53:52 -07:00
Brandon Thomas 8eaaad9b55 fix path error 2023-04-04 15:01:04 -07:00
Brandon Thomas 082c284add debugging 2023-04-04 14:47:15 -07:00
Brandon Thomas a83e5ff224 logging 2023-04-04 14:25:50 -07:00
Brandon Thomas abaaaf2fdb dev 2023-04-04 14:12:33 -07:00
Brandon Thomas 3409689566 fix path handling, introduce another (smaller scope) filesystem crate 2023-04-04 13:59:21 -07:00
Brandon Thomas 84c0e42964 fmt 2023-04-04 12:53:09 -07:00
Brandon Thomas b848c2b549 update docker image for appropriate cuda version 2023-04-04 15:50:06 -04:00
Brandon Thomas 85abbd8587 set python intepreter, fix path 2023-04-04 03:14:40 -07:00
Brandon Thomas b844191db7 downloader image 2023-04-04 06:08:19 -04:00
Brandon Thomas 0267a4799d fix a few errors with paths and quoting 2023-04-04 03:07:54 -07:00
Brandon Thomas c50060b161 no vits download venv 2023-04-04 02:57:39 -07:00
Brandon Thomas a508a843bd root dir 2023-04-04 02:56:25 -07:00
Brandon Thomas d0bad0c8fb docker image for testing 2023-04-04 05:50:48 -04:00
Brandon Thomas d2c99a7bad configure download-job for VITS (wip) 2023-04-04 00:24:28 -07:00
Brandon Thomas 681d923ae0 Add 'vits' enum to tts model tables 2023-04-04 00:11:48 -07:00
Brandon Thomas 9e563a0640 VITS download WIP (nearly done) 2023-04-03 23:41:18 -07:00
Brandon Thomas db30096cb9 rename module in inference-job 2023-04-03 21:43:42 -07:00
Brandon Thomas 76f9f5a850 Refactor download job, begin to work on VITS downloading 2023-04-03 21:37:07 -07:00
Brandon Thomas 3a0eafee11 report back on how to handle the upload 2023-04-02 21:34:38 -07:00
Brandon Thomas 9fbecd5568 enqueue vits uploads (in theory) 2023-04-02 21:21:16 -07:00
Brandon Thomas b3dedfc5a8 WIP VITS uploads 2023-04-02 21:05:05 -07:00
Brandon Thomas 8ded313e7b configure storyteller-web with more db (why so slow in dev?!) 2023-04-02 20:23:12 -07:00
Brandon Thomas e305928b45 flexible docker image sha 2023-04-02 20:01:45 -07:00
Brandon Thomas db48ee0fd8 mac frontend cors 2023-04-01 05:40:25 -04:00
Brandon Thomas 5beedcb5e3 add one color 2023-03-25 23:12:14 -04:00
Brandon Thomas e43feeb700 add random avatar/color to several endpoints 2023-03-25 19:54:12 -04:00
Brandon Thomas 38dc835ff4 add to event feed 2023-03-25 19:33:59 -04:00
Brandon Thomas 62b19b2b0e functions to generate random avatar + color 2023-03-25 19:04:37 -04:00
Brandon Thomas b7b92f4419 reduce user tokens to a single list 2023-03-23 02:49:33 -04:00
Brandon Thomas 7ee7ff3875 split ipv4/ipv6 files 2023-03-23 02:44:28 -04:00
Brandon Thomas 29237d3ead user tokens 2023-03-23 02:42:05 -04:00
Brandon Thomas 5afbfc0ec4 change troll sequences 2023-03-23 02:32:05 -04:00
Brandon Thomas 6e5a2d1789 more accounts 2023-03-23 02:13:07 -04:00
Brandon Thomas 13281ea3b1 more accounts 2023-03-23 02:10:36 -04:00
Brandon Thomas 98f80a68de documentation on removed ipv6 bans (in cloudflare, not our code) 2023-03-23 01:55:34 -04:00
Brandon Thomas 075fcfb81e unblock ipv6 2023-03-23 01:42:27 -04:00
Brandon Thomas a8c45cfac2 more accounts 2023-03-23 01:40:56 -04:00
Brandon Thomas f0a4f0a4f7 more ips / accounts 2023-03-23 01:09:24 -04:00
Brandon Thomas 3b78853d7c new user tokens and ip addresses 2023-03-23 01:03:58 -04:00
Brandon Thomas 98b6bb34a7 lighten up on the troll text 2023-03-23 01:02:18 -04:00
Brandon Thomas 4d759719f6 more IPs and user tokens 2023-03-23 00:52:41 -04:00
Brandon Thomas ac28ff8a39 start blocking 101soundboards IPs too 2023-03-23 00:50:03 -04:00
Brandon Thomas 43a33a00ee gitignore 2023-03-23 00:43:27 -04:00
Brandon Thomas 8bbc490b61 ignore vim temp files 2023-03-23 00:43:01 -04:00
Brandon Thomas 168a476b72 user token + ip address troll bans 2023-03-23 00:28:00 -04:00
Brandon Thomas 2cebfbb3fc more 101soundboards user tokens 2023-03-23 00:12:44 -04:00
Brandon Thomas d57e070c8c dedup 2023-03-22 23:58:06 -04:00
Brandon Thomas bde6b4d562 more user tokens 2023-03-22 23:56:12 -04:00
Brandon Thomas 9cde097d38 more stupid accounts 2023-03-22 23:53:13 -04:00
Brandon Thomas 1d7d1ba194 more 101soundboards user tokens 2023-03-22 23:50:36 -04:00
Brandon Thomas 632cf5a710 more 101soundboards user tokens 2023-03-22 23:40:19 -04:00
Brandon Thomas c2e287f6f4 more damned accounts 2023-03-22 22:55:26 -04:00
Brandon Thomas 844799e30e more 101soundboards accounts 2023-03-22 22:49:38 -04:00
Brandon Thomas c1bd8ed611 actually fix builds 2023-03-22 19:57:04 -04:00
Brandon Thomas 1466bca4d7 fix build 2023-03-22 18:32:36 -04:00
Brandon Thomas 12fdf24028 temp disable build 2023-03-22 18:28:24 -04:00
Brandon Thomas cefb770340 codegen db 2023-03-22 16:49:24 -04:00
Brandon Thomas e971ea98dc fix troll bans 2023-03-22 16:47:10 -04:00
Brandon Thomas 9ab8b366e9 ban 101 soundboards 2023-03-22 16:24:23 -04:00
Brandon Thomas 96563fa345 add a means to ban user tokens (or disable the service in weird ways) 2023-03-22 16:05:09 -04:00
Brandon Thomas 67ab94664c working locally 2023-03-22 15:34:02 -04:00
Brandon Thomas 99f1226115 I have to run this under Docker locally since it's ancient 2023-03-21 05:35:08 -04:00
Brandon Thomas 9c45a17b8d new inference subprocess command 2023-03-21 05:18:07 -04:00
Brandon Thomas 2cf5a6f942 TTS inference almost working on generic-inference-job 2023-03-21 02:01:13 -04:00
Brandon Thomas 071928d7bf port more TT2 logic 2023-03-21 00:49:21 -04:00
Brandon Thomas b8442b54ee cleanup 2023-03-21 00:18:39 -04:00
Brandon Thomas 530d891ce9 about to bolt on TT2 2023-03-21 00:11:42 -04:00
Brandon Thomas 972f119468 query tts model 2023-03-20 23:57:44 -04:00
Brandon Thomas 9004432620 generic inference jobs can be listed (hacky fix) 2023-03-20 23:42:23 -04:00
Brandon Thomas 81a3bc270b fix generic job list query 2023-03-20 23:11:38 -04:00
Brandon Thomas 84fe5a5762 enqueue generic inference jobs for tt2 2023-03-20 22:28:59 -04:00
Brandon Thomas a02934ca4e Add routing column to inference jobs (wip) 2023-03-20 21:58:08 -04:00
Brandon Thomas 4ddcd43e33 remove a lot of garbage from inference-job 2023-03-20 20:04:49 -04:00
Brandon Thomas 37be0174af put inference job back into "working"(?) order 2023-03-20 19:29:06 -04:00
Brandon Thomas f2e314d168 make sure this gets put in the image 2023-03-20 19:23:54 -04:00
Brandon Thomas 3bd216f00d rename crate, fix path handling, move some env vars 2023-03-20 19:21:58 -04:00
Brandon Thomas dc5885114d env internal crate - search multiple directories for env files 2023-03-20 18:59:43 -04:00
Brandon Thomas 47873497b8 comment APIs needed disambiguation 2023-03-18 18:18:45 -04:00
Brandon Thomas 554766bd2a Don't load IP ban sets that are empty 2023-03-18 13:25:14 -04:00
Brandon Thomas 86382bf219 rename files for better sorting 2023-03-18 13:13:54 -04:00
Brandon Thomas 59b1e28a14 unban IP 2023-03-18 13:12:52 -04:00
Brandon Thomas 3f88a741c9 private model logging + fix(?) 2023-03-18 13:06:19 -04:00
Brandon Thomas 2efcba5da6 fix broken path 2023-03-18 13:00:19 -04:00
Brandon Thomas b4718a2f13 block broken python script IP 104.251.211.22 2023-03-18 12:59:19 -04:00
Brandon Thomas efbb0000f3 fix list comment route 2023-03-18 07:02:50 -04:00
Brandon Thomas 0280e6b706 let's not do this table just yet 2023-03-18 05:37:14 -04:00
Brandon Thomas 79d568ee14 codegen db 2023-03-18 04:51:35 -04:00
Brandon Thomas 85630390a0 route bindings, list endpoint 2023-03-18 04:33:53 -04:00
Brandon Thomas 215b727bc1 create comment, delete comment handlers (not tested) 2023-03-18 03:54:30 -04:00
Brandon Thomas e29c0b4c68 edit comment query 2023-03-18 02:13:46 -04:00
Brandon Thomas c81e6af507 fix codegen script 2023-03-18 01:35:40 -04:00
Brandon Thomas 98d30917e5 rename crate 'database_queries' -> 'mysql_queries' because sqlite 2023-03-18 01:19:15 -04:00
Brandon Thomas e62e409857 refactor package directory structure 2023-03-18 01:11:10 -04:00
Brandon Thomas 417137a9a8 deprecate some crates 2023-03-18 01:07:01 -04:00
Brandon Thomas 0da1994f0c 101soundboards user tokens 2023-03-18 00:45:33 -04:00
Brandon Thomas 36d016c3c7 todo 2023-03-17 09:34:58 -04:00
Brandon Thomas b22e978e54 cleanup tts authorization logic 2023-03-17 08:52:04 -04:00
Brandon Thomas c387f47c97 (untested) disallow use of private models unless owner 2023-03-17 08:34:15 -04:00
Brandon Thomas 1a09676327 codegen db 2023-03-17 07:57:50 -04:00
Brandon Thomas e516f85e5f filter out models that are private/hidden 2023-03-17 07:54:57 -04:00
Brandon Thomas e16b86d36e analytics query for non-public tts models 2023-03-17 06:50:06 -04:00
Brandon Thomas 003a86cd31 delete comments 2023-03-17 06:42:04 -04:00
Brandon Thomas ebf48e20be list comments endpoint 2023-03-16 12:21:28 -04:00
Brandon Thomas df2444ddc0 insert comment 2023-03-16 11:09:26 -04:00
Brandon Thomas 6b6a2ceeba codegen 2023-03-16 10:42:46 -04:00
Brandon Thomas 80da0d9649 Add tts result audio path to result endpoint 2023-03-16 10:31:28 -04:00
Brandon Thomas b8fd0486c7 Untested query for inserting audit log items 2023-03-16 10:25:47 -04:00
Brandon Thomas 12ffb2ded1 new token types: comments, audit logs 2023-03-16 09:36:13 -04:00
Brandon Thomas f810256b9c new table enums 2023-03-16 09:28:49 -04:00
Brandon Thomas 461030b681 new tables (WIP) for comments + voice survey 2023-03-16 09:03:56 -04:00
Brandon Thomas a33ff3f060 20 trending english voices 2023-03-16 09:02:43 -04:00
Brandon Thomas 98736324dc 25 trending english voices 2023-03-16 09:01:57 -04:00
Brandon Thomas 89a6f36f1a gitignore for windows 2023-03-13 20:33:31 -04:00
Brandon Thomas ac5bcbdd16 aichatbot: handler for current level 2023-03-13 18:27:25 -04:00
Brandon Thomas 7566c0d71c use strum and default for more maintainable options 2023-03-13 18:20:58 -04:00
Brandon Thomas 0ca007b6e7 add level option for AiChatbotSidecar 2023-03-13 18:09:28 -04:00
Brandon Thomas cbe07e2b3e move test function out of aichatbot-sidecar 2023-03-13 17:50:04 -04:00
Brandon Thomas 495c01c38c Merge pull request #40 from storytold/bt-cache-session
cache sessions + purge cache on billing, edit profile, etc.
2023-03-12 05:19:28 -04:00
1444 changed files with 63287 additions and 15632 deletions
+12 -14
View File
@@ -14,10 +14,14 @@ MIGRATION_DIRECTORY=_sql/migrations/
# See https://github.com/launchbadge/sqlx/tree/master/sqlx-cli#readme
#SQLX_OFFLINE=true
# We can't serve HTTPS locally without self-signed certificate nonsense.
COOKIE_SECURE=false
COOKIE_DOMAIN=.jungle.horse
WEBSITE_HOMEPAGE_REDIRECT=http://jungle.horse
# NB(bt, 2023-03-20):
# These are used in storyteller-web, image-generation-service, and websocket-gateway.
# I'm moving them to env configs that live under storyteller-web/.env.
# This will break the other services for now.
# # We can't serve HTTPS locally without self-signed certificate nonsense.
# COOKIE_SECURE=false
# COOKIE_DOMAIN=.jungle.horse
# WEBSITE_HOMEPAGE_REDIRECT=http://jungle.horse
# Bucket config (non-secret)
REGION_NAME=us-east1
@@ -72,13 +76,7 @@ TTS_HIFIGAN_SUPERRES_VOCODER_MODEL_FILENAME=hifigan_superres_twilight_33000.pt
# Development key. Permissible to check in.
NEWRELIC_API_KEY=c402be1c4c4216ec83d0cfc0851520cfFFFFNRAL
# Stripe configs
# All secrets are development and okay to check in
STRIPE_CHECKOUT_SUCCESS_URL_PATH=/checkout_success
STRIPE_CHECKOUT_CANCEL_URL_PATH=/checkout_cancel
STRIPE_PORTAL_RETURN_URL_PATH=/portal_success
STRIPE_PORTAL_DEFAULT_CONFIG_ID=bpc_1LyPPREU5se17MekYiViZF12
# STRIPE_PORTAL_DEFAULT_CONFIG_ID=bpc_1M4jc3EU5se17MekmgdS4dDJ # Production (not a secret)
STRIPE_PUBLISHABLE_KEY=pk_test_51KZvWXEU5se17Mekx6e0gw32ovDF78k2eeaGctLIs8oQVxN6DerEp1BDqh6gLMYKli4VsTZoVGHoxq5RmwKMlxtP00r59UEEad
STRIPE_SECRET_KEY=sk_test_51KZvWXEU5se17Mek11ZdnWr4frnyw7tWOPuvl3pRzL290zvkT6KqcbGUl3fcvc3hA8oH6lWXz2kGWXXUlNcCuDxB003uVT9JX0
STRIPE_SECRET_WEBHOOK_SIGNING_KEY=whsec_40b60bd75768052532b63dbeefa7a1b163e182c3e657fb27fa906ef49a2cd59f
STORYTELLER_ROOT = "/home/tensor/code/storyteller" # your path here!
STORYTELLER_FRONTEND = "storyteller-frontend"
STORYTELLER_ML = "storyteller-ml"
STORYTELLER_RUST = "storyteller-rust"
-25
View File
@@ -1,25 +0,0 @@
# Environmental configurations specific to `download-job`.
# These are defaulted for dev and are easy to overwrite in production with K8s environment variables.
# !! DOES *NOT* CONTAIN SECRETS !!
WEB_DOWNLOADER_COMMAND=./download_internet_file.py
WEB_DOWNLOADER_MAYBE_VENV_SCRIPT=./python/bin/activate
WEB_DOWNLOADER_MAYBE_DOCKER_IMAGE=d73f28ce3ff6
SOFTVC_MODEL_CHECK_ROOT_DIRECTORY=/
SOFTVC_MODEL_CHECK_MAYBE_VENV_COMMAND="source python/bin/activate"
SOFTVC_MODEL_CHECK_MAYBE_DOCKER_IMAGE=a79106991ce3
TACOTRON_MODEL_CHECK_ROOT_DIRECTORY=/models/tts
TACOTRON_MODEL_CHECK_MAYBE_VENV_COMMAND="source python/bin/activate"
TACOTRON_MODEL_CHECK_COMMAND=./vocodes_model_check_tacotron.py
TACOTRON_MODEL_CHECK_MAYBE_DOCKER_IMAGE=5642d0fd7fc1
HIFIGAN_SOFTVC_MODEL_CHECK_ROOT_DIRECTORY=/
HIFIGAN_SOFTVC_MODEL_CHECK_MAYBE_VENV_COMMAND="source python/bin/activate"
HIFIGAN_SOFTVC_MODEL_CHECK_MAYBE_DOCKER_IMAGE=a79106991ce3
HIFIGAN_MODEL_CHECK_ROOT_DIRECTORY=/models/tts
HIFIGAN_MODEL_CHECK_MAYBE_VENV_COMMAND="source python/bin/activate"
HIFIGAN_MODEL_CHECK_COMMAND=./vocodes_model_check_hifigan.py
HIFIGAN_MODEL_CHECK_MAYBE_DOCKER_IMAGE=5642d0fd7fc1
+3 -2
View File
@@ -1,5 +1,6 @@
# Ignore certain code for Github language statistics
# https://github.com/github/linguist/blob/master/docs/overrides.md
old_code/trumpet-trumped.com/dictionary/cmudict-0.7b linguist-vendored
old_code/voder-vocodes-1.0/frontends/admin/node_modules linguist-vendored
windows/sqlite linguist-vendored
old_code/voder-vocodes-1.0/frontends/admin/node_modules/** linguist-vendored
test_data/html_scraping/** linguist-vendored
windows/sqlite/** linguist-vendored
+11
View File
@@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "cargo" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
@@ -2,7 +2,7 @@
# https://github.com/actions/starter-workflows/ci/docker-publish.yml
# If using base images, don't forget to add READ access, eg. from a package settings page like:
# https://github.com/orgs/storytold/packages/container/docker-base-images-rust-ssl/settings/actions_access
name: Publish Docker Container to GHCR
name: "[CPU] Build GHCR Docker artifact"
on:
push:
branches:
@@ -19,7 +19,9 @@ jobs:
# See also https://evilmartians.com/chronicles/build-images-on-github-actions-with-docker-layer-caching
build-docker-image:
name: "Build Docker Image"
runs-on: ubuntu-22.04 # runs-on: ubuntu-latest
#runs-on: ubuntu-22.04 # runs-on: ubuntu-latest
#runs-on: github-ubuntu-16core # NB: Premium GitHub runner with more cores
runs-on: github-ubuntu-64core # NB: Premium GitHub runner with more cores
if: github.event_name == 'push'
permissions:
packages: write
@@ -64,6 +66,7 @@ jobs:
username: ${{ github.actor }} # username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
image_name: storytold/storyteller-rust
dockerfile: service_cpu.Dockerfile
# NB: The `git_push_tag: true` option does not work as expected, so we put the sha in `image_tag`:
# https://github.com/whoan/docker-build-with-cache-action/issues/72
image_tag: latest,${{ github.sha }},${{ steps.vars.outputs.sha_short }}
+115
View File
@@ -0,0 +1,115 @@
# Adapted from
# https://github.com/actions/starter-workflows/ci/docker-publish.yml
# If using base images, don't forget to add READ access, eg. from a package settings page like:
# https://github.com/orgs/storytold/packages/container/docker-base-images-rust-ssl/settings/actions_access
name: "[GPU] Build GHCR Docker artifact"
on:
push:
branches:
# NB: Default-branch doesn't work, despite Github's documentation.
#- $default-branch
- master
env:
IMAGE_NAME: storyteller-rust-gpu
jobs:
# Push image to GitHub Packages.
# See also https://docs.docker.com/docker-hub/builds/
# See also https://depot.dev/blog/docker-layer-caching-in-github-actions
# See also https://evilmartians.com/chronicles/build-images-on-github-actions-with-docker-layer-caching
build-docker-image:
name: "Build Docker Image"
#runs-on: ubuntu-22.04 # runs-on: ubuntu-latest
#runs-on: github-ubuntu-16core # NB: Premium GitHub runner with more cores
runs-on: github-ubuntu-64core # NB: Premium GitHub runner with more cores
if: github.event_name == 'push'
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout@v3
# - uses: docker/setup-buildx-action@v1
# name: Set up Docker Buildx
- uses: docker/login-action@v1
name: Login to GitHub Container Registry
with:
registry: ghcr.io
username: ${{ github.actor }} # username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Calculate short SHA
id: vars
# echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
run: |
echo "sha_short=$(echo ${{ github.sha }} | cut -c1-12)" >> $GITHUB_OUTPUT
- name: Emit short SHA
run: |
echo "Full SHA: ${{ github.sha }}"
echo "Short SHA: ${{ steps.vars.outputs.sha_short }}"
#- uses: actions/cache@v2
# name: Cache Docker layers
# with:
# path: /tmp/.buildx-cache
# key: ${{ runner.os }}-buildx-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-buildx-
# Docs for this action are at https://github.com/marketplace/actions/build-docker-images-using-cache
- uses: whoan/docker-build-with-cache-action@v6
with:
registry: ghcr.io
username: ${{ github.actor }} # username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
image_name: storytold/storyteller-rust-gpu
dockerfile: service_gpu.Dockerfile
# NB: The `git_push_tag: true` option does not work as expected, so we put the sha in `image_tag`:
# https://github.com/whoan/docker-build-with-cache-action/issues/72
image_tag: latest,${{ github.sha }},${{ steps.vars.outputs.sha_short }}
# NB: Inject the Git SHA into the container so the servers can emit their own version:
build_extra_args: "--build-arg=GIT_SHA=${{ github.sha }}"
# - name: Build image
# run: |
# SHORT_SHA=$(echo ${GITHUB_SHA} | cut -c1-12)
# docker build . --file Dockerfile --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}" --build-arg GIT_SHA=${SHORT_SHA}
# - name: Push image to GitHub Container Registry
# run: |
# IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME
# # Change all uppercase to lowercase
# IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
# # Strip git ref prefix from version
# VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
# # Strip "v" prefix from tag name
# [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')
# # Use Docker `latest` tag convention
# [ "$VERSION" == "$default-branch" ] && VERSION=latest
# echo IMAGE_ID=$IMAGE_ID
# echo VERSION=$VERSION
# docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
# docker push $IMAGE_ID:$VERSION
# SHORT_SHA=$(echo ${GITHUB_SHA} | cut -c1-12)
# docker tag $IMAGE_NAME $IMAGE_ID:$SHORT_SHA
# docker push $IMAGE_ID:$SHORT_SHA
- name: Cleanup / Debug
# This job will run even on failures to help with debugging.
if: always()
run: |
echo "Report at final github action step:"
echo "Disk usage:"
pwd
du -hsc * | sort -hr
+8
View File
@@ -13,6 +13,10 @@ secrets.yaml
_develop/tools/.secrets
_develop/tools/db_secrets.toml
twitch_secrets.toml
crates/service/web/storyteller_web/config/storyteller-web.development-secrets.env
# New env secrets (per-app)
*-secrets.env
# Rust build directory
target/
@@ -49,3 +53,7 @@ models/tacotron2/python/
# Stuff I want to keep around, but not commit
scraps/
# Windows build files
# These should be built by the platform
windows/sqlite/sqlite3.exp
windows/sqlite/sqlite3.lib
+16
View File
@@ -3,12 +3,19 @@
<words>
<w>arpabet</w>
<w>backfill</w>
<w>canonicalized</w>
<w>canonicalizing</w>
<w>cashapp</w>
<w>cheermote</w>
<w>cidrs</w>
<w>crockford</w>
<w>culted</w>
<w>dalle</w>
<w>demuxer</w>
<w>dereferencing</w>
<w>downloaders</w>
<w>downvote</w>
<w>encodec</w>
<w>fakeyou</w>
<w>ffprobe</w>
<w>greenlight</w>
@@ -16,16 +23,25 @@
<w>greenlit</w>
<w>hanashi</w>
<w>hifigan</w>
<w>hparams</w>
<w>huggingface</w>
<w>lipsync</w>
<w>mochi</w>
<w>nestedness</w>
<w>pathbuf</w>
<w>replayable</w>
<w>retryably</w>
<w>scrollback</w>
<w>softvc</w>
<w>sql's</w>
<w>symphonia</w>
<w>tacotron</w>
<w>techcrunch</w>
<w>transcoded</w>
<w>transcodings</w>
<w>unpermitted</w>
<w>upserting</w>
<w>vits</w>
<w>vocoded</w>
<w>vocoder</w>
<w>vocoders</w>
Generated
+1206 -2252
View File
File diff suppressed because it is too large Load Diff
+28 -14
View File
@@ -11,40 +11,52 @@ members = [
# CLI tools for operations, etc.
"crates/cli/database_backup",
"crates/cli/database_cleanup",
"crates/cli/dev_database_seed",
"crates/cli/dev_upload_media_file",
"crates/cli/kubectl_pod_cleanup",
"crates/cli/scrape_test",
# Shared libraries
"crates/lib/actix_helpers",
"crates/lib/api_clients/cloud_storage",
"crates/lib/api_clients/google_drive_common",
"crates/lib/api_clients/twitch_common",
"crates/lib/bootstrap",
"crates/lib/caching/memory_caching",
"crates/lib/caching/redis_caching",
"crates/lib/clients/cloud_storage",
"crates/lib/clients/fakeyou_client",
"crates/lib/clients/google_drive_common",
"crates/lib/clients/twitch_common",
"crates/lib/concurrency",
"crates/lib/config", # TODO(bt, 2023-02-13): Deprecate or repurpose
"crates/lib/container_common", # TODO(bt, 2023-02-13): Pull apart and rehome pieces
"crates/lib/cookies",
"crates/lib/crockford",
"crates/lib/database_queries", # TODO(bt2, 2023-02-13): Rename "mysql_queries", though this will not live beyond a single DB
"crates/lib/datetimes",
"crates/lib/deprecated/config", # TODO(bt, 2023-02-13): Deprecate or repurpose
"crates/lib/deprecated/container_common", # TODO(bt, 2023-02-13): Pull apart and rehome pieces
"crates/lib/deprecated/http_server_common", # TODO(bt, 2023-03-20): Move useful pieces to actix_helpers
"crates/lib/easyenv", # NB: Vendored version of https://github.com/echelon/easyenv.rs that we'll improve.
"crates/lib/errors",
"crates/lib/files",
"crates/lib/hashing",
"crates/lib/http_server_common",
"crates/lib/files/archives",
"crates/lib/files/filesys",
"crates/lib/files/hashing",
"crates/lib/files/images",
"crates/lib/files/media",
"crates/lib/files/mimetypes",
"crates/lib/idempotency",
"crates/lib/jobs_common",
"crates/lib/media",
"crates/lib/mysql_queries",
"crates/lib/redis_common",
"crates/lib/sqlite_queries",
"crates/lib/server_environment",
"crates/lib/sqlx_mysql_helpers",
"crates/lib/storyteller_root",
"crates/lib/subprocess_common",
"crates/lib/testing",
"crates/lib/tts_common",
"crates/lib/url_config",
"crates/lib/user_input_common",
"crates/lib/web_scrapers",
#"crates/lib/api_clients/fakeyou_client",
#"crates/lib/sqlite_queries",
# Programs: Desktop apps
"crates/programs/aichatbot-sidecar",
#"crates/programs/aichatbot-sidecar",
# Services: API servers, jobs, workers, etc.
"crates/service/job/analytics_job",
@@ -56,7 +68,6 @@ members = [
"crates/service/job/w2l_inference_job",
"crates/service/other/twitch_pubsub_subscriber",
"crates/service/web/dummy_service",
"crates/service/web/image_generation_service",
"crates/service/web/storyteller_web",
"crates/service/web/websocket_gateway",
@@ -64,4 +75,7 @@ members = [
"crates/service/plugins/billing",
"crates/service/plugins/inference_workloads",
"crates/service/plugins/users",
# Vendored code
"crates/vendor/newrelic-telemetry-sdk-rust",
]
+61
View File
@@ -0,0 +1,61 @@
# Persist clippy check configurations:
# https://github.com/ericseppanen/cargo-cranky
# Clippy doesn't allow this (yet):
# https://github.com/rust-lang/rust-clippy/issues/6625
deny = [
# Rust
"unsafe_code", # We may remove this if needed
# Clippy - "serious" lints
"clippy::borrow_interior_mutable_const", # Seems dangerous to allow this. Eg. `const F = Lazy::new()`;
# Clippy - bad math
#"clippy::cast_possible_truncation", # Seems dangerous, eg f64 to u64.
#"clippy::cast_possible_wrap",
# Clippy - pointer safety / readability / correctness
"clippy::as_ptr_cast_mut",
"clippy::borrow_as_ptr",
"clippy::borrow_deref_ref",
# Clippy - performance
"clippy::cmp_owned",
"clippy::useless_vec",
"clippy::format_in_format_args",
#"clippy::redundant_clone",
#"clippy::unnecessary_to_owned",
#"clippy::vec_init_then_push",
# Clippy - "ergonomic" / "usage" lints
"clippy::option_option", # Lint: Don't ever Option<Option<T>>! Enums instead.
"clippy::zero_sized_map_values", # Lint: use a HashSet instead of HashMap<T, ()>.
# Clippy - "aesthetic" / "style" lints
"clippy::clone_double_ref", # Lint: feels safer/hygienic to disallow this, but I'm not strongly opposed.
"clippy::double_comparisons", # Lint: readability
"clippy::empty_structs_with_brackets", # Lint: {} feels less aesthetic than ;
"clippy::implicit_clone", # Lint: Recommendation here seems more idiomatic.
"clippy::needless_return", # Lint: not the worst offender, but let's try to keep unnecessary returns out.
"clippy::redundant_field_names", # Lint: Duplicate names is a burden when reading: you wonder why they're dupes.
"clippy::redundant_static_lifetimes", # Lint: feels more modern to elide static lifetimes
# Rust
"unused_imports", # These are easy to automatically cull
# Possible:
# "clippy::ptr_arg",
# "clippy::too_many_lines" (note: this is configurable)
]
warn = [
]
allow = [
# Rust
"deprecated", # Other systems can handle deprecated code instead of the linter
"missing_docs", # Not everything needs documentation. Too much documentation is bad. Literate code.
# Clippy
"clippy::if_same_then_else", # There are cases this is clearer! Branches may have notes / considerations.
"clippy::single_char_pattern", # This is like punishing trailing commas. Chars are dumb.
]
+4 -1
View File
@@ -43,4 +43,7 @@ Our Rust monorepo, which serves both our API surface area and our downloadable c
.' /"' | "' '_ One Rust Monorepo at a time
/_|.-'\ ,". '.'`__'-( \
/ ,"'"\,' `/ `-.|"
```
```
- [documentation](./_develop/docs)
- [tools, misc](./_develop)
+52
View File
@@ -0,0 +1,52 @@
README
======
This directory contains a collection of (hopefully organized and up to date) documentation on
running the various backend pieces, development setup, production maintenance, etc. Check out
all the markdown documents in this directory tree for information organized by topic.
Development / Setup
-------------------
- [Most of the general documents for cross-cutting setup of FakeYou.com live here.](./local_development)
- Some per-application documents (such as for `aichatbot-sidecar`) live as READMEs under that particular
application's code directory, eg. `/crates/{appCategory}/{appName}/README.md` (These are irrelevant
for most folks.)
Web API Overview
----------------
### FakeYou.com
* [FakeYou.com](https://fakeyou.com) is powered by the following applications:
* HTTP APIs:
* `storyteller-web` - HTTP API + database monolith for FakeYou
* Asynchronous Jobs:
* `download-job` - Handle async download of ML models (RVC, SVC, etc.)
* `inference-job` - Run async ML model inference (RVC, SVC, SadTalker, etc.)
This will handle most model inference going forward.
* `tts-download-job` - (*deprecated*) Async download of Tacotron2 models only
* `tts-inference-job` - (*deprecated*) Async TTS inference of Tacotron2 models only
* `w2l-download-job` - (*deprecated*) Async download of videos and images
* `w2l-inference-job` - (*deprecated*) Async W2L inference
### PowerStream
* [PowerStream](https://power.stream) (deprecated) is powered by the following applications:
* HTTP APIs:
* `storyteller-web` - HTTP + database monolith for FakeYou ***and*** PowerStream.
* Twitch API integration:
* `twitch-pubsub-subscriber` - Dynamically subscribes to Twitch PubSub for "active" users
* Websocket events:
* `websocket-gateway` - Websocket for users' browsers to pull down enriched Twitch events.
TODO
----
Notes / TODOs:
* Examples for good Actix+Sqlx Tests:
https://stackoverflow.com/questions/65370752/how-do-i-create-an-actix-web-server-that-accepts-both-sqlx-database-pools-and-tr
* Actix/sqlx runtime compat:
https://github.com/launchbadge/sqlx/issues/1117#issuecomment-801237734
-38
View File
@@ -1,38 +0,0 @@
AI Chatbot Sidecar
==================
This is the first app that doesn't run as a part of our SoA API architecture. (Though it is written such that we
could port it.) This app is responsible for generating all the content that goes into our streaming AI-powered TV
programs.
### Windows Installation
The application uses sqlite, which is tricky to install on Windows.
1. Put together an sqlite build directory containing the sources and dll file. One is checked in under this monorepo
in `./windows/sqlite` at the time of this writing, though that may change in the future.
2. Add environment variables for the sqlite build directory (see https://github.com/diesel-rs/diesel/issues/487)
* PATH (append the sqlite build directory to the end)
* SQLITE3_LIB_DIR (a new environment variable; set it to the sqllite build path)
3. Build the `sqlite3.lib` file with the following:
```
lib /def:sqlite3.def /out:sqlite3.lib /MACHINE:amd64
```
This must be done in "Developer Command Prompt for VS 2022" (or similar), not `cmd` or `PowerShell`.
4. Run the diesel_cli tool build
```
cargo install diesel_cli --no-default-features --features sqlite
```
If it still complains about the `sqlite3.lib` file not being found, be sure to double check that `echo %PATH%` shows
the updated PATH from the steps above.
+43
View File
@@ -0,0 +1,43 @@
Migrations guide
================
## Diesel Migrations
To run pending migrations, execute the following:
```bash
diesel migration run
```
To revert the last 3 migrations:
```bash
diesel migration revert -n 3
```
To reset the entire database (drop, migrate), run:
```bash
diesel database reset
```
## Server Query Codegen
We use SQLx instead of Diesel in the production server. It's typesafe
SQL instead of an ORM like Diesel.
SQLx connects to a database to derive type information, but obviously
cannot do this for builds in CI. In order to cache the types, we build
and check in a cache file (necessary for builds):
```bash
SQLX_OFFLINE=true cargo sqlx prepare
```
Now that we have multiple binaries, it's required to include all the queries in the main
binary so we can generate the cached queries as a single target. That's then executed
with:
```bash
SQLX_OFFLINE=true cargo sqlx prepare -- --bin storyteller-web
```
@@ -0,0 +1,216 @@
FakeYou Development Setup (bare metal)
======================================
Set your Environment .env File with the following paths, copy this in
The root path and the folders associated with the path.
This will change the base paths for development.
STORYTELLER_ROOT = "/home/tensor/code/storyteller" # change this
STORYTELLER_FRONTEND = "storyteller-frontend"
STORYTELLER_ML = "storyteller-ml"
STORYTELLER_RUST = "storyteller-rust"
This document describes how to run the FakeYou infrastructure on your development
machine's bare metal (no containers).
Setup instructions and development were tested and known to work on the following
platforms:
- Mac OS (Apple M2 silicon)
- Ubuntu 22.04
The applications (binary targets) you might be interested in running include, but
are not limited to:
- `storyteller-web`, the HTTP API server
- `download-job`, which downloads models from the web and stores them in GCS
- `inference-job`, which downloads models from GCS and runs inference with them
Setup Instructions
------------------
### (1) Install Rust
Install Rust [using this guide](https://www.rust-lang.org/learn/get-started). If it asks,
you'll want "stable" Rust, not "nightly" Rust. If it doesn't ask, it defaults to "stable".
### (2) Install the necessary libraries
Mac: (Lost the list, but it should match Linux. Install Homebrew.)
Ubuntu 22.04:
```bash
sudo apt install jq \
libmysqlclient-dev \
libsqlite3-dev \
pkgconf
```
(Note: jq is for combining mysql codegen outputs; pkgconf is if using openssl instead of rustls.)
### (3) Install MySQL server
Mac:
```bash
brew install mysql
```
If `mysql -uroot` fails, reboot the machine:
```bash
sudo reboot now
```
Ubuntu 22.04:
```bash
sudo apt install mysql-server
```
### (4) Install a `storyteller` user and table in MySQL
Connect to mysql:
```bash
# If the following command asks for a password, the password is typically "root"
sudo mysql -u root -p
```
Once in MySQL, run the following:
```mysql
use mysql;
CREATE DATABASE storyteller;
CREATE USER 'storyteller'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON storyteller.* TO 'storyteller'@'localhost';
```
Then verify access with `./dev_mysql_connect.sh`
### (5) Install Diesel CLI (for MySQL migrations):
```bash
cargo install diesel_cli \
--no-default-features \
--features mysql,sqlite
```
As of this writing, Mac [has some issues with Diesel CLI](https://github.com/diesel-rs/diesel/issues/2605)
and requires a few extra dependencies to be installed:
```bash
brew install libpq
```
### (6) Run the pending database migrations:
```bash
diesel migration run
```
You might get a scary message about `"Encountered unknown type for Mysql: enum"` -- you can ignore this
error (see below).
### (7) (optional) Install the SQLx CLI (if doing database development)
```bash
# NB(bt,2023-10-04): "--no-default-features" not working
# cargo install sqlx-cli --no-default-features --features rustls,mysql,sqlite
cargo install sqlx-cli --features rustls,mysql,sqlite
```
We'll be using diesel to manage the migrations, but sqlx within the app to actually perform queries.
Diesel is an immature ORM, which isn't a good tech bet, so we use sqlx as at-compile-time
typesafe SQL.
### (8) Install hosts file:
(This should be the same on Linux and Mac, but might differ for Windows.)
If you're developing against the frontend, it'll target development domains (eg. `dev.fakeyou.com`) instead
of `127.0.0.1` or `localhost`. You can make your machine route domains to localhost by editing your hosts
file (located at `/etc/hosts`) to include the following configuration lines:
```
127.0.0.1 dev.fakeyou.com
127.0.0.1 api.dev.fakeyou.com
127.0.0.1 devproxy.fakeyou.com
127.0.0.1 dev.storyteller.ai
127.0.0.1 api.dev.storyteller.ai
127.0.0.1 devproxy.storyteller.ai
```
### (9a) Install Redis
```
sudo apt install redis
```
### (9b) Run one or more applications:
DO NOT CHECK THESE TWO FILES INTO THE REPO
Ask Brandon for the .env-secrets and .storteller-web.development-secrets.env and place it in the root of the folder.
To start the HTTP API server,
```bash
cargo run --bin storyteller-web
```
Note that this compiles and runs the "development" binary. It's faster and easier to debug than the
optimized "production" build. To build a fully optimized production release,
run `cargo build --release --bin storyteller-web` . Note that this will take much longer.
DO NOT CHECK THESE TWO FILES INTO THE REPO
Ask Brandon for the .download-job.development-secrets.env and place it in
crates/service/job/download_job/config
Ask Brandon for the .inference-job.development-secrets.env and place it in
crates/service/job/inference_job/config
To download some ML models, run:
```bash
cargo run --bin download-job
cargo run --bin tts-download-job
```
If you want to run both the HTTP API and the jobs, you'll need to run both processes in different
terminals or tmux sessions.
Note also that the configurations pointing to the ML monorepo must be set up for each application.
Additionally, some development secrets may be needed (ask the team to share).
To execute ML inference, run:
```bash
cargo run --bin inference-job
cargo run --bin tts-inference-job
```
Again, note that the configurations pointing to the ML monorepo must be set up for each application.
Additionally, some development secrets may be needed (ask the team to share).
Solutions to Common Setup Problems
-----------------------------------
### [Fix] Sqlx Error when Performing Schema Migrations
You might get this error message during migration,
```
Encountered unknown type for Mysql: enum
thread 'main' panicked at 'internal error: entered unreachable code: Mysql only supports a closed set of types.
If you ever see this error message please open an issue at https://github.com/diesel-rs/diesel
containing a dump of your schema definition.', diesel_cli/src/print_schema.rs:310:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
I haven't found the cause (it doesn't happen on newer installs), but the migrations appear to work regardless
of this error message. You can essentially ignore it.
### [Fix] Can't connect to local MySQL after install on Ubuntu
- If MySql in local dev can't be connected to, [reset the accounts](https://linuxconfig.org/how-to-reset-root-mysql-mariadb-password-on-ubuntu-20-04-focal-fossa-linux).
@@ -1,5 +1,7 @@
# Local Kubernetes environment for standing up the APIs and their dependencies
(These are Paul's notes.)
- Install minikube, kubectl, docker, and musl from your OS package manager
- `rustup target add x86_64-unknown-linux-musl`
- `cargo build --release --bin storyteller-web --target=x86_64-unknown-linux-musl`
@@ -0,0 +1,56 @@
Local Development nginx proxy
=============================
It isn't necessary to use nginx for development, but it can be nice. Nginx allows for a more
sophisticated testing setup that makes cookie and CORS issues less of a pain.
You can use nginx to serve (locally-signed) SSL, redirect traffic to different ports, or run
multiple copies of the app side by side.
### Hosts file
Set the following configs in your `/etc/hosts` file (as you would probably do even without nginx),
```
127.0.0.1 dev.fakeyou.com
127.0.0.1 api.dev.fakeyou.com
127.0.0.1 devproxy.fakeyou.com
127.0.0.1 dev.storyteller.ai
127.0.0.1 api.dev.storyteller.ai
127.0.0.1 devproxy.storyteller.ai
# Deprecated development hostnames :
127.0.0.1 jungle.horse
127.0.0.1 api.jungle.horse
```
### Nginx installation and administration
Configure Nginx per the checked in Nginx configs (and instructions) in
the directory `/_develop/localdev/nginx-http-config`.
This should be straightforward, but if it isn't, contribute docs here.
### [Fix] Python 3.6 on Apple M1 Mac
Python3.6 isn't supported on Apple silicon, and it's not in homebrew. It can be installed with
[nix using Rosetta](https://stackoverflow.com/a/65980989):
Download: https://nixos.org/download.html#nix-quick-install
```
nix run nixpkgs.python36 -c python
```
Install venv:
```
nix run nixpkgs.python36 -c python -m venv python
```
Install other packages on Mac that aren't used in venv:
```
python3 -m pip install --user requests gdown youtube_dl
```
-248
View File
@@ -1,248 +0,0 @@
dev setup
=========
[Back to main README](../../README.md)
## Debugging and Fixing CUDA/PyTorch
See this spreadsheet for previous battles with version incompatibility:
https://docs.google.com/spreadsheets/d/1BEdLmwOzo3r83-iJn9sj6co1VT92t3lIeJ-lNH25bdQ/edit#gid=0
Ubuntu might upgrade the driver by accident, and it might need reinstallation. Who knows.
This stuff is a nightmare.
## Database Setup
### Mac Install
```
brew install mysql
# If mysql -uroot fails, reboot the machine:
sudo reboot now
```
### Linux Install
Install the following libraries, and see the notes further below about MySQL on Ubuntu 20.04.
```
jq # for combining mysql codegen outputs
libmysqlclient-dev
mysql-server
libsqlite3-dev
pkgconf # if using openssl instead of rustls
```
### Migrations
To manage the database and perform migrations, install the Rust tools diesel and sqlx.
We'll be using diesel to manage the migrations, but sqlx within the app to actually perform queries.
Diesel is an ORM, which is dumb, so we use sqlx as at-compile-time typesafe SQL.
The CLI is necessary to perform codegen:
```
sudo apt-get install libmysqlclient-dev
cargo install sqlx-cli --no-default-features --features rustls,mysql,sqlite
```
Diesel now supports configuring the migration directory via an environment variable,
so we can install the currently published version:
```
cargo install diesel_cli \
--no-default-features \
--features mysql,sqlite
```
If the modern version fails, try installing a cherry-picked version with a
TOML-based migration directory configuration:
```
cargo install diesel_cli \
--git https://github.com/diesel-rs/diesel.git \
--rev a213fe232a122f35a812b0ce0269708a1845a4c9 \
--no-default-features \
--features mysql
```
#### Sqlx Error on Linux when Performing Schema Migrations
You might get this error message during migration,
```
Encountered unknown type for Mysql: enum
thread 'main' panicked at 'internal error: entered unreachable code: Mysql only supports a closed set of types.
If you ever see this error message please open an issue at https://github.com/diesel-rs/diesel containing a dump of your schema definition.', diesel_cli/src/print_schema.rs:310:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
I haven't found the cause (it doesn't happen on Mac), but the migrations appear to work regardless of the error message.
#### Linux database notes
If MySql in local dev can't be connected to, reset the accounts:
https://linuxconfig.org/how-to-reset-root-mysql-mariadb-password-on-ubuntu-20-04-focal-fossa-linux
#### MySql on Ubuntu 22.04
Should work largely out of the box. We'll need a dev account:
```
# Connect to mysql:
# sudo mysql -u root -p (password is "root")
use mysql;
CREATE USER 'storyteller'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON storyteller.* TO 'storyteller'@'localhost';
```
Then verify with `./dev_mysql_connect.sh`
#### Fixing dev MySql on Ubuntu 20.04
For some reason, the MySql default install on 20.04 gave me a bunch of trouble.
In retrospect, I _think_ this is because 'root@localhost' requires sudo to access, but if this
gives any trouble in the future, here's how I got around it (two full hours of distraction!)
```
sudo apt-get install mysql-server
# But for some reason the default password doesn't work and diesel/sqlx can't connect?
# Kill everything
sudo apt purge mysql-server mysql-client mysql-common
sudo apt autoremove
sudo mv -iv /var/lib/mysql /var/tmp/mysql-backup
sudo rm -rf /var/lib/mysql*
sudo /usr/bin/mysql_secure_installation
# still no work...
sudo systemctl stop mysql.service
# ugh, it wasn't chowned or created (both states observed in different installs)…
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
flush privileges;
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
sudo killall -u mysql
sudo systemctl restart mysql.service
# now it works
sudo mysql -u root -p
# but now I have to use "sudo" !?!?
use mysql;
CREATE USER 'storyteller'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON storyteller.* TO 'storyteller'@'localhost';
```
### Install Diesel (migrations only)
We use Diesel to manage migrations, but we don't use it in server code.
Actual server code uses SQLx. To install the CLI tool, run the following:
```
cargo install diesel_cli
```
Mac [has issues](https://github.com/diesel-rs/diesel/issues/2605) and requires a few dependencies:
```
brew install libpq
```
### Database migrations
To reset the entire database (drop, migrate), run:
```
diesel database reset
```
To migrate at the current step and beyond:
```
diesel migration run
```
To undo migrations at the current step:
```
diesel migration redo
```
### Server Query Codegen
We use SQLx instead of Diesel in the production server. It's typesafe
SQL instead of an ORM like Diesel.
SQLx connects to a database to derive type information, but obviously
cannot do this for builds in CI. In order to cache the types, we build
and check in a cache file (necessary for builds):
```
SQLX_OFFLINE=true cargo sqlx prepare
```
Now that we have multiple binaries, it's required to include all the queries in the main
binary so we can generate the cached queries as a single target. That's then executed
with:
```
SQLX_OFFLINE=true cargo sqlx prepare -- --bin storyteller-web
```
### Setting Up a Local Nginx Proxy
Set up a local nginx to proxy to the frontend and backend so cookie issues aren't annoying
Configure Nginx per the checked in Nginx configs (and instructions) in `localdev/nginx-http-config`.
```
And in /etc/hosts,
```
127.0.0.1 jungle.horse
127.0.0.1 api.jungle.horse
```
### Python 3.6 on Apple M1 Mac
Python3.6 isn't supported on Apple silicon, and it's not in homebrew. It can be installed with
[nix using Rosetta](https://stackoverflow.com/a/65980989):
Download: https://nixos.org/download.html#nix-quick-install
```
nix run nixpkgs.python36 -c python
```
Install venv:
```
nix run nixpkgs.python36 -c python -m venv python
```
Install other packages on Mac that aren't used in venv:
```
python3 -m pip install --user requests gdown youtube_dl
```
-77
View File
@@ -1,77 +0,0 @@
old readme
==========
Contents of the main README.md, which will always be woefully out of date. Docs will migrate into this folder on a
per-subject basis. App-specific docs will live under each app.
Application overview
--------------------
* [FakeYou.com](https://fakeyou.com) is powered by:
* HTTP APIs:
* `storyteller-web` - HTTP + database monolith for FakeYou
* Asynchronous Jobs:
* `tts-download-job` - Async download of models
* `tts-inference-job` - Async TTS inference
* `w2l-download-job` - Async download of videos and images
* `w2l-inference-job` - Async W2L inference
* [StorytellerStream](https://storyteller.stream) is powered by:
* HTTP APIs:
* `storyteller-web` - HTTP + database monolith for FakeYou
* Websocket events:
* `websocket-gateway` - Websocket to pull down Twitch events.
* Twitch API integration:
* `twitch-pubsub-subscriber` - Dynamically subscribes to Twitch PubSub for "active" users
Schema and API notes
--------------------
* [Redis Schema Notes README](_docs/redis_schema.md)
Local development
-----------------
[Local development setup README](_docs/local_development_setup.md)
Production and Deployment
-------------------------
[Production builds and deployment README](_docs/production_builds_and_deployment.md)
Development notes
-----------------
[Development notes README](_docs/development_notes.md)
Dump a MySQL report
-------------------
```
mysql -u storyteller \
-pPasswordHere \
-h IP_HERE \
-P 3306 \
-D storyteller \
-B \
-e "select * from voice_clone_requests;" | sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > voice_clone_report.csv
```
TODO
----
* Revise this README to be more useful.
Notes / TODOs:
* Examples for good Actix+Sqlx Tests:
https://stackoverflow.com/questions/65370752/how-do-i-create-an-actix-web-server-that-accepts-both-sqlx-database-pools-and-tr
* Actix/sqlx runtime compat:
https://github.com/launchbadge/sqlx/issues/1117#issuecomment-801237734
* Redis caching of more endpoints
* Jobs for analytics queries (#uses per model, etc)
* Jobs for ingesting Discord, Twitter, Reddit RPAN chat, Twitch chat (not PubSub), etc.
@@ -0,0 +1,17 @@
Production Database
===================
Secrets can be subbed in for `.env` and the standard diesel migration tooling will work.
Dump a MySQL report
-------------------
```bash
mysql -u storyteller \
-pPasswordHere \
-h IP_HERE \
-P 3306 \
-D storyteller \
-B \
-e "select * from voice_clone_requests;" | sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > voice_clone_report.csv
```
@@ -1,6 +1,8 @@
database schema
================
(This is woefully incomplete and unmaintained.)
Twitch Model
------------
+6
View File
@@ -0,0 +1,6 @@
# Secrets
db_secrets.toml
# Python Virtual Env
python/
+100
View File
@@ -0,0 +1,100 @@
#!/usr/bin/env python
# FIXME: Needs packages 'toml' and 'mysql-connector-python'. Put in requirements.txt.
import time
import toml
import mysql.connector
DB_SECRETS_FILE = 'db_secrets.toml'
# TODO: Share db-related setup when more scripts are added.
def read_database_secrets(secrets_file = DB_SECRETS_FILE):
secrets = None
with open(secrets_file, "r") as f:
secrets = toml.load(f)
required_keys = ['database', 'hostname', 'port', 'password', 'username']
for key in required_keys:
if key not in secrets:
raise Exception(f"Required key '#{key}' not present")
return secrets
def connect_to_mysql():
secrets = read_database_secrets()
connection = mysql.connector.connect(
host = secrets['hostname'],
port = secrets['port'],
user = secrets['username'],
password = secrets['password'],
database = secrets['database'],
)
return connection
connection = connect_to_mysql()
cursor = connection.cursor()
SAFE_ID = 76000000 # Reasonably completed on 2022-06-24
LIMIT = 100000
#def get_record_count():
# query = f"SELECT COUNT(*) FROM tts_inference_jobs"
# cursor.execute(query)
# result = cursor.fetchall()
# print(result)
# return result[0]
#
##total_count = get_record_count()
#total_count = 75082057
total_count = 21925602
def get_user_tokens(cursor):
query = f"""
SELECT
r.maybe_creator_user_token, r.creator_ip_address
FROM
tts_results as r
LEFT OUTER JOIN
users as u
ON
r.maybe_creator_user_token = u.token
WHERE
r.raw_inference_text LIKE '%spidermant%'
AND r.created_at > ( CURDATE() - INTERVAL 1 HOUR )
"""
cursor.execute(query)
results = cursor.fetchall()
user_tokens = [row[0] for row in results]
user_tokens = [token for token in user_tokens if token is not None]
user_tokens = set(user_tokens)
ip_addresses = [row[1] for row in results]
ip_addresses = [ip for ip in ip_addresses if ip is not None]
ip_addresses = set(ip_addresses)
return (user_tokens, ip_addresses)
(user_tokens, ip_addresses) = get_user_tokens(cursor)
print(user_tokens)
print(len(user_tokens))
print(len(ip_addresses))
with open('101_user_tokens.txt', 'w') as f:
for user_token in user_tokens:
f.write(user_token)
f.write("\n")
with open('101_ip_addresses.txt', 'w') as f:
for ip in ip_addresses:
f.write(ip)
f.write("\n")
+3
View File
@@ -0,0 +1,3 @@
mysql-connector-python==8.0.32
protobuf==3.20.3
toml==0.10.2
+48
View File
@@ -0,0 +1,48 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- 1) Find uploads that failed (recently)
select
id,
token,
download_type,
title,
download_url,
status,
attempt_count
from generic_download_jobs
where status IN ('started', 'attempt_failed', 'complete_failure', 'dead')
and download_type NOT IN ('vits', 'hifigan')
and created_at > NOW() - INTERVAL 15 DAY;
-- 2) Then restart them
-- NB: Double inner query is to get away from query optimizer:
-- "You can't specify target table 'generic_download_jobs' for update in FROM clause"
update generic_download_jobs
set
status='pending',
attempt_count=0
where token IN (
select token from (
select token
from generic_download_jobs
where status IN ('started', 'attempt_failed', 'complete_failure', 'dead')
and download_type NOT IN ('vits', 'hifigan')
and created_at > NOW() - INTERVAL 15 DAY
) as x
);
-- Kill bad pending downloads
-- eg. awful voices, like Hitler
update generic_download_jobs
set
status='dead',
download_url = CONCAT('NOPE', download_url)
where token = 'jdown_ssape40dxbfgvhtsmedt34418x'
limit 1;
+18
View File
@@ -0,0 +1,18 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Kill routed jobs
update generic_inference_jobs set status = 'dead' where maybe_routing_tag IS NOT NULL limit 100;
-- Get pending jobs
select count(*) from generic_inference_jobs where status = 'pending';
update generic_inference_jobs
set status = 'dead'
where status IN ('pending', 'started', 'attempt_failed');
update generic_inference_jobs
set status = 'dead'
where status IN ('pending', 'started', 'attempt_failed')
and maybe_model_type IN ('sad_talker', 'so_vits_svc');
+24
View File
@@ -0,0 +1,24 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Kill pending jobs
update tts_inference_jobs set status = 'dead' where status = 'pending';
-- Kill all low priority pending, waiting, and in-progress jobs
update tts_inference_jobs
set status = 'dead'
where status IN ('pending', 'started', 'attempt_failed')
and priority_level IN (0, 1);
-- Kill all pending jobs
update tts_inference_jobs
set status = 'dead'
where status = 'pending';
-- Kill all waiting and in-progress jobs
update tts_inference_jobs
set status = 'dead'
where status IN ('pending', 'started', 'attempt_failed');
+11
View File
@@ -0,0 +1,11 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Delete TTS results for a single model
-- Do this in short batches so a lock isn't held for prohibitively long.
update tts_results
set mod_deleted_at = NOW()
where model_token = 'TM:ztt5s1be5tq6'
and mod_deleted_at IS NULL
limit 5000;
+35
View File
@@ -0,0 +1,35 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Upgrade top TTS model uploaders to a loyalty plan
update users
set maybe_loyalty_program_key = 'fakeyou_contributor'
where token IN (
select creator_user_token from
(
select count(*) as upload_count,
creator_user_token
from tts_models
group by creator_user_token
having upload_count >= 10
order by upload_count desc
) as t
);
-- Upgrade top VC model uploaders to a loyalty plan
update users
set maybe_loyalty_program_key = 'fakeyou_contributor'
where token IN (
select creator_user_token from
(
select count(*) as upload_count,
creator_user_token
from voice_conversion_models
group by creator_user_token
having upload_count >= 10
order by upload_count desc
) as t
);
+315
View File
@@ -0,0 +1,315 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Remove temporary test models
update voice_conversion_models
set
mod_deleted_at = NOW(),
maybe_mod_comments = 'temporary test model'
where token IN (
'vcm_jt9mdz9xjjcb',
'vcm_4xzkzdhs4kk5',
'vcm_502wkt2pca3y'
);
-- Remove broken models
update voice_conversion_models
set
mod_deleted_at = NOW(),
maybe_mod_comments = 'broken model'
where token IN (
'vcm_982y9g6v3jrg',
'vcm_16rpyehf7f0a',
'vcm_8vjtz3dbnw17',
'vcm_tc9mwr60cjth',
'vcm_bshsyp01w9vg',
'vcm_31whj8apmqj7',
'vcm_84qa0an44p8p',
'vcm_9xx4v5qz5fbg',
'vcm_7zp2b2hs2at2',
'vcm_zhvk0mnnb7zp',
'vcm_1vc4scq9qp6m',
'vcm_sr1b54mwy0ym',
'vcm_qx96y8aasydk'
);
-- Remove duplicate models
update voice_conversion_models
set
mod_deleted_at = NOW(),
maybe_mod_comments = 'duplicate model'
where token IN (
'vcm_6w21em1bs7q3',
'vcm_sbhvyj7926w4',
'vcm_anv469g89adz',
'vcm_xsx5yx585c7x',
'vcm_dpahzjjpkf18',
'vcm_y09dqe6zgwyk',
'vcm_xrp96dwgppv2',
'vcm_84awjbjxts6n',
'vcm_b2x2sn8kf28j',
'vcm_41nw6xgr5x3v',
'vcm_a6x83tk0ttf2',
'vcm_dgjgqxq5w97j',
'vcm_59k5j452x7xy',
'vcm_09p6vqnk7n05',
'vcm_attanwh383hg',
'vcm_t8d4f6w9pa8t',
'vcm_s8s4q4c65xsy',
'vcm_6e2av8pmkyz5',
'vcm_82x5f330z4wf',
'vcm_z6bax4kvjdx6',
'vcm_v8hf35cyq3ft',
'vcm_1h9b4v6nxmf5',
'vcm_781bzn81qf6k',
'vcm_w0xjjsexktby',
'vcm_awsq3q4c711w',
'vcm_kttxt7wgb6s6',
'vcm_ets26z5fpt8d',
'vcm_wjrw59wmwcrr',
'vcm_bebgka17n0sr',
'vcm_6mj0x3qd7yfd',
'vcm_b71ke4fm61nx',
'vcm_srz3gas5ra4d',
'vcm_k64jj2t2j05b',
'vcm_140rd035642m',
'vcm_5y93wgr90s91',
'vcm_jwp6p08byjn9',
'vcm_ets26z5fpt8d',
'vcm_7yfwzsyvrpq4',
'vcm_f1vq0hp0tes2',
'vcm_9f05kg36q4fg',
'vcm_1xs9c2sgykgy',
'vcm_hnd9z2fxq661',
'vcm_jxd74xhcszry',
'vcm_tvk0g6dwg3yv',
'vcm_vrsdv4ahterx',
'vcm_e2debszbm8vt',
'vcm_rh98fw9a9an1',
'vcm_2bvd1gmysaxf',
'vcm_2cqq1j33y2hr',
'vcm_ysj7kwb96kcp',
'vcm_ef0eaneyr72p',
'vcm_t59d7vdxtqs4',
'vcm_90hrepevshtg',
'vcm_4st9ex13vnbh',
'vcm_30fne697qhab',
'vcm_qy7evy03p6tg',
'vcm_775eze19tv0n',
'vcm_4bzkfvaexbv3',
'vcm_08v2tdga8v93',
'vcm_whxeyxzw12q6',
'vcm_0rj5b6npxfkh',
'vcm_hv22emyfkex4',
'vcm_a1fmtgthezs0',
'vcm_z9fpz1p5bpr2',
'vcm_2y8ck2dbppkq',
'vcm_0c9h3mzc4kre',
'vcm_m0z3tt4gytm9'
);
-- Remove duplicate models (2)
update voice_conversion_models
set
mod_deleted_at = NOW(),
maybe_mod_comments = 'duplicate model'
where token IN (
'vcm_v790w43dv3ce',
'vcm_xmzm7eextc3n',
'vcm_r3b91dr0eta5',
'vcm_p1rpmfmckd5c',
'vcm_cpajdgenjfw7',
'vcm_qchjs52fsr9y',
'vcm_pkkjy8c6cpt3',
'vcm_f8ra6j8d6wgv',
'vcm_mhsz9bjn19tw',
'vcm_btd5zab2jdqv',
'vcm_q5evptaaqne3',
'vcm_wqtqs4gj2zmj',
'vcm_14rv35fct2ay',
'vcm_418j0h41qy8a',
'vcm_3m5m6bpm0rt2',
'vcm_gdw4krmaxpza',
'vcm_b3xhdb8zymvf',
'vcm_aak9m6nvj3am',
'vcm_mcw5kn21bbjh',
'vcm_fydr6ts21mtf',
'vcm_zpw560jzyqpw',
'vcm_w24wcctnxbxf',
'vcm_ya5tpzdcvvcz',
'vcm_1ctmgrjtn1j7',
'vcm_rk8fycc0reb2',
'vcm_e2c8942vky34',
'vcm_wevg8cf3hcw8',
'vcm_6hzbyg453xb9',
'vcm_xqfffshe2g0q',
'vcm_32j1zmcvn61n'
);
-- Remove duplicate models (3)
update voice_conversion_models
set
mod_deleted_at = NOW(),
maybe_mod_comments = 'duplicate model'
where token IN (
'vcm_46sbq0r9hfjk',
'vcm_k8nseqy8jyte',
'vcm_gs8qam6npe46',
'vcm_djh15g49cxm8',
'vcm_d7zygjnp35my',
'vcm_334yqeq11rpm',
'vcm_6m3b6121318k',
'vcm_a419w7gw6jrt',
'vcm_wtyszwjwq0ts',
'vcm_0q9t2azhqvf1',
'vcm_fx2k40ffzjqg',
'vcm_wvjqmzd8y4mt',
'vcm_b2635v3p50je',
'vcm_zfyr07z2d0rb',
'vcm_yn2sn5j2jwed',
'vcm_z596ja3yvyy9',
'vcm_a1p854bn1sjs',
'vcm_fv24vmr93805',
'vcm_0y7vsc2e9s3r',
'vcm_5aqzq0d246rm',
'vcm_trvge62x7je9',
'vcm_sghga68kwggk',
'vcm_raxcc33pj608',
'vcm_a66b3va0sj64',
'vcm_bd1rjawqypw6',
'vcm_evzff14n721p',
'vcm_jnrr4ht9f42f'
);
-- Remove duplicate models (4)
update voice_conversion_models
set
mod_deleted_at = NOW(),
maybe_mod_comments = 'duplicate model'
where token IN (
'vcm_ds2pz63sagan',
'vcm_wkczgvq2fjqq',
'vcm_z8137w1rddse',
'vcm_gknzxybf4erw',
'vcm_z0m1qtmawccn',
'vcm_yek6pmgvbb1s',
'vcm_qqhnjwsjrvnx',
'vcm_8fetm7qz94cp',
'vcm_kz1zm1d269j0',
'vcm_rfnkc8g5gbbv',
'vcm_4ncqxetfe7dm',
'vcm_qkpfem2a153n',
'vcm_z5jkd9r4cawf',
'vcm_vgh6ja6zzj0p',
'vcm_bd473tdrrzhk',
'vcm_2k7tmx3ndd3y',
'vcm_weyxz516dd2m',
'vcm_1j4kpjvgsj6k',
'vcm_211g17ea44fw',
'vcm_7zkbj6be0yr5',
'vcm_nnaaxeqy4xj6',
'vcm_wp7sgtz6mhc4',
'vcm_h5w7fzhxcpxm',
'vcm_7d5rxpqkjy07',
'vcm_9vhjvrptygfz',
'vcm_4qbbawahnkvb',
'vcm_am870m8162at',
'vcm_cftdb5227qt5',
'vcm_m7vv1mcxfxvm',
'vcm_qn8vsvvh1rqc',
'vcm_erhvqjvk1dsk',
'vcm_4zs8tdrw971e',
'vcm_4zs8tdrw971e',
'vcm_z8htjaejr1wx',
'vcm_99wdsazefjwr',
'vcm_k1at1sbepvqv',
'vcm_xcp34f5d7ygs',
'vcm_8v8srq9sx7cq',
'vcm_f2yf7bxmk8h5',
'vcm_gvtrjte4as1s',
'vcm_2s0y50avy43b',
'vcm_r638ygfxkpmq',
'vcm_1ttm6pxcpqna',
'vcm_0ytfkxh6pm4f',
'vcm_zderdrfmgq6c',
'vcm_jvdpr6mtddb8',
'vcm_9tvcv961g09x',
'vcm_aynpmxbhpy7n',
'vcm_2gzsjb5bdsdq',
'vcm_a0vep64tz56n',
'vcm_zt4hgc9pyv11',
'vcm_szfxm0crd8y8',
'vcm_3q89kba3cy5z',
'vcm_ywpwnhk4pv4x',
'vcm_4he8jjmengb3',
'vcm_jpdfswn0empy',
'vcm_2nztkt3rgm1q',
'vcm_q5gyxf5a11zf',
'vcm_sa7k9ycne147',
'vcm_p6gxtj9qefsg',
'vcm_j2fvzdyachtw',
'vcm_ecbv0rhc6br3',
'vcm_jrgwspz2wt7p',
'vcm_f5b4j3rt180n',
'vcm_pzajxdfcjfpa',
'vcm_rq4f2cbbm6j1',
'vcm_rdmfpbnab47w',
'vcm_03dtk4xtggm6',
'vcm_zx7mdkh9s9qb',
'vcm_e0megdtf71x6'
);
-- Remove older models replaced by new versions
update voice_conversion_models
set
mod_deleted_at = NOW(),
maybe_mod_comments = 'replaced with new version'
where token IN (
'vcm_gdg3najz6j3g'
);
-- Remove takedown request models
update voice_conversion_models
set
mod_deleted_at = NOW(),
maybe_mod_comments = 'takedown request'
where token IN (
'vcm_2af74np3jh6q',
'vcm_8kk7355dc184',
'vcm_nsh89pcx4569',
'vcm_q7ewn3yym4gy',
'vcm_cwngb21xsf66',
'vcm_jmzjrky179cm',
'vcm_hj6a1nt1yvh9',
'vcm_6wwx1e3cd48s',
'vcm_pc76gc1xh7jg',
'vcm_gb0p1wmtk9wp',
'vcm_pbs955dvaeq6',
'vcm_x2wyzr6h6539',
'vcm_py7qwz310qff',
'vcm_k01bqvh0dseq',
'vcm_5m4dsn2fwa0q',
'vcm_hn9m98g1am3z',
'vcm_f9168tyyn6ex',
'vcm_03y9w4h99r1h',
'vcm_yr9f1s0xc7pc',
'vcm_45767r26a9bb',
'vcm_rq3cvp3x3hnh',
'vcm_ng1nz8d67z4v',
'vcm_f5arabzrk4en',
'vcm_d379600cr8yx',
'vcm_p7m9jw1krrkr',
'vcm_x7v3m9mcvten',
'vcm_6r057m7594bv',
'vcm_wkm9e42d3spm',
'vcm_cvz78weydh57',
'vcm_7g5q89m75n1p',
'vcm_fg3175bxy7kj'
);
+25
View File
@@ -0,0 +1,25 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Kill pending jobs
update w2l_inference_jobs set status='dead' where status IN ('pending', 'started', 'attempt_failed');
-- Unstick old jobs that might be stuck as "started"
update w2l_template_upload_jobs
set status='dead'
where status='started'
and created_at < ( CURDATE() - INTERVAL 1 DAY );
-- Kill pending jobs with tiktok URLs:
-- These need to be blocked in the server and job directly.
update w2l_template_upload_jobs
set status='dead'
where status='pending'
and download_url LIKE '%tiktok%';
-- Kill all pending jobs
update w2l_template_upload_jobs
set status='dead'
where status IN ('pending', 'started', 'attempt_failed');
@@ -28,3 +28,9 @@ where id IN (
or subscriptions.status = 'past_due'
)
group by address_country
-- Histogram
select address_country, count(*)
from customers
group by address_country
@@ -0,0 +1,90 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- NB: These are for use in Stripe Sigma, not MySQL
-- NB: You must use single quotes instead of double quotes when comparing string values.
-- Status values: past_due, incomplete, active, canceled, incomplete_expired (perhaps not exhaustive)
select distinct status
from subscriptions
select count(*)
from subscriptions
where status IN ('active');
-- Metadata is in the 'subscriptions_metadata' table, and we store 'username', 'email', and 'user_token'
select
m.value,
m.key,
s.id,
s.created,
s.cancel_at,
s.canceled_at
from subscriptions as s
join subscriptions_metadata as m
on m.subscription_id = s.id
where m.key = 'username'
-- Full mapping of Stripe subscribers to FakeYou users
select
s.id as subscription_id,
user_tokens.user_token,
usernames.username,
emails.email,
s.status as subscription_status,
s.created,
s.cancel_at,
s.canceled_at
from subscriptions as s
join (
select
m.subscription_id,
m.value as username
from subscriptions_metadata as m
where m.key = 'username'
) as usernames
on s.id = usernames.subscription_id
join (
select m.subscription_id,
m.value as email
from subscriptions_metadata as m
where m.key = 'email'
) as emails
on s.id = emails.subscription_id
join (
select m.subscription_id,
m.value as user_token
from subscriptions_metadata as m
where m.key = 'user_token'
) as user_tokens
on s.id = user_tokens.subscription_id
order by s.id asc
-- Without emails
select
s.id as subscription_id,
user_tokens.user_token,
usernames.username,
s.status as subscription_status,
s.created,
s.cancel_at,
s.canceled_at
from subscriptions as s
join (
select
m.subscription_id,
m.value as username
from subscriptions_metadata as m
where m.key = 'username'
) as usernames
on s.id = usernames.subscription_id
join (
select m.subscription_id,
m.value as user_token
from subscriptions_metadata as m
where m.key = 'user_token'
) as user_tokens
on s.id = user_tokens.subscription_id
order by s.id asc
@@ -0,0 +1,8 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- NB: These are for use in Stripe Sigma, not MySQL
-- NB: You must use single quotes instead of double quotes when comparing string values.
@@ -0,0 +1,218 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- See how many jobs of each time were created in the last period
select
distinct maybe_model_type as model_type,
count(*) as created
from generic_inference_jobs
where created_at > (CURDATE() - INTERVAL 60 MINUTE)
group by maybe_model_type;
-- See how long recent jobs are taking
select
id,
maybe_input_source_token,
assigned_worker,
assigned_cluster,
success_execution_millis / 1000 / 60 as minutes
from generic_inference_jobs
where status != 'pending'
and success_execution_millis IS NOT NULL
order by id desc
limit 50;
-- See who is uploading SadTalker jobs
select
maybe_creator_user_token,
users.username as maybe_creator_username,
creator_ip_address,
count(*) as attempts
from generic_inference_jobs
left outer join users
on users.token = generic_inference_jobs.maybe_creator_user_token
where maybe_model_type = 'sad_talker'
and status IN ('pending', 'started', 'complete_failure', 'attempt_failed')
group by maybe_creator_user_token, maybe_creator_username, creator_ip_address
order by attempts desc;
-- Detailed report on most recent jobs, ordered by worst performing.
-- TODO: Determine if the problem is in downloading models. Make sure the job timer doesn't include
-- sections where models / files get downloaded.
select *
from (
select
jobs.created_at,
jobs.first_started_at,
jobs.id,
jobs.status,
jobs.attempt_count as attempts,
trim(replace(replace(jobs.internal_debugging_failure_reason, "\n", ""), "\r", ""))
as i_failure_reason,
-- u.username,
jobs.assigned_worker,
jobs.assigned_cluster,
jobs.maybe_input_source_token,
jobs.maybe_model_type,
jobs.maybe_model_token,
m.media_source,
m.maybe_original_mime_type as mime_type,
TRUNCATE(jobs.success_execution_millis / 1000 / 60, 2) as execution_mins,
TRUNCATE(jobs.success_inference_execution_millis / 1000 / 60, 2) as inference_mins,
TRUNCATE((jobs.success_execution_millis - jobs.success_inference_execution_millis) / 1000 / 60, 2) as extra_mins,
TRUNCATE(m.original_duration_millis / 1000 / 60, 2) as input_mins,
jobs.success_execution_millis / m.original_duration_millis as ratio
from generic_inference_jobs AS jobs
left join users AS u on
u.token = jobs.maybe_creator_user_token
left join media_uploads AS m on
m.token = jobs.maybe_input_source_token
where
jobs.status != 'pending'
AND jobs.created_at > NOW() - INTERVAL 20 MINUTE
AND jobs.maybe_model_type IN ('so_vits_svc')
order by id desc
limit 200
) as t
order by execution_mins desc;
order by assigned_worker desc, first_started_at asc;
order by first_started_at asc;
order by assigned_worker desc, execution_mins desc;
-- Get pending so-vits-svc jobs
select count(*)
from generic_inference_jobs
where maybe_model_type = 'so_vits_svc'
and status='pending';
-- Get jobs that have routing tags
select
id,
maybe_input_source_token,
maybe_creator_user_token,
maybe_routing_tag,
status
from generic_inference_jobs
where maybe_routing_tag IS NOT NULL
limit 10;
-- Debug that we're setting the correct metadata on jobs
-- For some reasons storyteller-web is enqueuing the wrong type!
select
jobs.id,
jobs.token,
jobs.maybe_model_type as jobs_model_type,
jobs.maybe_model_token as jobs_model_token,
models.token as model_token,
models.model_type as model_type
from generic_inference_jobs as jobs
left outer join voice_conversion_models as models
on jobs.maybe_model_token = models.token
order by jobs.id
desc
limit 100;
-- Generic inference jobs + legacy TTS (this is a production endpoint)
-- UPDATED QUERY: Queues as named rows
SELECT
maybe_model_type as queue_type,
count(*) as pending_job_count,
NOW() as present_time
FROM (
SELECT
token,
maybe_model_type
FROM generic_inference_jobs
WHERE status IN ("pending", "attempt_failed")
UNION
SELECT
token,
maybe_model_type
FROM generic_inference_jobs
WHERE status IN ("started")
AND created_at > (CURDATE() - INTERVAL 15 MINUTE)
) as generic_inner
GROUP BY queue_type
UNION
SELECT
"legacy_tts" as queue_type,
count(*) as pending_job_count,
NOW() as present_time
FROM
(
SELECT token
FROM tts_inference_jobs
WHERE status IN ("pending", "attempt_failed")
UNION
SELECT token
FROM tts_inference_jobs
WHERE status IN ("started")
AND created_at > (CURDATE() - INTERVAL 15 MINUTE)
) as legacy_inner
GROUP BY queue_type;
-- Generic inference jobs + legacy TTS (this was a production endpoint)
-- OLD QUERY: Queues as columns
SELECT
(
SELECT
COUNT(distinct token) as generic_job_count
FROM
(
SELECT token
FROM generic_inference_jobs
WHERE status = "started"
AND created_at > (CURDATE() - INTERVAL 5 MINUTE)
UNION
SELECT token
FROM generic_inference_jobs
WHERE status IN ("pending", "attempt_failed")
) as g
) as generic_job_count,
(
SELECT
COUNT(distinct token) as legacy_tts_job_count
FROM
(
SELECT token
FROM tts_inference_jobs
WHERE status = "started"
AND created_at > (CURDATE() - INTERVAL 5 MINUTE)
UNION
SELECT token
FROM tts_inference_jobs
WHERE status IN ("pending", "attempt_failed")
) as t
) as legacy_tts_job_count,
NOW() as present_time;
-- Histogram of inference
select
date(created_at) as created_date,
count(*) as job_count
from generic_inference_jobs
group by created_date
-- Histogram of inference (within range)
select
date(created_at) as created_date,
count(*) as job_count
from generic_inference_jobs
where created_at > (CURDATE() - INTERVAL 5 DAY)
group by created_date
-- Histogram of inference (within range)
select
date(created_at) as created_date,
count(*) as job_count
from generic_inference_jobs
where date(created_at) >= "2023-01-01"
group by created_date
@@ -0,0 +1,50 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
select
mu.id,
mu.token,
u.username,
mu.media_source,
maybe_original_filename as filename,
original_file_size_bytes as size_bytes,
original_duration_millis as duration_millis,
maybe_original_mime_type as mime_type
from media_uploads as mu
left join users AS u
on u.token = mu.maybe_creator_user_token
order by id desc limit 10;
-- Analyze all media
select
mu.id,
mu.token,
u.username,
mu.media_source,
maybe_original_filename as filename,
original_file_size_bytes as size_bytes,
original_duration_millis as duration_millis,
maybe_original_mime_type as mime_type
from media_uploads as mu
left join users AS u
on u.token = mu.maybe_creator_user_token
order by id desc
limit 40;
-- Analyze broken media (no duration)
select
mu.id,
mu.token,
u.username,
mu.media_source,
maybe_original_filename as filename,
original_file_size_bytes as size_bytes,
original_duration_millis as duration_millis,
maybe_original_mime_type as mime_type
from media_uploads as mu
left join users AS u
on u.token = mu.maybe_creator_user_token
where mu.original_duration_millis = 0
order by id desc
limit 40;
+17 -14
View File
@@ -2,9 +2,6 @@
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Kill pending jobs
update tts_inference_jobs set status = 'dead' where status = 'pending';
-- Total pending jobs
select count(*)
from tts_inference_jobs
@@ -24,6 +21,23 @@ group by creator_ip_address
order by attempts desc
limit 50;
-- Top (IP addresses, usernames) making requests
select distinct j.creator_ip_address, u.username, count(*) as attempts
from tts_inference_jobs AS j
left outer join users AS u
on u.token = j.maybe_creator_user_token
where j.status = 'pending'
group by j.creator_ip_address, u.username
order by attempts desc
limit 50;
-- Find a job by an IP
select *
from tts_inference_jobs
where status = 'pending'
and creator_ip_address = '191.102.120.182'
limit 1;
-- Top voices in requests
select distinct model_token, count(*) as attempts
from tts_inference_jobs
@@ -32,17 +46,6 @@ group by model_token
order by attempts desc
limit 50;
-- Kill pending jobs
update tts_inference_jobs
set status = 'dead'
where status = 'pending';
-- Kill all waiting and in-progress jobs
update tts_inference_jobs
set status = 'dead'
where status IN ('pending', 'started', 'attempt_failed');
-- Sample the pending inference text
select creator_ip_address,
model_token,
+96 -18
View File
@@ -12,9 +12,9 @@ select
m.title,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at,
m.created_at
m.mod_deleted_at
from (
select model_token, count(*) as use_count
from tts_results
@@ -63,7 +63,41 @@ from (
join users as u
on u.token = m.creator_user_token
order by r.use_count desc
limit 25;
limit 100;
--
-- Top models binned by IP address.
-- Should give us a look at demand independent of model quality / repeated use.
--
select
m.token,
m.title,
m.user_ratings_positive_count / m.user_ratings_total_count as rating,
m.text_pipeline_type,
m.ietf_language_tag,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at
from (
select model_token, count(*) as use_count
from (
select model_token, creator_ip_address
from tts_results
where created_at > (CURDATE() - INTERVAL 12 HOUR)
group by model_token, creator_ip_address
) as x
group by model_token
) as r
join tts_models as m
on m.token = r.model_token
join users as u
on u.token = m.creator_user_token
where m.ietf_language_tag IN ('en', 'en-US', 'en-AU', 'en-CA', 'en-GB')
order by r.use_count desc
limit 100;
--
-- Top 20 ***NEW*** models to share in #announcements
@@ -73,12 +107,13 @@ select
m.token,
m.text_pipeline_type,
m.ietf_language_tag,
m.creator_set_visibility,
m.title,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at,
m.created_at
m.mod_deleted_at
from (
select model_token, count(*) as use_count
from tts_results
@@ -90,7 +125,7 @@ from (
join users as u
on u.token = m.creator_user_token
where m.created_at > ( CURDATE() - INTERVAL 31 DAY )
AND u.username IN ( 'vegito1089', 'justinjohn0306')
-- AND u.username IN ( 'vegito1089', 'justinjohn0306')
order by r.use_count desc
limit 100;
@@ -105,9 +140,9 @@ select
m.title,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at,
m.created_at
m.mod_deleted_at
from (
select model_token, count(*) as use_count
from tts_results
@@ -138,9 +173,9 @@ select
m.ietf_language_tag,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at,
m.created_at
m.mod_deleted_at
from (
select model_token, count(*) as use_count
from tts_results
@@ -164,9 +199,9 @@ select
m.ietf_language_tag,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at,
m.created_at
m.mod_deleted_at
from (
select model_token, count(*) as use_count
from tts_results
@@ -192,9 +227,9 @@ select
m.ietf_language_tag,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at,
m.created_at
m.mod_deleted_at
from (
select model_token, count(*) as use_count
from tts_results
@@ -224,8 +259,8 @@ select
m.ietf_language_tag,
u.username,
r.use_count,
m.user_deleted_at,
m.created_at
m.created_at,
m.user_deleted_at
from (
select model_token, count(*) as use_count
from tts_results
@@ -256,9 +291,9 @@ select
m.ietf_language_tag,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at,
m.created_at
m.mod_deleted_at
from (
select model_token, count(*) as use_count
from tts_results
@@ -272,6 +307,21 @@ from (
order by m.created_at desc
limit 100;
-- Histogram of model contributions
select
date(created_at) as created_date,
count(*) as model_count
from tts_models
group by created_date
-- Histogram of model contributions (within range)
select
date(created_at) as created_date,
count(*) as model_count
from tts_models
where created_at > (CURDATE() - INTERVAL 5 DAY)
group by created_date
--
-- Models deleted recently (voice actor take down)
--
@@ -300,3 +350,31 @@ where m.mod_deleted_at > ( CURDATE() - INTERVAL 14 DAY )
order by r.use_count desc
limit 500;
--
-- Non-public models
--
select
m.token,
m.title,
m.text_pipeline_type,
m.ietf_language_tag,
m.creator_set_visibility,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at
from (
select model_token, count(*) as use_count
from tts_results
where created_at > ( CURDATE() - INTERVAL 30 DAY )
group by model_token
) as r
left outer join tts_models as m
on m.token = r.model_token
join users as u
on u.token = m.creator_user_token
where m.creator_set_visibility != 'public'
order by r.use_count desc
limit 500;
+56 -8
View File
@@ -31,6 +31,29 @@ from (
) as sample
where sample.is_generated_on_prem IS TRUE;
-- Histogram of days of content per day
select
date(created_at) as created_date,
sum(duration_millis) / 1000 / 60 / 60 / 24 as days
from tts_results
group by created_date
-- Histogram of days of content per day (range)
select
date(created_at) as created_date,
sum(duration_millis) / 1000 / 60 / 60 / 24 as days
from tts_results
where date(created_at) >= "2023-01-01"
group by created_date
-- Histogram of days of content per day (range)
-- Maybe non-tablescan?
select
date(created_at) as created_date,
sum(duration_millis) / 1000 / 60 / 60 / 24 as days
from tts_results
where created_at > (CURDATE() - INTERVAL 30 DAY)
group by created_date
-- Find TTS results for a single model
select count(*) from tts_results
@@ -64,14 +87,6 @@ ORDER BY created_at DESC
-- Delete TTS results for a single model
-- Do this in short batches so a lock isn't held for prohibitively long.
update tts_results
set mod_deleted_at = NOW()
where model_token = 'TM:ztt5s1be5tq6'
and mod_deleted_at IS NULL
limit 5000;
--- Search for particular text by a particular model
SELECT
raw_inference_text,
@@ -83,6 +98,39 @@ WHERE
model_token = 'TM:ztt5s1be5tq6'
AND raw_inference_text LIKE '%fakeyou%'
--- Search for 101soundboards.com using us
SELECT
r.raw_inference_text,
r.maybe_creator_user_token,
u.username,
u.ip_address_creation,
r.creator_ip_address,
r.created_at
FROM
tts_results as r
LEFT OUTER JOIN
users as u
ON
r.maybe_creator_user_token = u.token
WHERE
r.raw_inference_text LIKE '%bananas%'
AND r.created_at > ( CURDATE() - INTERVAL 1 HOUR )
--- Search for 101soundboards.com using us
SELECT
r.maybe_creator_user_token, r.creator_ip_address, r.raw_inference_text
FROM
tts_results as r
LEFT OUTER JOIN
users as u
ON
r.maybe_creator_user_token = u.token
WHERE
r.raw_inference_text LIKE '%pickle%'
AND r.created_at > ( CURDATE() - INTERVAL 1 HOUR )
---
-- WTF WHY IS THIS SLOW???
SELECT
@@ -0,0 +1,56 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Example query for date ranges:
select count(*)
from users
where created_at BETWEEN '2023-07-01 00:00:00' AND '2023-07-30 00:00:00';
--
-- Month by month subscriber usages.
SELECT
username,
count(*) as total_use_count
FROM (
SELECT
u.username as username,
j.token as token
FROM users AS u
JOIN tts_inference_jobs AS j
ON u.token = j.maybe_creator_user_token
WHERE u.token IN (
SELECT DISTINCT user_token
FROM user_subscriptions
)
AND j.created_at BETWEEN '2022-12-01 00:00:00' AND '2023-01-01 00:00:00'
UNION
SELECT
u.username as username,
j.token as token
FROM users AS u
JOIN generic_inference_jobs AS j
ON u.token = j.maybe_creator_user_token
WHERE u.token IN (
SELECT DISTINCT user_token
FROM user_subscriptions
)
AND j.created_at BETWEEN '2022-12-01 00:00:00' AND '2023-01-01 00:00:00'
UNION
SELECT
u.username as username,
j.token as token
FROM users AS u
JOIN w2l_inference_jobs AS j
ON u.token = j.maybe_creator_user_token
WHERE u.token IN (
SELECT DISTINCT user_token
FROM user_subscriptions
)
AND j.created_at BETWEEN '2022-12-01 00:00:00' AND '2023-01-01 00:00:00'
) as t
GROUP BY username
ORDER BY total_use_count desc;
@@ -37,7 +37,7 @@ FROM (
x.use_count > 10;
-- The first voice a paying customer uses
-- The first TTS voice a paying customer uses
-- TODO: List *all* of the voices a paying customer uses before they subscribe, not just the first.
-- select first row of partially aggregate query: https://stackoverflow.com/a/73157541
SELECT *
@@ -78,6 +78,48 @@ FROM (
) AS z
ORDER BY use_count desc
-- The first VC voice a paying customer uses
-- TODO: List *all* of the voices a paying customer uses before they subscribe, not just the first.
-- select first row of partially aggregate query: https://stackoverflow.com/a/73157541
SELECT *
FROM (
SELECT
m.token,
m.title,
count(*) as use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at
FROM voice_conversion_models AS m
JOIN
(
SELECT
model_token
FROM (
SELECT
maybe_model_token as model_token,
maybe_creator_user_token,
row_number() over(partition by maybe_creator_user_token order by id asc) as rownum
FROM
generic_inference_jobs
WHERE maybe_model_token IS NOT NULL
AND maybe_creator_user_token IN
(
select distinct user_token
from user_subscriptions
where created_at > (CURDATE() - INTERVAL 2 DAY)
)
) AS x
WHERE rownum = 1
ORDER BY model_token desc
) AS y
ON m.token = y.model_token
GROUP BY m.token
) AS z
ORDER BY use_count desc
-- The last voice a paying customer uses
-- select first row of partially aggregate query: https://stackoverflow.com/a/73157541
SELECT *
@@ -13,6 +13,52 @@ select count(*) from user_subscriptions;
-- NB: "active" status users are current, treating "past_due" as active too (for now)
select count(*) from user_subscriptions where maybe_stripe_subscription_status NOT IN ("canceled", "incomplete", "incomplete_expired");
-- ==================== TTS + VC + W2L ====================
-- Make sure the time intervals are the same!
SELECT
username,
count(*) as total_use_count
FROM (
SELECT
u.username as username,
j.token as token
FROM users AS u
JOIN tts_inference_jobs AS j
ON u.token = j.maybe_creator_user_token
WHERE u.token IN (
SELECT DISTINCT user_token
FROM user_subscriptions
)
AND j.created_at > NOW() - INTERVAL 31 DAY
UNION
SELECT
u.username as username,
j.token as token
FROM users AS u
JOIN generic_inference_jobs AS j
ON u.token = j.maybe_creator_user_token
WHERE u.token IN (
SELECT DISTINCT user_token
FROM user_subscriptions
)
AND j.created_at > NOW() - INTERVAL 31 DAY
UNION
SELECT
u.username as username,
j.token as token
FROM users AS u
JOIN w2l_inference_jobs AS j
ON u.token = j.maybe_creator_user_token
WHERE u.token IN (
SELECT DISTINCT user_token
FROM user_subscriptions
)
AND j.created_at > NOW() - INTERVAL 31 DAY
) as t
GROUP BY username
ORDER BY total_use_count desc
-- ==================== TEXT TO SPEECH====================
-- All paid subscribers generating results in the last week
@@ -23,7 +69,7 @@ on u.token = j.maybe_creator_user_token
WHERE u.token IN (
select distinct user_token
from user_subscriptions
where maybe_stripe_subscription_status NOT IN ("canceled", "incomplete", "incomplete_expired")
-- where maybe_stripe_subscription_status NOT IN ("canceled", "incomplete", "incomplete_expired")
)
AND j.created_at > NOW() - interval 7 day
GROUP BY u.username
@@ -0,0 +1,53 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
SELECT
u.username as username,
j.token as token
FROM users AS u
JOIN tts_inference_jobs AS j
ON u.token = j.maybe_creator_user_token
AND j.created_at > NOW() - INTERVAL 31 DAY
SELECT
t.maybe_creator_user_token as user_token,
u.username,
count(*) as usage_count,
u.created_at
FROM tts_results as t
JOIN users as u
ON u.token = t.maybe_creator_user_token
WHERE t.maybe_creator_user_token IS NOT NULL
GROUP BY t.maybe_creator_user_token
ORDER BY usage_count DESC
LIMIT 50000;
SELECT
v.maybe_creator_user_token as user_token,
u.username,
count(*) as usage_count
FROM voice_conversion_results as v
JOIN users as u
ON u.token = v.maybe_creator_user_token
WHERE v.maybe_creator_user_token IS NOT NULL
GROUP BY v.maybe_creator_user_token
ORDER BY usage_count DESC
LIMIT 5000;
SELECT
w.maybe_creator_user_token as user_token,
u.username,
count(*) as usage_count
FROM w2l_results as w
JOIN users as u
ON u.token = w.maybe_creator_user_token
WHERE w.maybe_creator_user_token IS NOT NULL
GROUP BY w.maybe_creator_user_token
ORDER BY usage_count DESC
LIMIT 5000;
@@ -0,0 +1,19 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- All users
select count(*) from users;
-- Users registered in the last year
select count(*)
from users
where created_at > ( CURDATE() - INTERVAL 365 DAY )
-- Histogram of user signups
select
date(created_at) as created_date,
count(*) as registered
from users
where date(created_at) >= "2023-01-01"
group by created_date
+21 -15
View File
@@ -25,20 +25,26 @@ on u.token = m.creator_user_token
where m.upload_count >= 5;
-- Upgrade top TTS model uploaders to a loyalty plan
update users
set maybe_loyalty_program_key = 'fakeyou_contributor'
where token IN (
select creator_user_token from
(
select count(*) as upload_count,
creator_user_token
from tts_models
group by creator_user_token
having upload_count >= 10
order by upload_count desc
) as t
);
-- Top VC model uploaders
select
u.id,
u.token,
u.username,
u.created_at,
u.maybe_stripe_customer_id,
u.maybe_loyalty_program_key,
m.upload_count
from users as u
join
(
select
count(*) as upload_count,
creator_user_token
from voice_conversion_models
group by creator_user_token
order by upload_count desc
) as m
on u.token = m.creator_user_token
where m.upload_count >= 5;
@@ -0,0 +1,170 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Inventory all
select
vc.id,
vc.token,
vc.model_type,
vc.title,
u.username,
vc.original_download_url,
vc.created_at,
vc.updated_at,
vc.user_deleted_at,
vc.mod_deleted_at,
vc.maybe_mod_comments
from voice_conversion_models as vc
left join users AS u on
u.token = vc.creator_user_token;
-- Inventory non-deleted
select
vc.id,
vc.token,
vc.model_type,
vc.title,
u.username,
vc.original_download_url,
vc.created_at,
vc.updated_at
from voice_conversion_models as vc
left join users AS u on
u.token = vc.creator_user_token
where
vc.user_deleted_at IS NULL
and vc.mod_deleted_at IS NULL
order by vc.title asc;
-- Inventory duplicate non-deleted models
select
vc.id,
vc.token,
vc.model_type,
vc.title,
u.username,
vc.original_download_url,
vc.created_at,
vc.updated_at
from voice_conversion_models as vc
left join users AS u on
u.token = vc.creator_user_token
where vc.original_download_url IN (
select original_download_url from (
select original_download_url,
count(*) as duplicate_count
from voice_conversion_models
where user_deleted_at IS NULL
and mod_deleted_at IS NULL
group by original_download_url
order by original_download_url desc
) as duplicates
where duplicate_count > 1
)
and vc.user_deleted_at IS NULL
and vc.mod_deleted_at IS NULL
order by
vc.original_download_url asc,
id asc;
-- order by vc.original_download_url ASC;
--
-- Top 100 voice conversion models by use count
-- (jobs table, not results table)
--
select
m.token,
m.model_type,
m.title,
u.username,
r.use_count,
m.created_at,
m.user_deleted_at,
m.mod_deleted_at
from (
select maybe_model_token, count(*) as use_count
from generic_inference_jobs
where maybe_model_token IS NOT NULL
group by maybe_model_token
) as r
join voice_conversion_models as m
on m.token = r.maybe_model_token
join users as u
on u.token = m.creator_user_token
order by r.use_count desc
limit 100;
--
-- Top 100 voice conversion models by use count (NON DELETED)
-- (jobs table, not results table)
--
select
m.token,
m.model_type,
m.title,
u.username,
r.use_count,
m.created_at
from (
select maybe_model_token, count(*) as use_count
from generic_inference_jobs
where maybe_model_token IS NOT NULL
group by maybe_model_token
) as r
join voice_conversion_models as m
on m.token = r.maybe_model_token
join users as u
on u.token = m.creator_user_token
where m.user_deleted_at IS NULL
and m.mod_deleted_at IS NULL
order by r.use_count desc
limit 100;
--
-- Top 100 voice conversion models by use count (NON DELETED, LAST 7 DAYS)
-- (jobs table, not results table)
--
select
m.token,
m.model_type,
m.title,
u.username,
r.use_count,
m.created_at
from (
select maybe_model_token, count(*) as use_count
from generic_inference_jobs
where maybe_model_token IS NOT NULL
and created_at > ( CURDATE() - INTERVAL 7 day)
group by maybe_model_token
) as r
join voice_conversion_models as m
on m.token = r.maybe_model_token
join users as u
on u.token = m.creator_user_token
where m.user_deleted_at IS NULL
and m.mod_deleted_at IS NULL
order by r.use_count desc
limit 100;
-- Histogram of model contributions
select
date(created_at) as created_date,
count(*) as model_count
from voice_conversion_models
group by created_date
-- Histogram of model contributions (within range)
select
date(created_at) as created_date,
count(*) as model_count
from voice_conversion_models
where created_at > (CURDATE() - INTERVAL 5 DAY)
group by created_date
@@ -0,0 +1,11 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Histogram of days of content per day
select
date(created_at) as created_date,
sum(duration_millis) / 1000 / 60 / 60 / 24 as days
from voice_conversion_results
group by created_date
+23
View File
@@ -5,3 +5,26 @@
-- Pending job count
select count(*) from w2l_inference_jobs where status='pending';
-- Histogram of inference
select
date(created_at) as created_date,
count(*) as job_count
from w2l_inference_jobs
group by created_date
-- Histogram of inference (within range)
select
date(created_at) as created_date,
count(*) as job_count
from w2l_inference_jobs
where date(created_at) >= "2023-01-01"
group by created_date
-- Histogram of inference (within range)
select
date(created_at) as created_date,
count(*) as job_count
from w2l_inference_jobs
where created_at > (CURDATE() - INTERVAL 5 DAY)
group by created_date
+42
View File
@@ -0,0 +1,42 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Histogram of results
select
date(created_at) as created_date,
count(*) as result_count
from w2l_results
group by created_date
-- Histogram of results and durations
select
date(created_at) as created_date,
sum(duration_millis) / 1000 / 60 / 60 as hours,
avg(duration_millis) / 60 as average_seconds,
count(*) as video_count
from w2l_results
group by created_date
-- Histogram of results (within range)
select
date(created_at) as created_date,
count(*) as result_count
from w2l_results
where created_at > (CURDATE() - INTERVAL 5 DAY)
group by created_date
-- Created by date (within range)
select
date(created_at) as created_date,
count(*) as use_count
from w2l_results
where date(created_at) > "2023-07-31"
group by created_date
select
date(created_at) as created_date,
count(*) as created_count
from tts_inference_jobs
where created_at > (CURDATE() - INTERVAL 90 DAY)
group by created_date
@@ -14,15 +14,3 @@ from w2l_template_upload_jobs
where status='started'
and created_at < ( CURDATE() - INTERVAL 1 DAY );
-- Unstick old jobs that might be stuck as "started"
update w2l_template_upload_jobs
set status='dead'
where status='started'
and created_at < ( CURDATE() - INTERVAL 1 DAY );
-- Kill pending jobs with tiktok URLs:
-- These need to be blocked in the server and job directly.
update w2l_template_upload_jobs
set status='dead'
where status='pending'
and download_url LIKE '%tiktok%';
+19
View File
@@ -0,0 +1,19 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Histogram of template contributions
select
date(created_at) as created_date,
count(*) as template_count
from w2l_templates
group by created_date
-- Histogram of template contributions (within range)
select
date(created_at) as created_date,
count(*) as template_count
from w2l_templates
where created_at > (CURDATE() - INTERVAL 5 DAY)
group by created_date
@@ -88,7 +88,7 @@ CREATE TABLE generic_inference_jobs (
is_from_api_user BOOLEAN NOT NULL DEFAULT FALSE,
is_for_twitch BOOLEAN NOT NULL DEFAULT FALSE,
-- If true, the request gets routed to a special "debug" worker.
-- NB: The meaning of this column has changed. See the "squashed" schema for docs/details.
is_debug_request BOOLEAN NOT NULL DEFAULT FALSE,
-- ========== JOB SYSTEM DETAILS ==========
@@ -0,0 +1,5 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
DROP TABLE comments;
@@ -0,0 +1,69 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- Comments that can be attached to just about anything.
-- This is a polymorphic table and can apply to a wide variety of entities.
CREATE TABLE comments (
-- Not used for anything except replication.
id BIGINT(20) NOT NULL AUTO_INCREMENT,
-- Effective "primary key" (PUBLIC)
token VARCHAR(32) NOT NULL,
-- Idempotency token from client
-- This is so the frontend client doesn't submit duplicate items.
uuid_idempotency_token VARCHAR(36) NOT NULL,
-- User making the comment
user_token VARCHAR(32) NOT NULL,
-- The type of entity the comment applies to
entity_type VARCHAR(32) NOT NULL,
-- The token of the entity the comment applies to
entity_token VARCHAR(32) NOT NULL,
-- The comment in markdown
comment_markdown TEXT NOT NULL,
-- Generated HTML (not user-editable).
comment_rendered_html TEXT NOT NULL,
-- For abuse tracking.
-- Wide enough for IPv4/6
creator_ip_address VARCHAR(40) NOT NULL,
editor_ip_address VARCHAR(40) NOT NULL,
-- ========== VECTOR CLOCK ==========
-- Incremented with every update.
version INT NOT NULL DEFAULT 0,
-- ========== TIMESTAMPS ==========
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-- Technically, this conveys *user* edits, not things that update the record itself.
edited_at TIMESTAMP NULL,
-- If this is removed by a mod.
-- It completely disappears from the system.
user_deleted_at TIMESTAMP NULL,
mod_deleted_at TIMESTAMP NULL,
-- The owner of the thing the comment is attached to can delete the comment too.
object_owner_deleted_at TIMESTAMP NULL,
-- INDICES --
PRIMARY KEY (id),
UNIQUE KEY (token),
UNIQUE KEY (uuid_idempotency_token),
KEY index_entity_type_entity_token (entity_type, entity_token),
KEY index_user_token (user_token),
KEY index_created_at (created_at),
KEY index_user_deleted_at (user_deleted_at),
KEY index_mod_deleted_at (mod_deleted_at),
KEY index_object_owner_deleted_at (object_owner_deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
@@ -0,0 +1,5 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
ALTER TABLE generic_inference_jobs DROP COLUMN maybe_routing_tag;
@@ -0,0 +1,10 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
ALTER TABLE generic_inference_jobs
ADD COLUMN maybe_routing_tag VARCHAR(32) DEFAULT NULL
AFTER is_debug_request;
ALTER TABLE generic_inference_jobs
ADD INDEX index_maybe_routing_tag (maybe_routing_tag);
@@ -0,0 +1,23 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
-- REVERT ADDING 'vits' MODEL TYPE
ALTER TABLE tts_models
MODIFY COLUMN tts_model_type ENUM(
'not-set',
'tacotron2',
'glowtts',
'glowtts-vocodes',
'talknet'
) NOT NULL DEFAULT 'not-set';
ALTER TABLE tts_model_upload_jobs
MODIFY COLUMN tts_model_type ENUM(
'not-set',
'tacotron2',
'glowtts',
'glowtts-vocodes',
'talknet'
) NOT NULL DEFAULT 'not-set';

Some files were not shown because too many files have changed in this diff Show More