Phi-3-mini este o nouă serie de modele de la Microsoft care permite implementarea modelelor mari de limbaj (LLM) pe dispozitive edge și dispozitive IoT. Phi-3-mini este disponibil pentru implementări pe iOS, Android și dispozitive edge, permițând astfel utilizarea AI generativ în medii BYOD. Exemplul următor arată cum să implementezi Phi-3-mini pe iOS.
- a. macOS 14+
- b. Xcode 15+
- c. iOS SDK 17.x (iPhone 14 A16 sau mai nou)
- d. Instalează Python 3.10+ (se recomandă Conda)
- e. Instalează biblioteca Python:
python-flatbuffers - f. Instalează CMake
Semantic Kernel este un cadru de aplicații care îți permite să creezi aplicații compatibile cu Azure OpenAI Service, modelele OpenAI și chiar modele locale. Accesarea serviciilor locale prin Semantic Kernel facilitează integrarea cu serverul tău local Phi-3-mini.
Mulți utilizatori preferă să folosească modele cuantificate pentru a rula modelele local. Ollama și LlamaEdge permit utilizatorilor să apeleze diferite modele cuantificate:
Poți rula ollama run phi3 direct sau îl poți configura offline. Creează un Modelfile cu calea către fișierul tău gguf. Cod exemplu pentru rularea modelului Phi-3-mini cuantificat:
FROM {Add your gguf file path}
TEMPLATE \"\"\"<|user|> .Prompt<|end|> <|assistant|>\"\"\"
PARAMETER stop <|end|>
PARAMETER num_ctx 4096
Dacă dorești să folosești gguf atât în cloud, cât și pe dispozitive edge simultan, LlamaEdge este o opțiune excelentă.
git clone https://github.com/microsoft/onnxruntime.git
cd onnxruntime
./build.sh --build_shared_lib --ios --skip_tests --parallel --build_dir ./build_ios --ios --apple_sysroot iphoneos --osx_arch arm64 --apple_deploy_target 17.5 --cmake_generator Xcode --config Release
cd ../
-
a. Înainte de compilare, asigură-te că Xcode este configurat corect și setează-l ca director activ pentru dezvoltare în terminal:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
-
b. ONNX Runtime trebuie compilat pentru diferite platforme. Pentru iOS, poți compila pentru
arm64saux86_64. -
c. Se recomandă folosirea celei mai recente versiuni a iOS SDK pentru compilare. Totuși, poți folosi și o versiune mai veche dacă ai nevoie de compatibilitate cu SDK-uri anterioare.
Notă: Deoarece Generative AI cu ONNX Runtime este în preview, te rugăm să fii conștient de posibile modificări.
git clone https://github.com/microsoft/onnxruntime-genai
cd onnxruntime-genai
mkdir ort
cd ort
mkdir include
mkdir lib
cd ../
cp ../onnxruntime/include/onnxruntime/core/session/onnxruntime_c_api.h ort/include
cp ../onnxruntime/build_ios/Release/Release-iphoneos/libonnxruntime*.dylib* ort/lib
export OPENCV_SKIP_XCODEBUILD_FORCE_TRYCOMPILE_DEBUG=1
python3 build.py --parallel --build_dir ./build_ios --ios --ios_sysroot iphoneos --ios_arch arm64 --ios_deployment_target 17.5 --cmake_generator Xcode --cmake_extra_defines CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO
Am ales Objective-C ca metodă de dezvoltare a aplicației, deoarece folosind Generative AI cu API-ul C++ ONNX Runtime, Objective-C oferă o compatibilitate mai bună. Desigur, poți realiza apelurile necesare și prin bridging cu Swift.
Trebuie să importăm modelul de cuantizare INT4 în format ONNX, care trebuie descărcat mai întâi.
După descărcare, trebuie să-l adaugi în directorul Resources al proiectului în Xcode.
Notă:
-
a. Adaugă fișierele header C++ corespunzătoare în proiect.
-
b. Include biblioteca dinamică
onnxruntime-genaiîn Xcode. -
c. Folosește codul exemplu C pentru testare. Poți adăuga și funcționalități suplimentare, cum ar fi ChatUI, pentru mai multe opțiuni.
-
d. Deoarece trebuie să folosești C++ în proiect, redenumește
ViewController.mînViewController.mmpentru a activa suportul Objective-C++.
NSString *llmPath = [[NSBundle mainBundle] resourcePath];
char const *modelPath = llmPath.cString;
auto model = OgaModel::Create(modelPath);
auto tokenizer = OgaTokenizer::Create(*model);
const char* prompt = "<|system|>You are a helpful AI assistant.<|end|><|user|>Can you introduce yourself?<|end|><|assistant|>";
auto sequences = OgaSequences::Create();
tokenizer->Encode(prompt, *sequences);
auto params = OgaGeneratorParams::Create(*model);
params->SetSearchOption("max_length", 100);
params->SetInputSequences(*sequences);
auto output_sequences = model->Generate(*params);
const auto output_sequence_length = output_sequences->SequenceCount(0);
const auto* output_sequence_data = output_sequences->SequenceData(0);
auto out_string = tokenizer->Decode(output_sequence_data, output_sequence_length);
auto tmp = out_string;
După ce ai terminat configurarea, poți rula aplicația pentru a vedea rezultatele inferenței modelului Phi-3-mini.
Pentru mai mult cod exemplu și instrucțiuni detaliate, vizitează Phi-3 Mini Samples repository.
Declinare de responsabilitate:
Acest document a fost tradus folosind serviciul de traducere AI Co-op Translator. Deși ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite rezultate din utilizarea acestei traduceri.





