Skip to content

Commit

Permalink
update requirements.txt, realesrgan patch, dropdown list for language…
Browse files Browse the repository at this point in the history
… selection, theme changes (#66)

Signed-off-by: 3ae3ae <[email protected]>
Co-authored-by: Guo, Yilong <[email protected]>
Co-authored-by: Markus Schüttler <[email protected]>
Co-authored-by: 3ae3ae <[email protected]>
Co-authored-by: DanielHirschTNG <[email protected]>
Co-authored-by: Nicolas Oliver <[email protected]>
  • Loading branch information
6 people authored Sep 26, 2024
1 parent 4924092 commit 25ef470
Show file tree
Hide file tree
Showing 14 changed files with 322 additions and 35 deletions.
3 changes: 2 additions & 1 deletion WebUI/electron/electron-env.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ type LocalSettings = {

type ThemeSettings = {
availableThemes: Theme[];
};
currentTheme: Theme;


type ModelPaths = {
llm: string,
Expand Down
3 changes: 3 additions & 0 deletions WebUI/electron/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ const settings: LocalSettings = {
envType: "ultra",
port: 59999,
availableThemes: ["dark", "lnl"],
currentTheme:"lnl"
};

const logger = {
Expand Down Expand Up @@ -258,6 +259,8 @@ function initEventHandle() {
ipcMain.handle("getThemeSettings", async () => {
return {
availableThemes: settings.availableThemes,
currentTheme:settings.currentTheme

};
});

Expand Down
4 changes: 3 additions & 1 deletion WebUI/external/settings-dev.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@
"envType": "arc",
"debug":1,
"port":56789,
"availableThemes": ["dark","lnl"]
"availableThemes": ["dark","lnl"],
"currentTheme": "lnl"

}
1 change: 1 addition & 0 deletions WebUI/src/assets/i18n/en_US.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
"SETTINGS_BASIC_LANGUAGE": "Language",
"SETTINGS_BASIC_LANGUAGE_EN": "English",
"SETTINGS_BASIC_LANGUAGE_ZH": "Chinese",
"SETTINGS_BASIC_LANGUAGE_KO": "Korean",
"SETTINGS_BASIC_PATHS": "Paths",
"SETTINGS_BASIC_LLM_CHECKPOINTS": "LLM Model Path",
"SETTINGS_MODEL_HUGGINGFACE": "Hugging Face",
Expand Down
155 changes: 155 additions & 0 deletions WebUI/src/assets/i18n/ko_KR.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
{
"MAIN_TITLE": "AI PLAYGROUND",
"COM_SETTINGS": "설정",
"COM_MINI": "최소화",
"COM_CLOSE": "닫기",
"COM_RESTORE": "기본값으로 초기화",
"COM_SD_PROMPT": "프롬프트를 입력하여 이미지를 생성",
"COM_LLM_PROMPT": "프롬프트를 입력하여 답변을 생성",
"COM_CLICK_UPLOAD": "- 클릭하여 이미지 업로드 -",
"COM_GENERATE": "생성",
"COM_GENERATING": "생성중",
"COM_HISTORY": "히스토리",
"COM_POST_TO_ENHANCE_PROCESS": "향상 대기열로 보내기",
"COM_ZOOM_IN": "원본 크기로 보기",
"COM_COPY": "복사",
"COM_COPY_SUCCESS_TIP": "복사 성공",
"COM_APPLY": "적용",
"COM_DOWNLOAD": "다운로드",
"COM_REGENERATE": "재생성",
"COM_DELETE": "삭제",
"COM_DOWNLOAD_MODEL": "모델 다운로드 중",
"COM_DOWNLOAD_SPEED": "다운로드 속도",
"COM_LOADING_MODEL": "AI 모델 로딩 중",
"COM_LOADING_MODEL_COMPONENTS": "AI 모델 구성 요소 로딩 중",
"COM_NO_SELECTED": "선택된 항목 없음",
"COM_CONFIRM": "확인",
"COM_CANCEL": "취소",
"COM_VISIT": "방문",
"COM_REQUESTING":"요청 중",
"COM_DEFAULT":"기본값",
"COM_STOP":"정지",
"COM_OPEN_LOCATION":"파일 위치 열기",
"COM_OPEN_PARAMS": "매개변수 정보",
"COM_LOW": "낮음",
"COM_HIGH": "높음",
"COM_FULLSCREEN": "전체 화면",
"COM_FULLSCREEN_EXIT": "전체 화면 종료",
"SETTINGS_TAB_BASIC": "기본 설정",
"SETTINGS_TAB_MODEL": "모델",
"SETTINGS_INFERENCE_DEVICE": "추론 장치",
"SETTINGS_MODEL_IMAGE_RESOLUTION": "이미지 해상도",
"SETTINGS_MODEL_IMAGE_RESOLUTION_STRANDARD": "표준",
"SETTINGS_MODEL_IMAGE_RESOLUTION_HD": "HD",
"SETTINGS_MODEL_QUALITY": "생성 품질",
"SETTINGS_MODEL_QUALITY_STANDARD": "표준",
"SETTINGS_MODEL_QUALITY_HIGH": "높은 품질",
"SETTINGS_MODEL_QUALITY_FAST": "빠름",
"SETTINGS_MODEL_QUALITY_MANUAL": "수동",
"SETTINGS_MODEL_ADJUSTABLE_OPTIONS": "조정 가능한 옵션",
"SETTINGS_MODEL_MANUAL_OPTIONS": "수동 옵션",
"SETTINGS_MODEL_NEGATIVE_PROMPT": "네거티브 프롬프트",
"SETTINGS_MODEL_SEED": "시드",
"SETTINGS_MODEL_GENERATE_NUMBER": "생성 이미지 수",
"SETTINGS_MODEL_LLM_MODEL": "대규모 언어 모델",
"SETTINGS_MODEL_IMAGE_PREVIEW": "이미지 미리보기",
"SETTINGS_MODEL_SAFE_CHECK": "안전 확인 (SD 1.5에만 적용)",
"SETTINGS_MODEL_IMAGE_MODEL": "이미지 모델",
"SETTINGS_MODEL_INPAINT_MODEL": "인페인트/아웃페인트 모델",
"SETTINGS_MODEL_IMAGE_WIDTH": "너비",
"SETTINGS_MODEL_IMAGE_HEIGHT": "높이",
"SETTINGS_MODEL_IMAGE_STEPS": "단계",
"SETTINGS_MODEL_IMAGE_CFG": "CFG",
"SETTINGS_MODEL_LORA": "LoRa",
"SETTINGS_MODEL_SCHEDULER": "스케줄러",
"SETTINGS_MODEL_LIST_CHANGE_TIP": "모델 목록의 변경으로 인해 일부 설정이 수정되었습니다. 자세한 내용은 기본 설정을 참조하세요.",
"SETTINGS_BASIC_LANGUAGE": "언어",
"SETTINGS_BASIC_LANGUAGE_EN": "영어",
"SETTINGS_BASIC_LANGUAGE_ZH": "중국어",
"SETTINGS_BASIC_LANGUAGE_KO": "한국어",
"SETTINGS_BASIC_PATHS": "경로",
"SETTINGS_BASIC_LLM_CHECKPOINTS": "LLM 모델 경로",
"SETTINGS_MODEL_SD_CHECKPOINTS": "이미지 모델 경로",
"SETTINGS_MODEL_SD_INPAINT_CHECKPOINTS": "이미지 인페인트 모델 경로",
"SETTINGS_MODEL_SD_VAE": "Vae 경로",
"SETTINGS_MODEL_SD_LORA": "Lora 경로",
"SETTINGS_MODEL_SD_SCHEDULER": "스케줄러 경로",
"SETTINGS_MODEL_SD_PRESET_MODEL": "이미지 기본 모델",
"SETTINGS_MODEL_SD_STANDARD_MODEL": "표준 기본 모델",
"SETTINGS_MODEL_SD_STANDARD_INPAINT_MODEL": "표준 기본 인페인트/아웃페인트 모델",
"SETTINGS_MODEL_SD_HD_MODEL": "HD 기본 모델",
"SETTINGS_MODEL_RAG_MODEL": "RAG 쿼리 모델",
"SETTINGS_MODEL_EXIST": "모델이 이미 존재합니다. 다시 다운로드할 필요가 없습니다.",
"SETTINGS_MODEL_DOWNLOAD": "모델 다운로드",
"SETTINGS_MODEL_DOWNLOAD_DESC": "아래는 AI 플레이그라운드에서 다양한 AI 작업을 수행할 수 있는 모델 목록입니다. 다운로드 및 사용 전 각 모델의 약관을 검토하세요. 또는 위의 모델 경로와 모델 기본값을 변경하여 다른 모델 소스를 추가하고 선택할 수 있습니다.",
"TAB_CREATE": "생성",
"TAB_ENHANCE": "향상",
"TAB_ANSWER": "답변",
"TAB_LEARN_MORE": "더 알아보기",
"ENHANCE_INPUT_IMAGE_REQUIRED": "생성 전 입력 이미지를 설정해 주세요",
"ENHANCE_UPSCALE": "업스케일",
"ENHANCE_IMAGE_PROMPT": "이미지 프롬프트",
"ENHANCE_INPAINT": "인페인트",
"ENHANCE_OUTPAINT": "아웃페인트",
"ENHANCE_UPSCALE_SCALE": "업스케일",
"ENHANCE_UPSCALE_SCALE_X1_5": "업스케일 (1.5배)",
"ENHANCE_UPSCALE_SCALE_X2_0": "업스케일 (2.0배)",
"ENHANCE_UPSCALE_VARIATION": "변형",
"ENHANCE_UPSCALE_VARIATION_NONE": "없음",
"ENHANCE_UPSCALE_VARIATION_DISABLE": "미세",
"ENHANCE_UPSCALE_VARIATION_STRONG": "강함",
"ENHANCE_INPAINT_TYPE": "유형",
"ENHANCE_INPAINT_FILL": "새로운 내용으로 채우기",
"ENHANCE_INPAINT_FIX": "마스크 영역 수정 및 복구",
"ENHANCE_INPAINT_MASK_REQUIRED": "생성 전 인페인트 마스크를 그려주세요",
"ENHANCE_INPAINT_USE_IMAGE_MODEL": "현재 이미지 모델 사용",
"ENHANCE_COM_DENOISE": "강도",
"ENHANCE_OUTPAINT_DIRECTION": "방향",
"ENHANCE_PREVIEW_BEFORE_PROCESS": "처리 전",
"ENHANCE_PREVIEW_AFTER_PROCESS": "처리 후",
"ENHANCE_IMAGE_PROMPT_TIP": "이미지를 어떻게 스타일링할지 설명하세요. 유지하고 싶은 원본 이미지의 설명과 변경하고 싶은 내용의 설명을 포함하세요. 강도 슬라이더를 조정하여 프롬프트가 결과에 미치는 영향을 증가시키거나 감소시킬 수 있습니다.",
"ENHANCE_INPAINT_TIP": "펜 도구를 사용하여 영역을 마스킹하세요. 프롬프트에 수정하거나 채우고 싶은 내용을 설명하세요. 수정 또는 채우기 옵션을 선택한 다음, 프롬프트가 미치는 강도 수준을 조정하세요.",
"ENHANCE_OUTPAINT_TIP": "확장하려는 방향을 선택하고, 필요한 경우 노이즈 제거 값을 조정한 다음, 텍스트 상자에 프롬프트 단어를 입력하세요. 확장된 이미지가 생성됩니다.",
"ENHANCE_UPSCALE_TIP": "조작이 필요한 이미지를 업로드하고 확대 배율을 선택한 후, 노이즈 제거 강도를 조정하세요 (0.1 미만이면 이미지 내용은 변경되지 않지만 크기는 여전히 확대됩니다). 텍스트 상자에 프롬프트 단어를 입력하여 확대된 이미지를 생성하세요.",
"ERROR_UNSUPPORTED_IMAGE_TYPE": "PNG, JPG, GIF, BMP 이미지 형식만 지원됩니다",
"ANSWER_USER_NAME": "사용자",
"ANSWER_AI_NAME": "플레이그라운드",
"ANSWER_ERROR_NOT_PROMPT": "프롬프트를 입력해 주세요",
"ANSWER_ERROR_CLEAR_SESSION": "채팅 기록 지우기",
"ANSWER_RAG_ENABLE": "파일 쿼리 활성화",
"ANSWER_RAG_OPEN_DIALOG": "파일 업로더 열기",
"DOWNLOADER_CONFRIM_TIP": "실행에 필요한 하나 이상의 모델이 누락되었습니다. 아래 목록의 모델을 다운로드하시겠습니까?",
"DOWNLOADER_MODEL": "모델",
"DOWNLOADER_INFO": "정보",
"DOWNLOADER_FILE_SIZE": "크기",
"DOWNLOADER_REASON": "이유",
"DOWNLOADER_TERMS": "방문",
"DOWNLOADER_CONFLICT": "다른 다운로드 작업이 현재 진행 중이어서 새 작업을 시작할 수 없습니다. 현재 다운로드 작업을 취소하고 새 다운로드 작업을 시작할 수 있습니다.",
"DOWNLOADER_TERMS_TIP": "모델 카드와 라이선스를 검토했습니다. 모든 이용 약관에 동의하며 서드파티 모델을 다운로드 하겠습니다.",
"DOWNLOADER_FOR_ANSWER_GENERATE": "답변 모델",
"DOWNLOADER_FOR_RAG_QUERY": "RAG 임베딩 모델",
"DOWNLOADER_FOR_IMAGE_GENERATE": "이미지 모델",
"DOWNLOADER_FOR_INAPINT_GENERATE": "인페인트/아웃페인트 모델",
"DOWNLOADER_FOR_IMAGE_PREVIEW": "이미지 미리보기 모델",
"DOWNLOADER_FOR_IMAGE_UPSCALE": "이미지 업스케일 모델",
"DOWNLOADER_FOR_IMAGE_LORA": "빠른 이미지 모델",
"DOWNLOADER_DONWLOAD_TASK_PROGRESS":"모델 다운로드 완료",
"RAG_FILE_TOTAL_FORMAT": "파일 총 개수: {total}",
"RAG_DRAG_UPLOAD": "파일을 끌어다 놓아 업로드",
"RAG_DRAG_UPLOAD_UNSUPPORTED": "현재 프로그램은 관리자 권한으로 실행 중입니다. Windows UAC 제한으로 인해 드래그 앤 드롭 업로드를 사용할 수 없습니다. 파일을 업로드하려면 상단의 추가 버튼을 사용하세요.",
"RAG_UPLOAD_MIME_TYPE": "지원되는 파일 유형:\n\t텍스트 문서: .txt .md\n\t오피스 문서: .doc(x)\n\tPDF Doc: .pdf",
"RAG_ENABLE_TIP": "업로드된 파일에서만 답변",
"RAG_UPLOAD_TYPE_ERROR": "업로드된 파일에 지원되지 않는 파일 유형이 포함되어 있어 자동으로 제외되었습니다",
"RAG_UPLOAD_FILE_EXISTS": "업로드된 파일 {filename}이(가) 이미 존재합니다",
"RAG_ANALYZE_FILE_FAILED": "파일 {filename} 분석에 실패했습니다",
"RAG_USE_REJECT": "인터랙티브 문서 목록이 비어 있습니다. 먼저 문서를 업로드하세요",
"RAG_WHEN_CLOSE_PANEL_AT_UPLODING": "모든 문서가 분석될 때까지 기다려 주세요",
"RAG_SOURCE": "출처:",
"ERR_NOT_ENOUGH_DISK_SPACE": "디스크 공간이 부족합니다. {requires_space}가 필요하지만, 사용 가능한 공간이 {free_space}밖에 없습니다",
"ERR_DOWNLOAD_FAILED": "모델 파일 다운로드에 실패했습니다",
"ERROR_RUNTIME_ERROR": "심각한 오류가 발생하면 프로그램을 재시작하고 다시 시도하세요",
"ERROR_GENERATE_UNKONW_EXCEPTION": "알 수 없는 오류가 발생했습니다. 모델에서 생성에 실패했습니다",
"ERROR_FOLDER_NOT_EXISTS": "지정된 디렉터리가 존재하지 않습니다",
"ERROR_ENHANCE_IMAGE_NOT_SET": "생성할 입력 이미지를 설정하세요",
"ERROR_UNFOUND_GRAPHICS": "프로그램 실행에 필요한 하드웨어가 컴퓨터 장치에서 감지되지 않을 경우, 확인을 클릭하면 프로그램이 종료됩니다."
}
1 change: 1 addition & 0 deletions WebUI/src/assets/i18n/zh_CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
"SETTINGS_BASIC_LANGUAGE": "语言",
"SETTINGS_BASIC_LANGUAGE_EN": "英文",
"SETTINGS_BASIC_LANGUAGE_ZH": "中文",
"SETTINGS_BASIC_LANGUAGE_KO": "韩文",
"SETTINGS_BASIC_PATHS": "路径",
"SETTINGS_BASIC_LLM_CHECKPOINTS": "大语言模型路径",
"SETTINGS_MODEL_HUGGINGFACE": "Hugging Face",
Expand Down
37 changes: 36 additions & 1 deletion WebUI/src/assets/js/store/i18n.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import { defineStore } from "pinia";

export const useI18N = defineStore("i18n", () => {

const langName = ref("en_US");
const currentLanguageName = ref("English");
const state = reactive<StringKV>({
});

async function init() {
const language = localStorage.getItem("language");
if (language == "zh_CN" || language == "en_US") {
if (language == "zh_CN" || language == "en_US" || language == "ko_KR") {
await switchLanguage(language);
} else {
await initFromLocal();
Expand All @@ -19,24 +21,57 @@ export const useI18N = defineStore("i18n", () => {
return switchLanguage(navigator.language == "zh-CN" ? "zh_CN" : "en_US");
}

function changeLanguage(value: any, index: number) {
switchLanguage(value.value)
}

function updateLanguageRecord(record: Record<string, string>) {
Object.keys(record).forEach((key) => {
state[key] = record[key];
});
document.title = state.MAIN_TITLE;
}

const languageOptions = ref([
{ value: 'en_US', name: state.SETTINGS_BASIC_LANGUAGE_EN },
{ value: 'zh_CN', name: state.SETTINGS_BASIC_LANGUAGE_ZH },
{ value: 'ko_KR', name: state.SETTINGS_BASIC_LANGUAGE_KO },
])

const currentLanguageDict = ref<StringKV>({
"en_US": state.SETTINGS_BASIC_LANGUAGE_EN,
"zh_CN": state.SETTINGS_BASIC_LANGUAGE_ZH,
"ko_KR": state.SETTINGS_BASIC_LANGUAGE_KO,
});

async function updateLanguageNames(lang: string) {
currentLanguageDict.value["en_US"] = state.SETTINGS_BASIC_LANGUAGE_EN;
currentLanguageDict.value["zh_CN"] = state.SETTINGS_BASIC_LANGUAGE_ZH;
currentLanguageDict.value["ko_KR"] = state.SETTINGS_BASIC_LANGUAGE_KO;
currentLanguageName.value = currentLanguageDict.value[lang];
languageOptions.value = languageOptions.value.map((item) => {
item.name = currentLanguageDict.value[item.value];
return item;
});
}

async function switchLanguage(lang: string) {
const languageRecords = await import(`../../i18n/${lang}.json`);
updateLanguageRecord(languageRecords);
langName.value = lang;
localStorage.setItem("language", lang);
updateLanguageNames(lang);
}

return {
state,
langName,
languageOptions,
currentLanguageName,
init,
switchLanguage,
changeLanguage,
};


});
1 change: 1 addition & 0 deletions WebUI/src/assets/js/store/theme.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export const useTheme = defineStore("theme", () => {
window.electronAPI.getThemeSettings().then((themeSettings) => {
const themesFromSettings = themeSettings.availableThemes.filter(t => knownThemes.includes(t));
if (themesFromSettings.length > 0) availableThemes.value = themesFromSettings;
if (knownThemes.includes(themeSettings.currentTheme)) selected.value = themeSettings.currentTheme;
});

return {
Expand Down
20 changes: 14 additions & 6 deletions WebUI/src/views/AppSettings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,20 @@
<div class="px-3 flex-none flex flex-col gap-3">
<div class="flex flex-col gap-2">
<p>{{ languages.SETTINGS_BASIC_LANGUAGE }}</p>
<div class="grid grid-cols-2 gap-2">
<radio-bolck :checked="i18n.langName == 'en_US'" :text="languages.SETTINGS_BASIC_LANGUAGE_EN"
@click="() => { i18n.switchLanguage('en_US') }"></radio-bolck>
<radio-bolck :checked="i18n.langName == 'zh_CN'" :text="languages.SETTINGS_BASIC_LANGUAGE_ZH"
@click="() => { i18n.switchLanguage('zh_CN') }"></radio-bolck>
</div>
<drop-selector :array="i18n.languageOptions" @change="i18n.changeLanguage">
<template #selected>
<div class="flex gap-2 items-center">
<span class="rounded-full bg-green-500 w-2 h-2"></span>
<span>{{ i18n.currentLanguageName }}</span>
</div>
</template>
<template #list="slotItem">
<div class="flex gap-2 items-center">
<span class="rounded-full bg-green-500 w-2 h-2"></span>
<span>{{ slotItem.item.name }}</span>
</div>
</template>
</drop-selector>
</div>
<div v-if="theme.availableThemes.length > 1" class="flex flex-col gap-2">
<p>Theme</p>
Expand Down
33 changes: 24 additions & 9 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# AI Playground

<a href="https://scan.coverity.com/projects/ai-playground">
<img alt="Coverity Scan Build Status"
src="https://scan.coverity.com/projects/30694/badge.svg"/>
</a>

![image](https://github.com/user-attachments/assets/66086f2c-216e-4a79-8ff9-01e04db7e71d)

This example is based on the xpu implementation of Intel Arc A-Series dGPU and Ultra iGPU
Expand Down Expand Up @@ -37,23 +42,33 @@ IMPORTANT: We have noticed some systems require the VS C++ redistribution, often
### Dev Environment Setup (backend, python)

1. Create and switch the conda environment and go to the service directory.

```cmd
conda create -n aipg_xpu python=3.10 -y
activate aipg_xpu
pip install -r requirements.txt
```
conda activate aipg_xpu
conda install libuv -y
3. Download the Intel Extension For Pytorch* AOT Packages. Depending on your hardware, download cp310 whl files from the links below.
cd service
Core Ultra-H https://github.com/Nuullll/intel-extension-for-pytorch/releases/tag/v2.1.20%2Bmtl%2Boneapi
@REM for Desktop-dGPU (e.g. A770)
pip install -r requriements-arc.txt
The Arc A - Series dGPU https://github.com/Nuullll/intel-extension-for-pytorch/releases/tag/v2.1.10%2Bxpu
@REM for Intel Core Ultra-H (MTL)
pip install -r requriements-ultra.txt
```

Install all downloaded whl files using the pip install command
2. Check whether the XPU environment is correct

4. Check whether the XPU environment is correct
```cmd
python -c "import torch; import intel_extension_for_pytorch as ipex; print(torch.version); print(ipex.version); [print(f'[{i}]: {torch.xpu.get_device_properties(i)}') for i in range(torch.xpu.device_count())];"
python -c "import torch; import intel_extension_for_pytorch as ipex; print(torch.__version__); print(ipex.__version__); [print(f'[{i}]: {torch.xpu.get_device_properties(i)}') for i in range(torch.xpu.device_count())];"
```

Example output:

```txt
2.1.0.post3+cxx11.abi
2.1.40+xpu
[0]: _DeviceProperties(name='Intel(R) Arc(TM) Graphics', platform_name='Intel(R) Level-Zero', dev_type='gpu', driver_version='1.3.29283', has_fp64=1, total_memory=14765MB, max_compute_units=112, gpu_eu_count=112)
```


Expand Down
Loading

0 comments on commit 25ef470

Please sign in to comment.