summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--packages/backend/src/core/AiService.ts21
2 files changed, 19 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0c63226c58..b9f0d6495a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -36,6 +36,7 @@
- Fix: disableClustering設定時の初期化ロジックを調整( #15223 )
- Fix: ActivityPubリクエストかどうかの判定が正しくない問題を修正
(Cherry-picked from https://github.com/MisskeyIO/misskey/pull/869)
+- Fix: AIセンシティブ判定が arm64 環境で動作しない問題を修正
## 2024.11.0
diff --git a/packages/backend/src/core/AiService.ts b/packages/backend/src/core/AiService.ts
index ad852fdd6e..33ddabb5e0 100644
--- a/packages/backend/src/core/AiService.ts
+++ b/packages/backend/src/core/AiService.ts
@@ -15,7 +15,7 @@ import { bindThis } from '@/decorators.js';
const _filename = fileURLToPath(import.meta.url);
const _dirname = dirname(_filename);
-const REQUIRED_CPU_FLAGS = ['avx2', 'fma'];
+const REQUIRED_CPU_FLAGS_X64 = ['avx2', 'fma'];
let isSupportedCpu: undefined | boolean = undefined;
@Injectable()
@@ -31,8 +31,7 @@ export class AiService {
public async detectSensitive(path: string): Promise<nsfw.predictionType[] | null> {
try {
if (isSupportedCpu === undefined) {
- const cpuFlags = await this.getCpuFlags();
- isSupportedCpu = REQUIRED_CPU_FLAGS.every(required => cpuFlags.includes(required));
+ isSupportedCpu = await this.computeIsSupportedCpu();
}
if (!isSupportedCpu) {
@@ -64,6 +63,22 @@ export class AiService {
}
}
+ private async computeIsSupportedCpu(): Promise<boolean> {
+ switch (process.arch) {
+ case 'x64': {
+ const cpuFlags = await this.getCpuFlags();
+ return REQUIRED_CPU_FLAGS_X64.every(required => cpuFlags.includes(required));
+ }
+ case 'arm64': {
+ // As far as I know, no required CPU flags for ARM64.
+ return true;
+ }
+ default: {
+ return false;
+ }
+ }
+ }
+
@bindThis
private async getCpuFlags(): Promise<string[]> {
const str = await si.cpuFlags();