mirror of
https://github.com/mindverse/Second-Me.git
synced 2026-07-13 11:18:23 +00:00
* Add CUDA support - CUDA detection - Memory handling - Ollama model release after training * Fix logging issue added cuda support flag so log accurately reflected cuda toggle * Update llama.cpp rebuild Changed llama.cpp to only check if cuda support is enabled and if so rebuild during the first build rather than each run * Improved vram management Enabled memory pinning and optimizer state offload * Fix CUDA check rewrote llama.cpp rebuild logic, added manual y/n toggle if user wants to enable cuda support * Added fast restart and fixed CUDA check command Added make docker-restart-backend-fast to restart the backend and reflect code changes without causing a full llama.cpp rebuild Fixed make docker-check-cuda command to correctly reflect cuda support * Added docker-compose.gpu.yml Added docker-compose.gpu.yml to fix error on machines without nvidia gpu and made sure "\n" is added before .env modification * Fixed cuda toggle Last push accidentally broke cuda toggle * Code review fixes Fixed errors resulting from removed code: - Added return save_path to end of save_hf_model function - Rolled back download_file_with_progress function * Update Makefile Use cuda by default when using docker-restart-backend-fast * Minor cleanup Removed unnecessary makefile command and fixed gpu logging * Delete .gpu_selected * Simplified cuda training code - Removed dtype setting to let torch automatically handle it - Removed vram logging - Removed Unnecessary/old comments * Fixed gpu/cpu selection Made "make docker-use-gpu/cpu" command work with .gpu_selected flag and changed "make docker-restart-backend-fast" command to respect flag instead of always using gpu * Fix Ollama embedding error Added custom exception class for Ollama embeddings, which seemed to be returning keyword arguments while the Python exception class only accepts positional ones * Fixed model selection & memory error Fixed training defaulting to 0.5B model regardless of selection and fixed "free(): double free detected in tcache 2" error caused by cuda flag being passed incorrectly
68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
from flask import Flask, request
|
|
from .common.repository.database_session import DatabaseSession, Base
|
|
from .common.logging import logger
|
|
from .api import init_routes
|
|
from .api.file_server.handler import FileServerHandler
|
|
from .database.migration_manager import MigrationManager
|
|
import os
|
|
import atexit
|
|
import subprocess
|
|
|
|
|
|
def create_app():
|
|
app = Flask(__name__)
|
|
|
|
# Initialize database connection
|
|
try:
|
|
DatabaseSession.initialize()
|
|
logger.info("Database connection initialized successfully")
|
|
|
|
except Exception as e:
|
|
logger.error(f"Failed to initialize database connection: {str(e)}")
|
|
raise
|
|
|
|
# Add CORS support
|
|
|
|
@app.after_request
|
|
def after_request(response):
|
|
# Allow all origins in development environment
|
|
response.headers.add("Access-Control-Allow-Origin", "*")
|
|
response.headers.add(
|
|
"Access-Control-Allow-Headers", "Content-Type,Authorization"
|
|
)
|
|
response.headers.add(
|
|
"Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS"
|
|
)
|
|
return response
|
|
|
|
# Create file server handler
|
|
file_handler = FileServerHandler(
|
|
os.path.join(os.getenv("APP_ROOT", "/app"), "resources", "raw_content")
|
|
)
|
|
|
|
@app.route("/raw_content/", defaults={"path": ""})
|
|
@app.route("/raw_content/<path:path>")
|
|
def serve_content(path=""):
|
|
return file_handler.handle_request(path, request.path)
|
|
|
|
# Register all routes
|
|
init_routes(app)
|
|
|
|
# Clean up database connection only when the application shuts down
|
|
@app.teardown_appcontext
|
|
def cleanup_db(exception):
|
|
pass
|
|
|
|
return app
|
|
|
|
|
|
app = create_app()
|
|
|
|
|
|
@atexit.register
|
|
def cleanup():
|
|
DatabaseSession.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host="0.0.0.0", port=8000)
|